commit 6460344c7a6df77d25488fabbf49b9658aa2d2ca Author: 阿梦 Date: Fri Jul 11 17:43:34 2025 +0800 add:第一次提交 diff --git a/.env b/.env new file mode 100644 index 0000000..16e4efb --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +VITE_HOST = https://pi.xuexiaole.com +# VITE_HOST = http://192.168.0.103 +VITE_OSS_HOST = https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient +VITE_WS_URL = wss://pi.xuexiaole.com/ws/device \ No newline at end of file diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..d4bc681 --- /dev/null +++ b/.env.prod @@ -0,0 +1,3 @@ +VITE_HOST = https://test.pi.xuexiaole.com +VITE_OSS_HOST = https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient +VITE_WS_URL = wss://test.pi.xuexiaole.com/ws/device \ No newline at end of file diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..d4bc681 --- /dev/null +++ b/.env.test @@ -0,0 +1,3 @@ +VITE_HOST = https://test.pi.xuexiaole.com +VITE_OSS_HOST = https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient +VITE_WS_URL = wss://test.pi.xuexiaole.com/ws/device \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..1d0b016 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +src/uni_modules/** \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..d1aa4f3 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,54 @@ +module.exports = { + extends: ['alloy', 'alloy/vue', 'alloy/typescript', 'plugin:@typescript-eslint/recommended'], + parser: 'vue-eslint-parser', + parserOptions: { + parser: { + js: '@babel/eslint-parser', + jsx: '@babel/eslint-parser', + ts: '@typescript-eslint/parser', + tsx: '@typescript-eslint/parser', + }, + }, + rules: { + '@typescript-eslint/consistent-type-assertions': 'off', + '@typescript-eslint/prefer-optional-chain': 'off', + '@typescript-eslint/explicit-member-accessibility': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-empty-interface': 'off', + 'no-return-assign': 'off', + 'guard-for-in': 'off', + + 'vue/no-setup-props-destructure': 'off', + 'vue/no-duplicate-attr-inheritance': 'off', + 'no-eq-null': 'off', // 允许 == 用于 null + + 'vue/v-on-event-hyphenation': 'off', // 关闭 vue 中 @ 使用短横线命名 + 'no-duplicate-imports': 'off', // 使用ts-eslint的重复导入规则 + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'vue/multi-word-component-names': 'off', + 'vue/no-duplicate-attributes': [ + 'error', + { + allowCoexistClass: true, // 启用v-bind:class指令可以与普通class属性共存。默认值为true。 + allowCoexistStyle: true, + }, + ], + // 圈复杂度 每个函数的最高圈复杂度 + complexity: [ + 'error', + { + max: 12, + }, + ], + }, + globals: { + defineProps: 'readonly', + defineEmits: 'readonly', + defineExpose: 'readonly', + withDefaults: 'readonly', + }, + plugins: ['@typescript-eslint'], +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4dfde9d --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist* +*.local + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +dist* diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..81f13f4 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,16 @@ +{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version": "0.0", + "configurations": [{ + "default" : + { + "launchtype" : "local" + }, + "mp-weixin" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 0000000..b567676 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx --no -- commitlint --edit "$1" diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..dc9d4dd --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +# npm run lint-staged diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..1d0b016 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +src/uni_modules/** \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..5a7f00e --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,13 @@ +module.exports = { + printWidth: 100, + tabWidth: 2, + useTabs: false, + semi: true, + singleQuote: true, + jsxSingleQuote: true, + bracketSpacing: true, + bracketSameLine: false, + arrowParens: 'avoid', + vueIndentScriptAndStyle: false, + endOfLine: 'lf', +}; diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..033bd32 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,51 @@ +{ + "editor.formatOnType": true, + "editor.formatOnSave": true, + "[vue]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.tabSize": 1, + "editor.formatOnPaste": true, + "editor.guides.bracketPairs": "active", + "files.autoSave": "off", + "git.confirmSync": false, + "workbench.startupEditor": "newUntitledFile", + "editor.suggestSelection": "first", + "editor.acceptSuggestionOnCommitCharacter": false, + "css.lint.propertyIgnoredDueToDisplay": "ignore", + "editor.quickSuggestions": { + "other": true, + "comments": true, + "strings": true + }, + "files.associations": { + "editor.snippetSuggestions": "top" + }, + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.codeActionsOnSave": { + "source.fixAll": "never", + "source.fixAll.eslint": "explicit" + }, + "iconify.excludes": ["el"], + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "i18n-ally.localesPaths": [ + "src/uni_modules/uni-table/i18n", + "src/uni_modules/wot-design-uni/locale", + "src/uni_modules/wot-design-uni/locale/lang", + "src/uni_modules/uni-calendar/components/uni-calendar/i18n", + "src/uni_modules/uni-countdown/components/uni-countdown/i18n", + "src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n", + "src/uni_modules/uni-fav/components/uni-fav/i18n", + "src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n", + "src/uni_modules/uni-load-more/components/uni-load-more/i18n", + "src/uni_modules/uni-pagination/components/uni-pagination/i18n", + "src/uni_modules/uni-popup/components/uni-popup/i18n", + "src/uni_modules/uni-search-bar/components/uni-search-bar/i18n", + "src/uni_modules/z-paging/components/z-paging/i18n" + ] +} diff --git a/client-dist.zip b/client-dist.zip new file mode 100644 index 0000000..8cd256c Binary files /dev/null and b/client-dist.zip differ diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..8240f9a --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,24 @@ +// build:主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交 + +// ci:主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle 等)的提交 + +// docs:文档更新 + +// feat:新增功能 + +// fix:bug 修复 + +// perf:性能优化 + +// refactor:重构代码(既没有新增功能,也没有修复 bug) + +// style:不影响程序逻辑的代码修改(修改空白字符,补全缺失的分号等) + +// test:新增测试用例或是更新现有测试 + +// revert:回滚某个更早之前的提交 + +// chore:不属于以上类型的其他类型(日常事务) +module.exports = { + extends: ['@commitlint/config-conventional'], +}; diff --git a/index.html b/index.html new file mode 100644 index 0000000..f8a54cb --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9fd3db9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13983 @@ +{ + "name": "xuexiaole-client", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "xuexiaole-client", + "version": "0.1.0", + "dependencies": { + "@dcloudio/uni-app": "3.0.0-3081220230817001", + "@dcloudio/uni-app-plus": "3.0.0-3081220230817001", + "@dcloudio/uni-components": "3.0.0-3081220230817001", + "@dcloudio/uni-h5": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-alipay": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-baidu": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-jd": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-lark": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-qq": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-toutiao": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-weixin": "3.0.0-3081220230817001", + "@dcloudio/uni-quickapp-webview": "3.0.0-3081220230817001", + "@vueuse/core": "^10.11.0", + "code-inspector-plugin": "^0.10.1", + "dayjs": "^1.11.13", + "echarts": "^5.5.1", + "lint-staged": "^15.0.1", + "pinia": "^2.0.36", + "sass": "^1.72.0", + "unplugin-vue-define-options": "^1.4.2", + "vue": "^3.3.4", + "vue-i18n": "^9.1.9", + "vue-qrcode-reader": "^5.5.7", + "weixin-js-sdk": "^1.6.5" + }, + "devDependencies": { + "@babel/core": "^7.23.2", + "@babel/eslint-parser": "^7.22.15", + "@commitlint/cli": "^17.8.0", + "@commitlint/config-conventional": "^17.8.0", + "@dcloudio/types": "^3.3.2", + "@dcloudio/uni-automator": "3.0.0-3081220230817001", + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-stacktracey": "3.0.0-3081220230817001", + "@dcloudio/vite-plugin-uni": "3.0.0-3081220230817001", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "@vue/runtime-core": "^3.2.45", + "@vue/tsconfig": "^0.1.3", + "eslint": "^8.51.0", + "eslint-config-alloy": "^5.1.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-vue": "^9.17.0", + "husky": "^8.0.0", + "prettier": "^3.0.3", + "typescript": "^4.9.5", + "vite": "4.1.4", + "vue-eslint-parser": "^9.3.2", + "vue-tsc": "^1.0.24" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz", + "integrity": "sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.4", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@commitlint/cli": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/cli/-/cli-17.8.1.tgz", + "integrity": "sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/format": "^17.8.1", + "@commitlint/lint": "^17.8.1", + "@commitlint/load": "^17.8.1", + "@commitlint/read": "^17.8.1", + "@commitlint/types": "^17.8.1", + "execa": "^5.0.0", + "lodash.isfunction": "^3.0.9", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/config-conventional/-/config-conventional-17.8.1.tgz", + "integrity": "sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-conventionalcommits": "^6.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/config-validator/-/config-validator-17.8.1.tgz", + "integrity": "sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^17.8.1", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/ensure": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/ensure/-/ensure-17.8.1.tgz", + "integrity": "sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^17.8.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/execute-rule/-/execute-rule-17.8.1.tgz", + "integrity": "sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/format": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/format/-/format-17.8.1.tgz", + "integrity": "sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^17.8.1", + "chalk": "^4.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/is-ignored/-/is-ignored-17.8.1.tgz", + "integrity": "sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^17.8.1", + "semver": "7.5.4" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/is-ignored/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@commitlint/is-ignored/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@commitlint/is-ignored/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@commitlint/lint": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/lint/-/lint-17.8.1.tgz", + "integrity": "sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^17.8.1", + "@commitlint/parse": "^17.8.1", + "@commitlint/rules": "^17.8.1", + "@commitlint/types": "^17.8.1" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/load": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/load/-/load-17.8.1.tgz", + "integrity": "sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^17.8.1", + "@commitlint/execute-rule": "^17.8.1", + "@commitlint/resolve-extends": "^17.8.1", + "@commitlint/types": "^17.8.1", + "@types/node": "20.5.1", + "chalk": "^4.1.0", + "cosmiconfig": "^8.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0", + "resolve-from": "^5.0.0", + "ts-node": "^10.8.1", + "typescript": "^4.6.4 || ^5.2.2" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/message": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/message/-/message-17.8.1.tgz", + "integrity": "sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/parse": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/parse/-/parse-17.8.1.tgz", + "integrity": "sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^17.8.1", + "conventional-changelog-angular": "^6.0.0", + "conventional-commits-parser": "^4.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/read": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/read/-/read-17.8.1.tgz", + "integrity": "sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^17.8.1", + "@commitlint/types": "^17.8.1", + "fs-extra": "^11.0.0", + "git-raw-commits": "^2.0.11", + "minimist": "^1.2.6" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/resolve-extends/-/resolve-extends-17.8.1.tgz", + "integrity": "sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^17.8.1", + "@commitlint/types": "^17.8.1", + "import-fresh": "^3.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/rules": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/rules/-/rules-17.8.1.tgz", + "integrity": "sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^17.8.1", + "@commitlint/message": "^17.8.1", + "@commitlint/to-lines": "^17.8.1", + "@commitlint/types": "^17.8.1", + "execa": "^5.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/to-lines/-/to-lines-17.8.1.tgz", + "integrity": "sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/top-level": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/top-level/-/top-level-17.8.1.tgz", + "integrity": "sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/types": { + "version": "17.8.1", + "resolved": "https://registry.npmmirror.com/@commitlint/types/-/types-17.8.1.tgz", + "integrity": "sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@dcloudio/types": { + "version": "3.4.14", + "resolved": "https://registry.npmmirror.com/@dcloudio/types/-/types-3.4.14.tgz", + "integrity": "sha512-VolQeZfTh8pQFsr2IlfIVX93blfvGTuBoJuZUc7iWOqtHV8gDrq6fXLhzsVlgZyuhhRZLOxlo33rkEqnY+ucAw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@dcloudio/uni-app": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app/-/uni-app-3.0.0-3081220230817001.tgz", + "integrity": "sha512-sf8PzXHSd/VFCn7X9+QbD4nrY21FnIwjrhyX2hFit7PZK9kpyQluqCmG7YuotuXJzsNML8c8u2O9q5FaeOyTHg==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cloud": "3.0.0-3081220230817001", + "@dcloudio/uni-components": "3.0.0-3081220230817001", + "@dcloudio/uni-i18n": "3.0.0-3081220230817001", + "@dcloudio/uni-push": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-stat": "3.0.0-3081220230817001", + "@vue/shared": "3.2.47" + }, + "peerDependencies": { + "@dcloudio/types": "^3.3.2" + } + }, + "node_modules/@dcloudio/uni-app-plus": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-3081220230817001.tgz", + "integrity": "sha512-GpQobx3WbcyOZ49f8JM+febzKvlthFBAxcs4xrbtNVzmkj0jLJoh9GoH37oa7m5DI1k4l5wUuwvg4/JxBbhOSA==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-app-uts": "3.0.0-3081220230817001", + "@dcloudio/uni-app-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-app-vue": "3.0.0-3081220230817001", + "debug": "^4.3.3", + "fs-extra": "^10.0.0", + "licia": "^1.29.0", + "postcss-selector-parser": "^6.0.6" + } + }, + "node_modules/@dcloudio/uni-app-plus/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dcloudio/uni-app-uts": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-uts/-/uni-app-uts-3.0.0-3081220230817001.tgz", + "integrity": "sha512-snMFEpTw5T0TT5uFwp0piytLRB0FBRHDM5ML00E1nrzfts0XlaFKoB4UsvLySG5sE5+Xt8F5/uzKxid3mcgTLQ==", + "license": "Apache-2.0", + "dependencies": { + "@babel/parser": "^7.16.4", + "@babel/types": "^7.20.7", + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-i18n": "3.0.0-3081220230817001", + "@dcloudio/uni-nvue-styler": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@rollup/pluginutils": "^4.2.0", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-sfc": "3.2.47", + "@vue/shared": "3.2.47", + "debug": "^4.3.3", + "es-module-lexer": "^1.2.1", + "fs-extra": "^10.0.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1" + } + }, + "node_modules/@dcloudio/uni-app-uts/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dcloudio/uni-app-vite": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-3081220230817001.tgz", + "integrity": "sha512-iHmKh6hjPGh+FC6Fi4qqwT5N31QiWv9JymCLdbkOJRi71A3byDjxoH7ScSEEEg+A5AAPky6LHbmFmznPMeSwAg==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-i18n": "3.0.0-3081220230817001", + "@dcloudio/uni-nvue-styler": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@rollup/pluginutils": "^4.2.0", + "@vitejs/plugin-vue": "^4.2.1", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-sfc": "3.2.47", + "debug": "^4.3.3", + "fs-extra": "^10.0.0", + "picocolors": "^1.0.0" + } + }, + "node_modules/@dcloudio/uni-app-vite/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dcloudio/uni-app-vue": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-3081220230817001.tgz", + "integrity": "sha512-08ZUIn2a+OZWjqvjTbLygWZOY9YXbf2J1ns2letBI9aoMZDx+Sgx2lUFWHDksmOhvApPLKrRjJM0Hmmxi2mjJw==", + "license": "Apache-2.0" + }, + "node_modules/@dcloudio/uni-automator": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-automator/-/uni-automator-3.0.0-3081220230817001.tgz", + "integrity": "sha512-boaRlUAAXsEh4aN5PbtMVvzdmvXqoEWa8eQBD4oCH36lyGgK8q75vsjLRi4LBFFwNlCNMrYepTNbBCjP+Sgt0g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "address": "^1.1.2", + "cross-env": "^7.0.3", + "debug": "^4.3.3", + "default-gateway": "^6.0.3", + "fs-extra": "^10.0.0", + "jsonc-parser": "^3.2.0", + "licia": "^1.29.0", + "qrcode-reader": "^1.0.4", + "qrcode-terminal": "^0.12.0", + "ws": "^8.4.2" + }, + "peerDependencies": { + "jest": "27.0.4", + "jest-environment-node": "27.5.1" + } + }, + "node_modules/@dcloudio/uni-automator/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dcloudio/uni-cli-shared": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-3081220230817001.tgz", + "integrity": "sha512-FOeydfIdKZg+MnQsHSFLXBzzmXtgCWnmEyjw3MHNN5mGwQB6+f7vK8sLw+yjizD/j71eMnh8XXCk+dV3nD/Vzg==", + "license": "Apache-2.0", + "dependencies": { + "@ampproject/remapping": "^2.1.2", + "@babel/core": "^7.21.3", + "@babel/parser": "^7.16.4", + "@babel/types": "^7.20.7", + "@dcloudio/uni-i18n": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@intlify/core-base": "9.1.9", + "@intlify/shared": "9.1.9", + "@intlify/vue-devtools": "9.1.9", + "@rollup/pluginutils": "^4.2.0", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-sfc": "3.2.47", + "@vue/server-renderer": "3.2.47", + "@vue/shared": "3.2.47", + "autoprefixer": "^10.4.14", + "base64url": "^3.0.1", + "chokidar": "^3.5.3", + "compare-versions": "^3.6.0", + "debug": "^4.3.3", + "es-module-lexer": "^1.2.1", + "esbuild": "^0.17.5", + "estree-walker": "^2.0.2", + "fast-glob": "^3.2.11", + "fs-extra": "^10.0.0", + "hash-sum": "^2.0.0", + "jsonc-parser": "^3.0.0", + "magic-string": "^0.30.0", + "merge": "^2.1.1", + "mime": "^3.0.0", + "module-alias": "^2.2.2", + "os-locale-s-fix": "^1.0.8-fix-1", + "picocolors": "^1.0.0", + "postcss-import": "^14.0.2", + "postcss-load-config": "^3.1.1", + "postcss-modules": "^4.3.0", + "postcss-selector-parser": "^6.0.6", + "resolve": "^1.22.1", + "tapable": "^2.2.0", + "xregexp": "3.1.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/@dcloudio/uni-cli-shared/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dcloudio/uni-cloud": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-3081220230817001.tgz", + "integrity": "sha512-rrHN4PvvylrhmivAoSv4h8ZcQ3ZWHnMRXhQWPC9FBR1TInrrxrrAHuMqSZn6pTIXhCiRA3Kuy6aDNVCbt6VA+g==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-i18n": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/shared": "3.2.47", + "fast-glob": "^3.2.11" + } + }, + "node_modules/@dcloudio/uni-components": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-components/-/uni-components-3.0.0-3081220230817001.tgz", + "integrity": "sha512-FlIrTgR/9Yp8FWYfhXfLPd0jJtBwJwRBAWWmLNaufkTojm6X7rX8wQOd13n+7gJGKzfXcEV8npOYpVou4P46Pw==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cloud": "3.0.0-3081220230817001", + "@dcloudio/uni-h5": "3.0.0-3081220230817001", + "@dcloudio/uni-i18n": "3.0.0-3081220230817001" + } + }, + "node_modules/@dcloudio/uni-h5": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5/-/uni-h5-3.0.0-3081220230817001.tgz", + "integrity": "sha512-m2RCZpYxuAGnXlQKSQ8FGy4OlnUJJ8XMx2HNQWriDwtjDpAGDU8I2LZQZ7MHCNPIUd503y+mgU2NPlSQHnrlkQ==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-h5-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-h5-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-i18n": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/server-renderer": "3.2.47", + "@vue/shared": "3.2.47", + "debug": "^4.3.3", + "localstorage-polyfill": "^1.0.1", + "postcss-selector-parser": "^6.0.6", + "safe-area-insets": "^1.4.1", + "vue-router": "^4.1.6", + "xmlhttprequest": "^1.8.0" + } + }, + "node_modules/@dcloudio/uni-h5-vite": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-3081220230817001.tgz", + "integrity": "sha512-x7F6mUTjHiOx7+lj5yIrzhD7gr0HTNJaku5gV3O8bFjxKLcIkFkAyliKPbqJ4QZCmCCmEfJpOGKrDhk35tlibg==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@rollup/pluginutils": "^4.2.0", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-sfc": "3.2.47", + "@vue/server-renderer": "3.2.47", + "@vue/shared": "3.2.47", + "debug": "^4.3.3", + "fs-extra": "^10.0.0", + "mime": "^3.0.0", + "module-alias": "^2.2.2" + } + }, + "node_modules/@dcloudio/uni-h5-vite/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dcloudio/uni-h5-vue": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-3081220230817001.tgz", + "integrity": "sha512-q1eFoXb5/4whNIJ1CumKmeypPjZofw8xDQRHZeGZ7NVRQ0/MYnEm6A0n/vkmEo1IgTZIY83m/jr6RNg7a9Ko/A==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/server-renderer": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-i18n": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-3081220230817001.tgz", + "integrity": "sha512-ooAIoNCy+DPlMtA4k9eoaJJsYQtici85le+ietIIzLdJoa2YUnudYv9CvG9Mw/RsKQI+MLl96ADAPgUpGzounw==", + "license": "Apache-2.0" + }, + "node_modules/@dcloudio/uni-mp-alipay": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-3081220230817001.tgz", + "integrity": "sha512-lZR2u8sxJ/ZaDqaxEmGzgWWKHcjnLGedDTrMh8kOEPLHO6THVNe5TP6XeiTcE0HKJfWEXv6X13erjn0FCstz3A==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-mp-baidu": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-3081220230817001.tgz", + "integrity": "sha512-FYwK1AqSc+NvtvaCia/fOP57ELx5O5icHjuwPKMsJv5eGtqlwhXzyvSCoGEFyYQcsWP9ZqYSb3fTuxVlbiEYdA==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-compiler": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-weixin": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47", + "jimp": "^0.10.1", + "licia": "^1.29.0", + "qrcode-reader": "^1.0.4", + "qrcode-terminal": "^0.12.0", + "ws": "^8.4.2" + } + }, + "node_modules/@dcloudio/uni-mp-compiler": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-3081220230817001.tgz", + "integrity": "sha512-KDfwEr9jFNSkNbYmdDc+zfGuZwXGkz3bW3c4cuV44IncTf/UW2m594Z2UzhJkx/p662aQ2W9M4BFZ0o5QSfQDw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/generator": "^7.20.5", + "@babel/parser": "^7.16.4", + "@babel/types": "^7.20.7", + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2" + } + }, + "node_modules/@dcloudio/uni-mp-jd": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-jd/-/uni-mp-jd-3.0.0-3081220230817001.tgz", + "integrity": "sha512-sKDppXhk7k8Euce9v7ItQ2cs3+XpQV/DX8FjXzfO9DfjQEKiR/Pyfis7e3ANQrF4V/W3uwK5wgN/PyI3/NRloQ==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-compiler": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-mp-kuaishou": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-3081220230817001.tgz", + "integrity": "sha512-wYXwoxcdms8PviNsKg2Y9oqHawKqseoD97sYs94RLDVSnyO9c6NOoUMsYjXwIZXt05E56bJ9EbxDqYDwwJhEKw==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-compiler": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-weixin": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-mp-lark": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-3081220230817001.tgz", + "integrity": "sha512-4aHwULp+Nx55BoJvj1jCXWnVJrzl0ACEbDlXVvxmNUI5tkqn2kYL4AZgrXP1vCx8MHKVPI4E34Z+lrBTfSfKMA==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-compiler": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-toutiao": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-mp-qq": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-3081220230817001.tgz", + "integrity": "sha512-StSsxCCKMdZCghUZ+wdX1otCmlYkIV+O2Z/AxMv772HfIKlpDp44PPaxlKBG4L6+X7h2JsCvyZW1iSznM5A3CQ==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/shared": "3.2.47", + "fs-extra": "^10.0.0" + } + }, + "node_modules/@dcloudio/uni-mp-qq/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dcloudio/uni-mp-toutiao": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-3081220230817001.tgz", + "integrity": "sha512-ZMSNNjQpCV4z+76OA8rDKKhqr+vQmTvKNUOzKfND5KPYhgWbqviEBZ8ptiDT5gaWXMpkUHNfWz32hdi5CLbj5Q==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-compiler": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-mp-vite": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-3081220230817001.tgz", + "integrity": "sha512-jmEbsVOJ1dlj46QiSFMB2C3zbgGivkGf1KXoPTAprv0WZrkmjF1uNLj0pHFOOUnnyHwHPViEApsMOPS4twIjIQ==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-i18n": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-compiler": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/compiler-sfc": "3.2.47", + "@vue/shared": "3.2.47", + "debug": "^4.3.3" + } + }, + "node_modules/@dcloudio/uni-mp-vue": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-3081220230817001.tgz", + "integrity": "sha512-EfdTH6+qGXRh3402+psl8X4K34/gHfBPaMfxbwMsne1rGnB8ZVXiN73gVXKfCWeznvJqdWuTWmmjqaLoBhjOjA==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-mp-weixin": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-3081220230817001.tgz", + "integrity": "sha512-vo2k8OaWFOvoXuRX83UCR0AOOKXXwjRDIOX0y/jUC9TX63Ne5OTdRKH9253D9109FrwtrtsUWqnpfn1ynKXl9g==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/shared": "3.2.47", + "jimp": "^0.10.1", + "licia": "^1.29.0", + "qrcode-reader": "^1.0.4", + "qrcode-terminal": "^0.12.0", + "ws": "^8.4.2" + } + }, + "node_modules/@dcloudio/uni-nvue-styler": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-3081220230817001.tgz", + "integrity": "sha512-EImnyrYHmAc7ibKfIMkBG1uMavS5sPdrtQj52m40o/QNU5kcsqUk2Od9c1ULkQloxhmK2E4FZvXo4cgszE/Txw==", + "license": "Apache-2.0", + "dependencies": { + "@vue/shared": "3.2.47", + "parse-css-font": "^4.0.0", + "postcss": "^8.4.23" + } + }, + "node_modules/@dcloudio/uni-push": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-push/-/uni-push-3.0.0-3081220230817001.tgz", + "integrity": "sha512-1IyVJlBnZVVvY49SQKpZG5Oxak5Wl51NvYEozuYoeBaaTeZObm7B6eyd722sXi0Dd6N1sE3kIdm/XReprK53eg==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001" + } + }, + "node_modules/@dcloudio/uni-quickapp-webview": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-3081220230817001.tgz", + "integrity": "sha512-w6yitVyCKEFSO+UDsJPjc5RfAstIdOEbBHgim0gInTfOl90odmyUPKDxWhwQgS5vqezBXpCj0/6ywVMHvZu+7A==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vite": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-vue": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-shared": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-shared/-/uni-shared-3.0.0-3081220230817001.tgz", + "integrity": "sha512-NI1pBO40VqvnWjwNXad3CqrUYvr4ffGjiDMgJGMP13rgOEAqamU7ozBimoASDVPKyyfSHTeuYuh0gtaaLu4CsQ==", + "license": "Apache-2.0", + "dependencies": { + "@vue/shared": "3.2.47" + } + }, + "node_modules/@dcloudio/uni-stacktracey": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-3081220230817001.tgz", + "integrity": "sha512-DUTTN8JWXxjO3ryz7uhD3+vazHVMflln15+r0ycWBjXO0p0MepRY3gX5gKCyiq9D3NUIxazcFAUJ6agFVUbDog==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@dcloudio/uni-stat": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/uni-stat/-/uni-stat-3.0.0-3081220230817001.tgz", + "integrity": "sha512-xpbsor5WKU1eCbo0dmQ0hBUX6RrdG7DNDzCSD6oimndIXVGLkFhWrIC3brQ7S1G2GQvXdXnXJpUVskI3qNe/uw==", + "license": "Apache-2.0", + "dependencies": { + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "debug": "^4.3.3" + } + }, + "node_modules/@dcloudio/vite-plugin-uni": { + "version": "3.0.0-3081220230817001", + "resolved": "https://registry.npmmirror.com/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-3081220230817001.tgz", + "integrity": "sha512-dLeqqyrNNUBTZfI0ppPk4YoD+DBI0gJLeTjpN6bK5i3nFKkju9g2K6IWl62YMObjTiXwQF8qAEDb+fyWoe4Ksw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.20.7", + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-shared": "3.0.0-3081220230817001", + "@rollup/pluginutils": "^4.2.0", + "@vitejs/plugin-legacy": "^4.0.3", + "@vitejs/plugin-vue": "^4.2.1", + "@vitejs/plugin-vue-jsx": "^3.0.1", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-sfc": "3.2.47", + "@vue/shared": "3.2.47", + "cac": "6.7.9", + "debug": "^4.3.3", + "estree-walker": "^2.0.2", + "express": "^4.17.1", + "fast-glob": "^3.2.11", + "fs-extra": "^10.0.0", + "hash-sum": "^2.0.0", + "jsonc-parser": "^3.0.0", + "magic-string": "^0.30.0", + "picocolors": "^1.0.0", + "terser": "^5.4.0" + }, + "bin": { + "uni": "bin/uni.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0" + } + }, + "node_modules/@dcloudio/vite-plugin-uni/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@intlify/core-base": { + "version": "9.1.9", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.1.9.tgz", + "integrity": "sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==", + "license": "MIT", + "dependencies": { + "@intlify/devtools-if": "9.1.9", + "@intlify/message-compiler": "9.1.9", + "@intlify/message-resolver": "9.1.9", + "@intlify/runtime": "9.1.9", + "@intlify/shared": "9.1.9", + "@intlify/vue-devtools": "9.1.9" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/devtools-if": { + "version": "9.1.9", + "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.1.9.tgz", + "integrity": "sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==", + "license": "MIT", + "dependencies": { + "@intlify/shared": "9.1.9" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.1.9", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.1.9.tgz", + "integrity": "sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==", + "license": "MIT", + "dependencies": { + "@intlify/message-resolver": "9.1.9", + "@intlify/shared": "9.1.9", + "source-map": "0.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/message-resolver": { + "version": "9.1.9", + "resolved": "https://registry.npmmirror.com/@intlify/message-resolver/-/message-resolver-9.1.9.tgz", + "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/runtime": { + "version": "9.1.9", + "resolved": "https://registry.npmmirror.com/@intlify/runtime/-/runtime-9.1.9.tgz", + "integrity": "sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==", + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "9.1.9", + "@intlify/message-resolver": "9.1.9", + "@intlify/shared": "9.1.9" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/shared": { + "version": "9.1.9", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.1.9.tgz", + "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/vue-devtools": { + "version": "9.1.9", + "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz", + "integrity": "sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==", + "license": "MIT", + "dependencies": { + "@intlify/message-resolver": "9.1.9", + "@intlify/runtime": "9.1.9", + "@intlify/shared": "9.1.9" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@jimp/bmp": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/bmp/-/bmp-0.10.3.tgz", + "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "bmp-js": "^0.1.0", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/core/-/core-0.10.3.tgz", + "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^3.4.1", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/custom": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/custom/-/custom-0.10.3.tgz", + "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.10.3", + "core-js": "^3.4.1" + } + }, + "node_modules/@jimp/gif": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/gif/-/gif-0.10.3.tgz", + "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/jpeg/-/jpeg-0.10.3.tgz", + "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1", + "jpeg-js": "^0.3.4" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz", + "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz", + "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz", + "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-color/-/plugin-color-0.10.3.tgz", + "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz", + "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz", + "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz", + "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz", + "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz", + "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz", + "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz", + "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz", + "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz", + "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz", + "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz", + "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-print/-/plugin-print-0.10.3.tgz", + "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz", + "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz", + "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz", + "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz", + "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz", + "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/plugins/-/plugins-0.10.3.tgz", + "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.10.3", + "@jimp/plugin-blur": "^0.10.3", + "@jimp/plugin-circle": "^0.10.3", + "@jimp/plugin-color": "^0.10.3", + "@jimp/plugin-contain": "^0.10.3", + "@jimp/plugin-cover": "^0.10.3", + "@jimp/plugin-crop": "^0.10.3", + "@jimp/plugin-displace": "^0.10.3", + "@jimp/plugin-dither": "^0.10.3", + "@jimp/plugin-fisheye": "^0.10.3", + "@jimp/plugin-flip": "^0.10.3", + "@jimp/plugin-gaussian": "^0.10.3", + "@jimp/plugin-invert": "^0.10.3", + "@jimp/plugin-mask": "^0.10.3", + "@jimp/plugin-normalize": "^0.10.3", + "@jimp/plugin-print": "^0.10.3", + "@jimp/plugin-resize": "^0.10.3", + "@jimp/plugin-rotate": "^0.10.3", + "@jimp/plugin-scale": "^0.10.3", + "@jimp/plugin-shadow": "^0.10.3", + "@jimp/plugin-threshold": "^0.10.3", + "core-js": "^3.4.1", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/png/-/png-0.10.3.tgz", + "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.10.3", + "core-js": "^3.4.1", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/tiff/-/tiff-0.10.3.tgz", + "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/types/-/types-0.10.3.tgz", + "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.10.3", + "@jimp/gif": "^0.10.3", + "@jimp/jpeg": "^0.10.3", + "@jimp/png": "^0.10.3", + "@jimp/tiff": "^0.10.3", + "core-js": "^3.4.1", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/@jimp/utils/-/utils-0.10.3.tgz", + "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "license": "MIT", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/dom-webcodecs": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/@types/dom-webcodecs/-/dom-webcodecs-0.1.13.tgz", + "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==", + "license": "MIT" + }, + "node_modules/@types/emscripten": { + "version": "1.39.13", + "resolved": "https://registry.npmmirror.com/@types/emscripten/-/emscripten-1.39.13.tgz", + "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.5.1", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.5.1.tgz", + "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-legacy": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-4.1.1.tgz", + "integrity": "sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "browserslist": "^4.21.9", + "core-js": "^3.31.1", + "magic-string": "^0.30.1", + "regenerator-runtime": "^0.13.11", + "systemjs": "^6.14.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "peerDependencies": { + "terser": "^5.4.0", + "vite": "^4.0.0" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz", + "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3", + "@vue/babel-plugin-jsx": "^1.1.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@volar/language-core": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz", + "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "1.11.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz", + "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz", + "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue-macros/common": { + "version": "1.15.1", + "resolved": "https://registry.npmmirror.com/@vue-macros/common/-/common-1.15.1.tgz", + "integrity": "sha512-O0ZXaladWXwHplQnSjxLbB/G1KpdWCUNJPNYVHIxHonGex1BGpoB4fBZZLgddHgAiy18VZG/Iu5L0kwG+SV7JQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.3", + "@rollup/pluginutils": "^5.1.3", + "@vue/compiler-sfc": "^3.5.13", + "ast-kit": "^1.3.2", + "local-pkg": "^0.5.1", + "magic-string-ast": "^0.6.3" + }, + "engines": { + "node": ">=16.14.0" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.2.25" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue-macros/common/node_modules/@rollup/pluginutils": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", + "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@vue-macros/common/node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue-macros/common/node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue-macros/common/node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue-macros/common/node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue-macros/common/node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/@vue-macros/common/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", + "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", + "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", + "@vue/babel-helper-vue-transform-on": "1.2.5", + "@vue/babel-plugin-resolve-type": "1.2.5", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", + "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/parser": "^7.25.6", + "@vue/compiler-sfc": "^3.5.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.47", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz", + "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.47", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", + "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.47", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", + "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-ssr": "3.2.47", + "@vue/reactivity-transform": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.47", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", + "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/language-core": { + "version": "1.8.27", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz", + "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core/node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/language-core/node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/language-core/node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.47", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", + "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/reactivity-transform/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/reactivity/node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core/node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/runtime-dom/node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.47", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz", + "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.2.47", + "@vue/shared": "3.2.47" + }, + "peerDependencies": { + "vue": "3.2.47" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "license": "MIT" + }, + "node_modules/@vue/tsconfig": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz", + "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@vueuse/core": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.11.1.tgz", + "integrity": "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.11.1", + "@vueuse/shared": "10.11.1", + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.11.1.tgz", + "integrity": "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.11.1.tgz", + "integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==", + "license": "MIT", + "dependencies": { + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-kit": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/ast-kit/-/ast-kit-1.3.2.tgz", + "integrity": "sha512-gdvX700WVC6sHCJQ7bJGfDvtuKAh6Sa6weIZROxfzUZKP7BjvB8y0SMlM/o4omSQ3L60PQSJROBJsb0vEViVnA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.2", + "pathe": "^1.1.2" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/ast-walker-scope": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/ast-walker-scope/-/ast-walker-scope-0.6.2.tgz", + "integrity": "sha512-1UWOyC50xI3QZkRuDj6PqDtpm1oHWtYs+NQGwqL/2R11eN3Q81PHAHPM0SWW3BNQm53UDwS//Jv8L4CCVLM1bQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "ast-kit": "^1.0.1" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.12", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/barcode-detector": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/barcode-detector/-/barcode-detector-2.2.2.tgz", + "integrity": "sha512-JcSekql+EV93evfzF9zBr+Y6aRfkR+QFvgyzbwQ0dbymZXoAI9+WgT7H1E429f+3RKNncHz2CW98VQtaaKpmfQ==", + "license": "MIT", + "dependencies": { + "@types/dom-webcodecs": "^0.1.11", + "zxing-wasm": "1.1.3" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cac": { + "version": "6.7.9", + "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.9.tgz", + "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.2.tgz", + "integrity": "sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "get-intrinsic": "^1.2.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001688", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz", + "integrity": "sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/centra": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/code-inspector-core": { + "version": "0.10.1", + "resolved": "https://registry.npmmirror.com/code-inspector-core/-/code-inspector-core-0.10.1.tgz", + "integrity": "sha512-zSxt36n9i21RSVXnvKlh8Nn8mjIb4RiRBIShs6EzFmKPtY+ylQ4mNMzf6HKU5XPP5Xz45j1r9DfO76nCCZdEhQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "^3.2.47", + "chalk": "^4.1.1", + "portfinder": "^1.0.28" + } + }, + "node_modules/code-inspector-plugin": { + "version": "0.10.1", + "resolved": "https://registry.npmmirror.com/code-inspector-plugin/-/code-inspector-plugin-0.10.1.tgz", + "integrity": "sha512-kzSRzY0PNp/BfEoUfGe1qemZAFCCp32fYihzY7B32NSWyqXKMqN3ST5kZE8o+kuRyNmwGim2JqSXb0j34URIRw==", + "license": "MIT", + "dependencies": { + "chalk": "4.1.1", + "code-inspector-core": "0.10.1", + "vite-code-inspector-plugin": "0.10.1", + "webpack-code-inspector-plugin": "0.10.1" + } + }, + "node_modules/code-inspector-plugin/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "license": "MIT" + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", + "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz", + "integrity": "sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-commits-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", + "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.3.5", + "meow": "^8.1.2", + "split2": "^3.2.2" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.39.0", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.39.0.tgz", + "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.39.0", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.39.0.tgz", + "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz", + "integrity": "sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v14.21.3" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=4" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-font-size-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz", + "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==", + "license": "MIT" + }, + "node_modules/css-font-stretch-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz", + "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==", + "license": "MIT" + }, + "node_modules/css-font-style-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz", + "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==", + "license": "MIT" + }, + "node_modules/css-font-weight-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz", + "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==", + "license": "MIT" + }, + "node_modules/css-list-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/css-list-helpers/-/css-list-helpers-2.0.0.tgz", + "integrity": "sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ==", + "license": "MIT" + }, + "node_modules/css-system-font-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz", + "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==", + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/echarts": { + "version": "5.5.1", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz", + "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.6.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.73", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz", + "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.5", + "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.5.tgz", + "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-alloy": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/eslint-config-alloy/-/eslint-config-alloy-5.1.2.tgz", + "integrity": "sha512-jppzCxNqlhvMYPgfUzvPq4f9fEu070+m3CRIjWdUx/GJLZ6dXHARzMIrIhFuIvzYI5Qo40ht1gunguLnRhIB7A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@babel/eslint-parser": "7.x", + "@babel/preset-react": "7.x", + "@typescript-eslint/eslint-plugin": ">=5.55.0", + "@typescript-eslint/parser": ">=5.0.0", + "eslint": ">=8.24.0", + "eslint-plugin-react": ">=7.31.8", + "eslint-plugin-vue": ">=9.5.1", + "typescript": "5.x", + "vue-eslint-parser": "9.x" + }, + "peerDependenciesMeta": { + "@babel/eslint-parser": { + "optional": true + }, + "@babel/preset-react": { + "optional": true + }, + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "@typescript-eslint/parser": { + "optional": true + }, + "eslint-plugin-react": { + "optional": true + }, + "eslint-plugin-vue": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vue-eslint-parser": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.32.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz", + "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmmirror.com/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generic-names": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", + "license": "MIT", + "dependencies": { + "loader-utils": "^3.2.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "license": "MIT" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "license": "ISC" + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invert-kv": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/invert-kv/-/invert-kv-3.0.1.tgz", + "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sindresorhus/invert-kv?sponsor=1" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.2.0.tgz", + "integrity": "sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", + "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "license": "MIT" + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.1.0.tgz", + "integrity": "sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.1.0.tgz", + "integrity": "sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.1.0.tgz", + "integrity": "sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "has-symbols": "^1.0.3", + "safe-regex-test": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jimp": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/jimp/-/jimp-0.10.3.tgz", + "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.10.3", + "@jimp/plugins": "^0.10.3", + "@jimp/types": "^0.10.3", + "core-js": "^3.4.1", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.3.7", + "resolved": "https://registry.npmmirror.com/jpeg-js/-/jpeg-js-0.3.7.tgz", + "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==", + "license": "BSD-3-Clause" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lcid": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/lcid/-/lcid-3.1.1.tgz", + "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", + "license": "MIT", + "dependencies": { + "invert-kv": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/licia": { + "version": "1.46.0", + "resolved": "https://registry.npmmirror.com/licia/-/licia-1.46.0.tgz", + "integrity": "sha512-Zms2AjJB+KdqUKFF87J5J/w9DwXnGN/lKlbjpRgvaPf0BIQ0mOZ/2lX4E79zwNafHGMUq5RtN54FN6Af5G92cA==", + "license": "MIT" + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lint-staged": { + "version": "15.2.11", + "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-15.2.11.tgz", + "integrity": "sha512-Ev6ivCTYRTGs9ychvpVw35m/bcNDuBN+mnTeObCL5h+boS5WzBEC6LHI4I9F/++sZm1m+J2LEiy0gxL/R9TBqQ==", + "license": "MIT", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.4.0", + "execa": "~8.0.1", + "lilconfig": "~3.1.3", + "listr2": "~8.2.5", + "micromatch": "~4.0.8", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.6.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2": { + "version": "8.2.5", + "resolved": "https://registry.npmmirror.com/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/load-bmfont": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/load-bmfont/-/load-bmfont-1.4.2.tgz", + "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", + "license": "MIT", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^3.7.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-bmfont/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-bmfont/node_modules/phin": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", + "license": "MIT", + "dependencies": { + "centra": "^2.7.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/localstorage-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz", + "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.15", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.15.tgz", + "integrity": "sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/magic-string-ast": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/magic-string-ast/-/magic-string-ast-0.6.3.tgz", + "integrity": "sha512-C9sgUzVZtUtzCBoMdYtwrIRQ4IucGRFGgdhkjL7PXsVfPYmTuWtewqzk7dlipaCMWH/gOYehW9rgMoa4Oebtpw==", + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.13" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.0.0.tgz", + "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mlly": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.7.3.tgz", + "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^1.1.2", + "pkg-types": "^1.2.1", + "ufo": "^1.5.4" + } + }, + "node_modules/module-alias": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.3.tgz", + "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-locale-s-fix": { + "version": "1.0.8-fix-1", + "resolved": "https://registry.npmmirror.com/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz", + "integrity": "sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==", + "license": "MIT", + "dependencies": { + "lcid": "^3.0.0" + }, + "engines": { + "node": ">=10", + "yarn": "^1.22.4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", + "license": "MIT" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", + "license": "MIT" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", + "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", + "license": "MIT", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.5.0" + } + }, + "node_modules/parse-css-font": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/parse-css-font/-/parse-css-font-4.0.0.tgz", + "integrity": "sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==", + "license": "MIT", + "dependencies": { + "css-font-size-keywords": "^1.0.0", + "css-font-stretch-keywords": "^1.0.1", + "css-font-style-keywords": "^1.0.1", + "css-font-weight-keywords": "^1.0.0", + "css-list-helpers": "^2.0.0", + "css-system-font-keywords": "^1.0.0", + "unquote": "^1.1.1" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "license": "MIT" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "license": "MIT" + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmmirror.com/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinia": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.3.0.tgz", + "integrity": "sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "license": "ISC", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pkg-types": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.2.1.tgz", + "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.2", + "pathe": "^1.1.2" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmmirror.com/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "license": "MIT", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/postcss-modules/-/postcss-modules-4.3.1.tgz", + "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", + "license": "MIT", + "dependencies": { + "generic-names": "^4.0.0", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode-reader": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/qrcode-reader/-/qrcode-reader-1.0.4.tgz", + "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==", + "license": "Apache-2.0" + }, + "node_modules/qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz", + "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "dunder-proto": "^1.0.0", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.5", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.5.tgz", + "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-area-insets": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/safe-area-insets/-/safe-area-insets-1.4.1.tgz", + "integrity": "sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==", + "license": "ISC" + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.83.0", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.83.0.tgz", + "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "license": "MIT" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", + "license": "CC0-1.0" + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/systemjs": { + "version": "6.15.1", + "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.15.1.tgz", + "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.37.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmmirror.com/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "license": "MIT" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", + "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unplugin": { + "version": "1.16.0", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.16.0.tgz", + "integrity": "sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/unplugin-vue-define-options": { + "version": "1.5.3", + "resolved": "https://registry.npmmirror.com/unplugin-vue-define-options/-/unplugin-vue-define-options-1.5.3.tgz", + "integrity": "sha512-vh9hOHd/VRxZ5QHdLdl0WO8aZWuVx8GN8eExCP665o8anh0LC8Xj4PF5zx0BxRcDi6AZOnTQZPgfQlA0Iw/74Q==", + "license": "MIT", + "dependencies": { + "@vue-macros/common": "1.15.1", + "ast-walker-scope": "^0.6.2", + "unplugin": "^1.16.0" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.4.tgz", + "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.16.14", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.10.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-code-inspector-plugin": { + "version": "0.10.1", + "resolved": "https://registry.npmmirror.com/vite-code-inspector-plugin/-/vite-code-inspector-plugin-0.10.1.tgz", + "integrity": "sha512-RB0QX0S7fAPRrBCsA7eRfisftb9maY5Rg54m1gGKHmkUOql/TTlYpLKGl0u59OvBm/GnFYQaVnVELHCQqnoWOw==", + "license": "MIT", + "dependencies": { + "code-inspector-core": "0.10.1" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-i18n": { + "version": "9.14.2", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.14.2.tgz", + "integrity": "sha512-JK9Pm80OqssGJU2Y6F7DcM8RFHqVG4WkuCqOZTVsXkEzZME7ABejAUqUdA931zEBedc4thBgSUWxeQh4uocJAQ==", + "license": "MIT", + "dependencies": { + "@intlify/core-base": "9.14.2", + "@intlify/shared": "9.14.2", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-i18n/node_modules/@intlify/core-base": { + "version": "9.14.2", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.14.2.tgz", + "integrity": "sha512-DZyQ4Hk22sC81MP4qiCDuU+LdaYW91A6lCjq8AWPvY3+mGMzhGDfOCzvyR6YBQxtlPjFqMoFk9ylnNYRAQwXtQ==", + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "9.14.2", + "@intlify/shared": "9.14.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/vue-i18n/node_modules/@intlify/message-compiler": { + "version": "9.14.2", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.14.2.tgz", + "integrity": "sha512-YsKKuV4Qv4wrLNsvgWbTf0E40uRv+Qiw1BeLQ0LAxifQuhiMe+hfTIzOMdWj/ZpnTDj4RSZtkXjJM7JDiiB5LQ==", + "license": "MIT", + "dependencies": { + "@intlify/shared": "9.14.2", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/vue-i18n/node_modules/@intlify/shared": { + "version": "9.14.2", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.14.2.tgz", + "integrity": "sha512-uRAHAxYPeF+G5DBIboKpPgC/Waecd4Jz8ihtkpJQD5ycb5PwXp0k/+hBGl5dAjwF7w+l74kz/PKA8r8OK//RUw==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/vue-qrcode-reader": { + "version": "5.5.11", + "resolved": "https://registry.npmmirror.com/vue-qrcode-reader/-/vue-qrcode-reader-5.5.11.tgz", + "integrity": "sha512-Ec/bVML1jgxSX+usbgdcXGhOFEFo4EzApCO2CNT1YK0Dcb0Mp7ASygz78RJJs22SU2oI7vz9iJDyr4ucSDTvjQ==", + "license": "MIT", + "dependencies": { + "barcode-detector": "2.2.2", + "webrtc-adapter": "8.2.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.27", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.27.tgz", + "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-tsc/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue/node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/vue/node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/vue/node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/vue/node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/vue/node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/vue/node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/webpack-code-inspector-plugin": { + "version": "0.10.1", + "resolved": "https://registry.npmmirror.com/webpack-code-inspector-plugin/-/webpack-code-inspector-plugin-0.10.1.tgz", + "integrity": "sha512-nPHF1iTDGtjN9iBixWdwSEZPhXwbTewKbrpNXGK61N3DqCqeqFHsMMTEWtUXl4JLi4J8ZwspvGauxVEJh5HcDQ==", + "license": "MIT", + "dependencies": { + "code-inspector-core": "0.10.1" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "license": "MIT" + }, + "node_modules/webrtc-adapter": { + "version": "8.2.3", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-8.2.3.tgz", + "integrity": "sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==", + "license": "BSD-3-Clause", + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/weixin-js-sdk": { + "version": "1.6.5", + "resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.5.tgz", + "integrity": "sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz", + "integrity": "sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.0", + "is-number-object": "^1.1.0", + "is-string": "^1.1.0", + "is-symbol": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/which-builtin-type/-/which-builtin-type-1.2.0.tgz", + "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.16", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.16.tgz", + "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "license": "MIT", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", + "license": "MIT" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xregexp": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/xregexp/-/xregexp-3.1.0.tgz", + "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==", + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zrender": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz", + "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zxing-wasm": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/zxing-wasm/-/zxing-wasm-1.1.3.tgz", + "integrity": "sha512-MYm9k/5YVs4ZOTIFwlRjfFKD0crhefgbnt1+6TEpmKUDFp3E2uwqGSKwQOd2hOIsta/7Usq4hnpNRYTLoljnfA==", + "license": "MIT", + "dependencies": { + "@types/emscripten": "^1.39.10" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4591c2d --- /dev/null +++ b/package.json @@ -0,0 +1,126 @@ +{ + "name": "xuexiaole-client", + "version": "0.1.0", + "scripts": { + "dev:app": "uni -p app", + "dev:app-android": "uni -p app-android", + "dev:app-ios": "uni -p app-ios", + "dev:custom": "uni -p", + "dev:h5": "uni -p h5-test", + "dev:h5:ssr": "uni --ssr", + "dev:mp-alipay": "uni -p mp-alipay", + "dev:mp-baidu": "uni -p mp-baidu", + "dev:mp-jd": "uni -p mp-jd", + "dev:mp-kuaishou": "uni -p mp-kuaishou", + "dev:mp-lark": "uni -p mp-lark", + "dev:mp-qq": "uni -p mp-qq", + "dev:mp-toutiao": "uni -p mp-toutiao", + "dev:mp-weixin": "uni -p mp-weixin", + "dev:quickapp-webview": "uni -p quickapp-webview", + "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", + "dev:quickapp-webview-union": "uni -p quickapp-webview-union", + "build:app": "uni build -p app", + "build:app-android": "uni build -p app-android", + "build:app-ios": "uni build -p app-ios", + "build:custom": "uni build -p", + "build:h5": "uni build -p h5-prod", + "build-test:h5": "uni build -p h5-test", + "build:h5:ssr": "uni build --ssr", + "build:mp-alipay": "uni build -p mp-alipay", + "build:mp-baidu": "uni build -p mp-baidu", + "build:mp-jd": "uni build -p mp-jd", + "build:mp-kuaishou": "uni build -p mp-kuaishou", + "build:mp-lark": "uni build -p mp-lark", + "build:mp-qq": "uni build -p mp-qq", + "build:mp-toutiao": "uni build -p mp-toutiao", + "build:mp-weixin": "uni build -p mp-weixin", + "build:quickapp-webview": "uni build -p quickapp-webview", + "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", + "build:quickapp-webview-union": "uni build -p quickapp-webview-union", + "type-check": "vue-tsc --noEmit", + "prepare": "husky install", + "lint": "eslint --fix", + "lint-staged": "lint-staged" + }, + "dependencies": { + "@dcloudio/uni-app": "3.0.0-3081220230817001", + "@dcloudio/uni-app-plus": "3.0.0-3081220230817001", + "@dcloudio/uni-components": "3.0.0-3081220230817001", + "@dcloudio/uni-h5": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-alipay": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-baidu": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-jd": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-lark": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-qq": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-toutiao": "3.0.0-3081220230817001", + "@dcloudio/uni-mp-weixin": "3.0.0-3081220230817001", + "@dcloudio/uni-quickapp-webview": "3.0.0-3081220230817001", + "code-inspector-plugin": "^0.10.1", + "dayjs": "^1.11.13", + "echarts": "^5.5.1", + "lint-staged": "^15.0.1", + "pinia": "^2.0.36", + "sass": "^1.72.0", + "unplugin-vue-define-options": "^1.4.2", + "vue": "^3.3.4", + "vue-i18n": "^9.1.9", + "@vueuse/core": "^10.11.0", + "vue-qrcode-reader": "^5.5.7", + "weixin-js-sdk": "^1.6.5" + }, + "devDependencies": { + "@babel/core": "^7.23.2", + "@babel/eslint-parser": "^7.22.15", + "@commitlint/cli": "^17.8.0", + "@commitlint/config-conventional": "^17.8.0", + "@dcloudio/types": "^3.3.2", + "@dcloudio/uni-automator": "3.0.0-3081220230817001", + "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", + "@dcloudio/uni-stacktracey": "3.0.0-3081220230817001", + "@dcloudio/vite-plugin-uni": "3.0.0-3081220230817001", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "@vue/runtime-core": "^3.2.45", + "@vue/tsconfig": "^0.1.3", + "eslint": "^8.51.0", + "eslint-config-alloy": "^5.1.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-vue": "^9.17.0", + "husky": "^8.0.0", + "prettier": "^3.0.3", + "typescript": "^4.9.5", + "vite": "4.1.4", + "vue-eslint-parser": "^9.3.2", + "vue-tsc": "^1.0.24" + }, + "lint-staged": { + "*.{json,md,css,less}": [ + "prettier --write" + ], + "*.{js,ts,jsx,tsx,vue}": [ + "prettier --write", + "eslint --fix" + ] + }, + "uni-app": { + "scripts": { + "h5-test": { + "title": "h5-test", + "env": { + "UNI_PLATFORM": "h5", + "VITE_HOST": "https://test.pi.xuexiaole.com", + "VITE_WS_URL": "wss://test.pi.xuexiaole.com/ws/device" + } + }, + "h5-prod": { + "title": "h5-prod", + "env": { + "UNI_PLATFORM": "h5", + "VITE_HOST": "https://pi.xuexiaole.com", + "VITE_WS_URL": "wss://pi.xuexiaole.com/ws/device" + } + } + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..a603dca --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,10587 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@dcloudio/uni-app': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(@dcloudio/types@3.4.0)(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-app-plus': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vite@4.1.4)(vue@3.3.4) + '@dcloudio/uni-components': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-h5': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-alipay': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-baidu': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-jd': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-kuaishou': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-lark': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-qq': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-toutiao': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-weixin': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-quickapp-webview': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@vueuse/core': + specifier: ^10.11.0 + version: 10.11.1(vue@3.3.4) + code-inspector-plugin: + specifier: ^0.10.1 + version: 0.10.1 + dayjs: + specifier: ^1.11.13 + version: 1.11.13 + echarts: + specifier: ^5.5.1 + version: 5.5.1 + lint-staged: + specifier: ^15.0.1 + version: 15.0.1 + pinia: + specifier: ^2.0.36 + version: 2.0.36(typescript@4.9.5)(vue@3.3.4) + sass: + specifier: ^1.72.0 + version: 1.72.0 + unplugin-vue-define-options: + specifier: ^1.4.2 + version: 1.4.2(vue@3.3.4) + vue: + specifier: ^3.3.4 + version: 3.3.4 + vue-i18n: + specifier: ^9.1.9 + version: 9.5.0(vue@3.3.4) + vue-qrcode-reader: + specifier: ^5.5.7 + version: 5.5.7 + weixin-js-sdk: + specifier: ^1.6.5 + version: 1.6.5 + devDependencies: + '@babel/core': + specifier: ^7.23.2 + version: 7.23.2 + '@babel/eslint-parser': + specifier: ^7.22.15 + version: 7.22.15(@babel/core@7.23.2)(eslint@8.51.0) + '@commitlint/cli': + specifier: ^17.8.0 + version: 17.8.0 + '@commitlint/config-conventional': + specifier: ^17.8.0 + version: 17.8.0 + '@dcloudio/types': + specifier: ^3.3.2 + version: 3.4.0 + '@dcloudio/uni-automator': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-cli-shared': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-stacktracey': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001 + '@dcloudio/vite-plugin-uni': + specifier: 3.0.0-3081220230817001 + version: 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vite@4.1.4)(vue@3.3.4) + '@typescript-eslint/eslint-plugin': + specifier: ^6.8.0 + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^6.8.0 + version: 6.8.0(eslint@8.51.0)(typescript@4.9.5) + '@vue/runtime-core': + specifier: ^3.2.45 + version: 3.3.4 + '@vue/tsconfig': + specifier: ^0.1.3 + version: 0.1.3(@types/node@20.5.1) + eslint: + specifier: ^8.51.0 + version: 8.51.0 + eslint-config-alloy: + specifier: ^5.1.2 + version: 5.1.2(@babel/eslint-parser@7.22.15)(@typescript-eslint/eslint-plugin@6.8.0)(@typescript-eslint/parser@6.8.0)(eslint-plugin-vue@9.17.0)(eslint@8.51.0)(typescript@4.9.5)(vue-eslint-parser@9.3.2) + eslint-plugin-import: + specifier: ^2.28.1 + version: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint@8.51.0) + eslint-plugin-vue: + specifier: ^9.17.0 + version: 9.17.0(eslint@8.51.0) + husky: + specifier: ^8.0.0 + version: 8.0.3 + prettier: + specifier: ^3.0.3 + version: 3.0.3 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + vite: + specifier: 4.1.4 + version: 4.1.4(@types/node@20.5.1)(sass@1.72.0)(terser@5.22.0) + vue-eslint-parser: + specifier: ^9.3.2 + version: 9.3.2(eslint@8.51.0) + vue-tsc: + specifier: ^1.0.24 + version: 1.8.19(typescript@4.9.5) + +packages: + + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@ampproject/remapping@2.2.1': + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.22.13': + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.23.2': + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.23.2': + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.22.15': + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + + '@babel/generator@7.23.0': + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.22.5': + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.22.15': + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.22.15': + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.22.15': + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.4.3': + resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.23.0': + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.22.15': + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.23.0': + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.22.5': + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.22.5': + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.22.20': + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.22.20': + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.22.5': + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.22.15': + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.22.20': + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.23.2': + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.22.20': + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.23.0': + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.24.1': + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15': + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15': + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.22.5': + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.22.5': + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.22.5': + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.22.5': + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.22.5': + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.23.2': + resolution: {integrity: sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.22.5': + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.22.5': + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.23.0': + resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.22.5': + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.22.11': + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.22.15': + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.22.5': + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.23.0': + resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.22.5': + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.22.5': + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dynamic-import@7.22.11': + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.22.5': + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.22.11': + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.22.15': + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.22.5': + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.22.11': + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.22.5': + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.22.11': + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.22.5': + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.23.0': + resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.23.0': + resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.23.0': + resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.22.5': + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.22.5': + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.22.11': + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.22.11': + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.22.15': + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.22.5': + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.22.11': + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.23.0': + resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.22.15': + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.22.5': + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.22.11': + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.22.5': + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.22.10': + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.22.5': + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.22.5': + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.22.5': + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.22.5': + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.22.5': + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.22.5': + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.22.15': + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.22.10': + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.22.5': + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.22.5': + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.22.5': + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.23.2': + resolution: {integrity: sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + '@babel/runtime@7.23.2': + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.22.15': + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.23.2': + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.23.0': + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.0': + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@commitlint/cli@17.8.0': + resolution: {integrity: sha512-D3LdyZYbiRyAChfJMNlAd9f2P9vNQ7GWbI9gN2o7L5hF07QJDqj4z/pcJF3PjDbJWOaUUXla287RdDmmKqH2WQ==} + engines: {node: '>=v14'} + hasBin: true + + '@commitlint/config-conventional@17.8.0': + resolution: {integrity: sha512-MgiFXujmqAvi7M33C7OSMTznwrVkckrbXe/aZWQ/+KFGLLF6IE50XIcjGrW0/uiDGb/im5qbqF2dh1dCFNa+sQ==} + engines: {node: '>=v14'} + + '@commitlint/config-validator@17.6.7': + resolution: {integrity: sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==} + engines: {node: '>=v14'} + + '@commitlint/ensure@17.6.7': + resolution: {integrity: sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==} + engines: {node: '>=v14'} + + '@commitlint/execute-rule@17.4.0': + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} + engines: {node: '>=v14'} + + '@commitlint/format@17.4.4': + resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} + engines: {node: '>=v14'} + + '@commitlint/is-ignored@17.8.0': + resolution: {integrity: sha512-8bR6rxNcWaNprPBdE4ePIOwbxutTQGOsRPYWssX+zjGxnEljzaZSGzFUOMxapYILlf8Tts/O1wPQgG549Rdvdg==} + engines: {node: '>=v14'} + + '@commitlint/lint@17.8.0': + resolution: {integrity: sha512-4ihwnqOY4TcJN6iz5Jv1LeYavvBllONwFyGxOIWmCT5s4PNMb43cws2TUdbXTZL1Vq59etGKd5LWYDFPVbs5EA==} + engines: {node: '>=v14'} + + '@commitlint/load@17.8.0': + resolution: {integrity: sha512-9VnGXYJCP4tXmR4YrwP8n5oX6T5ZsHfPQq6WuUQOvAI+QsDQMaTGgTRXr7us+xsjz+b+mMBSagogqfUx2aixyw==} + engines: {node: '>=v14'} + + '@commitlint/message@17.4.2': + resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} + engines: {node: '>=v14'} + + '@commitlint/parse@17.7.0': + resolution: {integrity: sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==} + engines: {node: '>=v14'} + + '@commitlint/read@17.5.1': + resolution: {integrity: sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==} + engines: {node: '>=v14'} + + '@commitlint/resolve-extends@17.6.7': + resolution: {integrity: sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==} + engines: {node: '>=v14'} + + '@commitlint/rules@17.7.0': + resolution: {integrity: sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA==} + engines: {node: '>=v14'} + + '@commitlint/to-lines@17.4.0': + resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} + engines: {node: '>=v14'} + + '@commitlint/top-level@17.4.0': + resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} + engines: {node: '>=v14'} + + '@commitlint/types@17.4.4': + resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} + engines: {node: '>=v14'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@dcloudio/types@3.4.0': + resolution: {integrity: sha512-xZMK+Su2dRT5h/INOyyqj3kYHzvEcryjk+01ZYcEwa8dqohk6U7ndcQFC/FjRBOHNB01yJWREgnDB5aThVtYjA==} + + '@dcloudio/uni-app-plus@3.0.0-3081220230817001': + resolution: {integrity: sha512-GpQobx3WbcyOZ49f8JM+febzKvlthFBAxcs4xrbtNVzmkj0jLJoh9GoH37oa7m5DI1k4l5wUuwvg4/JxBbhOSA==} + + '@dcloudio/uni-app-uts@3.0.0-3081220230817001': + resolution: {integrity: sha512-snMFEpTw5T0TT5uFwp0piytLRB0FBRHDM5ML00E1nrzfts0XlaFKoB4UsvLySG5sE5+Xt8F5/uzKxid3mcgTLQ==} + + '@dcloudio/uni-app-vite@3.0.0-3081220230817001': + resolution: {integrity: sha512-iHmKh6hjPGh+FC6Fi4qqwT5N31QiWv9JymCLdbkOJRi71A3byDjxoH7ScSEEEg+A5AAPky6LHbmFmznPMeSwAg==} + + '@dcloudio/uni-app-vue@3.0.0-3081220230817001': + resolution: {integrity: sha512-08ZUIn2a+OZWjqvjTbLygWZOY9YXbf2J1ns2letBI9aoMZDx+Sgx2lUFWHDksmOhvApPLKrRjJM0Hmmxi2mjJw==} + + '@dcloudio/uni-app@3.0.0-3081220230817001': + resolution: {integrity: sha512-sf8PzXHSd/VFCn7X9+QbD4nrY21FnIwjrhyX2hFit7PZK9kpyQluqCmG7YuotuXJzsNML8c8u2O9q5FaeOyTHg==} + peerDependencies: + '@dcloudio/types': ^3.3.2 + + '@dcloudio/uni-automator@3.0.0-3081220230817001': + resolution: {integrity: sha512-boaRlUAAXsEh4aN5PbtMVvzdmvXqoEWa8eQBD4oCH36lyGgK8q75vsjLRi4LBFFwNlCNMrYepTNbBCjP+Sgt0g==} + peerDependencies: + jest: 27.0.4 + jest-environment-node: 27.5.1 + + '@dcloudio/uni-cli-shared@3.0.0-3081220230817001': + resolution: {integrity: sha512-FOeydfIdKZg+MnQsHSFLXBzzmXtgCWnmEyjw3MHNN5mGwQB6+f7vK8sLw+yjizD/j71eMnh8XXCk+dV3nD/Vzg==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@dcloudio/uni-cloud@3.0.0-3081220230817001': + resolution: {integrity: sha512-rrHN4PvvylrhmivAoSv4h8ZcQ3ZWHnMRXhQWPC9FBR1TInrrxrrAHuMqSZn6pTIXhCiRA3Kuy6aDNVCbt6VA+g==} + + '@dcloudio/uni-components@3.0.0-3081220230817001': + resolution: {integrity: sha512-FlIrTgR/9Yp8FWYfhXfLPd0jJtBwJwRBAWWmLNaufkTojm6X7rX8wQOd13n+7gJGKzfXcEV8npOYpVou4P46Pw==} + + '@dcloudio/uni-h5-vite@3.0.0-3081220230817001': + resolution: {integrity: sha512-x7F6mUTjHiOx7+lj5yIrzhD7gr0HTNJaku5gV3O8bFjxKLcIkFkAyliKPbqJ4QZCmCCmEfJpOGKrDhk35tlibg==} + + '@dcloudio/uni-h5-vue@3.0.0-3081220230817001': + resolution: {integrity: sha512-q1eFoXb5/4whNIJ1CumKmeypPjZofw8xDQRHZeGZ7NVRQ0/MYnEm6A0n/vkmEo1IgTZIY83m/jr6RNg7a9Ko/A==} + + '@dcloudio/uni-h5@3.0.0-3081220230817001': + resolution: {integrity: sha512-m2RCZpYxuAGnXlQKSQ8FGy4OlnUJJ8XMx2HNQWriDwtjDpAGDU8I2LZQZ7MHCNPIUd503y+mgU2NPlSQHnrlkQ==} + + '@dcloudio/uni-i18n@3.0.0-3081220230817001': + resolution: {integrity: sha512-ooAIoNCy+DPlMtA4k9eoaJJsYQtici85le+ietIIzLdJoa2YUnudYv9CvG9Mw/RsKQI+MLl96ADAPgUpGzounw==} + + '@dcloudio/uni-mp-alipay@3.0.0-3081220230817001': + resolution: {integrity: sha512-lZR2u8sxJ/ZaDqaxEmGzgWWKHcjnLGedDTrMh8kOEPLHO6THVNe5TP6XeiTcE0HKJfWEXv6X13erjn0FCstz3A==} + + '@dcloudio/uni-mp-baidu@3.0.0-3081220230817001': + resolution: {integrity: sha512-FYwK1AqSc+NvtvaCia/fOP57ELx5O5icHjuwPKMsJv5eGtqlwhXzyvSCoGEFyYQcsWP9ZqYSb3fTuxVlbiEYdA==} + + '@dcloudio/uni-mp-compiler@3.0.0-3081220230817001': + resolution: {integrity: sha512-KDfwEr9jFNSkNbYmdDc+zfGuZwXGkz3bW3c4cuV44IncTf/UW2m594Z2UzhJkx/p662aQ2W9M4BFZ0o5QSfQDw==} + + '@dcloudio/uni-mp-jd@3.0.0-3081220230817001': + resolution: {integrity: sha512-sKDppXhk7k8Euce9v7ItQ2cs3+XpQV/DX8FjXzfO9DfjQEKiR/Pyfis7e3ANQrF4V/W3uwK5wgN/PyI3/NRloQ==} + + '@dcloudio/uni-mp-kuaishou@3.0.0-3081220230817001': + resolution: {integrity: sha512-wYXwoxcdms8PviNsKg2Y9oqHawKqseoD97sYs94RLDVSnyO9c6NOoUMsYjXwIZXt05E56bJ9EbxDqYDwwJhEKw==} + + '@dcloudio/uni-mp-lark@3.0.0-3081220230817001': + resolution: {integrity: sha512-4aHwULp+Nx55BoJvj1jCXWnVJrzl0ACEbDlXVvxmNUI5tkqn2kYL4AZgrXP1vCx8MHKVPI4E34Z+lrBTfSfKMA==} + + '@dcloudio/uni-mp-qq@3.0.0-3081220230817001': + resolution: {integrity: sha512-StSsxCCKMdZCghUZ+wdX1otCmlYkIV+O2Z/AxMv772HfIKlpDp44PPaxlKBG4L6+X7h2JsCvyZW1iSznM5A3CQ==} + + '@dcloudio/uni-mp-toutiao@3.0.0-3081220230817001': + resolution: {integrity: sha512-ZMSNNjQpCV4z+76OA8rDKKhqr+vQmTvKNUOzKfND5KPYhgWbqviEBZ8ptiDT5gaWXMpkUHNfWz32hdi5CLbj5Q==} + + '@dcloudio/uni-mp-vite@3.0.0-3081220230817001': + resolution: {integrity: sha512-jmEbsVOJ1dlj46QiSFMB2C3zbgGivkGf1KXoPTAprv0WZrkmjF1uNLj0pHFOOUnnyHwHPViEApsMOPS4twIjIQ==} + + '@dcloudio/uni-mp-vue@3.0.0-3081220230817001': + resolution: {integrity: sha512-EfdTH6+qGXRh3402+psl8X4K34/gHfBPaMfxbwMsne1rGnB8ZVXiN73gVXKfCWeznvJqdWuTWmmjqaLoBhjOjA==} + + '@dcloudio/uni-mp-weixin@3.0.0-3081220230817001': + resolution: {integrity: sha512-vo2k8OaWFOvoXuRX83UCR0AOOKXXwjRDIOX0y/jUC9TX63Ne5OTdRKH9253D9109FrwtrtsUWqnpfn1ynKXl9g==} + + '@dcloudio/uni-nvue-styler@3.0.0-3081220230817001': + resolution: {integrity: sha512-EImnyrYHmAc7ibKfIMkBG1uMavS5sPdrtQj52m40o/QNU5kcsqUk2Od9c1ULkQloxhmK2E4FZvXo4cgszE/Txw==} + + '@dcloudio/uni-push@3.0.0-3081220230817001': + resolution: {integrity: sha512-1IyVJlBnZVVvY49SQKpZG5Oxak5Wl51NvYEozuYoeBaaTeZObm7B6eyd722sXi0Dd6N1sE3kIdm/XReprK53eg==} + + '@dcloudio/uni-quickapp-webview@3.0.0-3081220230817001': + resolution: {integrity: sha512-w6yitVyCKEFSO+UDsJPjc5RfAstIdOEbBHgim0gInTfOl90odmyUPKDxWhwQgS5vqezBXpCj0/6ywVMHvZu+7A==} + + '@dcloudio/uni-shared@3.0.0-3081220230817001': + resolution: {integrity: sha512-NI1pBO40VqvnWjwNXad3CqrUYvr4ffGjiDMgJGMP13rgOEAqamU7ozBimoASDVPKyyfSHTeuYuh0gtaaLu4CsQ==} + + '@dcloudio/uni-stacktracey@3.0.0-3081220230817001': + resolution: {integrity: sha512-DUTTN8JWXxjO3ryz7uhD3+vazHVMflln15+r0ycWBjXO0p0MepRY3gX5gKCyiq9D3NUIxazcFAUJ6agFVUbDog==} + + '@dcloudio/uni-stat@3.0.0-3081220230817001': + resolution: {integrity: sha512-xpbsor5WKU1eCbo0dmQ0hBUX6RrdG7DNDzCSD6oimndIXVGLkFhWrIC3brQ7S1G2GQvXdXnXJpUVskI3qNe/uw==} + + '@dcloudio/vite-plugin-uni@3.0.0-3081220230817001': + resolution: {integrity: sha512-dLeqqyrNNUBTZfI0ppPk4YoD+DBI0gJLeTjpN6bK5i3nFKkju9g2K6IWl62YMObjTiXwQF8qAEDb+fyWoe4Ksw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + vite: ^4.0.0 + + '@esbuild/android-arm64@0.16.17': + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.16.17': + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.16.17': + resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.16.17': + resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.16.17': + resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.16.17': + resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.16.17': + resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.16.17': + resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.16.17': + resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.16.17': + resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.16.17': + resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.16.17': + resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.16.17': + resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.16.17': + resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.16.17': + resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.16.17': + resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.16.17': + resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.16.17': + resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.16.17': + resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.16.17': + resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.16.17': + resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.16.17': + resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.9.1': + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.2': + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.51.0': + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@humanwhocodes/config-array@0.11.11': + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@1.2.1': + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + + '@intlify/core-base@9.1.9': + resolution: {integrity: sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==} + engines: {node: '>= 10'} + + '@intlify/core-base@9.5.0': + resolution: {integrity: sha512-y3ufM1RJbI/DSmJf3lYs9ACq3S/iRvaSsE3rPIk0MGH7fp+JxU6rdryv/EYcwfcr3Y1aHFlCBir6S391hRZ57w==} + engines: {node: '>= 16'} + + '@intlify/devtools-if@9.1.9': + resolution: {integrity: sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==} + engines: {node: '>= 10'} + + '@intlify/message-compiler@9.1.9': + resolution: {integrity: sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==} + engines: {node: '>= 10'} + + '@intlify/message-compiler@9.5.0': + resolution: {integrity: sha512-CAhVNfEZcOVFg0/5MNyt+OFjvs4J/ARjCj2b+54/FvFP0EDJI5lIqMTSDBE7k0atMROSP0SvWCkwu/AZ5xkK1g==} + engines: {node: '>= 16'} + + '@intlify/message-resolver@9.1.9': + resolution: {integrity: sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==} + engines: {node: '>= 10'} + + '@intlify/runtime@9.1.9': + resolution: {integrity: sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==} + engines: {node: '>= 10'} + + '@intlify/shared@9.1.9': + resolution: {integrity: sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==} + engines: {node: '>= 10'} + + '@intlify/shared@9.5.0': + resolution: {integrity: sha512-tAxV14LMXZDZbu32XzLMTsowNlgJNmLwWHYzvMUl6L8gvQeoYiZONjY7AUsqZW8TOZDX9lfvF6adPkk9FSRdDA==} + engines: {node: '>= 16'} + + '@intlify/vue-devtools@9.1.9': + resolution: {integrity: sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==} + engines: {node: '>= 10'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@27.5.1': + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/core@27.5.1': + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@27.5.1': + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/fake-timers@27.5.1': + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/globals@27.5.1': + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/reporters@27.5.1': + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/source-map@27.5.1': + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@27.5.1': + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-sequencer@27.5.1': + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/transform@27.5.1': + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jimp/bmp@0.10.3': + resolution: {integrity: sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/core@0.10.3': + resolution: {integrity: sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==} + + '@jimp/custom@0.10.3': + resolution: {integrity: sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==} + + '@jimp/gif@0.10.3': + resolution: {integrity: sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/jpeg@0.10.3': + resolution: {integrity: sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blit@0.10.3': + resolution: {integrity: sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blur@0.10.3': + resolution: {integrity: sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-circle@0.10.3': + resolution: {integrity: sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-color@0.10.3': + resolution: {integrity: sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-contain@0.10.3': + resolution: {integrity: sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-cover@0.10.3': + resolution: {integrity: sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-crop@0.10.3': + resolution: {integrity: sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-displace@0.10.3': + resolution: {integrity: sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-dither@0.10.3': + resolution: {integrity: sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-fisheye@0.10.3': + resolution: {integrity: sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-flip@0.10.3': + resolution: {integrity: sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-rotate': '>=0.3.5' + + '@jimp/plugin-gaussian@0.10.3': + resolution: {integrity: sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-invert@0.10.3': + resolution: {integrity: sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-mask@0.10.3': + resolution: {integrity: sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-normalize@0.10.3': + resolution: {integrity: sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-print@0.10.3': + resolution: {integrity: sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + + '@jimp/plugin-resize@0.10.3': + resolution: {integrity: sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-rotate@0.10.3': + resolution: {integrity: sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-scale@0.10.3': + resolution: {integrity: sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-shadow@0.10.3': + resolution: {integrity: sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blur': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-threshold@0.10.3': + resolution: {integrity: sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color': '>=0.8.0' + '@jimp/plugin-resize': '>=0.8.0' + + '@jimp/plugins@0.10.3': + resolution: {integrity: sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/png@0.10.3': + resolution: {integrity: sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/tiff@0.10.3': + resolution: {integrity: sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/types@0.10.3': + resolution: {integrity: sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/utils@0.10.3': + resolution: {integrity: sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==} + + '@jridgewell/gen-mapping@0.3.3': + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.1': + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.1.2': + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.5': + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.19': + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@sinonjs/commons@1.8.6': + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + + '@sinonjs/fake-timers@8.1.0': + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@tsconfig/node10@1.0.9': + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/babel__core@7.20.2': + resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} + + '@types/babel__generator@7.6.5': + resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} + + '@types/babel__template@7.4.2': + resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} + + '@types/babel__traverse@7.20.2': + resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} + + '@types/dom-webcodecs@0.1.11': + resolution: {integrity: sha512-yPEZ3z7EohrmOxbk/QTAa0yonMFkNkjnVXqbGb7D4rMr+F1dGQ8ZUFxXkyLLJuiICPejZ0AZE9Rrk9wUCczx4A==} + + '@types/emscripten@1.39.13': + resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/graceful-fs@4.1.7': + resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==} + + '@types/istanbul-lib-coverage@2.0.4': + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + + '@types/istanbul-lib-report@3.0.1': + resolution: {integrity: sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==} + + '@types/istanbul-reports@3.0.2': + resolution: {integrity: sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==} + + '@types/json-schema@7.0.13': + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/minimist@1.2.3': + resolution: {integrity: sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==} + + '@types/node@20.5.1': + resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} + + '@types/node@20.8.6': + resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + + '@types/normalize-package-data@2.4.2': + resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/semver@7.5.3': + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + + '@types/stack-utils@2.0.1': + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + '@types/yargs-parser@21.0.1': + resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==} + + '@types/yargs@16.0.6': + resolution: {integrity: sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==} + + '@typescript-eslint/eslint-plugin@6.8.0': + resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.8.0': + resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.8.0': + resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@6.8.0': + resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.8.0': + resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@6.8.0': + resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.8.0': + resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@6.8.0': + resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@vitejs/plugin-legacy@4.1.1': + resolution: {integrity: sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^4.0.0 + + '@vitejs/plugin-vue-jsx@3.0.2': + resolution: {integrity: sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@4.4.0': + resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + + '@volar/language-core@1.10.4': + resolution: {integrity: sha512-Na69qA6uwVIdA0rHuOc2W3pHtVQQO8hCNim7FOaKNpRJh0oAFnu5r9i7Oopo5C4cnELZkPNjTrbmpcCTiW+CMQ==} + + '@volar/source-map@1.10.4': + resolution: {integrity: sha512-RxZdUEL+pV8p+SMqnhVjzy5zpb1QRZTlcwSk4bdcBO7yOu4rtEWqDGahVCEj4CcXour+0yJUMrMczfSCpP9Uxg==} + + '@volar/typescript@1.10.4': + resolution: {integrity: sha512-BCCUEBASBEMCrz7qmNSi2hBEWYsXD0doaktRKpmmhvb6XntM2sAWYu6gbyK/MluLDgluGLFiFRpWgobgzUqolg==} + + '@vue-macros/common@1.10.1': + resolution: {integrity: sha512-uftSpfwdwitcQT2lM8aVxcfe5rKQBzC9jMrtJM5sG4hEuFyfIvnJihpPpnaWxY+X4p64k+YYXtBFv+1O5Bq3dg==} + engines: {node: '>=16.14.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + + '@vue/babel-helper-vue-transform-on@1.1.5': + resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==} + + '@vue/babel-plugin-jsx@1.1.5': + resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.2.47': + resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} + + '@vue/compiler-core@3.3.4': + resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} + + '@vue/compiler-core@3.4.21': + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + + '@vue/compiler-dom@3.2.47': + resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} + + '@vue/compiler-dom@3.3.4': + resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} + + '@vue/compiler-dom@3.4.21': + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + + '@vue/compiler-sfc@3.2.47': + resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} + + '@vue/compiler-sfc@3.3.4': + resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} + + '@vue/compiler-sfc@3.4.21': + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + + '@vue/compiler-ssr@3.2.47': + resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} + + '@vue/compiler-ssr@3.3.4': + resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} + + '@vue/compiler-ssr@3.4.21': + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + + '@vue/devtools-api@6.5.1': + resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} + + '@vue/language-core@1.8.19': + resolution: {integrity: sha512-nt3dodGs97UM6fnxeQBazO50yYCKBK53waFWB3qMbLmR6eL3aUryZgQtZoBe1pye17Wl8fs9HysV3si6xMgndQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity-transform@3.2.47': + resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} + + '@vue/reactivity-transform@3.3.4': + resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} + + '@vue/reactivity@3.3.4': + resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} + + '@vue/runtime-core@3.3.4': + resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} + + '@vue/runtime-dom@3.3.4': + resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} + + '@vue/server-renderer@3.2.47': + resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} + peerDependencies: + vue: 3.2.47 + + '@vue/server-renderer@3.3.4': + resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} + peerDependencies: + vue: 3.3.4 + + '@vue/shared@3.2.47': + resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} + + '@vue/shared@3.3.4': + resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + + '@vue/shared@3.4.21': + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + + '@vue/tsconfig@0.1.3': + resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@vue/typescript@1.8.19': + resolution: {integrity: sha512-k/SHeeQROUgqsxyHQ8Cs3Zz5TnX57p7BcBDVYR2E0c61QL2DJ2G8CsaBremmNGuGE6o1R5D50IHIxFmroMz8iw==} + + '@vueuse/core@10.11.1': + resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} + + '@vueuse/metadata@10.11.1': + resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} + + '@vueuse/shared@10.11.1': + resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + ast-kit@0.11.3: + resolution: {integrity: sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA==} + engines: {node: '>=16.14.0'} + + ast-kit@0.9.5: + resolution: {integrity: sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==} + engines: {node: '>=16.14.0'} + + ast-walker-scope@0.5.0: + resolution: {integrity: sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==} + engines: {node: '>=16.14.0'} + + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.16: + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + babel-jest@27.5.1: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + babel-plugin-polyfill-corejs2@0.4.6: + resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.8.5: + resolution: {integrity: sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.5.3: + resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@27.5.1: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + barcode-detector@2.2.2: + resolution: {integrity: sha512-JcSekql+EV93evfzF9zBr+Y6aRfkR+QFvgyzbwQ0dbymZXoAI9+WgT7H1E429f+3RKNncHz2CW98VQtaaKpmfQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-equal@0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.9: + resolution: {integrity: sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==} + engines: {node: '>=8'} + + call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001549: + resolution: {integrity: sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.1: + resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} + engines: {node: '>=10'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + code-inspector-core@0.10.1: + resolution: {integrity: sha512-zSxt36n9i21RSVXnvKlh8Nn8mjIb4RiRBIShs6EzFmKPtY+ylQ4mNMzf6HKU5XPP5Xz45j1r9DfO76nCCZdEhQ==} + + code-inspector-plugin@0.10.1: + resolution: {integrity: sha512-kzSRzY0PNp/BfEoUfGe1qemZAFCCp32fYihzY7B32NSWyqXKMqN3ST5kZE8o+kuRyNmwGim2JqSXb0j34URIRw==} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + compare-versions@3.6.0: + resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + conventional-changelog-angular@6.0.0: + resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} + engines: {node: '>=14'} + + conventional-changelog-conventionalcommits@6.1.0: + resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} + engines: {node: '>=14'} + + conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} + hasBin: true + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + core-js-compat@3.33.0: + resolution: {integrity: sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==} + + core-js@3.33.0: + resolution: {integrity: sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==} + + cosmiconfig-typescript-loader@4.4.0: + resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} + engines: {node: '>=v14.21.3'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=4' + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css-font-size-keywords@1.0.0: + resolution: {integrity: sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==} + + css-font-stretch-keywords@1.0.1: + resolution: {integrity: sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==} + + css-font-style-keywords@1.0.1: + resolution: {integrity: sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==} + + css-font-weight-keywords@1.0.0: + resolution: {integrity: sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==} + + css-list-helpers@2.0.0: + resolution: {integrity: sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ==} + + css-system-font-keywords@1.0.0: + resolution: {integrity: sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + echarts@5.5.1: + resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.4.556: + resolution: {integrity: sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ==} + + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.22.2: + resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} + + es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild@0.16.17: + resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-alloy@5.1.2: + resolution: {integrity: sha512-jppzCxNqlhvMYPgfUzvPq4f9fEu070+m3CRIjWdUx/GJLZ6dXHARzMIrIhFuIvzYI5Qo40ht1gunguLnRhIB7A==} + peerDependencies: + '@babel/eslint-parser': 7.x + '@babel/preset-react': 7.x + '@typescript-eslint/eslint-plugin': '>=5.55.0' + '@typescript-eslint/parser': '>=5.0.0' + eslint: '>=8.24.0' + eslint-plugin-react: '>=7.31.8' + eslint-plugin-vue: '>=9.5.1' + typescript: 5.x + vue-eslint-parser: 9.x + peerDependenciesMeta: + '@babel/eslint-parser': + optional: true + '@babel/preset-react': + optional: true + '@typescript-eslint/eslint-plugin': + optional: true + '@typescript-eslint/parser': + optional: true + eslint-plugin-react: + optional: true + eslint-plugin-vue: + optional: true + typescript: + optional: true + vue-eslint-parser: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.8.0: + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.28.1: + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-vue@9.17.0: + resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-type@9.0.0: + resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} + engines: {node: '>=6'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} + engines: {node: '>=12.0.0'} + + flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + git-raw-commits@2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + + hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + + invert-kv@3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-text-path@1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + + is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + + jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-cli@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-each@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-haste-map@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve-dependencies@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runner@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest@27.0.4: + resolution: {integrity: sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jimp@0.10.3: + resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} + + jpeg-js@0.3.7: + resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + lcid@3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + licia@1.38.2: + resolution: {integrity: sha512-QsX3fZt88e1KaNdZXTSXqGYNHFXMV8xgfwa3eCTYdv8k4OLQimxwjTdXXej11BdSyUUp0rCZROI8rcTvnZRZ7w==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.0.1: + resolution: {integrity: sha512-2IU5OWmCaxch0X0+IBF4/v7sutpB+F3qoXbro43pYjQTOo5wumckjxoxn47pQBqqBsCWrD5HnI2uG/zJA7isew==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@7.0.1: + resolution: {integrity: sha512-nz+7hwgbDp8eWNoDgzdl4hA/xDSLrNRzPu1TLgOYs6l5Y+Ma6zVWWy9Oyt9TQFONwKoSPoka3H50D3vD5EuNwg==} + engines: {node: '>=16.0.0'} + + load-bmfont@1.4.1: + resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==} + + loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + localstorage-polyfill@1.0.1: + resolution: {integrity: sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + magic-string-ast@0.3.0: + resolution: {integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==} + engines: {node: '>=16.14.0'} + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + + magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + + module-alias@2.2.3: + resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + + nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + + object-inspect@1.13.0: + resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + + object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + + omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + os-locale-s-fix@1.0.8-fix-1: + resolution: {integrity: sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==} + engines: {node: '>=10', yarn: ^1.22.4} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.4: + resolution: {integrity: sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==} + + parse-css-font@4.0.0: + resolution: {integrity: sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==} + + parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + phin@2.9.3: + resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia@2.0.36: + resolution: {integrity: sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pixelmatch@4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + portfinder@1.0.32: + resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} + engines: {node: '>= 0.12.0'} + + postcss-import@14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-modules-extract-imports@3.0.0: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.0.3: + resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.0.0: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules@4.3.1: + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + + postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + qrcode-reader@1.0.4: + resolution: {integrity: sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==} + + qrcode-terminal@0.12.0: + resolution: {integrity: sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==} + hasBin: true + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-global@1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} + engines: {node: '>=8'} + + resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-area-insets@1.4.1: + resolution: {integrity: sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==} + + safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.72.0: + resolution: {integrity: sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + + sdp@3.2.0: + resolution: {integrity: sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + + string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + systemjs@6.14.2: + resolution: {integrity: sha512-1TlOwvKWdXxAY9vba+huLu99zrQURDWA8pUTYsRIYDZYQbGyK+pyEP4h4dlySsqo7ozyJBmYD20F+iUHhAltEg==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser@5.22.0: + resolution: {integrity: sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-extensions@1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + ts-api-utils@1.0.3: + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + + ts-node@10.9.1: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-vue-define-options@1.4.2: + resolution: {integrity: sha512-jQ3nJ1olC107QUA67UEB1CWJXnbVA7SF4UibKQF+jvME7UZ/XomctISHtAkJSJ9YHn0eqnqqzyNkng/KnLUZBw==} + engines: {node: '>=16.14.0'} + + unplugin@1.10.0: + resolution: {integrity: sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==} + engines: {node: '>=14.0.0'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + utif@2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-code-inspector-plugin@0.10.1: + resolution: {integrity: sha512-RB0QX0S7fAPRrBCsA7eRfisftb9maY5Rg54m1gGKHmkUOql/TTlYpLKGl0u59OvBm/GnFYQaVnVELHCQqnoWOw==} + + vite@4.1.4: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-demi@0.14.7: + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@9.3.2: + resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + vue-i18n@9.5.0: + resolution: {integrity: sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + + vue-qrcode-reader@5.5.7: + resolution: {integrity: sha512-aflcKS6sQ5CDlmoyAaJJQ3OFeMcdnF6RRO2zHBlmKkHKL5nwPt+ayl/TCw+LvUBXhmfR3kNtPC5oJtgk9TcrBw==} + engines: {node: '>=18.0.0'} + + vue-router@4.2.5: + resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} + peerDependencies: + vue: ^3.2.0 + + vue-template-compiler@2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + + vue-tsc@1.8.19: + resolution: {integrity: sha512-tacMQLQ0CXAfbhRycCL5sWIy1qujXaIEtP1hIQpzHWOUuICbtTj9gJyFf91PvzG5KCNIkA5Eg7k2Fmgt28l5DQ==} + hasBin: true + peerDependencies: + typescript: '*' + + vue@3.3.4: + resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} + + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + webpack-code-inspector-plugin@0.10.1: + resolution: {integrity: sha512-nPHF1iTDGtjN9iBixWdwSEZPhXwbTewKbrpNXGK61N3DqCqeqFHsMMTEWtUXl4JLi4J8ZwspvGauxVEJh5HcDQ==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + + webrtc-adapter@8.2.3: + resolution: {integrity: sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==} + engines: {node: '>=6.0.0', npm: '>=3.10.0'} + + weixin-js-sdk@1.6.5: + resolution: {integrity: sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ==} + + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.14.2: + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + + xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest@1.8.0: + resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} + engines: {node: '>=0.4.0'} + + xregexp@3.1.0: + resolution: {integrity: sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.3.2: + resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + engines: {node: '>= 14'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zrender@5.6.0: + resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==} + + zxing-wasm@1.1.3: + resolution: {integrity: sha512-MYm9k/5YVs4ZOTIFwlRjfFKD0crhefgbnt1+6TEpmKUDFp3E2uwqGSKwQOd2hOIsta/7Usq4hnpNRYTLoljnfA==} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@ampproject/remapping@2.2.1': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + '@babel/code-frame@7.22.13': + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + + '@babel/compat-data@7.23.2': {} + + '@babel/core@7.23.2': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.22.15(@babel/core@7.23.2)(eslint@8.51.0)': + dependencies: + '@babel/core': 7.23.2 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.51.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.23.0': + dependencies: + '@babel/types': 7.23.0 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.22.5': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-compilation-targets@7.22.15': + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-function-name@7.23.0': + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-member-expression-to-functions@7.23.0': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/helper-optimise-call-expression@7.22.5': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-plugin-utils@7.22.5': {} + + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + + '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-string-parser@7.22.5': {} + + '@babel/helper-string-parser@7.24.1': {} + + '@babel/helper-validator-identifier@7.22.20': {} + + '@babel/helper-validator-option@7.22.15': {} + + '@babel/helper-wrap-function@7.22.20': + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + + '@babel/helpers@7.23.2': + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + transitivePeerDependencies: + - supports-color + + '@babel/highlight@7.22.20': + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/parser@7.23.0': + dependencies: + '@babel/types': 7.23.0 + + '@babel/parser@7.24.1': + dependencies: + '@babel/types': 7.24.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-async-generator-functions@7.23.2(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + + '@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + + '@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + + '@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + + '@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + + '@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + + '@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + + '@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + + '@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + + '@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + + '@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + + '@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + + '@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + + '@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + + '@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + + '@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + + '@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + + '@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) + + '@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/preset-env@7.23.2(@babel/core@7.23.2)': + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-async-generator-functions': 7.23.2(@babel/core@7.23.2) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.2) + '@babel/types': 7.23.0 + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.5(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) + core-js-compat: 3.33.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.0 + esutils: 2.0.3 + + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime@7.23.2': + dependencies: + regenerator-runtime: 0.14.0 + + '@babel/template@7.22.15': + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + + '@babel/traverse@7.23.2': + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.23.0': + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@babel/types@7.24.0': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + + '@commitlint/cli@17.8.0': + dependencies: + '@commitlint/format': 17.4.4 + '@commitlint/lint': 17.8.0 + '@commitlint/load': 17.8.0 + '@commitlint/read': 17.5.1 + '@commitlint/types': 17.4.4 + execa: 5.1.1 + lodash.isfunction: 3.0.9 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + '@commitlint/config-conventional@17.8.0': + dependencies: + conventional-changelog-conventionalcommits: 6.1.0 + + '@commitlint/config-validator@17.6.7': + dependencies: + '@commitlint/types': 17.4.4 + ajv: 8.12.0 + + '@commitlint/ensure@17.6.7': + dependencies: + '@commitlint/types': 17.4.4 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@17.4.0': {} + + '@commitlint/format@17.4.4': + dependencies: + '@commitlint/types': 17.4.4 + chalk: 4.1.2 + + '@commitlint/is-ignored@17.8.0': + dependencies: + '@commitlint/types': 17.4.4 + semver: 7.5.4 + + '@commitlint/lint@17.8.0': + dependencies: + '@commitlint/is-ignored': 17.8.0 + '@commitlint/parse': 17.7.0 + '@commitlint/rules': 17.7.0 + '@commitlint/types': 17.4.4 + + '@commitlint/load@17.8.0': + dependencies: + '@commitlint/config-validator': 17.6.7 + '@commitlint/execute-rule': 17.4.0 + '@commitlint/resolve-extends': 17.6.7 + '@commitlint/types': 17.4.4 + '@types/node': 20.5.1 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@4.9.5) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 + ts-node: 10.9.1(@types/node@20.5.1)(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + '@commitlint/message@17.4.2': {} + + '@commitlint/parse@17.7.0': + dependencies: + '@commitlint/types': 17.4.4 + conventional-changelog-angular: 6.0.0 + conventional-commits-parser: 4.0.0 + + '@commitlint/read@17.5.1': + dependencies: + '@commitlint/top-level': 17.4.0 + '@commitlint/types': 17.4.4 + fs-extra: 11.1.1 + git-raw-commits: 2.0.11 + minimist: 1.2.8 + + '@commitlint/resolve-extends@17.6.7': + dependencies: + '@commitlint/config-validator': 17.6.7 + '@commitlint/types': 17.4.4 + import-fresh: 3.3.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + + '@commitlint/rules@17.7.0': + dependencies: + '@commitlint/ensure': 17.6.7 + '@commitlint/message': 17.4.2 + '@commitlint/to-lines': 17.4.0 + '@commitlint/types': 17.4.4 + execa: 5.1.1 + + '@commitlint/to-lines@17.4.0': {} + + '@commitlint/top-level@17.4.0': + dependencies: + find-up: 5.0.0 + + '@commitlint/types@17.4.4': + dependencies: + chalk: 4.1.2 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@dcloudio/types@3.4.0': {} + + '@dcloudio/uni-app-plus@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vite@4.1.4)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-app-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vite@4.1.4)(vue@3.3.4) + '@dcloudio/uni-app-vue': 3.0.0-3081220230817001 + debug: 4.3.4 + fs-extra: 10.1.0 + licia: 1.38.2 + postcss-selector-parser: 6.0.13 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-uts@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-i18n': 3.0.0-3081220230817001 + '@dcloudio/uni-nvue-styler': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@rollup/pluginutils': 4.2.1 + '@vue/compiler-core': 3.2.47 + '@vue/compiler-sfc': 3.2.47 + '@vue/shared': 3.2.47 + debug: 4.3.4 + es-module-lexer: 1.3.1 + fs-extra: 10.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-app-vite@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vite@4.1.4)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-i18n': 3.0.0-3081220230817001 + '@dcloudio/uni-nvue-styler': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@rollup/pluginutils': 4.2.1 + '@vitejs/plugin-vue': 4.4.0(vite@4.1.4)(vue@3.3.4) + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-sfc': 3.2.47 + debug: 4.3.4 + fs-extra: 10.1.0 + picocolors: 1.0.0 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-vue@3.0.0-3081220230817001': {} + + '@dcloudio/uni-app@3.0.0-3081220230817001(@dcloudio/types@3.4.0)(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/types': 3.4.0 + '@dcloudio/uni-cloud': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-components': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-i18n': 3.0.0-3081220230817001 + '@dcloudio/uni-push': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@dcloudio/uni-stat': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@vue/shared': 3.2.47 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-automator@3.0.0-3081220230817001(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + address: 1.2.2 + cross-env: 7.0.3 + debug: 4.3.4 + default-gateway: 6.0.3 + fs-extra: 10.1.0 + jest: 27.0.4(ts-node@10.9.1) + jest-environment-node: 27.5.1 + jsonc-parser: 3.2.0 + licia: 1.38.2 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.14.2 + transitivePeerDependencies: + - bufferutil + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-cli-shared@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/core': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + '@dcloudio/uni-i18n': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@rollup/pluginutils': 4.2.1 + '@vue/compiler-core': 3.2.47 + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-sfc': 3.2.47 + '@vue/server-renderer': 3.2.47(vue@3.3.4) + '@vue/shared': 3.2.47 + autoprefixer: 10.4.16(postcss@8.4.38) + base64url: 3.0.1 + chokidar: 3.5.3 + compare-versions: 3.6.0 + debug: 4.3.4 + es-module-lexer: 1.3.1 + esbuild: 0.17.19 + estree-walker: 2.0.2 + fast-glob: 3.3.1 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.2.0 + magic-string: 0.30.5 + merge: 2.1.1 + mime: 3.0.0 + module-alias: 2.2.3 + os-locale-s-fix: 1.0.8-fix-1 + picocolors: 1.0.0 + postcss-import: 14.1.0(postcss@8.4.38) + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.1) + postcss-modules: 4.3.1(postcss@8.4.38) + postcss-selector-parser: 6.0.13 + resolve: 1.22.8 + tapable: 2.2.1 + xregexp: 3.1.0 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cloud@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-i18n': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/shared': 3.2.47 + fast-glob: 3.3.1 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-components@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cloud': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-h5': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-i18n': 3.0.0-3081220230817001 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vite@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@rollup/pluginutils': 4.2.1 + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-sfc': 3.2.47 + '@vue/server-renderer': 3.2.47(vue@3.3.4) + '@vue/shared': 3.2.47 + debug: 4.3.4 + fs-extra: 10.1.0 + mime: 3.0.0 + module-alias: 2.2.3 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vue@3.0.0-3081220230817001(vue@3.3.4)': + dependencies: + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/server-renderer': 3.2.47(vue@3.3.4) + transitivePeerDependencies: + - vue + + '@dcloudio/uni-h5@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-h5-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-h5-vue': 3.0.0-3081220230817001(vue@3.3.4) + '@dcloudio/uni-i18n': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/server-renderer': 3.2.47(vue@3.3.4) + '@vue/shared': 3.2.47 + debug: 4.3.4 + localstorage-polyfill: 1.0.1 + postcss-selector-parser: 6.0.13 + safe-area-insets: 1.4.1 + vue-router: 4.2.5(vue@3.3.4) + xmlhttprequest: 1.8.0 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-i18n@3.0.0-3081220230817001': {} + + '@dcloudio/uni-mp-alipay@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-baidu@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-compiler': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-mp-weixin': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + jimp: 0.10.3 + licia: 1.38.2 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.14.2 + transitivePeerDependencies: + - bufferutil + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-compiler@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@babel/generator': 7.23.0 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/compiler-core': 3.2.47 + '@vue/compiler-dom': 3.2.47 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-jd@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-compiler': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/shared': 3.2.47 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-kuaishou@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-compiler': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-mp-weixin': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + transitivePeerDependencies: + - bufferutil + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-lark@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-compiler': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-toutiao': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-qq@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/shared': 3.2.47 + fs-extra: 10.1.0 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-toutiao@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-compiler': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vite@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-i18n': 3.0.0-3081220230817001 + '@dcloudio/uni-mp-compiler': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/compiler-sfc': 3.2.47 + '@vue/shared': 3.2.47 + debug: 4.3.4 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vue@3.0.0-3081220230817001': + dependencies: + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/shared': 3.2.47 + + '@dcloudio/uni-mp-weixin@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/shared': 3.2.47 + jimp: 0.10.3 + licia: 1.38.2 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.14.2 + transitivePeerDependencies: + - bufferutil + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-nvue-styler@3.0.0-3081220230817001': + dependencies: + '@vue/shared': 3.2.47 + parse-css-font: 4.0.0 + postcss: 8.4.31 + + '@dcloudio/uni-push@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-quickapp-webview@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vite': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-mp-vue': 3.0.0-3081220230817001 + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@vue/shared': 3.2.47 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-shared@3.0.0-3081220230817001': + dependencies: + '@vue/shared': 3.2.47 + + '@dcloudio/uni-stacktracey@3.0.0-3081220230817001': {} + + '@dcloudio/uni-stat@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4)': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + debug: 4.3.4 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/vite-plugin-uni@3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vite@4.1.4)(vue@3.3.4)': + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.2) + '@dcloudio/uni-cli-shared': 3.0.0-3081220230817001(postcss@8.4.38)(ts-node@10.9.1)(vue@3.3.4) + '@dcloudio/uni-shared': 3.0.0-3081220230817001 + '@rollup/pluginutils': 4.2.1 + '@vitejs/plugin-legacy': 4.1.1(terser@5.22.0)(vite@4.1.4) + '@vitejs/plugin-vue': 4.4.0(vite@4.1.4)(vue@3.3.4) + '@vitejs/plugin-vue-jsx': 3.0.2(vite@4.1.4)(vue@3.3.4) + '@vue/compiler-core': 3.2.47 + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-sfc': 3.2.47 + '@vue/shared': 3.2.47 + cac: 6.7.9 + debug: 4.3.4 + estree-walker: 2.0.2 + express: 4.18.2 + fast-glob: 3.3.1 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.2.0 + magic-string: 0.30.5 + picocolors: 1.0.0 + terser: 5.22.0 + vite: 4.1.4(@types/node@20.5.1)(sass@1.72.0)(terser@5.22.0) + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@esbuild/android-arm64@0.16.17': + optional: true + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm@0.16.17': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-x64@0.16.17': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.16.17': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.16.17': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.16.17': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.16.17': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.16.17': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm@0.16.17': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.16.17': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.16.17': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.16.17': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.16.17': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.16.17': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.16.17': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-x64@0.16.17': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.16.17': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.16.17': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.16.17': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.16.17': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.16.17': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-x64@0.16.17': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.51.0)': + dependencies: + eslint: 8.51.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.9.1': {} + + '@eslint/eslintrc@2.1.2': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.51.0': {} + + '@humanwhocodes/config-array@0.11.11': + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@1.2.1': {} + + '@intlify/core-base@9.1.9': + dependencies: + '@intlify/devtools-if': 9.1.9 + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + + '@intlify/core-base@9.5.0': + dependencies: + '@intlify/message-compiler': 9.5.0 + '@intlify/shared': 9.5.0 + + '@intlify/devtools-if@9.1.9': + dependencies: + '@intlify/shared': 9.1.9 + + '@intlify/message-compiler@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + source-map: 0.6.1 + + '@intlify/message-compiler@9.5.0': + dependencies: + '@intlify/shared': 9.5.0 + source-map-js: 1.0.2 + + '@intlify/message-resolver@9.1.9': {} + + '@intlify/runtime@9.1.9': + dependencies: + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + + '@intlify/shared@9.1.9': {} + + '@intlify/shared@9.5.0': {} + + '@intlify/vue-devtools@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + '@jest/core@27.5.1(ts-node@10.9.1)': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1(ts-node@10.9.1) + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.5 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/environment@27.5.1': + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + jest-mock: 27.5.1 + + '@jest/fake-timers@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 20.8.6 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + '@jest/globals@27.5.1': + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + + '@jest/reporters@27.5.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + + '@jest/source-map@27.5.1': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@jest/test-result@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@27.5.1': + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + + '@jest/transform@27.5.1': + dependencies: + '@babel/core': 7.23.2 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.2 + '@types/node': 20.8.6 + '@types/yargs': 16.0.6 + chalk: 4.1.2 + + '@jimp/bmp@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + bmp-js: 0.1.0 + core-js: 3.33.0 + + '@jimp/core@0.10.3': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/utils': 0.10.3 + any-base: 1.1.0 + buffer: 5.7.1 + core-js: 3.33.0 + exif-parser: 0.1.12 + file-type: 9.0.0 + load-bmfont: 1.4.1 + mkdirp: 0.5.6 + phin: 2.9.3 + pixelmatch: 4.0.2 + tinycolor2: 1.6.0 + + '@jimp/custom@0.10.3': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/core': 0.10.3 + core-js: 3.33.0 + + '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + omggif: 1.0.10 + + '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + jpeg-js: 0.3.7 + + '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + tinycolor2: 1.6.0 + + '@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-resize@0.10.3)(@jimp/plugin-scale@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3)(@jimp/plugin-scale@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + load-bmfont: 1.4.1 + + '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3)(@jimp/plugin-resize@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3)(@jimp/plugin-resize@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + + '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-circle': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-contain': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-resize@0.10.3)(@jimp/plugin-scale@0.10.3) + '@jimp/plugin-cover': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3)(@jimp/plugin-scale@0.10.3) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-displace': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-dither': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-fisheye': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-flip': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3) + '@jimp/plugin-gaussian': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-invert': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-mask': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-normalize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-print': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3) + '@jimp/plugin-shadow': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3)(@jimp/plugin-resize@0.10.3) + '@jimp/plugin-threshold': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3)(@jimp/plugin-resize@0.10.3) + core-js: 3.33.0 + timm: 1.7.1 + + '@jimp/png@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.33.0 + pngjs: 3.4.0 + + '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + core-js: 3.33.0 + utif: 2.0.1 + + '@jimp/types@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/bmp': 0.10.3(@jimp/custom@0.10.3) + '@jimp/custom': 0.10.3 + '@jimp/gif': 0.10.3(@jimp/custom@0.10.3) + '@jimp/jpeg': 0.10.3(@jimp/custom@0.10.3) + '@jimp/png': 0.10.3(@jimp/custom@0.10.3) + '@jimp/tiff': 0.10.3(@jimp/custom@0.10.3) + core-js: 3.33.0 + timm: 1.7.1 + + '@jimp/utils@0.10.3': + dependencies: + '@babel/runtime': 7.23.2 + core-js: 3.33.0 + regenerator-runtime: 0.13.11 + + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/set-array@1.1.2': {} + + '@jridgewell/source-map@0.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.19': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/pluginutils@5.1.0': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@tootallnate/once@1.1.2': {} + + '@tsconfig/node10@1.0.9': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/babel__core@7.20.2': + dependencies: + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + '@types/babel__generator': 7.6.5 + '@types/babel__template': 7.4.2 + '@types/babel__traverse': 7.20.2 + + '@types/babel__generator@7.6.5': + dependencies: + '@babel/types': 7.24.0 + + '@types/babel__template@7.4.2': + dependencies: + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + + '@types/babel__traverse@7.20.2': + dependencies: + '@babel/types': 7.24.0 + + '@types/dom-webcodecs@0.1.11': {} + + '@types/emscripten@1.39.13': {} + + '@types/estree@1.0.5': {} + + '@types/graceful-fs@4.1.7': + dependencies: + '@types/node': 20.8.6 + + '@types/istanbul-lib-coverage@2.0.4': {} + + '@types/istanbul-lib-report@3.0.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + + '@types/istanbul-reports@3.0.2': + dependencies: + '@types/istanbul-lib-report': 3.0.1 + + '@types/json-schema@7.0.13': {} + + '@types/json5@0.0.29': {} + + '@types/minimist@1.2.3': {} + + '@types/node@20.5.1': {} + + '@types/node@20.8.6': + dependencies: + undici-types: 5.25.3 + + '@types/normalize-package-data@2.4.2': {} + + '@types/prettier@2.7.3': {} + + '@types/semver@7.5.3': {} + + '@types/stack-utils@2.0.1': {} + + '@types/web-bluetooth@0.0.20': {} + + '@types/yargs-parser@21.0.1': {} + + '@types/yargs@16.0.6': + dependencies: + '@types/yargs-parser': 21.0.1 + + '@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@4.9.5)': + dependencies: + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.51.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.51.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@6.8.0': + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + + '@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.51.0 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.8.0': {} + + '@typescript-eslint/typescript-estree@6.8.0(typescript@4.9.5)': + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@4.9.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + eslint: 8.51.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@6.8.0': + dependencies: + '@typescript-eslint/types': 6.8.0 + eslint-visitor-keys: 3.4.3 + + '@vitejs/plugin-legacy@4.1.1(terser@5.22.0)(vite@4.1.4)': + dependencies: + '@babel/core': 7.23.2 + '@babel/preset-env': 7.23.2(@babel/core@7.23.2) + browserslist: 4.22.1 + core-js: 3.33.0 + magic-string: 0.30.5 + regenerator-runtime: 0.13.11 + systemjs: 6.14.2 + terser: 5.22.0 + vite: 4.1.4(@types/node@20.5.1)(sass@1.72.0)(terser@5.22.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@3.0.2(vite@4.1.4)(vue@3.3.4)': + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.2) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.2) + vite: 4.1.4(@types/node@20.5.1)(sass@1.72.0)(terser@5.22.0) + vue: 3.3.4 + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@4.4.0(vite@4.1.4)(vue@3.3.4)': + dependencies: + vite: 4.1.4(@types/node@20.5.1)(sass@1.72.0)(terser@5.22.0) + vue: 3.3.4 + + '@volar/language-core@1.10.4': + dependencies: + '@volar/source-map': 1.10.4 + + '@volar/source-map@1.10.4': + dependencies: + muggle-string: 0.3.1 + + '@volar/typescript@1.10.4': + dependencies: + '@volar/language-core': 1.10.4 + + '@vue-macros/common@1.10.1(vue@3.3.4)': + dependencies: + '@babel/types': 7.24.0 + '@rollup/pluginutils': 5.1.0 + '@vue/compiler-sfc': 3.4.21 + ast-kit: 0.11.3 + local-pkg: 0.5.0 + magic-string-ast: 0.3.0 + vue: 3.3.4 + transitivePeerDependencies: + - rollup + + '@vue/babel-helper-vue-transform-on@1.1.5': {} + + '@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.2)': + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + '@vue/babel-helper-vue-transform-on': 1.1.5 + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.2.47': + dependencies: + '@babel/parser': 7.23.0 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + source-map: 0.6.1 + + '@vue/compiler-core@3.3.4': + dependencies: + '@babel/parser': 7.23.0 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + + '@vue/compiler-core@3.4.21': + dependencies: + '@babel/parser': 7.24.1 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + + '@vue/compiler-dom@3.2.47': + dependencies: + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + + '@vue/compiler-dom@3.3.4': + dependencies: + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + + '@vue/compiler-dom@3.4.21': + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-sfc@3.2.47': + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.2.47 + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-ssr': 3.2.47 + '@vue/reactivity-transform': 3.2.47 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + magic-string: 0.25.9 + postcss: 8.4.31 + source-map: 0.6.1 + + '@vue/compiler-sfc@3.3.4': + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.4 + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-ssr': 3.3.4 + '@vue/reactivity-transform': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.5 + postcss: 8.4.31 + source-map-js: 1.0.2 + + '@vue/compiler-sfc@3.4.21': + dependencies: + '@babel/parser': 7.24.1 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.8 + postcss: 8.4.38 + source-map-js: 1.0.2 + + '@vue/compiler-ssr@3.2.47': + dependencies: + '@vue/compiler-dom': 3.2.47 + '@vue/shared': 3.2.47 + + '@vue/compiler-ssr@3.3.4': + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/shared': 3.3.4 + + '@vue/compiler-ssr@3.4.21': + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/devtools-api@6.5.1': {} + + '@vue/language-core@1.8.19(typescript@4.9.5)': + dependencies: + '@volar/language-core': 1.10.4 + '@volar/source-map': 1.10.4 + '@vue/compiler-dom': 3.3.4 + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + minimatch: 9.0.3 + muggle-string: 0.3.1 + typescript: 4.9.5 + vue-template-compiler: 2.7.14 + + '@vue/reactivity-transform@3.2.47': + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + magic-string: 0.25.9 + + '@vue/reactivity-transform@3.3.4': + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.5 + + '@vue/reactivity@3.3.4': + dependencies: + '@vue/shared': 3.3.4 + + '@vue/runtime-core@3.3.4': + dependencies: + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + + '@vue/runtime-dom@3.3.4': + dependencies: + '@vue/runtime-core': 3.3.4 + '@vue/shared': 3.3.4 + csstype: 3.1.2 + + '@vue/server-renderer@3.2.47(vue@3.3.4)': + dependencies: + '@vue/compiler-ssr': 3.2.47 + '@vue/shared': 3.2.47 + vue: 3.3.4 + + '@vue/server-renderer@3.3.4(vue@3.3.4)': + dependencies: + '@vue/compiler-ssr': 3.3.4 + '@vue/shared': 3.3.4 + vue: 3.3.4 + + '@vue/shared@3.2.47': {} + + '@vue/shared@3.3.4': {} + + '@vue/shared@3.4.21': {} + + '@vue/tsconfig@0.1.3(@types/node@20.5.1)': + dependencies: + '@types/node': 20.5.1 + + '@vue/typescript@1.8.19(typescript@4.9.5)': + dependencies: + '@volar/typescript': 1.10.4 + '@vue/language-core': 1.8.19(typescript@4.9.5) + transitivePeerDependencies: + - typescript + + '@vueuse/core@10.11.1(vue@3.3.4)': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.1 + '@vueuse/shared': 10.11.1(vue@3.3.4) + vue-demi: 0.14.10(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@10.11.1': {} + + '@vueuse/shared@10.11.1(vue@3.3.4)': + dependencies: + vue-demi: 0.14.10(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abab@2.0.6: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-jsx@5.3.2(acorn@8.10.0): + dependencies: + acorn: 8.10.0 + + acorn-walk@7.2.0: {} + + acorn-walk@8.2.0: {} + + acorn@7.4.1: {} + + acorn@8.10.0: {} + + acorn@8.11.3: {} + + address@1.2.2: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-base@1.1.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.0: + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + + array-flatten@1.1.1: {} + + array-ify@1.0.0: {} + + array-includes@3.1.7: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + is-string: 1.0.7 + + array-union@2.1.0: {} + + array.prototype.findlastindex@1.2.3: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + + array.prototype.flatmap@1.3.2: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + + arraybuffer.prototype.slice@1.0.2: + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + + arrify@1.0.1: {} + + ast-kit@0.11.3: + dependencies: + '@babel/parser': 7.24.1 + '@rollup/pluginutils': 5.1.0 + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + + ast-kit@0.9.5: + dependencies: + '@babel/parser': 7.23.0 + '@rollup/pluginutils': 5.1.0 + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + + ast-walker-scope@0.5.0: + dependencies: + '@babel/parser': 7.23.0 + ast-kit: 0.9.5 + transitivePeerDependencies: + - rollup + + async@2.6.4: + dependencies: + lodash: 4.17.21 + + asynckit@0.4.0: {} + + autoprefixer@10.4.16(postcss@8.4.38): + dependencies: + browserslist: 4.22.1 + caniuse-lite: 1.0.30001549 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.5: {} + + babel-jest@27.5.1(@babel/core@7.23.2): + dependencies: + '@babel/core': 7.23.2 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.2 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.23.2) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@27.5.1: + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.24.0 + '@types/babel__core': 7.20.2 + '@types/babel__traverse': 7.20.2 + + babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.2): + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.8.5(@babel/core@7.23.2): + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + core-js-compat: 3.33.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.2): + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + transitivePeerDependencies: + - supports-color + + babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + + babel-preset-jest@27.5.1(@babel/core@7.23.2): + dependencies: + '@babel/core': 7.23.2 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) + + balanced-match@1.0.2: {} + + barcode-detector@2.2.2: + dependencies: + '@types/dom-webcodecs': 0.1.11 + zxing-wasm: 1.1.3 + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + binary-extensions@2.2.0: {} + + bmp-js@0.1.0: {} + + body-parser@1.20.1: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + + browser-process-hrtime@1.0.0: {} + + browserslist@4.22.1: + dependencies: + caniuse-lite: 1.0.30001549 + electron-to-chromium: 1.4.556 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-equal@0.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bytes@3.1.2: {} + + cac@6.7.9: {} + + call-bind@1.0.2: + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.1 + + callsites@3.1.0: {} + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001549: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.1: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + char-regex@1.0.2: {} + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + ci-info@3.9.0: {} + + cjs-module-lexer@1.2.3: {} + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + code-inspector-core@0.10.1: + dependencies: + '@vue/compiler-dom': 3.3.4 + chalk: 4.1.2 + portfinder: 1.0.32 + transitivePeerDependencies: + - supports-color + + code-inspector-plugin@0.10.1: + dependencies: + chalk: 4.1.1 + code-inspector-core: 0.10.1 + vite-code-inspector-plugin: 0.10.1 + webpack-code-inspector-plugin: 0.10.1 + transitivePeerDependencies: + - supports-color + + collect-v8-coverage@1.0.2: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@11.1.0: {} + + commander@2.20.3: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + compare-versions@3.6.0: {} + + concat-map@0.0.1: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + conventional-changelog-angular@6.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@6.1.0: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@4.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + meow: 8.1.2 + split2: 3.2.2 + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.5.0: {} + + core-js-compat@3.33.0: + dependencies: + browserslist: 4.22.1 + + core-js@3.33.0: {} + + cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@4.9.5): + dependencies: + '@types/node': 20.5.1 + cosmiconfig: 8.3.6(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.5.1)(typescript@4.9.5) + typescript: 4.9.5 + + cosmiconfig@8.3.6(typescript@4.9.5): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 4.9.5 + + create-require@1.1.1: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-font-size-keywords@1.0.0: {} + + css-font-stretch-keywords@1.0.1: {} + + css-font-style-keywords@1.0.1: {} + + css-font-weight-keywords@1.0.0: {} + + css-list-helpers@2.0.0: {} + + css-system-font-keywords@1.0.0: {} + + cssesc@3.0.0: {} + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + csstype@3.1.2: {} + + dargs@7.0.0: {} + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + dayjs@1.11.13: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decimal.js@10.4.3: {} + + dedent@0.7.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + define-data-property@1.1.1: + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + destroy@1.2.0: {} + + detect-newline@3.1.0: {} + + diff-sequences@27.5.1: {} + + diff@4.0.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-walk@0.1.2: {} + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + eastasianwidth@0.2.0: {} + + echarts@5.5.1: + dependencies: + tslib: 2.3.0 + zrender: 5.6.0 + + ee-first@1.1.1: {} + + electron-to-chromium@1.4.556: {} + + emittery@0.8.1: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.22.2: + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.4 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.0 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 + + es-module-lexer@1.3.1: {} + + es-set-tostringtag@2.0.1: + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.4 + has-tostringtag: 1.0.0 + + es-shim-unscopables@1.0.0: + dependencies: + has: 1.0.4 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild@0.16.17: + optionalDependencies: + '@esbuild/android-arm': 0.16.17 + '@esbuild/android-arm64': 0.16.17 + '@esbuild/android-x64': 0.16.17 + '@esbuild/darwin-arm64': 0.16.17 + '@esbuild/darwin-x64': 0.16.17 + '@esbuild/freebsd-arm64': 0.16.17 + '@esbuild/freebsd-x64': 0.16.17 + '@esbuild/linux-arm': 0.16.17 + '@esbuild/linux-arm64': 0.16.17 + '@esbuild/linux-ia32': 0.16.17 + '@esbuild/linux-loong64': 0.16.17 + '@esbuild/linux-mips64el': 0.16.17 + '@esbuild/linux-ppc64': 0.16.17 + '@esbuild/linux-riscv64': 0.16.17 + '@esbuild/linux-s390x': 0.16.17 + '@esbuild/linux-x64': 0.16.17 + '@esbuild/netbsd-x64': 0.16.17 + '@esbuild/openbsd-x64': 0.16.17 + '@esbuild/sunos-x64': 0.16.17 + '@esbuild/win32-arm64': 0.16.17 + '@esbuild/win32-ia32': 0.16.17 + '@esbuild/win32-x64': 0.16.17 + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + escalade@3.1.1: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-alloy@5.1.2(@babel/eslint-parser@7.22.15)(@typescript-eslint/eslint-plugin@6.8.0)(@typescript-eslint/parser@6.8.0)(eslint-plugin-vue@9.17.0)(eslint@8.51.0)(typescript@4.9.5)(vue-eslint-parser@9.3.2): + dependencies: + '@babel/eslint-parser': 7.22.15(@babel/core@7.23.2)(eslint@8.51.0) + '@typescript-eslint/eslint-plugin': 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + eslint: 8.51.0 + eslint-plugin-vue: 9.17.0(eslint@8.51.0) + typescript: 4.9.5 + vue-eslint-parser: 9.3.2(eslint@8.51.0) + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.13.0 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): + dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 8.51.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.8.0)(eslint@8.51.0): + dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.51.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) + has: 1.0.4 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-vue@9.17.0(eslint@8.51.0): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + eslint: 8.51.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.13 + semver: 7.5.4 + vue-eslint-parser: 9.3.2(eslint@8.51.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint@8.51.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.51.0 + '@humanwhocodes/config-array': 0.11.11 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@5.0.1: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + exif-parser@0.1.12: {} + + exit@0.1.2: {} + + expect@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + express@4.18.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.15.0: + dependencies: + reusify: 1.0.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.1.1 + + file-type@9.0.0: {} + + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.1.1: + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.2.9: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + form-data@3.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + fs-extra@11.1.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + generic-names@4.0.0: + dependencies: + loader-utils: 3.2.1 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.1: + dependencies: + function-bind: 1.1.2 + has: 1.0.4 + has-proto: 1.0.1 + has-symbols: 1.0.3 + + get-package-type@0.1.0: {} + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-symbol-description@1.0.0: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + + git-raw-commits@2.0.11: + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-dirs@0.1.1: + dependencies: + ini: 1.3.8 + + global@4.4.0: + dependencies: + min-document: 2.19.0 + process: 0.11.10 + + globals@11.12.0: {} + + globals@13.23.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.3: + dependencies: + define-properties: 1.2.1 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.1 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + hard-rejection@2.1.0: {} + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.0: + dependencies: + get-intrinsic: 1.2.1 + + has-proto@1.0.1: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.0: + dependencies: + has-symbols: 1.0.3 + + has@1.0.4: {} + + hash-sum@2.0.0: {} + + he@1.2.0: {} + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-escaper@2.0.2: {} + + html-tags@3.3.1: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + husky@8.0.3: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-replace-symbols@1.1.0: {} + + icss-utils@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + ieee754@1.2.1: {} + + ignore@5.2.4: {} + + immutable@4.3.5: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.1.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + internal-slot@1.0.5: + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.4 + side-channel: 1.0.4 + + invert-kv@3.0.1: {} + + ipaddr.js@1.9.1: {} + + is-array-buffer@3.0.2: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + + is-arrayish@0.2.1: {} + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.2.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + is-callable@1.2.7: {} + + is-core-module@2.13.0: + dependencies: + has: 1.0.4 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.0 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-function@1.0.2: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-negative-zero@2.0.2: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.0 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@1.1.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + is-shared-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.2 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.0 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-text-path@1.0.1: + dependencies: + text-extensions: 1.9.0 + + is-typed-array@1.1.12: + dependencies: + which-typed-array: 1.1.11 + + is-typedarray@1.0.0: {} + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.2 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.0: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.23.2 + '@babel/parser': 7.24.1 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.6: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jest-changed-files@27.5.1: + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + jest-circus@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-cli@27.5.1(ts-node@10.9.1): + dependencies: + '@jest/core': 27.5.1(ts-node@10.9.1) + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 27.5.1(ts-node@10.9.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-config@27.5.1(ts-node@10.9.1): + dependencies: + '@babel/core': 7.23.2 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.23.2) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.5.1)(typescript@4.9.5) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-docblock@27.5.1: + dependencies: + detect-newline: 3.1.0 + + jest-each@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + jest-environment-jsdom@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + jest-get-type@27.5.1: {} + + jest-haste-map@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.7 + '@types/node': 20.8.6 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-leak-detector@27.5.1: + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-matcher-utils@27.5.1: + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-message-util@27.5.1: + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + + jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + dependencies: + jest-resolve: 27.5.1 + + jest-regex-util@27.5.1: {} + + jest-resolve-dependencies@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + + jest-resolve@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.8 + resolve.exports: 1.1.1 + slash: 3.0.0 + + jest-runner@27.5.1: + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-runtime@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-serializer@27.5.1: + dependencies: + '@types/node': 20.8.6 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1: + dependencies: + '@babel/core': 7.23.2 + '@babel/generator': 7.23.0 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) + '@babel/traverse': 7.23.2 + '@babel/types': 7.24.0 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.20.2 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + + jest-util@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@27.5.1: + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + jest-watcher@27.5.1: + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.8.6 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.8.6 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@27.0.4(ts-node@10.9.1): + dependencies: + '@jest/core': 27.5.1(ts-node@10.9.1) + import-local: 3.1.0 + jest-cli: 27.5.1(ts-node@10.9.1) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jimp@0.10.3: + dependencies: + '@babel/runtime': 7.23.2 + '@jimp/custom': 0.10.3 + '@jimp/plugins': 0.10.3(@jimp/custom@0.10.3) + '@jimp/types': 0.10.3(@jimp/custom@0.10.3) + core-js: 3.33.0 + regenerator-runtime: 0.13.11 + + jpeg-js@0.3.7: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdom@16.7.0: + dependencies: + abab: 2.0.6 + acorn: 8.11.3 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.4.3 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.9 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@0.5.0: {} + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonc-parser@3.2.0: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + lcid@3.1.1: + dependencies: + invert-kv: 3.0.1 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + licia@1.38.2: {} + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + lint-staged@15.0.1: + dependencies: + chalk: 5.3.0 + commander: 11.1.0 + debug: 4.3.4 + execa: 8.0.1 + lilconfig: 2.1.0 + listr2: 7.0.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.2 + transitivePeerDependencies: + - supports-color + + listr2@7.0.1: + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.3.0 + wrap-ansi: 8.1.0 + + load-bmfont@1.4.1: + dependencies: + buffer-equal: 0.0.1 + mime: 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.4 + phin: 2.9.3 + xhr: 2.6.0 + xtend: 4.0.2 + + loader-utils@3.2.1: {} + + local-pkg@0.5.0: + dependencies: + mlly: 1.6.1 + pkg-types: 1.0.3 + + localstorage-polyfill@1.0.1: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.debounce@4.0.8: {} + + lodash.isfunction@3.0.9: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-update@5.0.1: + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-string-ast@0.3.0: + dependencies: + magic-string: 0.30.5 + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + magic-string@0.30.5: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magic-string@0.30.8: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + make-dir@4.0.0: + dependencies: + semver: 7.5.4 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + media-typer@0.3.0: {} + + meow@8.1.2: + dependencies: + '@types/minimist': 1.2.3 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-descriptors@1.0.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + methods@1.1.2: {} + + micromatch@4.0.5: + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-document@2.19.0: + dependencies: + dom-walk: 0.1.2 + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.8: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mlly@1.6.1: + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.5.3 + + module-alias@2.2.3: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + muggle-string@0.3.1: {} + + nanoid@3.3.6: {} + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + node-int64@0.4.0: {} + + node-releases@2.0.13: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.13.0 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.1.0: + dependencies: + path-key: 4.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nwsapi@2.2.7: {} + + object-inspect@1.13.0: {} + + object-keys@1.1.1: {} + + object.assign@4.1.4: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + object.fromentries@2.0.7: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + + object.groupby@1.0.1: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + + object.values@1.1.7: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + + omggif@1.0.10: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + os-locale-s-fix@1.0.8-fix-1: + dependencies: + lcid: 3.1.1 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.4: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.4.23 + + parse-css-font@4.0.0: + dependencies: + css-font-size-keywords: 1.0.0 + css-font-stretch-keywords: 1.0.1 + css-font-style-keywords: 1.0.1 + css-font-weight-keywords: 1.0.0 + css-list-helpers: 2.0.0 + css-system-font-keywords: 1.0.0 + unquote: 1.1.1 + + parse-headers@2.0.5: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.22.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5@6.0.1: {} + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-to-regexp@0.1.7: {} + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + phin@2.9.3: {} + + picocolors@1.0.0: {} + + picomatch@2.3.1: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pinia@2.0.36(typescript@4.9.5)(vue@3.3.4): + dependencies: + '@vue/devtools-api': 6.5.1 + typescript: 4.9.5 + vue: 3.3.4 + vue-demi: 0.14.7(vue@3.3.4) + + pirates@4.0.6: {} + + pixelmatch@4.0.2: + dependencies: + pngjs: 3.4.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.0.3: + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.6.1 + pathe: 1.1.2 + + pngjs@3.4.0: {} + + portfinder@1.0.32: + dependencies: + async: 2.6.4 + debug: 3.2.7 + mkdirp: 0.5.6 + transitivePeerDependencies: + - supports-color + + postcss-import@14.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.1): + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.38 + ts-node: 10.9.1(@types/node@20.5.1)(typescript@4.9.5) + yaml: 1.10.2 + + postcss-modules-extract-imports@3.0.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-modules-local-by-default@4.0.3(postcss@8.4.38): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.0.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.13 + + postcss-modules-values@4.0.0(postcss@8.4.38): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + + postcss-modules@4.3.1(postcss@8.4.38): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.38 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.38) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.38) + postcss-modules-scope: 3.0.0(postcss@8.4.38) + postcss-modules-values: 4.0.0(postcss@8.4.38) + string-hash: 1.1.3 + + postcss-selector-parser@6.0.13: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + postcss@8.4.38: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + + prelude-ls@1.2.1: {} + + prettier@3.0.3: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + process@0.11.10: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + psl@1.9.0: {} + + punycode@2.3.0: {} + + qrcode-reader@1.0.4: {} + + qrcode-terminal@0.12.0: {} + + qs@6.11.0: + dependencies: + side-channel: 1.0.4 + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + quick-lru@4.0.1: {} + + range-parser@1.2.1: {} + + raw-body@2.5.1: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-is@17.0.2: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.2 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + regenerate-unicode-properties@10.1.1: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.0: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.23.2 + + regexp.prototype.flags@1.5.1: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + set-function-name: 2.0.1 + + regexpu-core@5.3.2: + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + regjsparser@0.9.1: + dependencies: + jsesc: 0.5.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-global@1.0.0: + dependencies: + global-dirs: 0.1.1 + + resolve.exports@1.1.1: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + reusify@1.0.4: {} + + rfdc@1.3.0: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@3.29.4: + optionalDependencies: + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-area-insets@1.4.1: {} + + safe-array-concat@1.0.1: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-regex-test@1.0.0: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 + + safer-buffer@2.1.2: {} + + sass@1.72.0: + dependencies: + chokidar: 3.5.3 + immutable: 4.3.5 + source-map-js: 1.0.2 + + sax@1.3.0: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + sdp@3.2.0: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-function-name@2.0.1: + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel@1.0.4: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.13.0 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + source-map-js@1.0.2: {} + + source-map-js@1.2.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + sourcemap-codec@1.4.8: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + + spdx-exceptions@2.3.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + + spdx-license-ids@3.0.16: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@2.0.1: {} + + string-argv@0.3.2: {} + + string-hash@1.1.3: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.trim@1.2.8: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + + string.prototype.trimend@1.0.7: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + + string.prototype.trimstart@1.0.7: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + symbol-tree@3.2.4: {} + + systemjs@6.14.2: {} + + tapable@2.2.1: {} + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.22.0: + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-extensions@1.9.0: {} + + text-table@0.2.0: {} + + throat@6.0.2: {} + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + + timm@1.7.1: {} + + tinycolor2@1.6.0: {} + + tmpl@1.0.5: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tough-cookie@4.1.3: + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@2.1.0: + dependencies: + punycode: 2.3.0 + + trim-newlines@3.0.1: {} + + ts-api-utils@1.0.3(typescript@4.9.5): + dependencies: + typescript: 4.9.5 + + ts-node@10.9.1(@types/node@20.5.1)(typescript@4.9.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.5.1 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tsconfig-paths@3.14.2: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.3.0: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.18.1: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@1.4.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.0: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + + typed-array-byte-length@1.0.0: + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + + typed-array-byte-offset@1.0.0: + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + + typed-array-length@1.0.4: + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript@4.9.5: {} + + ufo@1.5.3: {} + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + undici-types@5.25.3: {} + + unicode-canonical-property-names-ecmascript@2.0.0: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.1.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + universalify@0.2.0: {} + + universalify@2.0.0: {} + + unpipe@1.0.0: {} + + unplugin-vue-define-options@1.4.2(vue@3.3.4): + dependencies: + '@vue-macros/common': 1.10.1(vue@3.3.4) + ast-walker-scope: 0.5.0 + unplugin: 1.10.0 + transitivePeerDependencies: + - rollup + - vue + + unplugin@1.10.0: + dependencies: + acorn: 8.11.3 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + + unquote@1.1.1: {} + + update-browserslist-db@1.0.13(browserslist@4.22.1): + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.0 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + utif@2.0.1: + dependencies: + pako: 1.0.11 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-to-istanbul@8.1.1: + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + source-map: 0.7.4 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vary@1.1.2: {} + + vite-code-inspector-plugin@0.10.1: + dependencies: + code-inspector-core: 0.10.1 + transitivePeerDependencies: + - supports-color + + vite@4.1.4(@types/node@20.5.1)(sass@1.72.0)(terser@5.22.0): + dependencies: + '@types/node': 20.5.1 + esbuild: 0.16.17 + postcss: 8.4.31 + resolve: 1.22.8 + rollup: 3.29.4 + sass: 1.72.0 + terser: 5.22.0 + optionalDependencies: + fsevents: 2.3.3 + + vue-demi@0.14.10(vue@3.3.4): + dependencies: + vue: 3.3.4 + + vue-demi@0.14.7(vue@3.3.4): + dependencies: + vue: 3.3.4 + + vue-eslint-parser@9.3.2(eslint@8.51.0): + dependencies: + debug: 4.3.4 + eslint: 8.51.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + + vue-i18n@9.5.0(vue@3.3.4): + dependencies: + '@intlify/core-base': 9.5.0 + '@intlify/shared': 9.5.0 + '@vue/devtools-api': 6.5.1 + vue: 3.3.4 + + vue-qrcode-reader@5.5.7: + dependencies: + barcode-detector: 2.2.2 + webrtc-adapter: 8.2.3 + + vue-router@4.2.5(vue@3.3.4): + dependencies: + '@vue/devtools-api': 6.5.1 + vue: 3.3.4 + + vue-template-compiler@2.7.14: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-tsc@1.8.19(typescript@4.9.5): + dependencies: + '@vue/language-core': 1.8.19(typescript@4.9.5) + '@vue/typescript': 1.8.19(typescript@4.9.5) + semver: 7.5.4 + typescript: 4.9.5 + + vue@3.3.4: + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-sfc': 3.3.4 + '@vue/runtime-dom': 3.3.4 + '@vue/server-renderer': 3.3.4(vue@3.3.4) + '@vue/shared': 3.3.4 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webpack-code-inspector-plugin@0.10.1: + dependencies: + code-inspector-core: 0.10.1 + transitivePeerDependencies: + - supports-color + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.1: {} + + webrtc-adapter@8.2.3: + dependencies: + sdp: 3.2.0 + + weixin-js-sdk@1.6.5: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-mimetype@2.3.0: {} + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-typed-array@1.1.11: + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + ws@7.5.9: {} + + ws@8.14.2: {} + + xhr@2.6.0: + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.5 + xtend: 4.0.2 + + xml-name-validator@3.0.0: {} + + xml-name-validator@4.0.0: {} + + xml-parse-from-string@1.0.1: {} + + xml2js@0.4.23: + dependencies: + sax: 1.3.0 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmlhttprequest@1.8.0: {} + + xregexp@3.1.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yaml@2.3.2: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + zrender@5.6.0: + dependencies: + tslib: 2.3.0 + + zxing-wasm@1.1.3: + dependencies: + '@types/emscripten': 1.39.13 diff --git a/shims-uni.d.ts b/shims-uni.d.ts new file mode 100644 index 0000000..861de53 --- /dev/null +++ b/shims-uni.d.ts @@ -0,0 +1,8 @@ +/// +import 'vue'; + +declare module '@vue/runtime-core' { + type Hooks = App.AppInstance & Page.PageInstance; + + interface ComponentCustomOptions extends Hooks {} +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..80dd08e --- /dev/null +++ b/src/App.vue @@ -0,0 +1,19 @@ + + diff --git a/src/api/global.ts b/src/api/global.ts new file mode 100644 index 0000000..be8e4a0 --- /dev/null +++ b/src/api/global.ts @@ -0,0 +1,56 @@ +import $req from './request'; + +// 获取用户信息 +export const getUserInfo = () => + $req({ + url: '/sysUser/selectUser', + }); + +// 获取客服信息 +export const getCsInfo = (id: string) => + $req({ + url: `/customerService/getInfoByUserId/${id}`, + }); + +// 更新用户信息 +export const updateUserInfo = (data: anyObj) => + $req({ + url: '/sysUser/editPerfectMessage', + method: 'post', + data, + }); + +// 获取协议 +export const getAgreeInfo = (id: string, isChat = false) => + $req({ + url: '/agreement/' + id, + headers: { + Authorization: '', + }, + }); + +// 获取字典 +export const getDict = () => + $req({ + url: '/sysDictType/tree', + }); + +// 设备通知注册 +export const bindRegId = (data: anyObj) => + $req({ + url: '/sysUser/dealRegistrationId', + method: 'post', + data, + }); + +// 获取未读消息数量 +export const getUnreadNum = () => $req({ url: '/customerService/getUnreadNum' }); + +// 支付创建订单 +export const createInspectorPrepayOrder = (data: anyObj) => { + return $req({ + method: 'post', + url: '/orderManagement/createInspectorPrepayOrder', + data, + }); +}; diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 0000000..98a85db --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,15 @@ +export * from './global'; +export * from './login'; +export * from './modules/warranty'; +export * from './modules/awardManage'; +export * from './modules/taskManage'; +export * from './modules/bindDevice'; +export * from './modules/parent'; +export * from './modules/mySupervisionService'; +export * from './modules/bindDevice'; +export * from './modules/mine'; +export * from './modules/academicReport'; +export * from './modules/deviceScreenshotRecord'; +export * from './modules/inviteBind'; +export * from './modules/home'; +export * from './modules/applicationManagement'; diff --git a/src/api/inspector/mine.ts b/src/api/inspector/mine.ts new file mode 100644 index 0000000..978c724 --- /dev/null +++ b/src/api/inspector/mine.ts @@ -0,0 +1,36 @@ +import $req from '../request'; + +/** + * 获取督学师信息 + * @param data 请求参数 + */ +export const getUserInfo = (data = {}) => { + return $req({ + method: 'post', + url: '/phone/inspectorTeacher/myInfo', + data, + }); +}; +/** + * 查询用户角色 + * @param params 请求参数 + */ +export const queryUserRoles = (params = {}) => { + return $req({ + method: 'get', + url: '/sysUser/getAdminTypeByPhone', + params, + }); +}; +/** + * 切换用户角色 + */ +export const switchRole = (adminType: number) => { + return $req({ + method: 'get', + url: '/sysUser/changeAdminType', + params: { + adminType, + }, + }); +}; diff --git a/src/api/inspector/student-detail.ts b/src/api/inspector/student-detail.ts new file mode 100644 index 0000000..5544006 --- /dev/null +++ b/src/api/inspector/student-detail.ts @@ -0,0 +1,111 @@ +import $req from '../request'; + +/** + * 获取学员详情 + * @param params 请求参数 + */ +export const getStudentDetail = (params = {}) => { + return $req({ + method: 'get', + url: '/phone/inspectorTeacher/getStuVoByOrderIdAndCourseDate', + params, + }); +}; +/** + * 获取学员督学报告列表 + * @param data 请求参数 + */ +export const getUserReportPage = (data = {}) => { + return $req({ + method: 'post', + url: '/phone/inspectorTeacher/getUserReportPage', + data, + }); +}; +/** + * 获取学员督学报告列表 + * @param params 请求参数 + */ +export const getUserInspectorCourseReportInfo = (params = {}) => { + return $req({ + method: 'get', + url: '/phone/inspectorTeacher/userInspectorCourseReportInfo', + params, + }); +}; +/** + * 获取学员学习计划列表 + * @param data + */ +export const queryStudyPlanList = (data = {}) => { + return $req({ + method: 'post', + url: '/phone/inspectorTeacher/queryStuPlanPage', + data, + }); +}; +/** + * 删除学员学习计划 + * @param planId 学习计划id + */ +export const deletePlanRequest = (planId: string) => { + return $req({ + method: 'post', + url: `/phone/inspectorTeacher/deletePlanById?planId=${planId}`, + }); +}; +/** + * 获取学科列表 + * @param gradeId 年级id + */ +export const getSubjectListByGrade = (gradeId: string) => { + return $req({ + method: 'get', + url: `/subject/list/${gradeId}`, + }); +}; +/** + * 获取学员学习时长统计 + * @param params + */ +export const queryStudyDuration = (params = {}) => { + return $req({ + method: 'get', + url: '/userSubjectReport/study/duration', + params, + }); +}; +/** + * 获取学员视频学习统计 + * @param params + */ +export const queryVideoStudy = (params = {}) => { + return $req({ + method: 'get', + url: '/userSubjectReport/study/video', + params, + }); +}; +/** + * 获取学员知识点学习统计 + * @param params + */ +export const queryStudyKnowledge = (params = {}) => { + return $req({ + method: 'get', + url: '/userSubjectReport/study/knowledge', + params, + }); +}; + +/** + * 获取学员错题学习统计 + * @param params + */ +export const queryStudentWrongQuestion = (params = {}) => { + return $req({ + method: 'get', + url: '/userSubjectReport/study/error', + params, + }); +}; diff --git a/src/api/inspector/student.ts b/src/api/inspector/student.ts new file mode 100644 index 0000000..1c8b241 --- /dev/null +++ b/src/api/inspector/student.ts @@ -0,0 +1,27 @@ +import $req from '../request'; + +/** + * 获取督学师课表时间 + * @param data 请求参数 + */ +export const getCourseTable = (data={}) => { + return $req({ + method: 'get', + url: '/phone/inspectorTeacher/getCourseTableById', + data, + }); +}; +/** + * 查询学生列表 + * @param data + */ +export const queryStudentList = (params={}) => { + return $req({ + method:'get', + url:'/phone/inspectorTeacher/getMyStudent', + params, + }); +} + + + diff --git a/src/api/login.ts b/src/api/login.ts new file mode 100644 index 0000000..1dd2618 --- /dev/null +++ b/src/api/login.ts @@ -0,0 +1,88 @@ +import $req from './request'; +/** + * 手机号授权 + * @param data 请求参数 + */ +export const getBindPhoneTypeApi = data => { + $req({ + method: 'post', + url: '/xcx/login/getBindRelationList', + data, + }); +}; +/** + * 手机号获取用户身份 + * @param data 请求参数 + */ +export const getAdminTypeByPhoneApi = (params: anyObj) => + $req({ + method: 'get', + url: '/sysUser/getAdminTypeByPhone', + params, + }); + +/** + * 发送验证码 + * @param data 请求参数 + */ +export const sendCodeMessageApi = data => + $req({ + method: 'post', + url: `/sms/sendMessage?phoneNumbers=${data}`, + }); + +/** + * 手机号验证码登录 + * @param data 请求参数 + */ +export const smsLoginApi = data => + $req({ + method: 'post', + url: '/smsLogin', + data, + }); + +/** + * 获取用户信息 + * @param data 请求参数 + */ +export const getUserInfoApi = () => + $req({ + method: 'get', + url: '/sysUser/selectUser', + }); +/** + * 更新用户信息 + * @param data 请求参数 + */ +export const updateUserInfoApi = (data: anyObj) => + $req({ + method: 'post', + url: '/sysUser/updateInfo', + data, + }); +/** + * 授权用户绑定 + * @param data 请求参数 + */ +export const bindAuthInfoApi = data => + $req({ + method: 'post', + url: '/wechatPublic/bindAuthInfo', + data, + }); +/** + * 获取静默授权链接 + * @param data 请求参数 + */ +export const getAuthUrlApi = () => + $req({ + method: 'get', + url: '/wechatPublic/getAuthUrl', + }); + +// 退出登录 +export const logout = () => + $req({ + url: '/logout', + }); diff --git a/src/api/modules/academicReport.ts b/src/api/modules/academicReport.ts new file mode 100644 index 0000000..c3e6861 --- /dev/null +++ b/src/api/modules/academicReport.ts @@ -0,0 +1,60 @@ +import $req from '../request'; +/** + * 学情报告-学科目录 + * @param data 请求参数 + */ +export const subjectApi = (gradeId: string) => + $req({ + method: 'get', + url: `/subject/list/${gradeId}`, + }); +/** + * 学情报告-学习时长统计 + * @param data 请求参数 + */ +export const studyTimeStatApi = (params: anyobj) => + $req({ + method: 'get', + url: '/userSubjectReport/study/duration', + params, + }); +/** + * 学情报告-视频学习统计 + * @param data 请求参数 + */ +export const videoStudyStatApi = (params: anyobj) => + $req({ + method: 'get', + url: '/userSubjectReport/study/video', + params, + }); +/** + * 学情报告-知识图谱统计 + * @param data 请求参数 + */ +export const knowledgeStudyStatApi = (params: anyobj) => + $req({ + method: 'get', + url: '/userSubjectReport/study/knowledge', + params, + }); +/** + * 学情报告-错题本统计 + * @param data 请求参数 + */ +export const studyErrorStatApi = (params: anyobj) => + $req({ + method: 'get', + url: '/userSubjectReport/study/error', + params, + }); +/** + * 学情报告-英语语感统计 + * @param data 请求参数 + */ +export const englishLanguageStatApi = (data: anyobj) => + $req({ + method: 'post', + url: '/userSentenceLearn/queryStatListByTimeType', + data, + }); diff --git a/src/api/modules/applicationManagement.ts b/src/api/modules/applicationManagement.ts new file mode 100644 index 0000000..ff6c5b2 --- /dev/null +++ b/src/api/modules/applicationManagement.ts @@ -0,0 +1,10 @@ +import $req from '../request'; +/** + * 应用管控 + * @param data 请求参数 + */ +export const queryAppRecordApi = (serialNum: string) => + $req({ + method: 'get', + url: `/userAppRecord/queryAppRecord/${serialNum}`, + }); diff --git a/src/api/modules/awardManage.ts b/src/api/modules/awardManage.ts new file mode 100644 index 0000000..19abd36 --- /dev/null +++ b/src/api/modules/awardManage.ts @@ -0,0 +1,49 @@ +import $req from '../request'; +/** + * 家长老师-奖励管理 + * @param data 请求参数 + */ +export const getRewardListApi = params => + $req({ + method: 'get', + url: '/userRewardMapping/list', + params, + }); +/** + * 家长老师-新增奖励 + * @param data 请求参数 + */ +export const addRewardApi = data => + $req({ + method: 'post', + url: '/userRewardMapping', + data, + }); +/** + * 家长老师-修改奖励 + * @param data 请求参数 + */ +export const updateRewardApi = data => + $req({ + method: 'put', + url: '/userRewardMapping', + data, + }); +/** + * 家长老师-删除奖励 + * @param data 请求参数 + */ +export const deleteRewardApi = ids => + $req({ + method: 'delete', + url: `/userRewardMapping/${ids}`, + }); +/** + * 家长老师-奖励详情 + * @param data 请求参数 + */ +export const getRewardDetailApi = id => + $req({ + method: 'get', + url: `/userRewardMapping/${id}`, + }); diff --git a/src/api/modules/bindDevice.ts b/src/api/modules/bindDevice.ts new file mode 100644 index 0000000..f1eae34 --- /dev/null +++ b/src/api/modules/bindDevice.ts @@ -0,0 +1,78 @@ +import $req from '../request'; + +/** + * 当前登录用户的绑定信息 + * @param params 请求参数 + */ +export const getCurInfo = params => + $req({ + method: 'get', + url: '/parentBind/curInfo', + params, + }); + +/** + * 家长绑定管理员 + * @param data 请求参数 + */ +export const parentBindAdmin = data => + $req({ + method: 'post', + url: '/parentBind/admin', + data, + }); + +/** + * 家长申请绑定 + * @param data 请求参数 + */ +export const parentBindApply = data => + $req({ + method: 'post', + url: '/parentBind/apply', + data, + }); + +/** + * -设备当前管理员信息 + * @param params 请求参数 + */ +export const adminInfo = params => + $req({ + method: 'get', + url: '/parentBind/adminInfo', + params, + }); + +/** + * -家长申请绑定信息 + * @param params 请求参数 + */ +export const applyInfo = params => + $req({ + method: 'get', + url: '/parentBind/apply/info', + params, + }); + +/** + * 管理员审批 + * @param data 请求参数 + */ +export const adminApproval = data => + $req({ + method: 'post', + url: '/parentBind/admin/approval', + data, + }); + +/** + * 时间管控保存 + * @param data 请求参数 + */ +export const deviceTimeControl = data => + $req({ + method: 'post', + url: '/deviceTimeControl', + data, + }); diff --git a/src/api/modules/deviceScreenshotRecord.ts b/src/api/modules/deviceScreenshotRecord.ts new file mode 100644 index 0000000..7a662ca --- /dev/null +++ b/src/api/modules/deviceScreenshotRecord.ts @@ -0,0 +1,12 @@ +import $req from '../request'; + +/** + * 设备截屏记录表-查询列表 + * @param params 请求参数 + */ +export const deviceScreenshotRecordList = params => + $req({ + method: 'get', + url: '/deviceScreenshotRecord/list', + params, + }); diff --git a/src/api/modules/home.ts b/src/api/modules/home.ts new file mode 100644 index 0000000..5e19d03 --- /dev/null +++ b/src/api/modules/home.ts @@ -0,0 +1,22 @@ +import $req from '../request'; + +/** + * 设备屏幕查询 + * 查询 + * @param params 请求参数 + */ +export const getDeviceScreenControlApi = (simSerialNumber: string) => + $req({ + method: 'get', + url: `/deviceTimeControl/${simSerialNumber}`, + }); +/** + * 一键解锁屏 + * 解锁屏 + * @param params 请求参数 + */ +export const lockDeviceScreenApi = (simSerialNumber: string) => + $req({ + method: 'post', + url: `/deviceTimeControl/update/lock/${simSerialNumber}`, + }); diff --git a/src/api/modules/inspector.ts b/src/api/modules/inspector.ts new file mode 100644 index 0000000..00878eb --- /dev/null +++ b/src/api/modules/inspector.ts @@ -0,0 +1,197 @@ +import $req from '../request'; +import { storeToRefs } from 'pinia'; +import { user } from '@/store'; +import { getCache } from '@/utils'; +// 课表日历 +export const getScheduleList = (data?: Record): Promise => + $req({ + method: 'get', + url: '/phone/inspectorTeacher/getCourseTableById', + data, + }); + +// 查询指定日期学生数据 +export const getCourseDate = (data?: Record): Promise => + $req({ + method: 'get', + url: + `/phone/inspectorTeacher/getCourseTabletStudentVoByTime` + + `${data.date ? `?courseDate=${data.date}` : ''}`, + // data, + }); + +// 开始督学 +export const startInpector = (data?: Record): Promise => + $req({ + method: 'post', + url: `/phone/inspectorTeacher/startInspector?courseDate=${data.courseDate}`, + }); + +// 结束督学 +export const endInpector = (data?: Record): Promise => + $req({ + method: 'post', + url: `/phone/inspectorTeacher/endInspector?courseDate=${data.courseDate}`, + }); + +// 督学实况 +export const condition = (data?: Record): Promise => + $req({ + method: 'post', + url: `/phone/inspectorTeacher/inspector_real?courseDate=${data.courseDate}`, + }); + +// 获取学员课表日历 +export const getCourseData = (data?: Record): Promise => + $req({ + method: 'get', + url: `/phone/inspectorTeacher/getStuCourseTable?userId=${data.id}`, + // data, + }); + +// 获取学科 +export const getSubject = (data?: Record): Promise => + $req({ + method: 'get', + url: `/subject/list/${data.gradeId}`, + }); +// 获取学科教材 +export const getBooks = (data?: Record): Promise => + $req({ + method: 'get', + url: `/userTextBook/list?gradeId=${data.gradeId}&subjectId=${data.subjectId}&userId=${data.userId}¤t=${data.current}`, + }); + +// 获取教材章节 +export const getChaper = (data?: Record): Promise => + $req({ + method: 'get', + url: `/subjectChapter/tree?textBookId=${data.textBookId}`, + }); +// 获取教材章节知识点 +export const getKnowledge = (data?: Record): Promise => + $req({ + method: 'get', + url: `/subjectKnowledge/tree?chapterId=${data.chapterId}`, + }); + +// 发布计划 +export const publishPlan = (data?: Record): Promise => + $req({ + method: 'post', + url: `/phone/inspectorTeacher/publishPlan`, + data, + }); +// 获取学员计划 +export const getStuPlan = (data?: Record): Promise => + $req({ + method: 'get', + url: `/phone/inspectorTeacher/getStuPlanByDate?userId=${data.userId}&courseDate=${data.courseDate}`, + }); + +// 获取督学师信息 +export const getUserInfo = (data?: Record): Promise => + $req({ + method: 'get', + url: `/phone/inspectorTeacher/getCurrentTeacher`, + }); +// 文件上传 +export const uploadFile = async (file): Promise => { + const { token } = storeToRefs(user()); + + const mergerToken = token.value || getCache('token'); + + const data = await uni.uploadFile({ + url: `/api/main/sysFileInfo/tenUploadAll`, // ${import.meta.env.VITE_HOST} + file: file, + name: file.fileName, + header: { + // 'content-type': 'multipart/form-data', + Authorization: mergerToken ? `Bearer ${mergerToken}` : token, + }, + }); + return JSON.parse(data.data); +}; + +// 完善督学师资料 /phone/inspectorTeacher/updateTeacherInfo +export const updateTeacherInfo = (data?: Record): Promise => + $req({ + method: 'post', + url: `/phone/inspectorTeacher/updateTeacherInfo`, + data, + }); + +// 沟通列表 +export const getTalkList = (data?: Record): Promise => + $req({ + method: 'get', + url: `/phone/inspectorTeacher/inspectorTalkListPage?current=${data.current}`, + }); + +// 沟通详情 +export const getTalkDetails = (data?: Record): Promise => { + const param = data.inspectorTalkRecordId + ? `?inspectorTalkRecordId=${data.inspectorTalkRecordId}&userId=${data.userId}` + : `?userId=${data.userId}`; + return $req({ + method: 'get', + url: `/phone/inspectorTeacher/studentInspectorTalkPage${param}`, + }); +}; + +// 消息存储 +export const saveTalk = (data?: Record): Promise => + $req({ + method: 'post', + url: `/inspectorStudent/sendInspectorTalkRecord`, + data, + }); + +// 验证码校验 +export const validCode = (data?: Record): Promise => + $req({ + method: 'post', + url: `/sms/validateMessage?phoneNumbers=${data.phone}&code=${data.code}`, + data, + }); +// 获取我的未读信息 +export const getUnreadCount = (data?: Record): Promise => + $req({ + method: 'get', + url: `/phone/inspectorTeacher/myUnreadCount`, + }); + +// 消息标记为已读 +export const readMsg = (data?: Record): Promise => + $req({ + method: 'post', + url: `/inspectorStudent/readTalkRecord`, + data, + }); + +// 督学师是否已完善资料 +export const needPerfectInfo = (data?: Record): Promise => + $req({ + method: 'get', + url: `/phone/inspectorTeacher/is_perfect`, + }); +// 学生是否可以进行精准学判断 +export const getPrecisionFlag = (data?: Record): Promise => + $req({ + method: 'get', + url: `/userTrainTitle/airPrecisionFlag?subjectId=${data.subjectId}&userId=${data.userId}`, + }); + +export const getKnowledgeFlag = (knowledgeId: string): Promise => { + return $req({ + method: 'get', + url: `/subjectKnowledge/titleFlag?id=${knowledgeId}`, + }); +} + +export const getKnowledgeVideo = (chapterId: string | number): Promise => { + return $req({ + method: 'get', + url: `/subjectChapterVideo/list?chapterId=${chapterId}`, + }); +} \ No newline at end of file diff --git a/src/api/modules/inviteBind.ts b/src/api/modules/inviteBind.ts new file mode 100644 index 0000000..b881d23 --- /dev/null +++ b/src/api/modules/inviteBind.ts @@ -0,0 +1,30 @@ +import $req from '../request'; +/** + * 获取邀请配置 + * @param data 请求参数 + */ +export const getJsapiSignatureApi = (params: anyobj) => + $req({ + method: 'get', + url: '/wechatPublic/createJsapiSignature', + params, + }); +/** + * 邀请绑定 + * @param data 请求参数 + */ +export const parentBindInviteApi = (data: anyobj) => + $req({ + method: 'post', + url: '/parentBindInvite', + data, + }); +/** + * 跳转邀请绑定页面后获取对应数据 + * @param data 请求参数 + */ +export const getInviteInfoApi = id => + $req({ + method: 'get', + url: `/parentBindInvite/${id}`, + }); diff --git a/src/api/modules/mine.ts b/src/api/modules/mine.ts new file mode 100644 index 0000000..92cf606 --- /dev/null +++ b/src/api/modules/mine.ts @@ -0,0 +1,78 @@ +import $req from '../request'; + +/** + * 家长绑定的孩子 + * @param params 请求参数 + */ +export const getParentBindChildApi = (params: anyObj) => + $req({ + method: 'get', + url: '/parentBindChild/list', + params, + }); +/** + * 家长绑定的设备 + * @param params 请求参数 + */ +export const getParentBindDeviceApi = (params: anyObj) => + $req({ + method: 'get', + url: '/parentBindDevice/list', + params, + }); +/** + * 我的孩子-绑定的家长 + * @param params 请求参数 + */ +export const parentBindChildApi = (id: string) => + $req({ + method: 'get', + url: `/parentBindChild/${id}`, + }); +/** + * 我的孩子-解除绑定家长 + * @param params 请求参数 + */ +export const childUnBoundParentApi = (data: anyObj) => + $req({ + method: 'post', + url: '/parentBindChild/unBound', + data, + }); +/** + * 我的设备-解除绑定 + * @param params 请求参数 + */ +export const parentUnBoundDeviceApi = (data: anyObj) => + $req({ + method: 'post', + url: '/parentBindDevice/unBound', + data, + }); +/** + * 我的设备-当前登录 + * @param params 请求参数 + */ +export const parentDeviceCurrentLoginApi = (id: string) => + $req({ + method: 'get', + url: `/parentBindDevice/${id}`, + }); +/** + * 设备管理-绑定申请列表 + * @param params 请求参数 + */ +export const applyBindInfoListApi = () => + $req({ + method: 'get', + url: '/parentBind/applyInfoList', + }); +/** + * 设备管理-当前登录用户是否管理员 + * @param params 请求参数 + */ +export const userInfoPermitApi = () => + $req({ + method: 'get', + url: '/parentBind/applyInfoPermit', + }); diff --git a/src/api/modules/mySupervisionService.ts b/src/api/modules/mySupervisionService.ts new file mode 100644 index 0000000..5d339f5 --- /dev/null +++ b/src/api/modules/mySupervisionService.ts @@ -0,0 +1,54 @@ +import $req from '../request'; + + +export const getInspectorCourseList = (params: {userId: string | number}) => { + return $req({ + method: 'get', + url: '/inspectorParent/userInspectorCourseList', + params + }); +} + +export const getInspectorModeList = () => { + return $req({ + method: 'get', + url: '/inspectorParent/inspectorModeList', + }); +} + +// 最近或最后一次课时督学师和同学信息 +export const getInspectorTeacherStudentInfo = (params: {orderId: string}) => { + return $req({ + method: 'get', + url: '/inspectorParent/inspectorTeacherStudentInfo', + params + }); +} + +// 督学订单列表 +export const getInspectorOrderList = (params: {userId: string | number}) => { + return $req({ + method: 'get', + url: '/inspectorParent/userInspectorOrderList', + params + }); +} + +// 查询督学计划 +export const getInspectorPlan = (params: {inspectorPlanId: string}) => { + return $req({ + method: 'get', + url: '/inspectorParent/inspectorPlanInfo', + params + }); +} + +// 督学计划报告 +export const getInspectorPlanReport = (params: {userId: string}) => { + return $req({ + method: 'get', + url: '/inspectorParent/userInspectorCourseReportList', + params + }); +} + diff --git a/src/api/modules/parent.ts b/src/api/modules/parent.ts new file mode 100644 index 0000000..2644a21 --- /dev/null +++ b/src/api/modules/parent.ts @@ -0,0 +1,12 @@ +import $req from '../request'; + +export const getChildList = () => { + return $req({ + url: '/inspectorParent/childList', + }); +}; +export const getModelList = () => { + return $req({ + url: '/inspectorParent/inspectorModeList', + }); +}; diff --git a/src/api/modules/taskManage.ts b/src/api/modules/taskManage.ts new file mode 100644 index 0000000..7674396 --- /dev/null +++ b/src/api/modules/taskManage.ts @@ -0,0 +1,72 @@ +import $req from '../request'; +/** +/** + * 任务管理-列表 + * @param data 请求参数 + */ +export const getTaskListApi = params => + $req({ + method: 'get', + url: '/scTask/list', + params, + }); +/** + * 任务管理-新增 + * @param data 请求参数 + */ +export const addTaskApi = data => + $req({ + method: 'post', + url: '/scTask', + data, + }); +/** + * 教师端-查询学生任务情况 + * @param data 请求参数 + */ +export const getFamilyTaskStuApi = params => + $req({ + method: 'get', + url: '/scTask/getFamilyTaskStuList', + params, + }); + +/** + * 选择任务-列表 + * @param data 请求参数 + */ +export const taskConfigListApi = params => + $req({ + method: 'get', + url: '/scTaskConfig/list', + params, + }); +/** + * 选择任务-新增 + * @param data 请求参数 + */ +export const addTaskConfigApi = data => + $req({ + method: 'post', + url: '/scTaskConfig', + data, + }); +/** + * 选择任务-删除 + * @param data 请求参数 + */ +export const deleteTaskConfigApi = ids => + $req({ + method: 'delete', + url: `/scTaskConfig/${ids}`, + }); +/** + * 选择任务-更新 + * @param data 请求参数 + */ +export const updateTaskStatusApi = data => + $req({ + method: 'post', + url: '/scTask/updateTaskStatus', + data, + }); diff --git a/src/api/modules/warranty.ts b/src/api/modules/warranty.ts new file mode 100644 index 0000000..61f6db3 --- /dev/null +++ b/src/api/modules/warranty.ts @@ -0,0 +1,31 @@ +import $req from '../request'; + +/** + * 家长端-电子保修卡信息 + * @param data 请求参数 + */ +export const getWarrantyCardMsgApi = () => + $req({ + method: 'get', + url: '/parentBind/getBindDeviceList', + }); +/** + * 家长端-申请售后 + * @param data 请求参数 + */ +export const applyServiceApi = (data: anyObj) => + $req({ + method: 'post', + url: '/deviceWarrantyRecord', + data, + }); +/** + * 家长端-查询售后历史 + * @param data 请求参数 + */ +export const getServiceHistoryApi = (params: anyObj) => + $req({ + method: 'get', + url: '/deviceWarrantyRecord/list', + params, + }); diff --git a/src/api/request.ts b/src/api/request.ts new file mode 100644 index 0000000..55a4d03 --- /dev/null +++ b/src/api/request.ts @@ -0,0 +1,93 @@ +import { user } from '@/store'; +import { storeToRefs } from 'pinia'; +import { getCache } from '@/utils'; + +const CONFIG = { + // host: import.meta.env.VITE_HOST || '', + // baseURL: 'http://127.0.0.1:9053/api/main', + baseURL: '/api/main', + timeout: 60000, + method: 'GET', +}; + +export class HttpError extends Error { + data: any; + constructor(message: string, data: Record) { + super(message); + this.data = data; + } +} + +const request = async (config: Record): Promise => { + const networkType = await uni.getNetworkType(); + if (networkType.networkType === 'none') { + uni.showModal({ + content: '暂无网络,请恢复网络后使用', + confirmText: '知道了', + showCancel: false, + confirmColor: '#ffe60f', + }); + return Promise.reject( + new HttpError('暂无网络,请恢复网络后使用', { + code: '-1', + }), + ); + } + + return new Promise((resolve, reject) => { + const { clear } = user(); + const { token } = storeToRefs(user()); + const mergerToken = token.value || getCache('token'); + const method = (config.method || CONFIG.method).toUpperCase(); + + uni.request({ + method, + // url: (config.host || CONFIG.host) + (config.baseURL || CONFIG.baseURL) + config.url, + url: (config.baseURL || CONFIG.baseURL) + config.url, + data: method === 'GET' ? config.params : config.data, + timeout: config.timeout || CONFIG.timeout, + header: { + Authorization: mergerToken ? `Bearer ${mergerToken}` : '', + ...config.headers, + }, + complete(res: anyObj) { + if (res.statusCode === 200) { + if (res.data.code === 200) { + return resolve(res.data); + } else { + if (!config.showToast) { + uni.showToast({ + title: res.data?.message, + icon: 'none', + duration: 3000, + }); + } + return reject(new HttpError(res.data?.message, res.data)); + } + } else { + res.href = (config.baseURL || CONFIG.baseURL) + config.url; + if (res.statusCode === 401) { + clear(); + uni.reLaunch({ + url: '/pages/login/index', + }); + } else { + uni.showToast({ + icon: 'none', + title: + res.statusCode === 500 ? '服务异常' : res?.data?.message || '服务异常,请稍后重试', + }); + } + return reject( + new HttpError(res.data?.message, { + code: res.statusCode, + data: res.data, + }), + ); + } + }, + }); + }); +}; + +export default request; diff --git a/src/components/BackBar/index.vue b/src/components/BackBar/index.vue new file mode 100644 index 0000000..77e453e --- /dev/null +++ b/src/components/BackBar/index.vue @@ -0,0 +1,57 @@ + + diff --git a/src/components/CalenderPopup/CalenderPopup.vue b/src/components/CalenderPopup/CalenderPopup.vue new file mode 100644 index 0000000..12f2bd6 --- /dev/null +++ b/src/components/CalenderPopup/CalenderPopup.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/src/components/CustomNavbar/index.vue b/src/components/CustomNavbar/index.vue new file mode 100644 index 0000000..956cffb --- /dev/null +++ b/src/components/CustomNavbar/index.vue @@ -0,0 +1,46 @@ + + + diff --git a/src/components/CustomPopup/index.vue b/src/components/CustomPopup/index.vue new file mode 100644 index 0000000..a7c763c --- /dev/null +++ b/src/components/CustomPopup/index.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/CustomSegmented/index.vue b/src/components/CustomSegmented/index.vue new file mode 100644 index 0000000..9edb268 --- /dev/null +++ b/src/components/CustomSegmented/index.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/components/Empty/index.vue b/src/components/Empty/index.vue new file mode 100644 index 0000000..abf4bf7 --- /dev/null +++ b/src/components/Empty/index.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/components/MfxBtnPopup/index.vue b/src/components/MfxBtnPopup/index.vue new file mode 100644 index 0000000..da5b92e --- /dev/null +++ b/src/components/MfxBtnPopup/index.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/components/MfxOverlay/index.vue b/src/components/MfxOverlay/index.vue new file mode 100644 index 0000000..afaaabd --- /dev/null +++ b/src/components/MfxOverlay/index.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/components/MfxPopup/index.vue b/src/components/MfxPopup/index.vue new file mode 100644 index 0000000..5b46af5 --- /dev/null +++ b/src/components/MfxPopup/index.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/components/MfxSwitch/index.vue b/src/components/MfxSwitch/index.vue new file mode 100644 index 0000000..8717e42 --- /dev/null +++ b/src/components/MfxSwitch/index.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/src/components/PageLoading/index.vue b/src/components/PageLoading/index.vue new file mode 100644 index 0000000..11651b5 --- /dev/null +++ b/src/components/PageLoading/index.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/src/components/Picker/index.vue b/src/components/Picker/index.vue new file mode 100644 index 0000000..f8116ef --- /dev/null +++ b/src/components/Picker/index.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/src/components/SupervisorTeacher/SupervisorTeacher.vue b/src/components/SupervisorTeacher/SupervisorTeacher.vue new file mode 100644 index 0000000..76f7d3d --- /dev/null +++ b/src/components/SupervisorTeacher/SupervisorTeacher.vue @@ -0,0 +1,278 @@ + + + + + diff --git a/src/components/Tabbar/index.vue b/src/components/Tabbar/index.vue new file mode 100644 index 0000000..8df90e2 --- /dev/null +++ b/src/components/Tabbar/index.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/components/TipPopup/index.vue b/src/components/TipPopup/index.vue new file mode 100644 index 0000000..4335c0e --- /dev/null +++ b/src/components/TipPopup/index.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/components/custom-table/index.vue b/src/components/custom-table/index.vue new file mode 100644 index 0000000..7689679 --- /dev/null +++ b/src/components/custom-table/index.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/components/customCalender/index.vue b/src/components/customCalender/index.vue new file mode 100644 index 0000000..2ab5c5b --- /dev/null +++ b/src/components/customCalender/index.vue @@ -0,0 +1,323 @@ + + + diff --git a/src/components/dmgIcon/index.vue b/src/components/dmgIcon/index.vue new file mode 100644 index 0000000..2d1dce7 --- /dev/null +++ b/src/components/dmgIcon/index.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/echarts-add-lower/add-lower.ts b/src/components/echarts-add-lower/add-lower.ts new file mode 100644 index 0000000..eb0100c --- /dev/null +++ b/src/components/echarts-add-lower/add-lower.ts @@ -0,0 +1,5 @@ +export interface AddLowerDataItem { + text: string; + value: number; + isAdd: boolean; +} diff --git a/src/components/echarts-add-lower/index.vue b/src/components/echarts-add-lower/index.vue new file mode 100644 index 0000000..64a1662 --- /dev/null +++ b/src/components/echarts-add-lower/index.vue @@ -0,0 +1,118 @@ + + + diff --git a/src/components/echarts-circle/index.vue b/src/components/echarts-circle/index.vue new file mode 100644 index 0000000..2344a40 --- /dev/null +++ b/src/components/echarts-circle/index.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/components/echarts-line/index.vue b/src/components/echarts-line/index.vue new file mode 100644 index 0000000..02f5cd6 --- /dev/null +++ b/src/components/echarts-line/index.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/src/components/horizontal-chart/index.vue b/src/components/horizontal-chart/index.vue new file mode 100644 index 0000000..41b1fab --- /dev/null +++ b/src/components/horizontal-chart/index.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/components/inspector-no-data/index.vue b/src/components/inspector-no-data/index.vue new file mode 100644 index 0000000..2094153 --- /dev/null +++ b/src/components/inspector-no-data/index.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/components/inspector/isp-data-load.vue b/src/components/inspector/isp-data-load.vue new file mode 100644 index 0000000..eebf11f --- /dev/null +++ b/src/components/inspector/isp-data-load.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/components/inspector/isp-load-more.vue b/src/components/inspector/isp-load-more.vue new file mode 100644 index 0000000..ea41c74 --- /dev/null +++ b/src/components/inspector/isp-load-more.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/components/inspector/isp-menu.vue b/src/components/inspector/isp-menu.vue new file mode 100644 index 0000000..4a5fe2a --- /dev/null +++ b/src/components/inspector/isp-menu.vue @@ -0,0 +1,78 @@ + + + diff --git a/src/components/inspector/isp-plan-item.vue b/src/components/inspector/isp-plan-item.vue new file mode 100644 index 0000000..60af03b --- /dev/null +++ b/src/components/inspector/isp-plan-item.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/components/inspector/plan-item.ts b/src/components/inspector/plan-item.ts new file mode 100644 index 0000000..51eb1e3 --- /dev/null +++ b/src/components/inspector/plan-item.ts @@ -0,0 +1,43 @@ +export interface PlanItem { + order: number; + finished: boolean; + courseName: string; + label: string; + progressText: string; + time: string; + note: string; + bgColor?: string; +} + +export const TASK_TYPE = { + '0': { + label: '自由学', + notePrefix: `观看学习视频:《#{chapterName}》章节《#{courseTimeName}》视频`, + bgColor: '#FFA65D', + }, + '1': { + label: '自由学', + notePrefix: '完成章节练习:《#{chapterName}》', + bgColor: '#FFA65D', + }, + '2': { + label: '精准学', + notePrefix: 'AI精准学#{finishedNum}次', + bgColor: '#4FD6EE', + }, + '3': { + label: '语感训练', + notePrefix: '语感训练#{finishedNum}次', + bgColor: '#B4B3FF', + }, + '4': { + label: '错题本', + notePrefix: '订正错题本#{finishedNum}道', + }, +}; + +export function formatTaskTypeNotePrefix(notePrefix, values, defaultValue = 0) { + return notePrefix.replace(/#{(.*?)}/g, (match, key) => { + return values[key] || defaultValue; + }); +} diff --git a/src/components/student-calendar/index.vue b/src/components/student-calendar/index.vue new file mode 100644 index 0000000..ecdccc8 --- /dev/null +++ b/src/components/student-calendar/index.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/src/components/student-report/horizontal-chart.vue b/src/components/student-report/horizontal-chart.vue new file mode 100644 index 0000000..9ef0ee4 --- /dev/null +++ b/src/components/student-report/horizontal-chart.vue @@ -0,0 +1,180 @@ + + + + diff --git a/src/components/student-report/index.vue b/src/components/student-report/index.vue new file mode 100644 index 0000000..627622a --- /dev/null +++ b/src/components/student-report/index.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/components/student-report/knowledge-graph-statistics.vue b/src/components/student-report/knowledge-graph-statistics.vue new file mode 100644 index 0000000..5711183 --- /dev/null +++ b/src/components/student-report/knowledge-graph-statistics.vue @@ -0,0 +1,135 @@ + + + diff --git a/src/components/student-report/knowledge-mastery.vue b/src/components/student-report/knowledge-mastery.vue new file mode 100644 index 0000000..deed8ff --- /dev/null +++ b/src/components/student-report/knowledge-mastery.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/components/student-report/plan-finish-data.vue b/src/components/student-report/plan-finish-data.vue new file mode 100644 index 0000000..02f6f8e --- /dev/null +++ b/src/components/student-report/plan-finish-data.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/components/student-report/student-report.ts b/src/components/student-report/student-report.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/components/student-report/study-summary.vue b/src/components/student-report/study-summary.vue new file mode 100644 index 0000000..f2591e8 --- /dev/null +++ b/src/components/student-report/study-summary.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/components/svgs/calendar-icon/index.vue b/src/components/svgs/calendar-icon/index.vue new file mode 100644 index 0000000..39e75b4 --- /dev/null +++ b/src/components/svgs/calendar-icon/index.vue @@ -0,0 +1,72 @@ + + + + + \ No newline at end of file diff --git a/src/components/svgs/edit/index.vue b/src/components/svgs/edit/index.vue new file mode 100644 index 0000000..1ec46a2 --- /dev/null +++ b/src/components/svgs/edit/index.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/src/components/svgs/inverted-triangle/index.vue b/src/components/svgs/inverted-triangle/index.vue new file mode 100644 index 0000000..ab1ab0a --- /dev/null +++ b/src/components/svgs/inverted-triangle/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/components/svgs/svgs-add-plan.vue b/src/components/svgs/svgs-add-plan.vue new file mode 100644 index 0000000..3893b5d --- /dev/null +++ b/src/components/svgs/svgs-add-plan.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/components/up-down-flat/index.ts b/src/components/up-down-flat/index.ts new file mode 100644 index 0000000..4524ecf --- /dev/null +++ b/src/components/up-down-flat/index.ts @@ -0,0 +1,18 @@ +export enum UpDownFlatType { + NORMAL = 'normal', + TIME = 'time', +} + +export enum UpDownFlatState { + UP = 'up', + DOWN = 'down', + FLAT = 'flat', +} + +export interface UpDownFlat { + title: string; + value: any[]; + unit: string; + type: UpDownFlatType; + state: UpDownFlatState; +} diff --git a/src/components/up-down-flat/index.vue b/src/components/up-down-flat/index.vue new file mode 100644 index 0000000..b967d33 --- /dev/null +++ b/src/components/up-down-flat/index.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..dfb2672 --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,8 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/src/hooks/index.ts b/src/hooks/index.ts new file mode 100644 index 0000000..9db62fc --- /dev/null +++ b/src/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './useKey'; +export * from './useTools'; diff --git a/src/hooks/useGlobal.js b/src/hooks/useGlobal.js new file mode 100644 index 0000000..1000f77 --- /dev/null +++ b/src/hooks/useGlobal.js @@ -0,0 +1,97 @@ +// import qs from 'qs'; + + + + + + +// function formatUrlWithParams(url, params) { +// return `${url}?${qs.stringify(params, { encode: false })}`; +// } + +/** + * uni 页面跳转修改,支持传入对象参数,保留当前页面,跳转到应用内的某个页面 + * @param url uni 跳转的页面 + * @param params 参数 + */ +function navigateTo(url, params = {}) { + uni.navigateTo({ + url: formatUrlWithParams(url, params) + }); +} +//修改时间格式 +export const formatSecond = (val) => { + let time = Number(val) + if (time > 3600) { + // 大于一个小时 + let h = parseInt(time / 60 / 60 % 24) + h = h > 0 ? h + '小时' : '' + let m = parseInt(time / 60 % 60) + m = m > 0 ? m + '分钟' : '' + return h + m + } else if (time < 3600 && time > 60) { + let m = parseInt(time / 60 % 60) + m = m > 0 ? m + '分钟' : '' + let s = parseInt(time % 60) + s = s > 0 ? s + '秒' : '' + return m + s + } else if (time < 60 && time > 0) { + return time + '秒' + } else { + return 0 + } + +} +export const formatSecondEn = (val) => { + let time = Number(val) + if (time > 3600) { + // 大于一个小时 + let h = parseInt(time / 60 / 60 % 24) + h = h > 0 ? h + 'h' : '' + let m = parseInt(time / 60 % 60) + m = m > 0 ? m + 'm' : '' + return h + m + } else if (time < 3600 && time > 60) { + let m = parseInt(time / 60 % 60) + m = m > 0 ? m + 'm' : '' + let s = parseInt(time % 60) + s = s > 0 ? s + 's' : '' + return m + s + } else if (time < 60 && time > 0) { + return time + 's' + } else { + return 0 + } +} +// 2024-01-21转1.21 +export const formatDate = (dateString) => { + // 将字符串格式的日期转换成Date对象 + var date = new Date(dateString); + // 获取月份和日期 + var month = date.getMonth() + 1; // 月份从0开始,所以要加1 + var day = date.getDate(); + // 拼接月份和日期并返回结果 + var formattedDate = month + '.' + day; + return formattedDate; +} +/** + * 时间格式化 YY.MM.DD hh:mm 或者YY.MM.DD + * @param + * @returns + */ +export const formatDate1 = (date, toMinute) => { + let date1 = new Date(date); + let year = date1.getFullYear(); + let month = date1.getMonth() + 1; // 月份是从0开始的 + let day = date1.getDate(); + let hour = date1.getHours() + let minute = date1.getMinutes() + if (toMinute) { + return year + '.' + (month < 10 ? '0' + month : month) + '.' + (day < 10 ? '0' + day : day) + ' ' + (hour < + 10 ? '0' + hour : hour) + ':' + + (minute < 10 ? '0' + minute : minute); + } else { + return year + '.' + (month < 10 ? '0' + month : month) + '.' + (day < 10 ? '0' + day : day); + } + +} \ No newline at end of file diff --git a/src/hooks/useImage.js b/src/hooks/useImage.js new file mode 100644 index 0000000..967b827 --- /dev/null +++ b/src/hooks/useImage.js @@ -0,0 +1,64 @@ +// 获取学生头像 +export const studentHeadImage = sex => { + let headPic = ''; + switch (sex) { + case 0: + // 男 + headPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/boy.png'; + return headPic; + case 1: + // 女 + headPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/girl.png'; + return headPic; + } +}; +// 获取成就勋章 +export const getMedalImage = type => { + let medalPic = ''; + switch (type) { + case 1: + medalPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/medal_1.png'; + return medalPic; + case 2: + medalPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/medal_2.png'; + return medalPic; + case 3: + medalPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/medal_3.png'; + return medalPic; + case 4: + medalPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/medal_4.png'; + return medalPic; + } +}; +// 获取置灰成就勋章 +export const getGrayMedalImage = type => { + let medalPic = ''; + switch (type) { + case 1: + medalPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/gray_medal_1.png'; + return medalPic; + case 2: + medalPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/gray_medal_2.png'; + return medalPic; + case 3: + medalPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/gray_medal_3.png'; + return medalPic; + case 4: + medalPic = + 'https://xuexiaole-1313840333.cos.ap-guangzhou.myqcloud.com/xuexiaoleClient/gray_medal_4.png'; + return medalPic; + } +}; +// 获取升将持平 +export const getRankFlagImage = url => { + return '/static/iconPicture/' + url; +}; diff --git a/src/hooks/useKey.ts b/src/hooks/useKey.ts new file mode 100644 index 0000000..3098c8f --- /dev/null +++ b/src/hooks/useKey.ts @@ -0,0 +1,67 @@ +const OSS_URL = import.meta.env.VITE_OSS_HOST; +// 学历 +export const useEducation = { + 0: '小学', + 1: '初中', + 2: '高中', + 3: '中专', + 4: '大专', + 5: '本科', + 6: '研究生', + 7: '博士', + 8: '博士后', +}; +// 家长称谓 +export const useRelation1 = { + 1: '父亲', + 2: '母亲', + 3: '爷爷', + 4: '奶奶', + 5: '外公', + 6: '外婆', + 7: '其他', +}; +export const useRelation = [ + { + name: '爸爸', + icon: `${OSS_URL}/urm/bindDevice/baba.png`, + id: 1, + color: '#63B1FF', + }, + { + name: '妈妈', + icon: `${OSS_URL}/urm/bindDevice/mama.png`, + id: 2, + color: '#FF8A8A', + }, + { + name: '爷爷', + icon: `${OSS_URL}/urm/bindDevice/yeye.png`, + id: 3, + color: '#8979FF', + }, + { + name: '奶奶', + icon: `${OSS_URL}/urm/bindDevice/nainai.png`, + id: 4, + color: '#FFB152FB', + }, + { + name: '外公', + icon: `${OSS_URL}/urm/bindDevice/wg.png`, + id: 5, + color: '#69CBFF', + }, + { + name: '外婆', + icon: `${OSS_URL}/urm/bindDevice/waipo.png`, + id: 6, + color: '#E27AFF', + }, + { + name: '其他', + icon: `${OSS_URL}/urm/bindDevice/qita.png`, + id: 7, + color: '#5BE19E', + }, +]; diff --git a/src/hooks/useObj.js b/src/hooks/useObj.js new file mode 100644 index 0000000..84ef784 --- /dev/null +++ b/src/hooks/useObj.js @@ -0,0 +1,10 @@ +// 对象属性key改名 +export const renameKeys = (obj, oldKeys, newKeys) => { + for (let i in oldKeys) { + let oldKey = oldKeys[i] + let newKey = newKeys[i] + obj[newKey] = obj[oldKey] + // delete obj[oldKey] + } + return obj +} diff --git a/src/hooks/useSocket.ts b/src/hooks/useSocket.ts new file mode 100644 index 0000000..dc63543 --- /dev/null +++ b/src/hooks/useSocket.ts @@ -0,0 +1,127 @@ +import { useWebSocket } from '@vueuse/core'; +import { user } from '@/store'; +import { ref } from 'vue'; +import type { UseWebSocketReturn } from '@vueuse/core'; + +let SOCKET: UseWebSocketReturn; +export const useSocket = () => { + const { token, userInfo } = user(); + const inspectorMessage = ref(); + const inspectorDesktopMessage = ref([]); + const desktopPath = ref(); + enum SOCKET_MSG_TYPE { + lockScreen = 'lockScreen', + unLockScreen = 'unLockScreen', + desktopPreview = 'desktopPreview', + inspectorTalkMessage = 'inspectorTalkMessage', + desktopScreenshotImage = 'desktopScreenshotImage', + } + function init() { + SOCKET = useWebSocket( + `${process.env.VITE_WS_URL}?accessToken=${token.replace('Bearer ', '')}`, + { + autoReconnect: { + retries: 5, + delay: 3000, + onFailed() { + console.log('重新连接失败'); + }, + }, + heartbeat: { + message: '{"type":"ping"}', + interval: 5000, + pongTimeout: 3000, + }, + onConnected, + onDisconnected, + onError, + onMessage, + }, + ); + sendMsg({ + type: 'ping', + }); + } + + function onConnected(ws: WebSocket) { + // ws.binaryType = 'arraybuffer'; + console.log('ws已连接'); + } + function onDisconnected() { + console.log('ws已关闭'); + } + function onError(ws: WebSocket, event: Event) { + // console.log(event); + } + + function onMessage(ws: WebSocket, event: MessageEvent) { + const data = JSON.parse(event.data); + console.log(data); + switch (data.type) { + // case SOCKET_MSG_TYPE.lockScreen: + // // 执行锁屏 + // useLog(LogType.LockScreenTime, { + // simSerialNumber: SN, + // lockFlag: 1, + // }); + // break; + // case SOCKET_MSG_TYPE.unLockScreen: + // // 执行解锁 + // useLog(LogType.LockScreenTime, { + // simSerialNumber: SN, + // lockFlag: 0, + // }); + // break; + case SOCKET_MSG_TYPE.desktopPreview: + onDesktopPreview(); + break; + case SOCKET_MSG_TYPE.inspectorTalkMessage: + inspectorMessage.value = data.msg; + break; + case SOCKET_MSG_TYPE.desktopScreenshotImage: + inspectorDesktopMessage.value = data; + break; + } + } + // 桌面预览 + async function onDesktopPreview() { + // const { data: res } = await uploadFile({}); + // sendMsg({ + // type: 'desktopScreenshotImage', + // userId: userInfo.userId, + // simSerialNumber: SN, + // msg: '', + // }); + // SOCKET.send( + // JSON.stringify({ + // type: 'desktopScreenshotImage', + // userId: userInfo.userId, + // simSerialNumber: SN, + // msg: '' + // }), + // ); + } + // 发送消息 + function sendMsg(data: anyObj, config = {}) { + if (!SOCKET) { + console.error('ws不存在'); + return; + } + inspectorDesktopMessage.value = []; + SOCKET.send(JSON.stringify(data)); + } + + function textToBuffer(str: string) { + return new TextEncoder().encode(str); + } + + function bufferToText(buffer: ArrayBuffer) { + return new TextDecoder().decode(buffer); + } + return { + init, + sendMsg, + inspectorMessage, + inspectorDesktopMessage, + }; +}; diff --git a/src/hooks/useTools.ts b/src/hooks/useTools.ts new file mode 100644 index 0000000..91bb24e --- /dev/null +++ b/src/hooks/useTools.ts @@ -0,0 +1,22 @@ +export const maskPhone = (phone: string) => { + if (!phone || phone.length !== 11) return phone; + return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1***$2'); +}; + +export const debounce = (fn: (...args: any[]) => void, delay: number, immediate = false) => { + let timer: number | null = null; + return function (this: any, ...args: any[]) { + timer && clearTimeout(timer); + if (immediate) { + const callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, delay); + callNow && fn.apply(this, args); + } else { + timer = setTimeout(() => { + fn.apply(this, args); + }, delay); + } + }; +}; diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..3b81e8d --- /dev/null +++ b/src/main.ts @@ -0,0 +1,18 @@ +import { createSSRApp } from 'vue'; +import App from './App.vue'; + +import * as Pinia from 'pinia'; +import './styles/global.scss'; +import './styles/font.scss'; +import './styles/iconfont.scss'; +import BackBar from '@/components/BackBar/index'; + +export function createApp() { + const app = createSSRApp(App); + app.use(Pinia.createPinia()); + app.component('BackBar', BackBar); + return { + app, + Pinia, + }; +} diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..88a3a48 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,91 @@ +{ + "name": "学小乐管理端", + "appid": "__UNI__A05ABA1", + "description": "", + "versionName": "1.0.0", + "versionCode": "100", + "transformPx": false, + /* 5+App特有相关 */ + "app-plus": { + "usingComponents": true, + "nvueStyleCompiler": "uni-app", + "compilerVersion": 3, + "splashscreen": { + "alwaysShowBeforeRender": true, + "waiting": true, + "autoclose": true, + "delay": 0 + }, + /* 模块配置 */ + "modules": {}, + /* 应用发布信息 */ + "distribute": { + /* android打包配置 */ + "android": { + "permissions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios": {}, + /* SDK配置 */ + "sdkConfigs": {} + } + }, + /* 快应用特有相关 */ + "quickapp": {}, + /* 小程序特有相关 */ + "mp-weixin": { + "appid": "wxd13aabeb40898e1d", + "setting": { + "urlCheck": false + }, + "usingComponents": true + }, + "mp-alipay": { + "usingComponents": true + }, + "mp-baidu": { + "usingComponents": true + }, + "mp-toutiao": { + "usingComponents": true + }, + "uniStatistics": { + "enable": false + }, + "vueVersion": "3", + "h5": { + "title": "学小乐", + "devServer": { + "proxy": { + "/api": { + "target": "https://test.pi.xuexiaole.com", + "changeOrigin": true, + "pathRewrite": { + "^/api": "" // 重写路径 + } + } + }, + "https": false + }, + "router": { + "mode": "hash", + "base": "./" + } + } +} diff --git a/src/pages.json b/src/pages.json new file mode 100644 index 0000000..dd6ad9b --- /dev/null +++ b/src/pages.json @@ -0,0 +1,402 @@ +{ + "pages": [ + { + "path": "pages/home/index", + "style": { + "navigationBarTitleText": "学小乐" + } + }, + { + "path": "pages/login/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/academicReport/index", + "style": { + "navigationBarTitleText": "学情报告" + } + }, + { + "path": "pages/applicationManagement/index", + "style": { + "navigationBarTitleText": "应用管控" + } + }, + { + "path": "pages/mine/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mine/bindApply/index", + "style": { + "navigationBarTitleText": "绑定申请", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/Warranty/index", + "style": { + "navigationBarTitleText": "电子保修卡", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/Warranty/applyService", + "style": { + "navigationBarTitleText": "申请售后", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/Warranty/serviceHistory", + "style": { + "navigationBarTitleText": "售后历史", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/Warranty/serviceHistoryDetails", + "style": { + "navigationBarTitleText": "售后详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/taskManage/index", + "style": { + "navigationBarTitleText": "任务管理", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/taskManage/taskItem", + "style": { + "navigationBarTitleText": "新增任务", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/taskManage/taskConfigList", + "style": { + "navigationBarTitleText": "选择任务", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/taskManage/patriarchSendObject", + "style": { + "navigationBarTitleText": "选择发送对象", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/awardManage/index", + "style": { + "navigationBarTitleText": "奖励管理", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/awardManage/awardItem", + "style": { + "navigationBarTitleText": "添加奖励", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/prefectInformation/index", + "style": { + "navigationBarTitleText": "完善信息", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/prefectInformation/cropper", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "disableScroll": true + } + }, + { + "path": "pages/mine/details/childrenDetails", + "style": { + "navigationBarTitleText": "账号详情", + "enablePullDownRefresh": false, + "disableScroll": true + } + }, + { + "path": "pages/mine/details/deviceDetails", + "style": { + "navigationBarTitleText": "设备详情", + "enablePullDownRefresh": false, + "disableScroll": true + } + }, + { + "path": "pages/mine/inviteBind/index", + "style": { + "navigationBarTitleText": "邀请绑定", + "enablePullDownRefresh": false, + "disableScroll": true + } + }, + { + "path": "pages/home/bindDevice/index", + "style": { + "navigationBarTitleText": "扫码绑定", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/home/bindDevice/applyForBinding", + "style": { + "navigationBarTitleText": "申请绑定", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/home/bindDevice/bindChildAccount", + "style": { + "navigationBarTitleText": "绑定申请", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/home/bindDevice/familyRelationships", + "style": { + "navigationBarTitleText": "亲子关系", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/mine/inviteBind/relationShips", + "style": { + "navigationBarTitleText": "亲子关系", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/home/TimeManagement/index", + "style": { + "navigationBarTitleText": "时间管控", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/home/DesktopPreview/index", + "style": { + "navigationBarTitleText": "设备截屏", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/home/DesktopPreview/historyScreenShot", + "style": { + "navigationBarTitleText": "历史截屏", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/home/LockScreen/index", + "style": { + "navigationBarTitleText": "一键锁屏", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/personalData/index", + "style": { + "navigationBarTitleText": "个人资料", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspector/personalData/personalInformation", + "style": { + "navigationBarTitleText": "个人简介", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/personalData/editPhone", + "style": { + "navigationBarTitleText": "修改手机号", + "enablePullDownRefresh": false + } + }, + + { + "path": "pages/inspector/personalData/certificateView", + "style": { + "navigationBarTitleText": "资质证书", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/personalData/certificateAdd", + "style": { + "navigationBarTitleText": "资质证书", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/personalData/cropper", + "style": { + "navigationBarTitleText": "头像裁剪", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/personalData/subject", + "style": { + "navigationBarTitleText": "擅长科目", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/schedule/index", + "style": { + "navigationBarTitleText": "课表", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/schedule/condition", + "style": { + "navigationBarTitleText": "督学时况", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspector/chat/index", + "style": { + "navigationBarTitleText": "沟通", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspector/chat/chatDetails", + "style": { + "navigationBarTitleText": "沟通", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspector/mine/index", + "style": { + "navigationBarTitleText": "我的", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspector/student/index", + "style": { + "navigationBarTitleText": "学员", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspector/student-detail/index", + "style": { + "navigationBarTitleText": "学员详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspector/releasePlan/index", + "style": { + "navigationBarTitleText": "发布计划", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/releasePlan/selectPlan", + "style": { + "navigationBarTitleText": "选择任务", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/releasePlan/selectBook", + "style": { + "navigationBarTitleText": "选择教材", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/releasePlan/selectChapter", + "style": { + "navigationBarTitleText": "选择章节", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inspector/releasePlan/selectVideo", + "style": { + "navigationBarTitleText": "选择视频", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/parents/mySupervisionService/index", + "style": { + "navigationBarTitleText": "我的督学服务" + } + }, + { + "path": "pages/parents/mySupervisionService/studyPlan", + "style": { + "navigationBarTitleText": "查看学习计划" + } + }, + { + "path": "pages/parents/supervisionService/index", + "style": { + "navigationBarTitleText": "督学服务" + } + }, + { + "path": "pages/parents/supervisionService/buyService", + "style": { + "navigationBarTitleText": "督学服务" + } + }, + { + "path": "pages/parents/supervisionService/serviceDetail", + "style": { + "navigationBarTitleText": "督学服务" + } + } + /*督学师==============END=======================*/ + ], + "tabBar": { + "color": "#333333", + "selectedColor": "#333333", + "borderStyle": "white", + "backgroundColor": "#ffffff", + "list": [] + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "学小乐", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8", + "navigationStyle": "custom" + }, + "easycom": { + "autoscan": true, + "custom": { + "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue", + "^qy-(.*)": "~@/components/$1/index.vue", + "^svg-(.*)": "~@/components/svgs/$1/index.vue", + "^svgs-(.*)": "~@/components/svgs/svgs-$1.vue", + "^isp-(.*)": "~@/components/inspector/isp-$1.vue" + } + } +} diff --git a/src/pages/academicReport/Components/Echart/BarChart.vue b/src/pages/academicReport/Components/Echart/BarChart.vue new file mode 100644 index 0000000..560aef1 --- /dev/null +++ b/src/pages/academicReport/Components/Echart/BarChart.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/pages/academicReport/Components/Echart/ColumnChart.vue b/src/pages/academicReport/Components/Echart/ColumnChart.vue new file mode 100644 index 0000000..aac79bf --- /dev/null +++ b/src/pages/academicReport/Components/Echart/ColumnChart.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/src/pages/academicReport/Components/Echart/LineChart.vue b/src/pages/academicReport/Components/Echart/LineChart.vue new file mode 100644 index 0000000..ec5a36a --- /dev/null +++ b/src/pages/academicReport/Components/Echart/LineChart.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/pages/academicReport/Components/Echart/RingChart.vue b/src/pages/academicReport/Components/Echart/RingChart.vue new file mode 100644 index 0000000..ec280ad --- /dev/null +++ b/src/pages/academicReport/Components/Echart/RingChart.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/pages/academicReport/Components/childrenBox.vue b/src/pages/academicReport/Components/childrenBox.vue new file mode 100644 index 0000000..d894ede --- /dev/null +++ b/src/pages/academicReport/Components/childrenBox.vue @@ -0,0 +1,129 @@ + + diff --git a/src/pages/academicReport/Components/dateFilter.vue b/src/pages/academicReport/Components/dateFilter.vue new file mode 100644 index 0000000..df320c7 --- /dev/null +++ b/src/pages/academicReport/Components/dateFilter.vue @@ -0,0 +1,87 @@ + + + diff --git a/src/pages/academicReport/Components/exerciseStatistics.vue b/src/pages/academicReport/Components/exerciseStatistics.vue new file mode 100644 index 0000000..544d8c4 --- /dev/null +++ b/src/pages/academicReport/Components/exerciseStatistics.vue @@ -0,0 +1,274 @@ + + + diff --git a/src/pages/academicReport/Components/knowledgeChart.vue b/src/pages/academicReport/Components/knowledgeChart.vue new file mode 100644 index 0000000..c37c0e0 --- /dev/null +++ b/src/pages/academicReport/Components/knowledgeChart.vue @@ -0,0 +1,179 @@ + + + diff --git a/src/pages/academicReport/Components/languageStatistics.vue b/src/pages/academicReport/Components/languageStatistics.vue new file mode 100644 index 0000000..ee8ef91 --- /dev/null +++ b/src/pages/academicReport/Components/languageStatistics.vue @@ -0,0 +1,224 @@ + + + diff --git a/src/pages/academicReport/Components/learningGraspTable.vue b/src/pages/academicReport/Components/learningGraspTable.vue new file mode 100644 index 0000000..cfe7f34 --- /dev/null +++ b/src/pages/academicReport/Components/learningGraspTable.vue @@ -0,0 +1,97 @@ + + + diff --git a/src/pages/academicReport/Components/studyTime.vue b/src/pages/academicReport/Components/studyTime.vue new file mode 100644 index 0000000..cafa805 --- /dev/null +++ b/src/pages/academicReport/Components/studyTime.vue @@ -0,0 +1,137 @@ + + diff --git a/src/pages/academicReport/Components/subjectFilter.vue b/src/pages/academicReport/Components/subjectFilter.vue new file mode 100644 index 0000000..154d02b --- /dev/null +++ b/src/pages/academicReport/Components/subjectFilter.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/src/pages/academicReport/Components/videoTime.vue b/src/pages/academicReport/Components/videoTime.vue new file mode 100644 index 0000000..6f39d1c --- /dev/null +++ b/src/pages/academicReport/Components/videoTime.vue @@ -0,0 +1,212 @@ + + + diff --git a/src/pages/academicReport/index.scss b/src/pages/academicReport/index.scss new file mode 100644 index 0000000..12de6ec --- /dev/null +++ b/src/pages/academicReport/index.scss @@ -0,0 +1,269 @@ +.page { + padding-bottom: 186rpx; + + .single_box { + margin: 16rpx 0 0 0; + padding: 30rpx; + background-color: #fff !important; + + &:last-child { + margin-bottom: 16rpx; + } + + .title { + margin-bottom: 30rpx; + font-size: 34rpx; + line-height: 48rpx; + color: $font-color; + font-weight: 500; + } + + .title2 { + margin: 30rpx 0 20rpx 0; + font-size: 28rpx; + font-weight: 500; + line-height: 40rpx; + text-align: center; + } + + .trend_icon { + margin-left: 10rpx; + width: 26rpx; + height: 26rpx; + } + + .study_situation { + display: flex; + + .item { + flex: 1; + padding: 42rpx 30rpx; + display: flex; + justify-content: space-between; + height: 119rpx; + border-radius: 20rpx; + background-color: #f7faff; + font-size: 26rpx; + font-weight: 500; + box-sizing: border-box; + + &:first-child { + margin-right: 30rpx; + } + + .date { + color: #3fd15f; + font-size: 28rpx; + } + } + } + + .study_situation2 { + display: flex; + justify-content: space-between; + + .item { + width: calc(50% - 15rpx); + text-align: center; + font-weight: 500; + + &_label { + display: block; + height: 76rpx; + line-height: 76rpx; + background-color: #ebf2ff; + border-bottom: 1rpx solid #d9e1f2; + border-radius: 20rpx 20rpx 0 0; + font-size: 26rpx; + } + + &_date { + display: block; + display: flex; + justify-content: center; + align-items: center; + height: 79rpx; + line-height: 79rpx; + background-color: #f7faff; + border-radius: 0 0 20rpx 20rpx; + + font-size: 28rpx; + // rgba(255, 40, 40, 1)jiang rgba(255, 141, 95, 1)ping + } + + .keep { + color: #FF8D5F; + + } + + .down { + color: #FF2828; + } + + .up { + color: #21D17A; + } + + } + } + + .date_filter_box { + text-align: center; + } + } + + .children_box { + + padding-top: 0; + + .children { + display: flex; + justify-content: space-between; + padding: 30rpx 0 30rpx 0; + border-bottom: 1rpx solid $border-color; + + + .left { + display: flex; + align-items: center; + + .children_avatar { + margin-right: 20rpx; + width: 100rpx; + height: 100rpx; + border-radius: 50%; + } + + .name_vip { + display: flex; + align-items: center; + margin-bottom: 6rpx; + + .name { + display: inline-block; + max-width: 210rpx; + font-weight: 500; + font-size: 32rpx; + line-height: 48rpx; + color: $font-color; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .vip { + margin-left: 10rpx; + width: 85rpx; + height: 32rpx; + } + } + + .time { + font-size: 24rpx; + line-height: 34rpx; + color: $font-aux-color; + } + } + + .icon { + width: 30rpx; + height: 30rpx; + } + + .checked_icon { + margin: auto 0; + } + + .rotate { + transform: rotate(-180deg); + } + } + + .children_info { + display: flex; + padding: 30rpx 0 0 0; + + .item { + width: 50%; + font-size: 28rpx; + line-height: 40rpx; + color: $font-aux-color; + + .level { + color: $font-color; + } + } + } + } + + .filter_box { + padding: 30rpx 30rpx 13rpx 30rpx; + + .title { + margin-bottom: 0; + } + } + + .learning_time { + .date_filter_box { + margin: 50rpx 0 30rpx 0; + } + } + + .video_learning { + .date_filter_box { + margin: 30rpx 0; + } + } + + .exercise_statistics { + .study_situation2 { + margin: 30rpx 0 0 0; + + .item { + width: 210rpx; + } + } + } + + .language_statistics { + .study_situation2 { + margin: 30rpx 0 50rpx 0; + } + } + + .knowledge_mapping { + .chart_label { + display: flex; + justify-content: center; + font-size: 26rpx; + color: rgba(102, 102, 102, 1); + + .iden_color { + display: inline-block; + width: 30rpx; + height: 8rpx; + margin-right: 4rpx; + } + + .increase { + display: flex; + align-items: center; + margin-right: 16rpx; + + .iden_color { + background-color: rgba(69, 203, 70, 1); + } + } + + .decrease { + display: flex; + align-items: center; + + .iden_color { + background-color: rgba(248, 104, 96, 1); + } + } + } + } +} \ No newline at end of file diff --git a/src/pages/academicReport/index.vue b/src/pages/academicReport/index.vue new file mode 100644 index 0000000..0ba8645 --- /dev/null +++ b/src/pages/academicReport/index.vue @@ -0,0 +1,118 @@ + + diff --git a/src/pages/academicReport/interface/index.ts b/src/pages/academicReport/interface/index.ts new file mode 100644 index 0000000..7e726ee --- /dev/null +++ b/src/pages/academicReport/interface/index.ts @@ -0,0 +1,75 @@ +// 学生基本信息 +export interface StudentBasicInfoType { + id?: number; + stuName?: string; + stuNo?: string; + sex?: number; + gradeId?: number; + classId?: number; + birthday?: string; + idNo?: string; + origionPlace?: string; + politicsStatus?: string; + address?: string; + gradeName?: string; + className?: string; + familyList?: { + id?: number; + name?: string; + phone?: string; + workUnit?: string; + sysFamilyDictValue?: number; + }[]; + education?: number; + tenantId?: string; + tenantName?: string; + experience?: number; + currentLevelNum?: number; + vipName?: string; + vipEndTime?: string; +} +// 等级排名 +export interface StudentLevelRankType { + id: string; + currentLevelNum: number; + rankNumInServer: number; + rankNumInRegion: number; +} +// 语感 +export interface SentenceStudyStatusType { + trainSentenceCorrectRate: number; + trainSentenceCount: number; + trainSentenceWordCount: number; +} + +// 学科 +export interface SubjectType { + name: string; + pictureUrl: string; + subject: string; + subjectId: string | number; +} +// 学习时长 +export interface StudyTimeType { + cumulativeTimeDuration: number; + continuousDuration: number; + studyDurationVoList: [ + { + totalTimeFree: number; + totalTimeAi: number; + totalTimeError: number; + }, + ]; +} +// 视频学习统计 +export interface VideoTimeType { + videoCount: number; + videoCountRatio: number; + videoTime: number; + videoTimeRatio: number; + videoRecordVoList: { + studyDate: string; + videoCount: number; + videoTime: number; + }[]; +} diff --git a/src/pages/applicationManagement/index.vue b/src/pages/applicationManagement/index.vue new file mode 100644 index 0000000..05edb09 --- /dev/null +++ b/src/pages/applicationManagement/index.vue @@ -0,0 +1,525 @@ + + + + + diff --git a/src/pages/home/DesktopPreview/historyScreenShot.vue b/src/pages/home/DesktopPreview/historyScreenShot.vue new file mode 100644 index 0000000..7f017aa --- /dev/null +++ b/src/pages/home/DesktopPreview/historyScreenShot.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/pages/home/DesktopPreview/index.vue b/src/pages/home/DesktopPreview/index.vue new file mode 100644 index 0000000..f8347f3 --- /dev/null +++ b/src/pages/home/DesktopPreview/index.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/src/pages/home/DesktopPreview/loadIcon.vue b/src/pages/home/DesktopPreview/loadIcon.vue new file mode 100644 index 0000000..6960101 --- /dev/null +++ b/src/pages/home/DesktopPreview/loadIcon.vue @@ -0,0 +1,76 @@ + + diff --git a/src/pages/home/LockScreen/index.vue b/src/pages/home/LockScreen/index.vue new file mode 100644 index 0000000..bfd626e --- /dev/null +++ b/src/pages/home/LockScreen/index.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/pages/home/TimeManagement/index.vue b/src/pages/home/TimeManagement/index.vue new file mode 100644 index 0000000..149c0ea --- /dev/null +++ b/src/pages/home/TimeManagement/index.vue @@ -0,0 +1,696 @@ + + + + + diff --git a/src/pages/home/banner/HomeBanner.vue b/src/pages/home/banner/HomeBanner.vue new file mode 100644 index 0000000..e810dd3 --- /dev/null +++ b/src/pages/home/banner/HomeBanner.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/pages/home/bindDevice/applyForBinding.vue b/src/pages/home/bindDevice/applyForBinding.vue new file mode 100644 index 0000000..084a33b --- /dev/null +++ b/src/pages/home/bindDevice/applyForBinding.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/src/pages/home/bindDevice/bindChildAccount.vue b/src/pages/home/bindDevice/bindChildAccount.vue new file mode 100644 index 0000000..88309ba --- /dev/null +++ b/src/pages/home/bindDevice/bindChildAccount.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/src/pages/home/bindDevice/familyRelationships.vue b/src/pages/home/bindDevice/familyRelationships.vue new file mode 100644 index 0000000..9396a8d --- /dev/null +++ b/src/pages/home/bindDevice/familyRelationships.vue @@ -0,0 +1,379 @@ + + + + + diff --git a/src/pages/home/bindDevice/index.d.ts b/src/pages/home/bindDevice/index.d.ts new file mode 100644 index 0000000..a7e1059 --- /dev/null +++ b/src/pages/home/bindDevice/index.d.ts @@ -0,0 +1,22 @@ +/** + * @description: 家长申请绑定信息 + */ +export interface applyInfoType { + bindId: string; // 关联的绑定id + bindType: number; // 绑定类型 + url?: string; // 用户头像 + childUserAvatar: string; // 孩子头像 + childUserName: string; // 孩子名称 + handlingUserAvatar: string; // 处理用户头像 + handlingUserId: string; // 处理用户id + handlingUserName: string; // 处理用户名称 + handlingUserPhone: string; // 处理用户手机号 + initiatingUserAvatar: string; // 发起用户头像 + initiatingUserId: string; // 发起用户id + initiatingUserName: string; // 发起用户名称 + initiatingUserPhone: string; // 发起用户手机号 + simSerialNumber: string; // 设备序列号 + id: string; + identityType?: number | string; + bindFlag?: number; +} diff --git a/src/pages/home/bindDevice/index.vue b/src/pages/home/bindDevice/index.vue new file mode 100644 index 0000000..2f5e28f --- /dev/null +++ b/src/pages/home/bindDevice/index.vue @@ -0,0 +1,582 @@ + + + + + diff --git a/src/pages/home/index.vue b/src/pages/home/index.vue new file mode 100644 index 0000000..011868d --- /dev/null +++ b/src/pages/home/index.vue @@ -0,0 +1,352 @@ + + + + + diff --git a/src/pages/inspector/chat/chatDetails.vue b/src/pages/inspector/chat/chatDetails.vue new file mode 100644 index 0000000..36e4632 --- /dev/null +++ b/src/pages/inspector/chat/chatDetails.vue @@ -0,0 +1,381 @@ + + + diff --git a/src/pages/inspector/chat/index.vue b/src/pages/inspector/chat/index.vue new file mode 100644 index 0000000..959d971 --- /dev/null +++ b/src/pages/inspector/chat/index.vue @@ -0,0 +1,164 @@ + + + diff --git a/src/pages/inspector/mine/index.vue b/src/pages/inspector/mine/index.vue new file mode 100644 index 0000000..bda79a1 --- /dev/null +++ b/src/pages/inspector/mine/index.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/pages/inspector/mine/min-base-info.vue b/src/pages/inspector/mine/min-base-info.vue new file mode 100644 index 0000000..0e8f996 --- /dev/null +++ b/src/pages/inspector/mine/min-base-info.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/pages/inspector/mine/mine-data.vue b/src/pages/inspector/mine/mine-data.vue new file mode 100644 index 0000000..fbe8361 --- /dev/null +++ b/src/pages/inspector/mine/mine-data.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/pages/inspector/personalData/certificateAdd.vue b/src/pages/inspector/personalData/certificateAdd.vue new file mode 100644 index 0000000..5001638 --- /dev/null +++ b/src/pages/inspector/personalData/certificateAdd.vue @@ -0,0 +1,288 @@ + + + diff --git a/src/pages/inspector/personalData/certificateView.vue b/src/pages/inspector/personalData/certificateView.vue new file mode 100644 index 0000000..4b8c5ca --- /dev/null +++ b/src/pages/inspector/personalData/certificateView.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/pages/inspector/personalData/cropper.vue b/src/pages/inspector/personalData/cropper.vue new file mode 100644 index 0000000..0311327 --- /dev/null +++ b/src/pages/inspector/personalData/cropper.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/pages/inspector/personalData/editPhone.vue b/src/pages/inspector/personalData/editPhone.vue new file mode 100644 index 0000000..de34fbb --- /dev/null +++ b/src/pages/inspector/personalData/editPhone.vue @@ -0,0 +1,197 @@ + + + diff --git a/src/pages/inspector/personalData/index.vue b/src/pages/inspector/personalData/index.vue new file mode 100644 index 0000000..152d229 --- /dev/null +++ b/src/pages/inspector/personalData/index.vue @@ -0,0 +1,610 @@ + + + diff --git a/src/pages/inspector/personalData/personalInformation.vue b/src/pages/inspector/personalData/personalInformation.vue new file mode 100644 index 0000000..4657515 --- /dev/null +++ b/src/pages/inspector/personalData/personalInformation.vue @@ -0,0 +1,93 @@ + + + diff --git a/src/pages/inspector/personalData/subject.vue b/src/pages/inspector/personalData/subject.vue new file mode 100644 index 0000000..5d2092d --- /dev/null +++ b/src/pages/inspector/personalData/subject.vue @@ -0,0 +1,155 @@ + + + diff --git a/src/pages/inspector/releasePlan/components/MultiplePicker.vue b/src/pages/inspector/releasePlan/components/MultiplePicker.vue new file mode 100644 index 0000000..dcf1308 --- /dev/null +++ b/src/pages/inspector/releasePlan/components/MultiplePicker.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/src/pages/inspector/releasePlan/components/datePicker.vue b/src/pages/inspector/releasePlan/components/datePicker.vue new file mode 100644 index 0000000..55e2aff --- /dev/null +++ b/src/pages/inspector/releasePlan/components/datePicker.vue @@ -0,0 +1,242 @@ + + + diff --git a/src/pages/inspector/releasePlan/components/dateTimePicker.vue b/src/pages/inspector/releasePlan/components/dateTimePicker.vue new file mode 100644 index 0000000..e2246af --- /dev/null +++ b/src/pages/inspector/releasePlan/components/dateTimePicker.vue @@ -0,0 +1,203 @@ + + + diff --git a/src/pages/inspector/releasePlan/components/picker.vue b/src/pages/inspector/releasePlan/components/picker.vue new file mode 100644 index 0000000..9c78d5b --- /dev/null +++ b/src/pages/inspector/releasePlan/components/picker.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/src/pages/inspector/releasePlan/components/popup.vue b/src/pages/inspector/releasePlan/components/popup.vue new file mode 100644 index 0000000..38b58d6 --- /dev/null +++ b/src/pages/inspector/releasePlan/components/popup.vue @@ -0,0 +1,107 @@ + + + diff --git a/src/pages/inspector/releasePlan/config.ts b/src/pages/inspector/releasePlan/config.ts new file mode 100644 index 0000000..e229e84 --- /dev/null +++ b/src/pages/inspector/releasePlan/config.ts @@ -0,0 +1,65 @@ +export const bookVersionConfig = [ + [101, 153, 197, 244], + [102, 154, 198, 261], + [103, 161, 202, 266], + [104, 162, 213, 268], + [106, 163, 215, 269], + [110, 164, 221, 277], + [132, 168, 223, 278], + [139, 169, 224, 280], + [140, 181, 227, 281], + [141, 185, 229, 294], + [144, 189, 234, 300], + [145, 190, 235], +]; + +export const colorConfig: anyObj = { + 1: { + color: '#FC5EC9', + bgColor: '#FF99E1', + }, + 2: { + color: '#FCD914', + bgColor: '#FCE947', + }, + 3: { + color: '#A4E93D', + bgColor: '#CCF37C', + }, + 4: { + color: '#04A6FF', + bgColor: '#20CDFF', + }, + 5: { + color: '#13DCEB', + bgColor: '#45ECF5', + }, + 6: { + color: '#FF7438', + bgColor: '#FFC49F', + }, + 7: { + color: '#FF6363', + bgColor: '#FF9F9F', + }, + 8: { + color: '#5B5DFF', + bgColor: '#989AFF', + }, + 9: { + color: '#AB5CFF', + bgColor: '#D199FF', + }, + 10: { + color: '#5C89FF', + bgColor: '#99BBFF', + }, + 11: { + color: '#58E851', + bgColor: '#93F28D', + }, + 12: { + color: '#FF5CFF', + bgColor: '#FF99FF', + }, +}; diff --git a/src/pages/inspector/releasePlan/index.vue b/src/pages/inspector/releasePlan/index.vue new file mode 100644 index 0000000..94fb96f --- /dev/null +++ b/src/pages/inspector/releasePlan/index.vue @@ -0,0 +1,590 @@ + + + diff --git a/src/pages/inspector/releasePlan/selectBook.vue b/src/pages/inspector/releasePlan/selectBook.vue new file mode 100644 index 0000000..a1de307 --- /dev/null +++ b/src/pages/inspector/releasePlan/selectBook.vue @@ -0,0 +1,193 @@ + + + diff --git a/src/pages/inspector/releasePlan/selectChapter.vue b/src/pages/inspector/releasePlan/selectChapter.vue new file mode 100644 index 0000000..3781ae6 --- /dev/null +++ b/src/pages/inspector/releasePlan/selectChapter.vue @@ -0,0 +1,277 @@ + + + diff --git a/src/pages/inspector/releasePlan/selectPlan.vue b/src/pages/inspector/releasePlan/selectPlan.vue new file mode 100644 index 0000000..ddd3242 --- /dev/null +++ b/src/pages/inspector/releasePlan/selectPlan.vue @@ -0,0 +1,162 @@ + + + diff --git a/src/pages/inspector/releasePlan/selectVideo.vue b/src/pages/inspector/releasePlan/selectVideo.vue new file mode 100644 index 0000000..219bc98 --- /dev/null +++ b/src/pages/inspector/releasePlan/selectVideo.vue @@ -0,0 +1,207 @@ + + + diff --git a/src/pages/inspector/schedule/components/duxueTipsModal.vue b/src/pages/inspector/schedule/components/duxueTipsModal.vue new file mode 100644 index 0000000..3844d94 --- /dev/null +++ b/src/pages/inspector/schedule/components/duxueTipsModal.vue @@ -0,0 +1,97 @@ + + + diff --git a/src/pages/inspector/schedule/condition.vue b/src/pages/inspector/schedule/condition.vue new file mode 100644 index 0000000..2eb6f41 --- /dev/null +++ b/src/pages/inspector/schedule/condition.vue @@ -0,0 +1,392 @@ + + + diff --git a/src/pages/inspector/schedule/index.vue b/src/pages/inspector/schedule/index.vue new file mode 100644 index 0000000..2be8c99 --- /dev/null +++ b/src/pages/inspector/schedule/index.vue @@ -0,0 +1,615 @@ + + + diff --git a/src/pages/inspector/student-detail/components/data-plan.vue b/src/pages/inspector/student-detail/components/data-plan.vue new file mode 100644 index 0000000..652f22e --- /dev/null +++ b/src/pages/inspector/student-detail/components/data-plan.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/report-content-base.vue b/src/pages/inspector/student-detail/components/report-content-base.vue new file mode 100644 index 0000000..6404ddc --- /dev/null +++ b/src/pages/inspector/student-detail/components/report-content-base.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/student-inspector-report.vue b/src/pages/inspector/student-detail/components/student-inspector-report.vue new file mode 100644 index 0000000..73c6545 --- /dev/null +++ b/src/pages/inspector/student-detail/components/student-inspector-report.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/study-situation-report-content.vue b/src/pages/inspector/student-detail/components/study-situation-report-content.vue new file mode 100644 index 0000000..0543f01 --- /dev/null +++ b/src/pages/inspector/student-detail/components/study-situation-report-content.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/study-situation-report.vue b/src/pages/inspector/student-detail/components/study-situation-report.vue new file mode 100644 index 0000000..3e6ed05 --- /dev/null +++ b/src/pages/inspector/student-detail/components/study-situation-report.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/study-situation-report/duration-select.vue b/src/pages/inspector/student-detail/components/study-situation-report/duration-select.vue new file mode 100644 index 0000000..2f18415 --- /dev/null +++ b/src/pages/inspector/student-detail/components/study-situation-report/duration-select.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/study-situation-report/knowledge-atlas.vue b/src/pages/inspector/student-detail/components/study-situation-report/knowledge-atlas.vue new file mode 100644 index 0000000..8e41597 --- /dev/null +++ b/src/pages/inspector/student-detail/components/study-situation-report/knowledge-atlas.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/study-situation-report/language-sense-learning-statistics.vue b/src/pages/inspector/student-detail/components/study-situation-report/language-sense-learning-statistics.vue new file mode 100644 index 0000000..c1011f4 --- /dev/null +++ b/src/pages/inspector/student-detail/components/study-situation-report/language-sense-learning-statistics.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/study-situation-report/review-questions-summary.vue b/src/pages/inspector/student-detail/components/study-situation-report/review-questions-summary.vue new file mode 100644 index 0000000..153773c --- /dev/null +++ b/src/pages/inspector/student-detail/components/study-situation-report/review-questions-summary.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/pages/inspector/student-detail/components/study-situation-report/video-study-summary.vue b/src/pages/inspector/student-detail/components/study-situation-report/video-study-summary.vue new file mode 100644 index 0000000..f99c55f --- /dev/null +++ b/src/pages/inspector/student-detail/components/study-situation-report/video-study-summary.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/pages/inspector/student-detail/detail-student-info.vue b/src/pages/inspector/student-detail/detail-student-info.vue new file mode 100644 index 0000000..2ad57c0 --- /dev/null +++ b/src/pages/inspector/student-detail/detail-student-info.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/src/pages/inspector/student-detail/index.vue b/src/pages/inspector/student-detail/index.vue new file mode 100644 index 0000000..c947348 --- /dev/null +++ b/src/pages/inspector/student-detail/index.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/pages/inspector/student-detail/student-detail-data.vue b/src/pages/inspector/student-detail/student-detail-data.vue new file mode 100644 index 0000000..08e251e --- /dev/null +++ b/src/pages/inspector/student-detail/student-detail-data.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/pages/inspector/student/date-view.vue b/src/pages/inspector/student/date-view.vue new file mode 100644 index 0000000..8ed4fea --- /dev/null +++ b/src/pages/inspector/student/date-view.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/src/pages/inspector/student/index.vue b/src/pages/inspector/student/index.vue new file mode 100644 index 0000000..c4d3268 --- /dev/null +++ b/src/pages/inspector/student/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/pages/inspector/student/student-list.vue b/src/pages/inspector/student/student-list.vue new file mode 100644 index 0000000..c6a7e2c --- /dev/null +++ b/src/pages/inspector/student/student-list.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue new file mode 100644 index 0000000..759dc40 --- /dev/null +++ b/src/pages/login/index.vue @@ -0,0 +1,329 @@ + + + + + diff --git a/src/pages/mine/AwardManage/LogoPicker.vue b/src/pages/mine/AwardManage/LogoPicker.vue new file mode 100644 index 0000000..478239f --- /dev/null +++ b/src/pages/mine/AwardManage/LogoPicker.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/src/pages/mine/AwardManage/SwipeAction.vue b/src/pages/mine/AwardManage/SwipeAction.vue new file mode 100644 index 0000000..26c5221 --- /dev/null +++ b/src/pages/mine/AwardManage/SwipeAction.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/pages/mine/AwardManage/awardItem.vue b/src/pages/mine/AwardManage/awardItem.vue new file mode 100644 index 0000000..608d3e6 --- /dev/null +++ b/src/pages/mine/AwardManage/awardItem.vue @@ -0,0 +1,356 @@ + + + + + diff --git a/src/uni_modules/uni-easyinput/package.json b/src/uni_modules/uni-easyinput/package.json new file mode 100644 index 0000000..bd128e1 --- /dev/null +++ b/src/uni_modules/uni-easyinput/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-easyinput", + "displayName": "uni-easyinput 增强输入框", + "version": "1.1.9", + "description": "Easyinput 组件是对原生input组件的增强", + "keywords": [ + "uni-ui", + "uniui", + "input", + "uni-easyinput", + "输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-easyinput/readme.md b/src/uni_modules/uni-easyinput/readme.md new file mode 100644 index 0000000..f1faf8f --- /dev/null +++ b/src/uni_modules/uni-easyinput/readme.md @@ -0,0 +1,11 @@ + + +### Easyinput 增强输入框 +> **组件名:uni-easyinput** +> 代码块: `uEasyinput` + + +easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-fab/changelog.md b/src/uni_modules/uni-fab/changelog.md new file mode 100644 index 0000000..9bd4729 --- /dev/null +++ b/src/uni_modules/uni-fab/changelog.md @@ -0,0 +1,23 @@ +## 1.2.5(2023-03-29) +- 新增 pattern.icon 属性,可自定义图标 +## 1.2.4(2022-09-07) +小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +## 1.2.3(2022-09-05) +- 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +## 1.2.2(2021-12-29) +- 更新 组件依赖 +## 1.2.1(2021-11-19) +- 修复 阴影颜色不正确的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 按钮背景色调整 +- 优化 兼容pc端 diff --git a/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue b/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue new file mode 100644 index 0000000..dfa65c1 --- /dev/null +++ b/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue @@ -0,0 +1,491 @@ + + + + + diff --git a/src/uni_modules/uni-fab/package.json b/src/uni_modules/uni-fab/package.json new file mode 100644 index 0000000..18c0810 --- /dev/null +++ b/src/uni_modules/uni-fab/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-fab", + "displayName": "uni-fab 悬浮按钮", + "version": "1.2.5", + "description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。", + "keywords": [ + "uni-ui", + "uniui", + "按钮", + "悬浮按钮", + "fab" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-fab/readme.md b/src/uni_modules/uni-fab/readme.md new file mode 100644 index 0000000..9a444e8 --- /dev/null +++ b/src/uni_modules/uni-fab/readme.md @@ -0,0 +1,9 @@ +## Fab 悬浮按钮 +> **组件名:uni-fab** +> 代码块: `uFab` + + +点击可展开一个图形按钮菜单 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-fav/changelog.md b/src/uni_modules/uni-fav/changelog.md new file mode 100644 index 0000000..d8a08d4 --- /dev/null +++ b/src/uni_modules/uni-fav/changelog.md @@ -0,0 +1,19 @@ +## 1.2.1(2022-05-30) +- 新增 stat 属性 ,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 组件示例地址 +## 1.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.3(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-fav/components/uni-fav/i18n/en.json b/src/uni_modules/uni-fav/components/uni-fav/i18n/en.json new file mode 100644 index 0000000..9a0759e --- /dev/null +++ b/src/uni_modules/uni-fav/components/uni-fav/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "collect", + "uni-fav.collected": "collected" +} diff --git a/src/uni_modules/uni-fav/components/uni-fav/i18n/index.js b/src/uni_modules/uni-fav/components/uni-fav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/src/uni_modules/uni-fav/components/uni-fav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json b/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json b/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/src/uni_modules/uni-fav/components/uni-fav/uni-fav.vue b/src/uni_modules/uni-fav/components/uni-fav/uni-fav.vue new file mode 100644 index 0000000..d2c58df --- /dev/null +++ b/src/uni_modules/uni-fav/components/uni-fav/uni-fav.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/uni_modules/uni-fav/package.json b/src/uni_modules/uni-fav/package.json new file mode 100644 index 0000000..cc14697 --- /dev/null +++ b/src/uni_modules/uni-fav/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-fav", + "displayName": "uni-fav 收藏按钮", + "version": "1.2.1", + "description": " Fav 收藏组件,可自定义颜色、大小。", + "keywords": [ + "fav", + "uni-ui", + "uniui", + "收藏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-fav/readme.md b/src/uni_modules/uni-fav/readme.md new file mode 100644 index 0000000..4de125d --- /dev/null +++ b/src/uni_modules/uni-fav/readme.md @@ -0,0 +1,10 @@ + + +## Fav 收藏按钮 +> **组件名:uni-fav** +> 代码块: `uFav` + +用于收藏功能,可点击切换选中、不选中的状态。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-file-picker/changelog.md b/src/uni_modules/uni-file-picker/changelog.md new file mode 100644 index 0000000..4eb5faa --- /dev/null +++ b/src/uni_modules/uni-file-picker/changelog.md @@ -0,0 +1,71 @@ +## 1.0.6(2024-01-06) +- 新增 微信小程序不再调用chooseImage,而是调用chooseMedia +## 1.0.5(2024-01-03) +- 新增 上传文件至云存储携带本地文件名称 +## 1.0.4(2023-03-29) +- 修复 手动上传删除一个文件后不能再上传的bug +## 1.0.3(2022-12-19) +- 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.0.2(2022-07-04) +- 修复 在uni-forms下样式不生效的bug +## 1.0.1(2021-11-23) +- 修复 参数为对象的情况下,url在某些情况显示错误的bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-file-picker](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +## 0.2.16(2021-11-08) +- 修复 传入空对象 ,显示错误的Bug +## 0.2.15(2021-08-30) +- 修复 return-type="object" 时且存在v-model时,无法删除文件的Bug +## 0.2.14(2021-08-23) +- 新增 参数中返回 fileID 字段 +## 0.2.13(2021-08-23) +- 修复 腾讯云传入fileID 不能回显的bug +- 修复 选择图片后,不能放大的问题 +## 0.2.12(2021-08-17) +- 修复 由于 0.2.11 版本引起的不能回显图片的Bug +## 0.2.11(2021-08-16) +- 新增 clearFiles(index) 方法,可以手动删除指定文件 +- 修复 v-model 值设为 null 报错的Bug +## 0.2.10(2021-08-13) +- 修复 return-type="object" 时,无法删除文件的Bug +## 0.2.9(2021-08-03) +- 修复 auto-upload 属性失效的Bug +## 0.2.8(2021-07-31) +- 修复 fileExtname属性不指定值报错的Bug +## 0.2.7(2021-07-31) +- 修复 在某种场景下图片不回显的Bug +## 0.2.6(2021-07-30) +- 修复 return-type为object下,返回值不正确的Bug +## 0.2.5(2021-07-30) +- 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +## 0.2.3(2021-07-28) +- 优化 调整示例代码 +## 0.2.2(2021-07-27) +- 修复 vue3 下赋值错误的Bug +- 优化 h5平台下上传文件导致页面卡死的问题 +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.1(2021-07-02) +- 修复 sourceType 缺少默认值导致 ios 无法选择文件 +## 0.1.0(2021-06-30) +- 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +## 0.0.11(2021-06-30) +- 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +## 0.0.10(2021-06-29) +- 优化 文件上传后进度条消失时机 +## 0.0.9(2021-06-29) +- 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +## 0.0.8(2021-06-15) +- 修复 删除文件时无法触发 v-model 的Bug +## 0.0.7(2021-05-12) +- 新增 组件示例地址 +## 0.0.6(2021-04-09) +- 修复 选择的文件非 file-extname 字段指定的扩展名报错的Bug +## 0.0.5(2021-04-09) +- 优化 更新组件示例 +## 0.0.4(2021-04-09) +- 优化 file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 微信小程序不指定 fileExtname 属性选择失败的Bug diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js b/src/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js new file mode 100644 index 0000000..9328e77 --- /dev/null +++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js @@ -0,0 +1,247 @@ +'use strict'; + +const ERR_MSG_OK = 'chooseAndUploadFile:ok'; +const ERR_MSG_FAIL = 'chooseAndUploadFile:fail'; + +function chooseImage(opts) { + const { + count, + sizeType = ['original', 'compressed'], + sourceType, + extension + } = opts + return new Promise((resolve, reject) => { + // #ifdef MP-WEIXIN + uni.chooseMedia({ + count, + sizeType, + sourceType, + mediaType: ['image'], + extension, + success(res) { + res.tempFiles.forEach(item => { + item.path = item.tempFilePath; + }) + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }) + // #endif + // #ifndef MP-WEIXIN + uni.chooseImage({ + count, + sizeType, + sourceType, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }); + // #endif + + }); +} + +function chooseVideo(opts) { + const { + camera, + compressed, + maxDuration, + sourceType, + extension + } = opts; + return new Promise((resolve, reject) => { + uni.chooseVideo({ + camera, + compressed, + maxDuration, + sourceType, + extension, + success(res) { + const { + tempFilePath, + duration, + size, + height, + width + } = res; + resolve(normalizeChooseAndUploadFileRes({ + errMsg: 'chooseVideo:ok', + tempFilePaths: [tempFilePath], + tempFiles: [ + { + name: (res.tempFile && res.tempFile.name) || '', + path: tempFilePath, + size, + type: (res.tempFile && res.tempFile.type) || '', + width, + height, + duration, + fileType: 'video', + cloudPath: '', + }, ], + }, 'video')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseAll(opts) { + const { + count, + extension + } = opts; + return new Promise((resolve, reject) => { + let chooseFile = uni.chooseFile; + if (typeof wx !== 'undefined' && + typeof wx.chooseMessageFile === 'function') { + chooseFile = wx.chooseMessageFile; + } + if (typeof chooseFile !== 'function') { + return reject({ + errMsg: ERR_MSG_FAIL + ' 请指定 type 类型,该平台仅支持选择 image 或 video。', + }); + } + chooseFile({ + type: 'all', + count, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res)); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function normalizeChooseAndUploadFileRes(res, fileType) { + res.tempFiles.forEach((item, index) => { + if (!item.name) { + item.name = item.path.substring(item.path.lastIndexOf('/') + 1); + } + if (fileType) { + item.fileType = fileType; + } + item.cloudPath = + Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.')); + }); + if (!res.tempFilePaths) { + res.tempFilePaths = res.tempFiles.map((file) => file.path); + } + return res; +} + +function uploadCloudFiles(files, max = 5, onUploadProgress) { + files = JSON.parse(JSON.stringify(files)) + const len = files.length + let count = 0 + let self = this + return new Promise(resolve => { + while (count < max) { + next() + } + + function next() { + let cur = count++ + if (cur >= len) { + !files.find(item => !item.url && !item.errMsg) && resolve(files) + return + } + const fileItem = files[cur] + const index = self.files.findIndex(v => v.uuid === fileItem.uuid) + fileItem.url = '' + delete fileItem.errMsg + + uniCloud + .uploadFile({ + filePath: fileItem.path, + cloudPath: fileItem.cloudPath, + fileType: fileItem.fileType, + onUploadProgress: res => { + res.index = index + onUploadProgress && onUploadProgress(res) + } + }) + .then(res => { + fileItem.url = res.fileID + fileItem.index = index + if (cur < len) { + next() + } + }) + .catch(res => { + fileItem.errMsg = res.errMsg || res.message + fileItem.index = index + if (cur < len) { + next() + } + }) + } + }) +} + + + + + +function uploadFiles(choosePromise, { + onChooseFile, + onUploadProgress +}) { + return choosePromise + .then((res) => { + if (onChooseFile) { + const customChooseRes = onChooseFile(res); + if (typeof customChooseRes !== 'undefined') { + return Promise.resolve(customChooseRes).then((chooseRes) => typeof chooseRes === 'undefined' ? + res : chooseRes); + } + } + return res; + }) + .then((res) => { + if (res === false) { + return { + errMsg: ERR_MSG_OK, + tempFilePaths: [], + tempFiles: [], + }; + } + return res + }) +} + +function chooseAndUploadFile(opts = { + type: 'all' +}) { + if (opts.type === 'image') { + return uploadFiles(chooseImage(opts), opts); + } + else if (opts.type === 'video') { + return uploadFiles(chooseVideo(opts), opts); + } + return uploadFiles(chooseAll(opts), opts); +} + +export { + chooseAndUploadFile, + uploadCloudFiles +}; diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/src/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue new file mode 100644 index 0000000..c09d111 --- /dev/null +++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue @@ -0,0 +1,677 @@ + + + + + diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue new file mode 100644 index 0000000..625d92e --- /dev/null +++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue @@ -0,0 +1,325 @@ + + + + + diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue new file mode 100644 index 0000000..2a29bc2 --- /dev/null +++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/src/uni_modules/uni-file-picker/components/uni-file-picker/utils.js new file mode 100644 index 0000000..60aaa3e --- /dev/null +++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/utils.js @@ -0,0 +1,109 @@ +/** + * 获取文件名和后缀 + * @param {String} name + */ +export const get_file_ext = (name) => { + const last_len = name.lastIndexOf('.') + const len = name.length + return { + name: name.substring(0, last_len), + ext: name.substring(last_len + 1, len) + } +} + +/** + * 获取扩展名 + * @param {Array} fileExtname + */ +export const get_extname = (fileExtname) => { + if (!Array.isArray(fileExtname)) { + let extname = fileExtname.replace(/(\[|\])/g, '') + return extname.split(',') + } else { + return fileExtname + } + return [] +} + +/** + * 获取文件和检测是否可选 + */ +export const get_files_and_is_max = (res, _extname) => { + let filePaths = [] + let files = [] + if(!_extname || _extname.length === 0){ + return { + filePaths, + files + } + } + res.tempFiles.forEach(v => { + let fileFullName = get_file_ext(v.name) + const extname = fileFullName.ext.toLowerCase() + if (_extname.indexOf(extname) !== -1) { + files.push(v) + filePaths.push(v.path) + } + }) + if (files.length !== res.tempFiles.length) { + uni.showToast({ + title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`, + icon: 'none', + duration: 5000 + }) + } + + return { + filePaths, + files + } +} + + +/** + * 获取图片信息 + * @param {Object} filepath + */ +export const get_file_info = (filepath) => { + return new Promise((resolve, reject) => { + uni.getImageInfo({ + src: filepath, + success(res) { + resolve(res) + }, + fail(err) { + reject(err) + } + }) + }) +} +/** + * 获取封装数据 + */ +export const get_file_data = async (files, type = 'image') => { + // 最终需要上传数据库的数据 + let fileFullName = get_file_ext(files.name) + const extname = fileFullName.ext.toLowerCase() + let filedata = { + name: files.name, + uuid: files.uuid, + extname: extname || '', + cloudPath: files.cloudPath, + fileType: files.fileType, + url: files.path || files.path, + size: files.size, //单位是字节 + image: {}, + path: files.path, + video: {} + } + if (type === 'image') { + const imageinfo = await get_file_info(files.path) + delete filedata.video + filedata.image.width = imageinfo.width + filedata.image.height = imageinfo.height + filedata.image.location = imageinfo.path + } else { + delete filedata.image + } + return filedata +} diff --git a/src/uni_modules/uni-file-picker/package.json b/src/uni_modules/uni-file-picker/package.json new file mode 100644 index 0000000..9396d83 --- /dev/null +++ b/src/uni_modules/uni-file-picker/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-file-picker", + "displayName": "uni-file-picker 文件选择上传", + "version": "1.0.6", + "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间", + "keywords": [ + "uni-ui", + "uniui", + "图片上传", + "文件上传" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-file-picker/readme.md b/src/uni_modules/uni-file-picker/readme.md new file mode 100644 index 0000000..c8399a5 --- /dev/null +++ b/src/uni_modules/uni-file-picker/readme.md @@ -0,0 +1,11 @@ + +## FilePicker 文件选择上传 + +> **组件名:uni-file-picker** +> 代码块: `uFilePicker` + + +文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-forms/changelog.md b/src/uni_modules/uni-forms/changelog.md new file mode 100644 index 0000000..3d998bc --- /dev/null +++ b/src/uni_modules/uni-forms/changelog.md @@ -0,0 +1,94 @@ +## 1.4.10(2023-11-03) +- 优化 labelWidth 描述错误 +## 1.4.9(2023-02-10) +- 修复 required 参数无法动态绑定 +## 1.4.8(2022-08-23) +- 优化 根据 rules 自动添加 required 的问题 +## 1.4.7(2022-08-22) +- 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +## 1.4.6(2022-07-13) +- 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug +## 1.4.5(2022-07-05) +- 新增 更多表单示例 +- 优化 子表单组件过期提示的问题 +- 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +## 1.4.4(2022-07-04) +- 更新 删除组件日志 +## 1.4.3(2022-07-04) +- 修复 由 1.4.0 引发的 label 插槽不生效的bug +## 1.4.2(2022-07-04) +- 修复 子组件找不到 setValue 报错的bug +## 1.4.1(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.4.0(2022-06-30) +- 【重要】组件逻辑重构,部分用法用旧版本不兼容,请注意兼容问题 +- 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- 优化 动态表单校验方式,废弃拼接name的方式 +## 1.3.3(2022-06-22) +- 修复 表单校验顺序无序问题 +## 1.3.2(2021-12-09) +- +## 1.3.1(2021-11-19) +- 修复 label 插槽不生效的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-forms](https://uniapp.dcloud.io/component/uniui/uni-forms) +## 1.2.7(2021-08-13) +- 修复 没有添加校验规则的字段依然报错的Bug +## 1.2.6(2021-08-11) +- 修复 重置表单错误信息无法清除的问题 +## 1.2.5(2021-08-11) +- 优化 组件文档 +## 1.2.4(2021-08-11) +- 修复 表单验证只生效一次的问题 +## 1.2.3(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.2(2021-07-26) +- 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- 修复 1.2.1 引起的示例在小程序平台报错的Bug +## 1.2.1(2021-07-22) +- 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- 修复 不指定name属性时,运行报错的Bug +- 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- 优化 组件示例,新增动态校验示例代码 +- 优化 组件文档,使用方式更清晰 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-06-25) +- 修复 pattern 属性在微信小程序平台无效的问题 +## 1.1.1(2021-06-22) +- 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +## 1.1.0(2021-06-22) +- 修复 只写setRules方法而导致校验不生效的Bug +- 修复 由上个办法引发的错误提示文字错位的Bug +## 1.0.48(2021-06-21) +- 修复 不设置 label 属性 ,无法设置label插槽的问题 +## 1.0.47(2021-06-21) +- 修复 不设置label属性,label-width属性不生效的bug +- 修复 setRules 方法与rules属性冲突的问题 +## 1.0.46(2021-06-04) +- 修复 动态删减数据导致报错的问题 +## 1.0.45(2021-06-04) +- 新增 modelValue 属性 ,value 即将废弃 +## 1.0.44(2021-06-02) +- 新增 uni-forms-item 可以设置单独的 rules +- 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- 优化 submit 事件重命名为 validate +## 1.0.43(2021-05-12) +- 新增 组件示例地址 +## 1.0.42(2021-04-30) +- 修复 自定义检验器失效的问题 +## 1.0.41(2021-03-05) +- 更新 校验器 +- 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug +## 1.0.40(2021-03-04) +- 修复 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +## 1.0.39(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 校验器传入 int 等类型 ,返回String类型的Bug diff --git a/src/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/src/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue new file mode 100644 index 0000000..0aef9cc --- /dev/null +++ b/src/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue @@ -0,0 +1,627 @@ + + + + + diff --git a/src/uni_modules/uni-forms/components/uni-forms/uni-forms.vue b/src/uni_modules/uni-forms/components/uni-forms/uni-forms.vue new file mode 100644 index 0000000..9bb9ae7 --- /dev/null +++ b/src/uni_modules/uni-forms/components/uni-forms/uni-forms.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/src/uni_modules/uni-forms/components/uni-forms/utils.js b/src/uni_modules/uni-forms/components/uni-forms/utils.js new file mode 100644 index 0000000..6da2421 --- /dev/null +++ b/src/uni_modules/uni-forms/components/uni-forms/utils.js @@ -0,0 +1,293 @@ +/** + * 简单处理对象拷贝 + * @param {Obejct} 被拷贝对象 + * @@return {Object} 拷贝对象 + */ +export const deepCopy = (val) => { + return JSON.parse(JSON.stringify(val)) +} +/** + * 过滤数字类型 + * @param {String} format 数字类型 + * @@return {Boolean} 返回是否为数字类型 + */ +export const typeFilter = (format) => { + return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp'; +} + +/** + * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined + * @param {String} key 字段名 + * @param {any} value 字段值 + * @param {Object} rules 表单校验规则 + */ +export const getValue = (key, value, rules) => { + const isRuleNumType = rules.find(val => val.format && typeFilter(val.format)); + const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool'); + // 输入类型为 number + if (!!isRuleNumType) { + if (!value && value !== 0) { + value = null + } else { + value = isNumber(Number(value)) ? Number(value) : value + } + } + + // 输入类型为 boolean + if (!!isRuleBoolType) { + value = isBoolean(value) ? value : false + } + + return value; +} + +/** + * 获取表单数据 + * @param {String|Array} name 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + * @param {any} value 需要设置的值 + */ +export const setDataValue = (field, formdata, value) => { + formdata[field] = value + return value || '' +} + +/** + * 获取表单数据 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + */ +export const getDataValue = (field, data) => { + return objGet(data, field) +} + +/** + * 获取表单类型 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + */ +export const getDataValueType = (field, data) => { + const value = getDataValue(field, data) + return { + type: type(value), + value + } +} + +/** + * 获取表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const realName = (name, data = {}) => { + const base_name = _basePath(name) + if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) { + const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_') + return realname + } + return base_name[0] || name +} + +/** + * 判断是否表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const isRealName = (name) => { + const reg = /^_formdata_#*/ + return reg.test(name) +} + +/** + * 获取表单数据的原始格式 + * @@return {Object|Array} object 需要解析的数据 + */ +export const rawData = (object = {}, name) => { + let newData = JSON.parse(JSON.stringify(object)) + let formData = {} + for(let i in newData){ + let path = name2arr(i) + objSet(formData,path,newData[i]) + } + return formData +} + +/** + * 真实name还原为 array + * @param {*} name + */ +export const name2arr = (name) => { + let field = name.replace('_formdata_#', '') + field = field.split('#').map(v => (isNumber(v) ? Number(v) : v)) + return field +} + +/** + * 对象中设置值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} value 需要设置的值 + */ +export const objSet = (object, path, value) => { + if (typeof object !== 'object') return object; + _basePath(path).reduce((o, k, i, _) => { + if (i === _.length - 1) { + // 若遍历结束直接赋值 + o[k] = value + return null + } else if (k in o) { + // 若存在对应路径,则返回找到的对象,进行下一次遍历 + return o[k] + } else { + // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象 + o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {} + return o[k] + } + }, object) + // 返回object + return object; +} + +// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用 +function _basePath(path) { + // 若是数组,则直接返回 + if (Array.isArray(path)) return path + // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']' + return path.replace(/\[/g, '.').replace(/\]/g, '').split('.') +} + +/** + * 从对象中获取值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} defaultVal 如果无法从调用链中获取值的默认值 + */ +export const objGet = (object, path, defaultVal = 'undefined') => { + // 先将path处理成统一格式 + let newPath = _basePath(path) + // 递归处理,返回最后结果 + let val = newPath.reduce((o, k) => { + return (o || {})[k] + }, object); + return !val || val !== undefined ? val : defaultVal +} + + +/** + * 是否为 number 类型 + * @param {any} num 需要判断的值 + * @return {Boolean} 是否为 number + */ +export const isNumber = (num) => { + return !isNaN(Number(num)) +} + +/** + * 是否为 boolean 类型 + * @param {any} bool 需要判断的值 + * @return {Boolean} 是否为 boolean + */ +export const isBoolean = (bool) => { + return (typeof bool === 'boolean') +} +/** + * 是否有必填字段 + * @param {Object} rules 规则 + * @return {Boolean} 是否有必填字段 + */ +export const isRequiredField = (rules) => { + let isNoField = false; + for (let i = 0; i < rules.length; i++) { + const ruleData = rules[i]; + if (ruleData.required) { + isNoField = true; + break; + } + } + return isNoField; +} + + +/** + * 获取数据类型 + * @param {Any} obj 需要获取数据类型的值 + */ +export const type = (obj) => { + var class2type = {}; + + // 生成class2type映射 + "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) { + class2type["[object " + item + "]"] = item.toLowerCase(); + }) + if (obj == null) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[Object.prototype.toString.call(obj)] || "object" : + typeof obj; +} + +/** + * 判断两个值是否相等 + * @param {any} a 值 + * @param {any} b 值 + * @return {Boolean} 是否相等 + */ +export const isEqual = (a, b) => { + //如果a和b本来就全等 + if (a === b) { + //判断是否为0和-0 + return a !== 0 || 1 / a === 1 / b; + } + //判断是否为null和undefined + if (a == null || b == null) { + return a === b; + } + //接下来判断a和b的数据类型 + var classNameA = toString.call(a), + classNameB = toString.call(b); + //如果数据类型不相等,则返回false + if (classNameA !== classNameB) { + return false; + } + //如果数据类型相等,再根据不同数据类型分别判断 + switch (classNameA) { + case '[object RegExp]': + case '[object String]': + //进行字符串转换比较 + return '' + a === '' + b; + case '[object Number]': + //进行数字转换比较,判断是否为NaN + if (+a !== +a) { + return +b !== +b; + } + //判断是否为0或-0 + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + return +a === +b; + } + //如果是对象类型 + if (classNameA == '[object Object]') { + //获取a和b的属性长度 + var propsA = Object.getOwnPropertyNames(a), + propsB = Object.getOwnPropertyNames(b); + if (propsA.length != propsB.length) { + return false; + } + for (var i = 0; i < propsA.length; i++) { + var propName = propsA[i]; + //如果对应属性对应值不相等,则返回false + if (a[propName] !== b[propName]) { + return false; + } + } + return true; + } + //如果是数组类型 + if (classNameA == '[object Array]') { + if (a.toString() == b.toString()) { + return true; + } + return false; + } +} diff --git a/src/uni_modules/uni-forms/components/uni-forms/validate.js b/src/uni_modules/uni-forms/components/uni-forms/validate.js new file mode 100644 index 0000000..1834c6c --- /dev/null +++ b/src/uni_modules/uni-forms/components/uni-forms/validate.js @@ -0,0 +1,486 @@ +var pattern = { + email: /^\S+?@\S+?\.\S+?$/, + idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, + url: new RegExp( + "^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", + 'i') +}; + +const FORMAT_MAPPING = { + "int": 'integer', + "bool": 'boolean', + "double": 'number', + "long": 'number', + "password": 'string' + // "fileurls": 'array' +} + +function formatMessage(args, resources = '') { + var defaultMessage = ['label'] + defaultMessage.forEach((item) => { + if (args[item] === undefined) { + args[item] = '' + } + }) + + let str = resources + for (let key in args) { + let reg = new RegExp('{' + key + '}') + str = str.replace(reg, args[key]) + } + return str +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (typeof value === 'string' && !value) { + return true; + } + + if (Array.isArray(value) && !value.length) { + return true; + } + + if (type === 'object' && !Object.keys(value).length) { + return true; + } + + return false; +} + +const types = { + integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + string(value) { + return typeof value === 'string'; + }, + number(value) { + if (isNaN(value)) { + return false; + } + return typeof value === 'number'; + }, + "boolean": function(value) { + return typeof value === 'boolean'; + }, + "float": function(value) { + return types.number(value) && !types.integer(value); + }, + array(value) { + return Array.isArray(value); + }, + object(value) { + return typeof value === 'object' && !types.array(value); + }, + date(value) { + return value instanceof Date; + }, + timestamp(value) { + if (!this.integer(value) || Math.abs(value).toString().length > 16) { + return false + } + return true; + }, + file(value) { + return typeof value.url === 'string'; + }, + email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + pattern(reg, value) { + try { + return new RegExp(reg).test(value); + } catch (e) { + return false; + } + }, + method(value) { + return typeof value === 'function'; + }, + idcard(value) { + return typeof value === 'string' && !!value.match(pattern.idcard); + }, + 'url-https'(value) { + return this.url(value) && value.startsWith('https://'); + }, + 'url-scheme'(value) { + return value.startsWith('://'); + }, + 'url-web'(value) { + return false; + } +} + +class RuleValidator { + + constructor(message) { + this._message = message + } + + async validateRule(fieldKey, fieldValue, value, data, allData) { + var result = null + + let rules = fieldValue.rules + + let hasRequired = rules.findIndex((item) => { + return item.required + }) + if (hasRequired < 0) { + if (value === null || value === undefined) { + return result + } + if (typeof value === 'string' && !value.length) { + return result + } + } + + var message = this._message + + if (rules === undefined) { + return message['default'] + } + + for (var i = 0; i < rules.length; i++) { + let rule = rules[i] + let vt = this._getValidateType(rule) + + Object.assign(rule, { + label: fieldValue.label || `["${fieldKey}"]` + }) + + if (RuleValidatorHelper[vt]) { + result = RuleValidatorHelper[vt](rule, value, message) + if (result != null) { + break + } + } + + if (rule.validateExpr) { + let now = Date.now() + let resultExpr = rule.validateExpr(value, allData, now) + if (resultExpr === false) { + result = this._getMessage(rule, rule.errorMessage || this._message['default']) + break + } + } + + if (rule.validateFunction) { + result = await this.validateFunction(rule, value, data, allData, vt) + if (result !== null) { + break + } + } + } + + if (result !== null) { + result = message.TAG + result + } + + return result + } + + async validateFunction(rule, value, data, allData, vt) { + let result = null + try { + let callbackMessage = null + const res = await rule.validateFunction(rule, value, allData || data, (message) => { + callbackMessage = message + }) + if (callbackMessage || (typeof res === 'string' && res) || res === false) { + result = this._getMessage(rule, callbackMessage || res, vt) + } + } catch (e) { + result = this._getMessage(rule, e.message, vt) + } + return result + } + + _getMessage(rule, message, vt) { + return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default']) + } + + _getValidateType(rule) { + var result = '' + if (rule.required) { + result = 'required' + } else if (rule.format) { + result = 'format' + } else if (rule.arrayType) { + result = 'arrayTypeFormat' + } else if (rule.range) { + result = 'range' + } else if (rule.maximum !== undefined || rule.minimum !== undefined) { + result = 'rangeNumber' + } else if (rule.maxLength !== undefined || rule.minLength !== undefined) { + result = 'rangeLength' + } else if (rule.pattern) { + result = 'pattern' + } else if (rule.validateFunction) { + result = 'validateFunction' + } + return result + } +} + +const RuleValidatorHelper = { + required(rule, value, message) { + if (rule.required && isEmptyValue(value, rule.format || typeof value)) { + return formatMessage(rule, rule.errorMessage || message.required); + } + + return null + }, + + range(rule, value, message) { + const { + range, + errorMessage + } = rule; + + let list = new Array(range.length); + for (let i = 0; i < range.length; i++) { + const item = range[i]; + if (types.object(item) && item.value !== undefined) { + list[i] = item.value; + } else { + list[i] = item; + } + } + + let result = false + if (Array.isArray(value)) { + result = (new Set(value.concat(list)).size === list.length); + } else { + if (list.indexOf(value) > -1) { + result = true; + } + } + + if (!result) { + return formatMessage(rule, errorMessage || message['enum']); + } + + return null + }, + + rangeNumber(rule, value, message) { + if (!types.number(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let { + minimum, + maximum, + exclusiveMinimum, + exclusiveMaximum + } = rule; + let min = exclusiveMinimum ? value <= minimum : value < minimum; + let max = exclusiveMaximum ? value >= maximum : value > maximum; + + if (minimum !== undefined && min) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ? + 'exclusiveMinimum' : 'minimum' + ]) + } else if (maximum !== undefined && max) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ? + 'exclusiveMaximum' : 'maximum' + ]) + } else if (minimum !== undefined && maximum !== undefined && (min || max)) { + return formatMessage(rule, rule.errorMessage || message['number'].range) + } + + return null + }, + + rangeLength(rule, value, message) { + if (!types.string(value) && !types.array(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let min = rule.minLength; + let max = rule.maxLength; + let val = value.length; + + if (min !== undefined && val < min) { + return formatMessage(rule, rule.errorMessage || message['length'].minLength) + } else if (max !== undefined && val > max) { + return formatMessage(rule, rule.errorMessage || message['length'].maxLength) + } else if (min !== undefined && max !== undefined && (val < min || val > max)) { + return formatMessage(rule, rule.errorMessage || message['length'].range) + } + + return null + }, + + pattern(rule, value, message) { + if (!types['pattern'](rule.pattern, value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + return null + }, + + format(rule, value, message) { + var customTypes = Object.keys(types); + var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType); + + if (customTypes.indexOf(format) > -1) { + if (!types[format](value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + } + + return null + }, + + arrayTypeFormat(rule, value, message) { + if (!Array.isArray(value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + + for (let i = 0; i < value.length; i++) { + const element = value[i]; + let formatResult = this.format(rule, element, message) + if (formatResult !== null) { + return formatResult + } + } + + return null + } +} + +class SchemaValidator extends RuleValidator { + + constructor(schema, options) { + super(SchemaValidator.message); + + this._schema = schema + this._options = options || null + } + + updateSchema(schema) { + this._schema = schema + } + + async validate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, false, allData) + } + return result.length ? result[0] : null + } + + async validateAll(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, true, allData) + } + return result + } + + async validateUpdate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidateUpdate(data, false, allData) + } + return result.length ? result[0] : null + } + + async invokeValidate(data, all, allData) { + let result = [] + let schema = this._schema + for (let key in schema) { + let value = schema[key] + let errorMessage = await this.validateRule(key, value, data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + async invokeValidateUpdate(data, all, allData) { + let result = [] + for (let key in data) { + let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + _checkFieldInSchema(data) { + var keys = Object.keys(data) + var keys2 = Object.keys(this._schema) + if (new Set(keys.concat(keys2)).size === keys2.length) { + return '' + } + + var noExistFields = keys.filter((key) => { + return keys2.indexOf(key) < 0; + }) + var errorMessage = formatMessage({ + field: JSON.stringify(noExistFields) + }, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid']) + return [{ + key: 'invalid', + errorMessage + }] + } +} + +function Message() { + return { + TAG: "", + default: '验证错误', + defaultInvalid: '提交的字段{field}在数据库中并不存在', + validateFunction: '验证无效', + required: '{label}必填', + 'enum': '{label}超出范围', + timestamp: '{label}格式无效', + whitespace: '{label}不能为空', + typeError: '{label}类型无效', + date: { + format: '{label}日期{value}格式无效', + parse: '{label}日期无法解析,{value}无效', + invalid: '{label}日期{value}无效' + }, + length: { + minLength: '{label}长度不能少于{minLength}', + maxLength: '{label}长度不能超过{maxLength}', + range: '{label}必须介于{minLength}和{maxLength}之间' + }, + number: { + minimum: '{label}不能小于{minimum}', + maximum: '{label}不能大于{maximum}', + exclusiveMinimum: '{label}不能小于等于{minimum}', + exclusiveMaximum: '{label}不能大于等于{maximum}', + range: '{label}必须介于{minimum}and{maximum}之间' + }, + pattern: { + mismatch: '{label}格式不匹配' + } + }; +} + + +SchemaValidator.message = new Message(); + +export default SchemaValidator diff --git a/src/uni_modules/uni-forms/package.json b/src/uni_modules/uni-forms/package.json new file mode 100644 index 0000000..464b4e6 --- /dev/null +++ b/src/uni_modules/uni-forms/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-forms", + "displayName": "uni-forms 表单", + "version": "1.4.10", + "description": "由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "keywords": [ + "uni-ui", + "表单", + "校验", + "表单校验", + "表单验证" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-forms/readme.md b/src/uni_modules/uni-forms/readme.md new file mode 100644 index 0000000..63d5a04 --- /dev/null +++ b/src/uni_modules/uni-forms/readme.md @@ -0,0 +1,23 @@ + + +## Forms 表单 + +> **组件名:uni-forms** +> 代码块: `uForms`、`uni-forms-item` +> 关联组件:`uni-forms-item`、`uni-easyinput`、`uni-data-checkbox`、`uni-group`。 + + +uni-app的内置组件已经有了 `
`组件,用于提交表单内容。 + +然而几乎每个表单都需要做表单验证,为了方便做表单验证,减少重复开发,`uni ui` 又基于 ``组件封装了 ``组件,内置了表单验证功能。 + +`` 提供了 `rules`属性来描述校验规则、``子组件来包裹具体的表单项,以及给原生或三方组件提供了 `binddata()` 来设置表单值。 + +每个要校验的表单项,不管input还是checkbox,都必须放在``组件中,且一个``组件只能放置一个表单项。 + +``组件内部预留了显示error message的区域,默认是在表单项的底部。 + +另外,``组件下面的各个表单项,可以通过``包裹为不同的分组。同一``下的不同表单项目将聚拢在一起,同其他group保持垂直间距。``仅影响视觉效果。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-forms) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-goods-nav/changelog.md b/src/uni_modules/uni-goods-nav/changelog.md new file mode 100644 index 0000000..c6264c6 --- /dev/null +++ b/src/uni_modules/uni-goods-nav/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-goods-nav](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json new file mode 100644 index 0000000..dcdba41 --- /dev/null +++ b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "shop", + "uni-goods-nav.options.cart": "cart", + "uni-goods-nav.buttonGroup.addToCart": "add to cart", + "uni-goods-nav.buttonGroup.buyNow": "buy now" +} diff --git a/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json new file mode 100644 index 0000000..48ee344 --- /dev/null +++ b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店铺", + "uni-goods-nav.options.cart": "购物车", + "uni-goods-nav.buttonGroup.addToCart": "加入购物车", + "uni-goods-nav.buttonGroup.buyNow": "立即购买" +} diff --git a/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json new file mode 100644 index 0000000..d0a0255 --- /dev/null +++ b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店鋪", + "uni-goods-nav.options.cart": "購物車", + "uni-goods-nav.buttonGroup.addToCart": "加入購物車", + "uni-goods-nav.buttonGroup.buyNow": "立即購買" +} diff --git a/src/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue new file mode 100644 index 0000000..8a16b17 --- /dev/null +++ b/src/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/src/uni_modules/uni-goods-nav/package.json b/src/uni_modules/uni-goods-nav/package.json new file mode 100644 index 0000000..636e45e --- /dev/null +++ b/src/uni_modules/uni-goods-nav/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-goods-nav", + "displayName": "uni-goods-nav 商品导航", + "version": "1.2.1", + "description": "商品导航组件主要用于电商类应用底部导航,可自定义加入购物车,购买等操作", + "keywords": [ + "uni-ui", + "uniui", + "商品导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-goods-nav/readme.md b/src/uni_modules/uni-goods-nav/readme.md new file mode 100644 index 0000000..07df93f --- /dev/null +++ b/src/uni_modules/uni-goods-nav/readme.md @@ -0,0 +1,10 @@ + + +## GoodsNav 商品导航 +> **组件名:uni-goods-nav** +> 代码块: `uGoodsNav` + +商品加入购物车,立即购买等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-grid/changelog.md b/src/uni_modules/uni-grid/changelog.md new file mode 100644 index 0000000..d301166 --- /dev/null +++ b/src/uni_modules/uni-grid/changelog.md @@ -0,0 +1,13 @@ +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-grid](https://uniapp.dcloud.io/component/uniui/uni-grid) +## 1.3.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.3.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.3.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.4(2021-05-12) +- 新增 组件示例地址 +## 1.2.3(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue b/src/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue new file mode 100644 index 0000000..19c08d7 --- /dev/null +++ b/src/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/uni_modules/uni-grid/components/uni-grid/uni-grid.vue b/src/uni_modules/uni-grid/components/uni-grid/uni-grid.vue new file mode 100644 index 0000000..0edc7ff --- /dev/null +++ b/src/uni_modules/uni-grid/components/uni-grid/uni-grid.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/src/uni_modules/uni-grid/package.json b/src/uni_modules/uni-grid/package.json new file mode 100644 index 0000000..ccb2c91 --- /dev/null +++ b/src/uni_modules/uni-grid/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-grid", + "displayName": "uni-grid 宫格", + "version": "1.4.0", + "description": "Grid 宫格组件,提供移动端常见的宫格布局,如九宫格。", + "keywords": [ + "uni-ui", + "uniui", + "九宫格", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-grid/readme.md b/src/uni_modules/uni-grid/readme.md new file mode 100644 index 0000000..0aa44cc --- /dev/null +++ b/src/uni_modules/uni-grid/readme.md @@ -0,0 +1,11 @@ + + +## Grid 宫格 +> **组件名:uni-grid** +> 代码块: `uGrid` + + +宫格组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-grid) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-group/changelog.md b/src/uni_modules/uni-group/changelog.md new file mode 100644 index 0000000..a7024fd --- /dev/null +++ b/src/uni_modules/uni-group/changelog.md @@ -0,0 +1,16 @@ +## 1.2.2(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-group](https://uniapp.dcloud.io/component/uniui/uni-group) +## 1.1.7(2021-11-08) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 优化 组件文档 +## 1.0.3(2021-05-12) +- 新增 组件示例地址 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 兼容 nvue 页面 diff --git a/src/uni_modules/uni-group/components/uni-group/uni-group.vue b/src/uni_modules/uni-group/components/uni-group/uni-group.vue new file mode 100644 index 0000000..3425ecd --- /dev/null +++ b/src/uni_modules/uni-group/components/uni-group/uni-group.vue @@ -0,0 +1,134 @@ + + + + diff --git a/src/uni_modules/uni-group/package.json b/src/uni_modules/uni-group/package.json new file mode 100644 index 0000000..ea00a08 --- /dev/null +++ b/src/uni_modules/uni-group/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-group", + "displayName": "uni-group 分组", + "version": "1.2.2", + "description": "分组组件可用于将组件用于分组,添加间隔,以产生明显的区块", + "keywords": [ + "uni-ui", + "uniui", + "group", + "分组", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-group/readme.md b/src/uni_modules/uni-group/readme.md new file mode 100644 index 0000000..bae67f4 --- /dev/null +++ b/src/uni_modules/uni-group/readme.md @@ -0,0 +1,9 @@ + +## Group 分组 +> **组件名:uni-group** +> 代码块: `uGroup` + +分组组件可用于将组件分组,添加间隔,以产生明显的区块。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-group) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-icons/changelog.md b/src/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..620ab02 --- /dev/null +++ b/src/uni_modules/uni-icons/changelog.md @@ -0,0 +1,40 @@ +## 2.0.9(2024-01-12) +fix: 修复图标大小默认值错误的问题 +## 2.0.8(2023-12-14) +- 修复 项目未使用 ts 情况下,打包报错的bug +## 2.0.7(2023-12-14) +- 修复 size 属性为 string 时,不加单位导致尺寸异常的bug +## 2.0.6(2023-12-11) +- 优化 兼容老版本icon类型,如 top ,bottom 等 +## 2.0.5(2023-12-11) +- 优化 兼容老版本icon类型,如 top ,bottom 等 +## 2.0.4(2023-12-06) +- 优化 uni-app x 下示例项目图标排序 +## 2.0.3(2023-12-06) +- 修复 nvue下引入组件报错的bug +## 2.0.2(2023-12-05) +-优化 size 属性支持单位 +## 2.0.1(2023-12-05) +- 新增 uni-app x 支持定义图标 +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.0(2021-11-19) +- 新增 更多图标 +- 优化 自定义图标使用方式 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue b/src/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue new file mode 100644 index 0000000..398678e --- /dev/null +++ b/src/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/src/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..7da5356 --- /dev/null +++ b/src/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/src/uni_modules/uni-icons/components/uni-icons/uniicons.css b/src/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..0a6b6fe --- /dev/null +++ b/src/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,664 @@ + +.uniui-cart-filled:before { + content: "\e6d0"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-arrowthinleft:before { + content: "\e6d2"; +} + +.uniui-arrowthinup:before { + content: "\e6d3"; +} + +.uniui-arrowthindown:before { + content: "\e6d4"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthinright:before { + content: "\e6d1"; +} + +.uniui-down:before { + content: "\e6b8"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowright:before { + content: "\e6d5"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-up:before { + content: "\e6b6"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowup:before { + content: "\e6d6"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/src/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/src/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000..14696d0 Binary files /dev/null and b/src/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ diff --git a/src/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts b/src/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts new file mode 100644 index 0000000..98e93aa --- /dev/null +++ b/src/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts @@ -0,0 +1,664 @@ + +export type IconsData = { + id : string + name : string + font_family : string + css_prefix_text : string + description : string + glyphs : Array +} + +export type IconsDataItem = { + font_class : string + unicode : string +} + + +export const fontData = [ + { + "font_class": "arrow-down", + "unicode": "\ue6be" + }, + { + "font_class": "arrow-left", + "unicode": "\ue6bc" + }, + { + "font_class": "arrow-right", + "unicode": "\ue6bb" + }, + { + "font_class": "arrow-up", + "unicode": "\ue6bd" + }, + { + "font_class": "auth", + "unicode": "\ue6ab" + }, + { + "font_class": "auth-filled", + "unicode": "\ue6cc" + }, + { + "font_class": "back", + "unicode": "\ue6b9" + }, + { + "font_class": "bars", + "unicode": "\ue627" + }, + { + "font_class": "calendar", + "unicode": "\ue6a0" + }, + { + "font_class": "calendar-filled", + "unicode": "\ue6c0" + }, + { + "font_class": "camera", + "unicode": "\ue65a" + }, + { + "font_class": "camera-filled", + "unicode": "\ue658" + }, + { + "font_class": "cart", + "unicode": "\ue631" + }, + { + "font_class": "cart-filled", + "unicode": "\ue6d0" + }, + { + "font_class": "chat", + "unicode": "\ue65d" + }, + { + "font_class": "chat-filled", + "unicode": "\ue659" + }, + { + "font_class": "chatboxes", + "unicode": "\ue696" + }, + { + "font_class": "chatboxes-filled", + "unicode": "\ue692" + }, + { + "font_class": "chatbubble", + "unicode": "\ue697" + }, + { + "font_class": "chatbubble-filled", + "unicode": "\ue694" + }, + { + "font_class": "checkbox", + "unicode": "\ue62b" + }, + { + "font_class": "checkbox-filled", + "unicode": "\ue62c" + }, + { + "font_class": "checkmarkempty", + "unicode": "\ue65c" + }, + { + "font_class": "circle", + "unicode": "\ue65b" + }, + { + "font_class": "circle-filled", + "unicode": "\ue65e" + }, + { + "font_class": "clear", + "unicode": "\ue66d" + }, + { + "font_class": "close", + "unicode": "\ue673" + }, + { + "font_class": "closeempty", + "unicode": "\ue66c" + }, + { + "font_class": "cloud-download", + "unicode": "\ue647" + }, + { + "font_class": "cloud-download-filled", + "unicode": "\ue646" + }, + { + "font_class": "cloud-upload", + "unicode": "\ue645" + }, + { + "font_class": "cloud-upload-filled", + "unicode": "\ue648" + }, + { + "font_class": "color", + "unicode": "\ue6cf" + }, + { + "font_class": "color-filled", + "unicode": "\ue6c9" + }, + { + "font_class": "compose", + "unicode": "\ue67f" + }, + { + "font_class": "contact", + "unicode": "\ue693" + }, + { + "font_class": "contact-filled", + "unicode": "\ue695" + }, + { + "font_class": "down", + "unicode": "\ue6b8" + }, + { + "font_class": "bottom", + "unicode": "\ue6b8" + }, + { + "font_class": "download", + "unicode": "\ue68d" + }, + { + "font_class": "download-filled", + "unicode": "\ue681" + }, + { + "font_class": "email", + "unicode": "\ue69e" + }, + { + "font_class": "email-filled", + "unicode": "\ue69a" + }, + { + "font_class": "eye", + "unicode": "\ue651" + }, + { + "font_class": "eye-filled", + "unicode": "\ue66a" + }, + { + "font_class": "eye-slash", + "unicode": "\ue6b3" + }, + { + "font_class": "eye-slash-filled", + "unicode": "\ue6b4" + }, + { + "font_class": "fire", + "unicode": "\ue6a1" + }, + { + "font_class": "fire-filled", + "unicode": "\ue6c5" + }, + { + "font_class": "flag", + "unicode": "\ue65f" + }, + { + "font_class": "flag-filled", + "unicode": "\ue660" + }, + { + "font_class": "folder-add", + "unicode": "\ue6a9" + }, + { + "font_class": "folder-add-filled", + "unicode": "\ue6c8" + }, + { + "font_class": "font", + "unicode": "\ue6a3" + }, + { + "font_class": "forward", + "unicode": "\ue6ba" + }, + { + "font_class": "gear", + "unicode": "\ue664" + }, + { + "font_class": "gear-filled", + "unicode": "\ue661" + }, + { + "font_class": "gift", + "unicode": "\ue6a4" + }, + { + "font_class": "gift-filled", + "unicode": "\ue6c4" + }, + { + "font_class": "hand-down", + "unicode": "\ue63d" + }, + { + "font_class": "hand-down-filled", + "unicode": "\ue63c" + }, + { + "font_class": "hand-up", + "unicode": "\ue63f" + }, + { + "font_class": "hand-up-filled", + "unicode": "\ue63e" + }, + { + "font_class": "headphones", + "unicode": "\ue630" + }, + { + "font_class": "heart", + "unicode": "\ue639" + }, + { + "font_class": "heart-filled", + "unicode": "\ue641" + }, + { + "font_class": "help", + "unicode": "\ue679" + }, + { + "font_class": "help-filled", + "unicode": "\ue674" + }, + { + "font_class": "home", + "unicode": "\ue662" + }, + { + "font_class": "home-filled", + "unicode": "\ue663" + }, + { + "font_class": "image", + "unicode": "\ue670" + }, + { + "font_class": "image-filled", + "unicode": "\ue678" + }, + { + "font_class": "images", + "unicode": "\ue650" + }, + { + "font_class": "images-filled", + "unicode": "\ue64b" + }, + { + "font_class": "info", + "unicode": "\ue669" + }, + { + "font_class": "info-filled", + "unicode": "\ue649" + }, + { + "font_class": "left", + "unicode": "\ue6b7" + }, + { + "font_class": "link", + "unicode": "\ue6a5" + }, + { + "font_class": "list", + "unicode": "\ue644" + }, + { + "font_class": "location", + "unicode": "\ue6ae" + }, + { + "font_class": "location-filled", + "unicode": "\ue6af" + }, + { + "font_class": "locked", + "unicode": "\ue66b" + }, + { + "font_class": "locked-filled", + "unicode": "\ue668" + }, + { + "font_class": "loop", + "unicode": "\ue633" + }, + { + "font_class": "mail-open", + "unicode": "\ue643" + }, + { + "font_class": "mail-open-filled", + "unicode": "\ue63a" + }, + { + "font_class": "map", + "unicode": "\ue667" + }, + { + "font_class": "map-filled", + "unicode": "\ue666" + }, + { + "font_class": "map-pin", + "unicode": "\ue6ad" + }, + { + "font_class": "map-pin-ellipse", + "unicode": "\ue6ac" + }, + { + "font_class": "medal", + "unicode": "\ue6a2" + }, + { + "font_class": "medal-filled", + "unicode": "\ue6c3" + }, + { + "font_class": "mic", + "unicode": "\ue671" + }, + { + "font_class": "mic-filled", + "unicode": "\ue677" + }, + { + "font_class": "micoff", + "unicode": "\ue67e" + }, + { + "font_class": "micoff-filled", + "unicode": "\ue6b0" + }, + { + "font_class": "minus", + "unicode": "\ue66f" + }, + { + "font_class": "minus-filled", + "unicode": "\ue67d" + }, + { + "font_class": "more", + "unicode": "\ue64d" + }, + { + "font_class": "more-filled", + "unicode": "\ue64e" + }, + { + "font_class": "navigate", + "unicode": "\ue66e" + }, + { + "font_class": "navigate-filled", + "unicode": "\ue67a" + }, + { + "font_class": "notification", + "unicode": "\ue6a6" + }, + { + "font_class": "notification-filled", + "unicode": "\ue6c1" + }, + { + "font_class": "paperclip", + "unicode": "\ue652" + }, + { + "font_class": "paperplane", + "unicode": "\ue672" + }, + { + "font_class": "paperplane-filled", + "unicode": "\ue675" + }, + { + "font_class": "person", + "unicode": "\ue699" + }, + { + "font_class": "person-filled", + "unicode": "\ue69d" + }, + { + "font_class": "personadd", + "unicode": "\ue69f" + }, + { + "font_class": "personadd-filled", + "unicode": "\ue698" + }, + { + "font_class": "personadd-filled-copy", + "unicode": "\ue6d1" + }, + { + "font_class": "phone", + "unicode": "\ue69c" + }, + { + "font_class": "phone-filled", + "unicode": "\ue69b" + }, + { + "font_class": "plus", + "unicode": "\ue676" + }, + { + "font_class": "plus-filled", + "unicode": "\ue6c7" + }, + { + "font_class": "plusempty", + "unicode": "\ue67b" + }, + { + "font_class": "pulldown", + "unicode": "\ue632" + }, + { + "font_class": "pyq", + "unicode": "\ue682" + }, + { + "font_class": "qq", + "unicode": "\ue680" + }, + { + "font_class": "redo", + "unicode": "\ue64a" + }, + { + "font_class": "redo-filled", + "unicode": "\ue655" + }, + { + "font_class": "refresh", + "unicode": "\ue657" + }, + { + "font_class": "refresh-filled", + "unicode": "\ue656" + }, + { + "font_class": "refreshempty", + "unicode": "\ue6bf" + }, + { + "font_class": "reload", + "unicode": "\ue6b2" + }, + { + "font_class": "right", + "unicode": "\ue6b5" + }, + { + "font_class": "scan", + "unicode": "\ue62a" + }, + { + "font_class": "search", + "unicode": "\ue654" + }, + { + "font_class": "settings", + "unicode": "\ue653" + }, + { + "font_class": "settings-filled", + "unicode": "\ue6ce" + }, + { + "font_class": "shop", + "unicode": "\ue62f" + }, + { + "font_class": "shop-filled", + "unicode": "\ue6cd" + }, + { + "font_class": "smallcircle", + "unicode": "\ue67c" + }, + { + "font_class": "smallcircle-filled", + "unicode": "\ue665" + }, + { + "font_class": "sound", + "unicode": "\ue684" + }, + { + "font_class": "sound-filled", + "unicode": "\ue686" + }, + { + "font_class": "spinner-cycle", + "unicode": "\ue68a" + }, + { + "font_class": "staff", + "unicode": "\ue6a7" + }, + { + "font_class": "staff-filled", + "unicode": "\ue6cb" + }, + { + "font_class": "star", + "unicode": "\ue688" + }, + { + "font_class": "star-filled", + "unicode": "\ue68f" + }, + { + "font_class": "starhalf", + "unicode": "\ue683" + }, + { + "font_class": "trash", + "unicode": "\ue687" + }, + { + "font_class": "trash-filled", + "unicode": "\ue685" + }, + { + "font_class": "tune", + "unicode": "\ue6aa" + }, + { + "font_class": "tune-filled", + "unicode": "\ue6ca" + }, + { + "font_class": "undo", + "unicode": "\ue64f" + }, + { + "font_class": "undo-filled", + "unicode": "\ue64c" + }, + { + "font_class": "up", + "unicode": "\ue6b6" + }, + { + "font_class": "top", + "unicode": "\ue6b6" + }, + { + "font_class": "upload", + "unicode": "\ue690" + }, + { + "font_class": "upload-filled", + "unicode": "\ue68e" + }, + { + "font_class": "videocam", + "unicode": "\ue68c" + }, + { + "font_class": "videocam-filled", + "unicode": "\ue689" + }, + { + "font_class": "vip", + "unicode": "\ue6a8" + }, + { + "font_class": "vip-filled", + "unicode": "\ue6c6" + }, + { + "font_class": "wallet", + "unicode": "\ue6b1" + }, + { + "font_class": "wallet-filled", + "unicode": "\ue6c2" + }, + { + "font_class": "weibo", + "unicode": "\ue68b" + }, + { + "font_class": "weixin", + "unicode": "\ue691" + } +] as IconsDataItem[] + +// export const fontData = JSON.parse(fontDataJson) diff --git a/src/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js b/src/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js new file mode 100644 index 0000000..1cd11e1 --- /dev/null +++ b/src/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js @@ -0,0 +1,649 @@ + +export const fontData = [ + { + "font_class": "arrow-down", + "unicode": "\ue6be" + }, + { + "font_class": "arrow-left", + "unicode": "\ue6bc" + }, + { + "font_class": "arrow-right", + "unicode": "\ue6bb" + }, + { + "font_class": "arrow-up", + "unicode": "\ue6bd" + }, + { + "font_class": "auth", + "unicode": "\ue6ab" + }, + { + "font_class": "auth-filled", + "unicode": "\ue6cc" + }, + { + "font_class": "back", + "unicode": "\ue6b9" + }, + { + "font_class": "bars", + "unicode": "\ue627" + }, + { + "font_class": "calendar", + "unicode": "\ue6a0" + }, + { + "font_class": "calendar-filled", + "unicode": "\ue6c0" + }, + { + "font_class": "camera", + "unicode": "\ue65a" + }, + { + "font_class": "camera-filled", + "unicode": "\ue658" + }, + { + "font_class": "cart", + "unicode": "\ue631" + }, + { + "font_class": "cart-filled", + "unicode": "\ue6d0" + }, + { + "font_class": "chat", + "unicode": "\ue65d" + }, + { + "font_class": "chat-filled", + "unicode": "\ue659" + }, + { + "font_class": "chatboxes", + "unicode": "\ue696" + }, + { + "font_class": "chatboxes-filled", + "unicode": "\ue692" + }, + { + "font_class": "chatbubble", + "unicode": "\ue697" + }, + { + "font_class": "chatbubble-filled", + "unicode": "\ue694" + }, + { + "font_class": "checkbox", + "unicode": "\ue62b" + }, + { + "font_class": "checkbox-filled", + "unicode": "\ue62c" + }, + { + "font_class": "checkmarkempty", + "unicode": "\ue65c" + }, + { + "font_class": "circle", + "unicode": "\ue65b" + }, + { + "font_class": "circle-filled", + "unicode": "\ue65e" + }, + { + "font_class": "clear", + "unicode": "\ue66d" + }, + { + "font_class": "close", + "unicode": "\ue673" + }, + { + "font_class": "closeempty", + "unicode": "\ue66c" + }, + { + "font_class": "cloud-download", + "unicode": "\ue647" + }, + { + "font_class": "cloud-download-filled", + "unicode": "\ue646" + }, + { + "font_class": "cloud-upload", + "unicode": "\ue645" + }, + { + "font_class": "cloud-upload-filled", + "unicode": "\ue648" + }, + { + "font_class": "color", + "unicode": "\ue6cf" + }, + { + "font_class": "color-filled", + "unicode": "\ue6c9" + }, + { + "font_class": "compose", + "unicode": "\ue67f" + }, + { + "font_class": "contact", + "unicode": "\ue693" + }, + { + "font_class": "contact-filled", + "unicode": "\ue695" + }, + { + "font_class": "down", + "unicode": "\ue6b8" + }, + { + "font_class": "bottom", + "unicode": "\ue6b8" + }, + { + "font_class": "download", + "unicode": "\ue68d" + }, + { + "font_class": "download-filled", + "unicode": "\ue681" + }, + { + "font_class": "email", + "unicode": "\ue69e" + }, + { + "font_class": "email-filled", + "unicode": "\ue69a" + }, + { + "font_class": "eye", + "unicode": "\ue651" + }, + { + "font_class": "eye-filled", + "unicode": "\ue66a" + }, + { + "font_class": "eye-slash", + "unicode": "\ue6b3" + }, + { + "font_class": "eye-slash-filled", + "unicode": "\ue6b4" + }, + { + "font_class": "fire", + "unicode": "\ue6a1" + }, + { + "font_class": "fire-filled", + "unicode": "\ue6c5" + }, + { + "font_class": "flag", + "unicode": "\ue65f" + }, + { + "font_class": "flag-filled", + "unicode": "\ue660" + }, + { + "font_class": "folder-add", + "unicode": "\ue6a9" + }, + { + "font_class": "folder-add-filled", + "unicode": "\ue6c8" + }, + { + "font_class": "font", + "unicode": "\ue6a3" + }, + { + "font_class": "forward", + "unicode": "\ue6ba" + }, + { + "font_class": "gear", + "unicode": "\ue664" + }, + { + "font_class": "gear-filled", + "unicode": "\ue661" + }, + { + "font_class": "gift", + "unicode": "\ue6a4" + }, + { + "font_class": "gift-filled", + "unicode": "\ue6c4" + }, + { + "font_class": "hand-down", + "unicode": "\ue63d" + }, + { + "font_class": "hand-down-filled", + "unicode": "\ue63c" + }, + { + "font_class": "hand-up", + "unicode": "\ue63f" + }, + { + "font_class": "hand-up-filled", + "unicode": "\ue63e" + }, + { + "font_class": "headphones", + "unicode": "\ue630" + }, + { + "font_class": "heart", + "unicode": "\ue639" + }, + { + "font_class": "heart-filled", + "unicode": "\ue641" + }, + { + "font_class": "help", + "unicode": "\ue679" + }, + { + "font_class": "help-filled", + "unicode": "\ue674" + }, + { + "font_class": "home", + "unicode": "\ue662" + }, + { + "font_class": "home-filled", + "unicode": "\ue663" + }, + { + "font_class": "image", + "unicode": "\ue670" + }, + { + "font_class": "image-filled", + "unicode": "\ue678" + }, + { + "font_class": "images", + "unicode": "\ue650" + }, + { + "font_class": "images-filled", + "unicode": "\ue64b" + }, + { + "font_class": "info", + "unicode": "\ue669" + }, + { + "font_class": "info-filled", + "unicode": "\ue649" + }, + { + "font_class": "left", + "unicode": "\ue6b7" + }, + { + "font_class": "link", + "unicode": "\ue6a5" + }, + { + "font_class": "list", + "unicode": "\ue644" + }, + { + "font_class": "location", + "unicode": "\ue6ae" + }, + { + "font_class": "location-filled", + "unicode": "\ue6af" + }, + { + "font_class": "locked", + "unicode": "\ue66b" + }, + { + "font_class": "locked-filled", + "unicode": "\ue668" + }, + { + "font_class": "loop", + "unicode": "\ue633" + }, + { + "font_class": "mail-open", + "unicode": "\ue643" + }, + { + "font_class": "mail-open-filled", + "unicode": "\ue63a" + }, + { + "font_class": "map", + "unicode": "\ue667" + }, + { + "font_class": "map-filled", + "unicode": "\ue666" + }, + { + "font_class": "map-pin", + "unicode": "\ue6ad" + }, + { + "font_class": "map-pin-ellipse", + "unicode": "\ue6ac" + }, + { + "font_class": "medal", + "unicode": "\ue6a2" + }, + { + "font_class": "medal-filled", + "unicode": "\ue6c3" + }, + { + "font_class": "mic", + "unicode": "\ue671" + }, + { + "font_class": "mic-filled", + "unicode": "\ue677" + }, + { + "font_class": "micoff", + "unicode": "\ue67e" + }, + { + "font_class": "micoff-filled", + "unicode": "\ue6b0" + }, + { + "font_class": "minus", + "unicode": "\ue66f" + }, + { + "font_class": "minus-filled", + "unicode": "\ue67d" + }, + { + "font_class": "more", + "unicode": "\ue64d" + }, + { + "font_class": "more-filled", + "unicode": "\ue64e" + }, + { + "font_class": "navigate", + "unicode": "\ue66e" + }, + { + "font_class": "navigate-filled", + "unicode": "\ue67a" + }, + { + "font_class": "notification", + "unicode": "\ue6a6" + }, + { + "font_class": "notification-filled", + "unicode": "\ue6c1" + }, + { + "font_class": "paperclip", + "unicode": "\ue652" + }, + { + "font_class": "paperplane", + "unicode": "\ue672" + }, + { + "font_class": "paperplane-filled", + "unicode": "\ue675" + }, + { + "font_class": "person", + "unicode": "\ue699" + }, + { + "font_class": "person-filled", + "unicode": "\ue69d" + }, + { + "font_class": "personadd", + "unicode": "\ue69f" + }, + { + "font_class": "personadd-filled", + "unicode": "\ue698" + }, + { + "font_class": "personadd-filled-copy", + "unicode": "\ue6d1" + }, + { + "font_class": "phone", + "unicode": "\ue69c" + }, + { + "font_class": "phone-filled", + "unicode": "\ue69b" + }, + { + "font_class": "plus", + "unicode": "\ue676" + }, + { + "font_class": "plus-filled", + "unicode": "\ue6c7" + }, + { + "font_class": "plusempty", + "unicode": "\ue67b" + }, + { + "font_class": "pulldown", + "unicode": "\ue632" + }, + { + "font_class": "pyq", + "unicode": "\ue682" + }, + { + "font_class": "qq", + "unicode": "\ue680" + }, + { + "font_class": "redo", + "unicode": "\ue64a" + }, + { + "font_class": "redo-filled", + "unicode": "\ue655" + }, + { + "font_class": "refresh", + "unicode": "\ue657" + }, + { + "font_class": "refresh-filled", + "unicode": "\ue656" + }, + { + "font_class": "refreshempty", + "unicode": "\ue6bf" + }, + { + "font_class": "reload", + "unicode": "\ue6b2" + }, + { + "font_class": "right", + "unicode": "\ue6b5" + }, + { + "font_class": "scan", + "unicode": "\ue62a" + }, + { + "font_class": "search", + "unicode": "\ue654" + }, + { + "font_class": "settings", + "unicode": "\ue653" + }, + { + "font_class": "settings-filled", + "unicode": "\ue6ce" + }, + { + "font_class": "shop", + "unicode": "\ue62f" + }, + { + "font_class": "shop-filled", + "unicode": "\ue6cd" + }, + { + "font_class": "smallcircle", + "unicode": "\ue67c" + }, + { + "font_class": "smallcircle-filled", + "unicode": "\ue665" + }, + { + "font_class": "sound", + "unicode": "\ue684" + }, + { + "font_class": "sound-filled", + "unicode": "\ue686" + }, + { + "font_class": "spinner-cycle", + "unicode": "\ue68a" + }, + { + "font_class": "staff", + "unicode": "\ue6a7" + }, + { + "font_class": "staff-filled", + "unicode": "\ue6cb" + }, + { + "font_class": "star", + "unicode": "\ue688" + }, + { + "font_class": "star-filled", + "unicode": "\ue68f" + }, + { + "font_class": "starhalf", + "unicode": "\ue683" + }, + { + "font_class": "trash", + "unicode": "\ue687" + }, + { + "font_class": "trash-filled", + "unicode": "\ue685" + }, + { + "font_class": "tune", + "unicode": "\ue6aa" + }, + { + "font_class": "tune-filled", + "unicode": "\ue6ca" + }, + { + "font_class": "undo", + "unicode": "\ue64f" + }, + { + "font_class": "undo-filled", + "unicode": "\ue64c" + }, + { + "font_class": "up", + "unicode": "\ue6b6" + }, + { + "font_class": "top", + "unicode": "\ue6b6" + }, + { + "font_class": "upload", + "unicode": "\ue690" + }, + { + "font_class": "upload-filled", + "unicode": "\ue68e" + }, + { + "font_class": "videocam", + "unicode": "\ue68c" + }, + { + "font_class": "videocam-filled", + "unicode": "\ue689" + }, + { + "font_class": "vip", + "unicode": "\ue6a8" + }, + { + "font_class": "vip-filled", + "unicode": "\ue6c6" + }, + { + "font_class": "wallet", + "unicode": "\ue6b1" + }, + { + "font_class": "wallet-filled", + "unicode": "\ue6c2" + }, + { + "font_class": "weibo", + "unicode": "\ue68b" + }, + { + "font_class": "weixin", + "unicode": "\ue691" + } +] + +// export const fontData = JSON.parse(fontDataJson) diff --git a/src/uni_modules/uni-icons/package.json b/src/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..397be83 --- /dev/null +++ b/src/uni_modules/uni-icons/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "2.0.9", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y", + "app-uvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-icons/readme.md b/src/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/src/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/src/uni_modules/uni-indexed-list/changelog.md b/src/uni_modules/uni-indexed-list/changelog.md new file mode 100644 index 0000000..08fa71c --- /dev/null +++ b/src/uni_modules/uni-indexed-list/changelog.md @@ -0,0 +1,17 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-indexed-list](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 diff --git a/src/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue b/src/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue new file mode 100644 index 0000000..19284bd --- /dev/null +++ b/src/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/src/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue b/src/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue new file mode 100644 index 0000000..ee3a7ec --- /dev/null +++ b/src/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue @@ -0,0 +1,367 @@ + + + diff --git a/src/uni_modules/uni-indexed-list/package.json b/src/uni_modules/uni-indexed-list/package.json new file mode 100644 index 0000000..125c0e7 --- /dev/null +++ b/src/uni_modules/uni-indexed-list/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-indexed-list", + "displayName": "uni-indexed-list 索引列表", + "version": "1.2.1", + "description": "索引列表组件,右侧带索引的列表,方便快速定位到具体内容,通常用于城市/机场选择等场景", + "keywords": [ + "uni-ui", + "索引列表", + "索引", + "列表" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-indexed-list/readme.md b/src/uni_modules/uni-indexed-list/readme.md new file mode 100644 index 0000000..44ad84b --- /dev/null +++ b/src/uni_modules/uni-indexed-list/readme.md @@ -0,0 +1,11 @@ + + +## IndexedList 索引列表 +> **组件名:uni-indexed-list** +> 代码块: `uIndexedList` + + +用于展示索引列表。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/src/uni_modules/uni-link/changelog.md b/src/uni_modules/uni-link/changelog.md new file mode 100644 index 0000000..2cfbf59 --- /dev/null +++ b/src/uni_modules/uni-link/changelog.md @@ -0,0 +1,17 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-link](https://uniapp.dcloud.io/component/uniui/uni-link) +## 1.1.7(2021-11-08) +## 0.0.7(2021-09-03) +- 修复 在 nvue 下不显示的 bug +## 0.0.6(2021-07-30) +- 新增 支持自定义插槽 +## 0.0.5(2021-06-21) +- 新增 download 属性,H5平台下载文件名 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-03-09) +- 新增 href 属性支持 tel:|mailto: + +## 0.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-link/components/uni-link/uni-link.vue b/src/uni_modules/uni-link/components/uni-link/uni-link.vue new file mode 100644 index 0000000..27c5468 --- /dev/null +++ b/src/uni_modules/uni-link/components/uni-link/uni-link.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/uni_modules/uni-link/package.json b/src/uni_modules/uni-link/package.json new file mode 100644 index 0000000..77b1986 --- /dev/null +++ b/src/uni_modules/uni-link/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-link", + "displayName": "uni-link 超链接", + "version": "1.0.0", + "description": "uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打", + "keywords": [ + "uni-ui", + "uniui", + "link", + "超链接", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-link/readme.md b/src/uni_modules/uni-link/readme.md new file mode 100644 index 0000000..7f09e94 --- /dev/null +++ b/src/uni_modules/uni-link/readme.md @@ -0,0 +1,11 @@ + + +## Link 链接 +> **组件名:uni-link** +> 代码块: `uLink` + + +uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打开新网页。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-link) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-list/changelog.md b/src/uni_modules/uni-list/changelog.md new file mode 100644 index 0000000..8254a18 --- /dev/null +++ b/src/uni_modules/uni-list/changelog.md @@ -0,0 +1,46 @@ +## 1.2.14(2023-04-14) +- 优化 uni-list-chat 具名插槽`header` 非app端套一层元素,方便使用时通过外层元素定位实现样式修改 +## 1.2.13(2023-03-03) +- uni-list-chat 新增 支持具名插槽`header` +## 1.2.12(2023-02-01) +- 新增 列表图标新增 customPrefix 属性 ,用法 [详见](https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props) +## 1.2.11(2023-01-31) +- 修复 无反馈效果呈现的bug +## 1.2.9(2022-11-22) +- 修复 uni-list-chat 在vue3下跳转报错的bug +## 1.2.8(2022-11-21) +- 修复 uni-list-chat avatar属性 值为本地路径时错误的问题 +## 1.2.7(2022-11-21) +- 修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题 +## 1.2.6(2022-11-18) +- 修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题 +## 1.2.5(2022-11-15) +- 修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug +## 1.2.4(2022-11-15) +- 修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug +## 1.2.3(2022-11-14) +- uni-list-chat 新增 avatar 支持 fileId +## 1.2.2(2022-11-11) +- uni-list 新增属性 render-reverse 详情参考:[https://uniapp.dcloud.net.cn/component/list.html](https://uniapp.dcloud.net.cn/component/list.html) +- uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) +- uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor +## 1.2.1(2022-03-30) +- 删除无用文件 +## 1.2.0(2021-11-23) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-list](https://uniapp.dcloud.io/component/uniui/uni-list) +## 1.1.3(2021-08-30) +- 修复 在vue3中to属性在发行应用的时候报错的bug +## 1.1.2(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.1(2021-07-21) +- 修复 与其他组件嵌套使用时,点击失效的Bug +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.17(2021-05-12) +- 新增 组件示例地址 +## 1.0.16(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.15(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 uni-list-chat 角标显示不正常的问题 diff --git a/src/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue b/src/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue new file mode 100644 index 0000000..b9349c2 --- /dev/null +++ b/src/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss b/src/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss new file mode 100644 index 0000000..311f8d9 --- /dev/null +++ b/src/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss @@ -0,0 +1,58 @@ +/** + * 这里是 uni-list 组件内置的常用样式变量 + * 如果需要覆盖样式,这里提供了基本的组件样式变量,您可以尝试修改这里的变量,去完成样式替换,而不用去修改源码 + * + */ + +// 背景色 +$background-color : #fff; +// 分割线颜色 +$divide-line-color : #e5e5e5; + +// 默认头像大小,如需要修改此值,注意同步修改 js 中的值 const avatarWidth = xx ,目前只支持方形头像 +// nvue 页面不支持修改头像大小 +$avatar-width : 45px ; + +// 头像边框 +$avatar-border-radius: 5px; +$avatar-border-color: #eee; +$avatar-border-width: 1px; + +// 标题文字样式 +$title-size : 16px; +$title-color : #3b4144; +$title-weight : normal; + +// 描述文字样式 +$note-size : 12px; +$note-color : #999; +$note-weight : normal; + +// 右侧额外内容默认样式 +$right-text-size : 12px; +$right-text-color : #999; +$right-text-weight : normal; + +// 角标样式 +// nvue 页面不支持修改圆点位置以及大小 +// 角标在左侧时,角标的位置,默认为 0 ,负数左/下移动,正数右/上移动 +$badge-left: 0px; +$badge-top: 0px; + +// 显示圆点时,圆点大小 +$dot-width: 10px; +$dot-height: 10px; + +// 显示角标时,角标大小和字体大小 +$badge-size : 18px; +$badge-font : 12px; +// 显示角标时,角标前景色 +$badge-color : #fff; +// 显示角标时,角标背景色 +$badge-background-color : #ff5a5f; +// 显示角标时,角标左右间距 +$badge-space : 6px; + +// 状态样式 +// 选中颜色 +$hover : #f5f5f5; diff --git a/src/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue b/src/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue new file mode 100644 index 0000000..d49fd7c --- /dev/null +++ b/src/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue @@ -0,0 +1,593 @@ + + + + + diff --git a/src/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue b/src/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue new file mode 100644 index 0000000..a274ac8 --- /dev/null +++ b/src/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue @@ -0,0 +1,534 @@ + + + + + \ No newline at end of file diff --git a/src/uni_modules/uni-list/components/uni-list/uni-list.vue b/src/uni_modules/uni-list/components/uni-list/uni-list.vue new file mode 100644 index 0000000..6ef5972 --- /dev/null +++ b/src/uni_modules/uni-list/components/uni-list/uni-list.vue @@ -0,0 +1,123 @@ + + + + diff --git a/src/uni_modules/uni-list/components/uni-list/uni-refresh.vue b/src/uni_modules/uni-list/components/uni-list/uni-refresh.vue new file mode 100644 index 0000000..3b4c5a2 --- /dev/null +++ b/src/uni_modules/uni-list/components/uni-list/uni-refresh.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/uni_modules/uni-list/components/uni-list/uni-refresh.wxs b/src/uni_modules/uni-list/components/uni-list/uni-refresh.wxs new file mode 100644 index 0000000..818a6b7 --- /dev/null +++ b/src/uni_modules/uni-list/components/uni-list/uni-refresh.wxs @@ -0,0 +1,87 @@ +var pullDown = { + threshold: 95, + maxHeight: 200, + callRefresh: 'onrefresh', + callPullingDown: 'onpullingdown', + refreshSelector: '.uni-refresh' +}; + +function ready(newValue, oldValue, ownerInstance, instance) { + var state = instance.getState() + state.canPullDown = newValue; + // console.log(newValue); +} + +function touchStart(e, instance) { + var state = instance.getState(); + state.refreshInstance = instance.selectComponent(pullDown.refreshSelector); + state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined); + if (!state.canPullDown) { + return + } + + // console.log("touchStart"); + + state.height = 0; + state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY; + state.refreshInstance.setStyle({ + 'height': 0 + }); + state.refreshInstance.callMethod("onchange", true); +} + +function touchMove(e, ownerInstance) { + var instance = e.instance; + var state = instance.getState(); + if (!state.canPullDown) { + return + } + + var oldHeight = state.height; + var endY = e.touches[0].pageY || e.changedTouches[0].pageY; + var height = endY - state.touchStartY; + if (height > pullDown.maxHeight) { + return; + } + + var refreshInstance = state.refreshInstance; + refreshInstance.setStyle({ + 'height': height + 'px' + }); + + height = height < pullDown.maxHeight ? height : pullDown.maxHeight; + state.height = height; + refreshInstance.callMethod(pullDown.callPullingDown, { + height: height + }); +} + +function touchEnd(e, ownerInstance) { + var state = e.instance.getState(); + if (!state.canPullDown) { + return + } + + state.refreshInstance.callMethod("onchange", false); + + var refreshInstance = state.refreshInstance; + if (state.height > pullDown.threshold) { + refreshInstance.callMethod(pullDown.callRefresh); + return; + } + + refreshInstance.setStyle({ + 'height': 0 + }); +} + +function propObserver(newValue, oldValue, instance) { + pullDown = newValue; +} + +module.exports = { + touchmove: touchMove, + touchstart: touchStart, + touchend: touchEnd, + propObserver: propObserver +} diff --git a/src/uni_modules/uni-list/package.json b/src/uni_modules/uni-list/package.json new file mode 100644 index 0000000..8350efc --- /dev/null +++ b/src/uni_modules/uni-list/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-list", + "displayName": "uni-list 列表", + "version": "1.2.14", + "description": "List 组件 ,帮助使用者快速构建列表。", + "keywords": [ + "", + "uni-ui", + "uniui", + "列表", + "", + "list" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-list/readme.md b/src/uni_modules/uni-list/readme.md new file mode 100644 index 0000000..32c2865 --- /dev/null +++ b/src/uni_modules/uni-list/readme.md @@ -0,0 +1,346 @@ +## List 列表 +> **组件名:uni-list** +> 代码块: `uList`、`uListItem` +> 关联组件:`uni-list-item`、`uni-badge`、`uni-icons`、`uni-list-chat`、`uni-list-ad` + + +List 列表组件,包含基本列表样式、可扩展插槽机制、长列表性能优化、多端兼容。 + +在vue页面里,它默认使用页面级滚动。在app-nvue页面里,它默认使用原生list组件滚动。这样的长列表,在滚动出屏幕外后,系统会回收不可见区域的渲染内存资源,不会造成滚动越长手机越卡的问题。 + +uni-list组件是父容器,里面的核心是uni-list-item子组件,它代表列表中的一个可重复行,子组件可以无限循环。 + +uni-list-item有很多风格,uni-list-item组件通过内置的属性,满足一些常用的场景。当内置属性不满足需求时,可以通过扩展插槽来自定义列表内容。 + +内置属性可以覆盖的场景包括:导航列表、设置列表、小图标列表、通信录列表、聊天记录列表。 + +涉及很多大图或丰富内容的列表,比如类今日头条的新闻列表、类淘宝的电商列表,需要通过扩展插槽实现。 + +下文均有样例给出。 + +uni-list不包含下拉刷新和上拉翻页。上拉翻页另见组件:[uni-load-more](https://ext.dcloud.net.cn/plugin?id=29) + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 组件需要依赖 `sass` 插件 ,请自行手动安装 +> - 组件内部依赖 `'uni-icons'` 、`uni-badge` 组件 +> - `uni-list` 和 `uni-list-item` 需要配套使用,暂不支持单独使用 `uni-list-item` +> - 只有开启点击反馈后,会有点击选中效果 +> - 使用插槽时,可以完全自定义内容 +> - note 、rightText 属性暂时没做限制,不支持文字溢出隐藏,使用时应该控制长度显示或通过默认插槽自行扩展 +> - 支付宝小程序平台需要在支付宝小程序开发者工具里开启 component2 编译模式,开启方式: 详情 --> 项目配置 --> 启用 component2 编译 +> - 如果需要修改 `switch`、`badge` 样式,请使用插槽自定义 +> - 在 `HBuilderX` 低版本中,可能会出现组件显示 `undefined` 的问题,请升级最新的 `HBuilderX` 或者 `cli` +> - 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + +### 基本用法 + +- 设置 `title` 属性,可以显示列表标题 +- 设置 `disabled` 属性,可以禁用当前项 + +```html + + + + + +``` + +### 多行内容显示 + +- 设置 `note` 属性 ,可以在第二行显示描述文本信息 + +```html + + + + + +``` + +### 右侧显示角标、switch + +- 设置 `show-badge` 属性 ,可以显示角标内容 +- 设置 `show-switch` 属性,可以显示 switch 开关 + +```html + + + + + +``` + +### 左侧显示略缩图、图标 + +- 设置 `thumb` 属性 ,可以在列表左侧显示略缩图 +- 设置 `show-extra-icon` 属性,并指定 `extra-icon` 可以在左侧显示图标 + +```html + + + + +``` + +### 开启点击反馈和右侧箭头 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,并给列表右侧添加一个箭头 +- 设置 `to` 属性,可以跳转页面,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` + +```html + + + + + + + +``` + + +### 聊天列表示例 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` +- 设置 `to` 属性,可以跳转页面 +- `time` 属性,通常会设置成时间显示,但是这个属性不仅仅可以设置时间,你可以传入任何文本,注意文本长度可能会影响显示 +- `avatar` 和 `avatarList` 属性同时只会有一个生效,同时设置的话,`avatarList` 属性的长度大于1 ,`avatar` 属性将失效 +- 可以通过默认插槽自定义列表右侧内容 + +```html + + + + + + + + + + + + + + + + + 刚刚 + + + + + + + +``` + +```javascript + +export default { + components: {}, + data() { + return { + avatarList: [{ + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }] + } + } +} + +``` + + +```css + +.chat-custom-right { + flex: 1; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: column; + justify-content: space-between; + align-items: flex-end; +} + +.chat-custom-text { + font-size: 12px; + color: #999; +} + +``` + +## API + +### List Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +border |Boolean |true | 是否显示边框 + + +### ListItem Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +ellipsis |Number |0 | title 是否溢出隐藏,可选值,0:默认; 1:显示一行; 2:显示两行;【nvue 暂不支持】 +thumb |String |- | 左侧缩略图,若thumb有值,则不会显示扩展图标 +thumbSize |String |medium | 略缩图尺寸,可选值,lg:大图; medium:一般; sm:小图; +showBadge |Boolean |false | 是否显示数字角标 +badgeText |String |- | 数字角标内容 +badgeType |String |- | 数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21) +badgeStyle |Object |- | 数字角标样式,使用uni-badge的custom-style参数 +rightText |String |- | 右侧文字内容 +disabled |Boolean |false | 是否禁用 +showArrow |Boolean |true | 是否显示箭头图标 +link |String |navigateTo | 新页面跳转方式,可选值见下表 +to |String |- | 新页面跳转地址,如填写此属性,click 会返回页面是否跳转成功 +clickable |Boolean |false | 是否开启点击反馈 +showSwitch |Boolean |false | 是否显示Switch +switchChecked |Boolean |false | Switch是否被选中 +showExtraIcon |Boolean |false | 左侧是否显示扩展图标 +extraIcon |Object |- | 扩展图标参数,格式为 ``{color: '#4cd964',size: '22',type: 'spinner'}``,参考 [uni-icons](https://ext.dcloud.net.cn/plugin?id=28) +direction | String |row | 排版方向,可选值,row:水平排列; column:垂直排列; 3个插槽是水平排还是垂直排,也受此属性控制 + + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItem Events + +事件称名 |说明 |返回参数 +:-: |:-: |:-: +click |点击 uniListItem 触发事件,需开启点击反馈 |- +switchChange |点击切换 Switch 时触发,需显示 switch |e={value:checked} + + + +### ListItem Slots + +名称 | 说明 +:-: | :-: +header | 左/上内容插槽,可完全自定义默认显示 +body | 中间内容插槽,可完全自定义中间内容 +footer | 右/下内容插槽,可完全自定义右侧内容 + + +> **通过插槽扩展** +> 需要注意的是当使用插槽时,内置样式将会失效,只保留排版样式,此时的样式需要开发者自己实现 +> 如果 `uni-list-item` 组件内置属性样式无法满足需求,可以使用插槽来自定义uni-list-item里的内容。 +> uni-list-item提供了3个可扩展的插槽:`header`、`body`、`footer` +> - 当 `direction` 属性为 `row` 时表示水平排列,此时 `header` 表示列表的左边部分,`body` 表示列表的中间部分,`footer` 表示列表的右边部分 +> - 当 `direction` 属性为 `column` 时表示垂直排列,此时 `header` 表示列表的上边部分,`body` 表示列表的中间部分,`footer` 表示列表的下边部分 +> 开发者可以只用1个插槽,也可以3个一起使用。在插槽中可自主编写view标签,实现自己所需的效果。 + + +**示例** + +```html + + + + + + + + + 自定义插槽 + + + + +``` + + + + + +### ListItemChat Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +clickable |Boolean |false | 是否开启点击反馈 +badgeText |String |- | 数字角标内容,设置为 `dot` 将显示圆点 +badgePositon |String |right | 角标位置 +link |String |navigateTo | 是否展示右侧箭头并开启点击反馈,可选值见下表 +clickable |Boolean |false | 是否开启点击反馈 +to |String |- | 跳转页面地址,如填写此属性,click 会返回页面是否跳转成功 +time |String |- | 右侧时间显示 +avatarCircle |Boolean |false | 是否显示圆形头像 +avatar |String |- | 头像地址,avatarCircle 不填时生效 +avatarList |Array |- | 头像组,格式为 [{url:''}] + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItemChat Slots + +名称 | 说明 +:- | :- +default | 自定义列表右侧内容(包括时间和角标显示) + +### ListItemChat Events +事件称名 | 说明 | 返回参数 +:-: | :-: | :-: +@click | 点击 uniListChat 触发事件 | {data:{}} ,如有 to 属性,会返回页面跳转信息 + + + + + + +## 基于uni-list扩展的页面模板 + +通过扩展插槽,可实现多种常见样式的列表 + +**新闻列表类** + +1. 云端一体混合布局:[https://ext.dcloud.net.cn/plugin?id=2546](https://ext.dcloud.net.cn/plugin?id=2546) +2. 云端一体垂直布局,大图模式:[https://ext.dcloud.net.cn/plugin?id=2583](https://ext.dcloud.net.cn/plugin?id=2583) +3. 云端一体垂直布局,多行图文混排:[https://ext.dcloud.net.cn/plugin?id=2584](https://ext.dcloud.net.cn/plugin?id=2584) +4. 云端一体垂直布局,多图模式:[https://ext.dcloud.net.cn/plugin?id=2585](https://ext.dcloud.net.cn/plugin?id=2585) +5. 云端一体水平布局,左图右文:[https://ext.dcloud.net.cn/plugin?id=2586](https://ext.dcloud.net.cn/plugin?id=2586) +6. 云端一体水平布局,左文右图:[https://ext.dcloud.net.cn/plugin?id=2587](https://ext.dcloud.net.cn/plugin?id=2587) +7. 云端一体垂直布局,无图模式,主标题+副标题:[https://ext.dcloud.net.cn/plugin?id=2588](https://ext.dcloud.net.cn/plugin?id=2588) + +**商品列表类** + +1. 云端一体列表/宫格视图互切:[https://ext.dcloud.net.cn/plugin?id=2651](https://ext.dcloud.net.cn/plugin?id=2651) +2. 云端一体列表(宫格模式):[https://ext.dcloud.net.cn/plugin?id=2671](https://ext.dcloud.net.cn/plugin?id=2671) +3. 云端一体列表(列表模式):[https://ext.dcloud.net.cn/plugin?id=2672](https://ext.dcloud.net.cn/plugin?id=2672) + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/list/list](https://hellouniapp.dcloud.net.cn/pages/extUI/list/list) \ No newline at end of file diff --git a/src/uni_modules/uni-load-more/changelog.md b/src/uni_modules/uni-load-more/changelog.md new file mode 100644 index 0000000..8f03f1d --- /dev/null +++ b/src/uni_modules/uni-load-more/changelog.md @@ -0,0 +1,19 @@ +## 1.3.3(2022-01-20) +- 新增 showText属性 ,是否显示文本 +## 1.3.2(2022-01-19) +- 修复 nvue 平台下不显示文本的bug +## 1.3.1(2022-01-19) +- 修复 微信小程序平台样式选择器报警告的问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) +## 1.2.1(2021-08-24) +- 新增 支持国际化 +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-05-12) +- 新增 组件示例地址 +## 1.1.7(2021-03-30) +- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +## 1.1.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/src/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json new file mode 100644 index 0000000..a4f14a5 --- /dev/null +++ b/src/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "Pull up to show more", + "uni-load-more.contentrefresh": "loading...", + "uni-load-more.contentnomore": "No more data" +} diff --git a/src/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/src/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/src/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/src/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json b/src/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json new file mode 100644 index 0000000..f15d510 --- /dev/null +++ b/src/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉显示更多", + "uni-load-more.contentrefresh": "正在加载...", + "uni-load-more.contentnomore": "没有更多数据了" +} diff --git a/src/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/src/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json new file mode 100644 index 0000000..a255c6d --- /dev/null +++ b/src/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉顯示更多", + "uni-load-more.contentrefresh": "正在加載...", + "uni-load-more.contentnomore": "沒有更多數據了" +} diff --git a/src/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/src/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue new file mode 100644 index 0000000..e5eff4d --- /dev/null +++ b/src/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/src/uni_modules/uni-load-more/package.json b/src/uni_modules/uni-load-more/package.json new file mode 100644 index 0000000..2fa6f04 --- /dev/null +++ b/src/uni_modules/uni-load-more/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-load-more", + "displayName": "uni-load-more 加载更多", + "version": "1.3.3", + "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", + "keywords": [ + "uni-ui", + "uniui", + "加载更多", + "load-more" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-load-more/readme.md b/src/uni_modules/uni-load-more/readme.md new file mode 100644 index 0000000..54dc1fa --- /dev/null +++ b/src/uni_modules/uni-load-more/readme.md @@ -0,0 +1,14 @@ + + +### LoadMore 加载更多 +> **组件名:uni-load-more** +> 代码块: `uLoadMore` + + +用于列表中,做滚动加载使用,展示 loading 的各种状态。 + + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/src/uni_modules/uni-nav-bar/changelog.md b/src/uni_modules/uni-nav-bar/changelog.md new file mode 100644 index 0000000..0f9a2f1 --- /dev/null +++ b/src/uni_modules/uni-nav-bar/changelog.md @@ -0,0 +1,51 @@ +## 1.3.11(2023-03-29) +- 修复 自定义状态栏高度闪动BUG +## 1.3.10(2023-03-29) +- 修复 暗黑模式下边线颜色错误的bug +## 1.3.9(2022-10-13) +- 修复 条件编译错误的bug +## 1.3.8(2022-10-12) +- 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.7(2022-08-11) +- 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.6(2022-06-30) +- 修复 组件示例中插槽用法无法显示内容的bug +## 1.3.5(2022-05-24) +- 新增 stat 属性 ,可开启统计title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +## 1.3.4(2022-01-24) +- 更新 组件示例 +## 1.3.3(2022-01-24) +- 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +## 1.3.2(2022-01-18) +- 修复 在vue下,标题不垂直居中的bug +## 1.3.1(2022-01-18) +- 修复 height 属性类型错误 +## 1.3.0(2022-01-18) +- 新增 height 属性,可修改组件高度 +- 新增 dark 属性可可开启暗黑模式 +- 优化 标题字数过多显示省略号 +- 优化 插槽,插入内容可完全覆盖 +## 1.2.1(2022-01-10) +- 修复 color 属性不生效的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-nav-bar](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-30) +- 修复 在nvue下fixed为true,宽度不能撑满的Bug +## 1.0.9(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.8(2021-04-14) +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug + +## 1.0.7(2021-02-25) +- 修复 easycom 下,找不到 uni-status-bar 的bug + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue new file mode 100644 index 0000000..c890860 --- /dev/null +++ b/src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue b/src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue new file mode 100644 index 0000000..4ac73ae --- /dev/null +++ b/src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/uni_modules/uni-nav-bar/package.json b/src/uni_modules/uni-nav-bar/package.json new file mode 100644 index 0000000..240ae95 --- /dev/null +++ b/src/uni_modules/uni-nav-bar/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-nav-bar", + "displayName": "uni-nav-bar 自定义导航栏", + "version": "1.3.11", + "description": "自定义导航栏组件,主要用于头部导航。", + "keywords": [ + "uni-ui", + "导航", + "导航栏", + "自定义导航栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-nav-bar/readme.md b/src/uni_modules/uni-nav-bar/readme.md new file mode 100644 index 0000000..3934b32 --- /dev/null +++ b/src/uni_modules/uni-nav-bar/readme.md @@ -0,0 +1,15 @@ + + +## NavBar 导航栏 +> **组件名:uni-nav-bar** +> 代码块: `uNavBar` + +导航栏组件,主要用于头部导航。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/src/uni_modules/uni-notice-bar/changelog.md b/src/uni_modules/uni-notice-bar/changelog.md new file mode 100644 index 0000000..ce50674 --- /dev/null +++ b/src/uni_modules/uni-notice-bar/changelog.md @@ -0,0 +1,20 @@ +## 1.2.2(2023-12-20) +- 修复动态绑定title时,滚动速度不一致的问题 +## 1.2.1(2022-09-05) +- 新增 属性 fontSize,可修改文字大小。 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-notice-bar](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 组件示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue b/src/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue new file mode 100644 index 0000000..47fb9b3 --- /dev/null +++ b/src/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue @@ -0,0 +1,431 @@ + + + + + diff --git a/src/uni_modules/uni-notice-bar/package.json b/src/uni_modules/uni-notice-bar/package.json new file mode 100644 index 0000000..1e9762c --- /dev/null +++ b/src/uni_modules/uni-notice-bar/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-notice-bar", + "displayName": "uni-notice-bar 通告栏", + "version": "1.2.2", + "description": "NoticeBar 通告栏组件,常用于展示公告信息,可设为滚动公告", + "keywords": [ + "uni-ui", + "uniui", + "通告栏", + "公告", + "跑马灯" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-notice-bar/readme.md b/src/uni_modules/uni-notice-bar/readme.md new file mode 100644 index 0000000..fb2ede2 --- /dev/null +++ b/src/uni_modules/uni-notice-bar/readme.md @@ -0,0 +1,13 @@ + + +## NoticeBar 通告栏 +> **组件名:uni-notice-bar** +> 代码块: `uNoticeBar` + + +通告栏组件 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/src/uni_modules/uni-number-box/changelog.md b/src/uni_modules/uni-number-box/changelog.md new file mode 100644 index 0000000..aab060d --- /dev/null +++ b/src/uni_modules/uni-number-box/changelog.md @@ -0,0 +1,29 @@ +## 1.2.3(2023-05-23) +更新示例工程 +## 1.2.2(2023-05-08) +- 修复 change 事件执行顺序错误的问题 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-number-box](https://uniapp.dcloud.io/component/uniui/uni-number-box) +## 1.1.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-20) +- 修复 uni-number-box 浮点数运算不精确的 bug +- 修复 uni-number-box change 事件触发不正确的 bug +- 新增 uni-number-box v-model 双向绑定 +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 + +## 1.0.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 v-model +- 新增 支持 focus、blur 事件 +- 新增 支持 PC 端 diff --git a/src/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue b/src/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue new file mode 100644 index 0000000..40786f5 --- /dev/null +++ b/src/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue @@ -0,0 +1,221 @@ + + + diff --git a/src/uni_modules/uni-number-box/package.json b/src/uni_modules/uni-number-box/package.json new file mode 100644 index 0000000..743d2e4 --- /dev/null +++ b/src/uni_modules/uni-number-box/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-number-box", + "displayName": "uni-number-box 数字输入框", + "version": "1.2.3", + "description": "NumberBox 带加减按钮的数字输入框组件,用户可以控制每次点击增加的数值,支持小数。", + "keywords": [ + "uni-ui", + "uniui", + "数字输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-number-box/readme.md b/src/uni_modules/uni-number-box/readme.md new file mode 100644 index 0000000..affc56f --- /dev/null +++ b/src/uni_modules/uni-number-box/readme.md @@ -0,0 +1,13 @@ + + +## NumberBox 数字输入框 +> **组件名:uni-number-box** +> 代码块: `uNumberBox` + + +带加减按钮的数字输入框。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-number-box) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/src/uni_modules/uni-pagination/changelog.md b/src/uni_modules/uni-pagination/changelog.md new file mode 100644 index 0000000..2e94adc --- /dev/null +++ b/src/uni_modules/uni-pagination/changelog.md @@ -0,0 +1,27 @@ +## 1.2.4(2022-09-19) +- 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- 修复,未对移动端当前页文字做主题色适配。 +## 1.2.3(2022-09-15) +- 修复未使用 uni-scss 主题色的 bug。 +## 1.2.2(2022-07-06) +- 修复 es 语言 i18n 错误 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-pagination](https://uniapp.dcloud.io/component/uniui/uni-pagination) +## 1.1.2(2021-10-08) +- 修复 current 、value 属性未监听,导致高亮样式失效的 bug +## 1.1.1(2021-08-20) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-12) +- 新增 PC 和 移动端适配不同的 ui +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json new file mode 100644 index 0000000..d6e2897 --- /dev/null +++ b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "prev", + "uni-pagination.nextText": "next", + "uni-pagination.piecePerPage": "piece/page" +} diff --git a/src/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json new file mode 100644 index 0000000..604a113 --- /dev/null +++ b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "anterior", + "uni-pagination.nextText": "prxima", + "uni-pagination.piecePerPage": "Artculo/Pgina" +} diff --git a/src/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json new file mode 100644 index 0000000..a7a0c77 --- /dev/null +++ b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "précédente", + "uni-pagination.nextText": "suivante", + "uni-pagination.piecePerPage": "Articles/Pages" +} diff --git a/src/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/src/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json new file mode 100644 index 0000000..782bbe4 --- /dev/null +++ b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一页", + "uni-pagination.nextText": "下一页", + "uni-pagination.piecePerPage": "条/页" +} diff --git a/src/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json new file mode 100644 index 0000000..180fddb --- /dev/null +++ b/src/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一頁", + "uni-pagination.nextText": "下一頁", + "uni-pagination.piecePerPage": "條/頁" +} diff --git a/src/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue b/src/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue new file mode 100644 index 0000000..5305b5f --- /dev/null +++ b/src/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue @@ -0,0 +1,465 @@ + + + + + diff --git a/src/uni_modules/uni-pagination/package.json b/src/uni_modules/uni-pagination/package.json new file mode 100644 index 0000000..862d5ab --- /dev/null +++ b/src/uni_modules/uni-pagination/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-pagination", + "displayName": "uni-pagination 分页器", + "version": "1.2.4", + "description": "Pagination 分页器组件,用于展示页码、请求数据等。", + "keywords": [ + "uni-ui", + "uniui", + "分页器", + "页码" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-pagination/readme.md b/src/uni_modules/uni-pagination/readme.md new file mode 100644 index 0000000..97ea1d6 --- /dev/null +++ b/src/uni_modules/uni-pagination/readme.md @@ -0,0 +1,11 @@ + + +## Pagination 分页器 +> **组件名:uni-pagination** +> 代码块: `uPagination` + + +分页器组件,用于展示页码、请求数据等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-pagination) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/src/uni_modules/uni-popup/changelog.md b/src/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..98d9d08 --- /dev/null +++ b/src/uni_modules/uni-popup/changelog.md @@ -0,0 +1,70 @@ +## 1.8.4(2023-11-15) +- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close` +## 1.8.3(2023-04-17) +- 修复 uni-popup 重复打开时的 bug +## 1.8.2(2023-02-02) +- uni-popup-dialog 组件新增 inputType 属性 +## 1.8.1(2022-12-01) +- 修复 nvue 下 v-show 报错 +## 1.8.0(2022-11-29) +- 优化 主题样式 +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/src/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/src/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/src/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/src/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..b5eee79 --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/src/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/src/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/src/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..5be7624 --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/src/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/src/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/src/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/src/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/src/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/src/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/src/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/src/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/src/uni_modules/uni-popup/components/uni-popup/keypress.js b/src/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/src/uni_modules/uni-popup/components/uni-popup/popup.js b/src/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/src/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue b/src/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue new file mode 100644 index 0000000..5eb8d5b --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/src/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/src/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..4fae089 --- /dev/null +++ b/src/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,473 @@ + + + + diff --git a/src/uni_modules/uni-popup/package.json b/src/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..c3f3d1c --- /dev/null +++ b/src/uni_modules/uni-popup/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.8.4", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-popup/readme.md b/src/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/src/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/src/uni_modules/uni-rate/changelog.md b/src/uni_modules/uni-rate/changelog.md new file mode 100644 index 0000000..8a98a61 --- /dev/null +++ b/src/uni_modules/uni-rate/changelog.md @@ -0,0 +1,25 @@ +## 1.3.1(2022-02-25) +- 修复 条件判断 `NaN` 错误的 bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-rate](https://uniapp.dcloud.io/component/uniui/uni-rate) +## 1.2.2(2021-09-10) +- 优化 默认值修改为 0 颗星 +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-05-12) +- 新增 组件示例地址 +## 1.1.1(2021-04-21) +- 修复 布局变化后 uni-rate 星星计算不准确的 bug +- 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +## 1.1.0(2021-04-16) +- 修复 uni-rate 属性 margin 值为 string 组件失效的 bug + +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 支持 pc 端 diff --git a/src/uni_modules/uni-rate/components/uni-rate/uni-rate.vue b/src/uni_modules/uni-rate/components/uni-rate/uni-rate.vue new file mode 100644 index 0000000..857f5f9 --- /dev/null +++ b/src/uni_modules/uni-rate/components/uni-rate/uni-rate.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/src/uni_modules/uni-rate/package.json b/src/uni_modules/uni-rate/package.json new file mode 100644 index 0000000..64e8e33 --- /dev/null +++ b/src/uni_modules/uni-rate/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-rate", + "displayName": "uni-rate 评分", + "version": "1.3.1", + "description": "Rate 评分组件,可自定义评分星星图标的大小、间隔、评分数。", + "keywords": [ + "uni-ui", + "uniui", + "评分" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-rate/readme.md b/src/uni_modules/uni-rate/readme.md new file mode 100644 index 0000000..eae7b5c --- /dev/null +++ b/src/uni_modules/uni-rate/readme.md @@ -0,0 +1,12 @@ + + +## Rate 评分 +> **组件名:uni-rate** +> 代码块: `uRate` +> 关联组件:`uni-icons` + + +评分组件,多用于购买商品后,对商品进行评价等场景 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-rate) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-row/changelog.md b/src/uni_modules/uni-row/changelog.md new file mode 100644 index 0000000..5b465bc --- /dev/null +++ b/src/uni_modules/uni-row/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-row](https://uniapp.dcloud.io/component/uniui/uni-row) +## 0.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 新增uni-row组件 diff --git a/src/uni_modules/uni-row/components/uni-col/uni-col.vue b/src/uni_modules/uni-row/components/uni-col/uni-col.vue new file mode 100644 index 0000000..84e2deb --- /dev/null +++ b/src/uni_modules/uni-row/components/uni-col/uni-col.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/src/uni_modules/uni-row/components/uni-row/uni-row.vue b/src/uni_modules/uni-row/components/uni-row/uni-row.vue new file mode 100644 index 0000000..f8e8542 --- /dev/null +++ b/src/uni_modules/uni-row/components/uni-row/uni-row.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/src/uni_modules/uni-row/package.json b/src/uni_modules/uni-row/package.json new file mode 100644 index 0000000..3f52fa6 --- /dev/null +++ b/src/uni_modules/uni-row/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-row", + "displayName": "uni-row 布局-行", + "version": "1.0.0", + "description": "流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。", + "keywords": [ + "uni-ui", + "uniui", + "栅格", + "布局", + "layout" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "u" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-row/readme.md b/src/uni_modules/uni-row/readme.md new file mode 100644 index 0000000..3c9c8b9 --- /dev/null +++ b/src/uni_modules/uni-row/readme.md @@ -0,0 +1,10 @@ +## Layout 布局 + +> **组件名 uni-row、uni-col** +> 代码块: `uRow`、`uCol` + + +流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-row) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-scss/changelog.md b/src/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/src/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/src/uni_modules/uni-scss/index.scss b/src/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/src/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/src/uni_modules/uni-scss/package.json b/src/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/src/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-scss/readme.md b/src/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/src/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-scss/styles/index.scss b/src/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/src/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/src/uni_modules/uni-scss/styles/setting/_border.scss b/src/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/src/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/src/uni_modules/uni-scss/styles/setting/_color.scss b/src/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/src/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/src/uni_modules/uni-scss/styles/setting/_radius.scss b/src/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/src/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/src/uni_modules/uni-scss/styles/setting/_space.scss b/src/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/src/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-scss/styles/setting/_styles.scss b/src/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/src/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/src/uni_modules/uni-scss/styles/setting/_text.scss b/src/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/src/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/src/uni_modules/uni-scss/styles/setting/_variables.scss b/src/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/src/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/src/uni_modules/uni-scss/styles/tools/functions.scss b/src/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/src/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/src/uni_modules/uni-scss/theme.scss b/src/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/src/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/src/uni_modules/uni-scss/variables.scss b/src/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/src/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/src/uni_modules/uni-search-bar/changelog.md b/src/uni_modules/uni-search-bar/changelog.md new file mode 100644 index 0000000..a01fcf2 --- /dev/null +++ b/src/uni_modules/uni-search-bar/changelog.md @@ -0,0 +1,35 @@ +## 1.2.4(2023-05-09) +- 修复 i18n 国际化不正确的 Bug +## 1.2.3(2022-05-24) +- 新增 readonly 属性,组件只读 +## 1.2.2(2022-05-06) +- 修复 vue3 input 事件不生效的bug +## 1.2.1(2022-05-06) +- 修复 多余代码导致的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-search-bar](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +## 1.1.2(2021-08-30) +- 修复 value 属性与 modelValue 属性不兼容的Bug +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 项目示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-04-15) +- uni-ui 新增 uni-search-bar 的 focus 事件 + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持双向绑定 +- 更改 input 事件的返回值,e={value:Number} --> e=value +- 新增 支持图标插槽 +- 新增 支持 clear、blur 事件 +- 新增 支持 focus 属性 +- 去掉组件背景色 diff --git a/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json b/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json new file mode 100644 index 0000000..dd083a5 --- /dev/null +++ b/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "Search enter content" +} \ No newline at end of file diff --git a/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js b/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json b/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json new file mode 100644 index 0000000..d2a1ced --- /dev/null +++ b/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "取消", + "uni-search-bar.placeholder": "请输入搜索内容" +} diff --git a/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json b/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json new file mode 100644 index 0000000..f1c96bc --- /dev/null +++ b/src/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "取消", + "uni-search-bar.placeholder": "請輸入搜索內容" +} diff --git a/src/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue b/src/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue new file mode 100644 index 0000000..e0a7372 --- /dev/null +++ b/src/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/src/uni_modules/uni-search-bar/package.json b/src/uni_modules/uni-search-bar/package.json new file mode 100644 index 0000000..ede02ef --- /dev/null +++ b/src/uni_modules/uni-search-bar/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-search-bar", + "displayName": "uni-search-bar 搜索栏", + "version": "1.2.4", + "description": "搜索栏组件,通常用于搜索商品、文章等", + "keywords": [ + "uni-ui", + "uniui", + "搜索框", + "搜索栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-search-bar/readme.md b/src/uni_modules/uni-search-bar/readme.md new file mode 100644 index 0000000..253092f --- /dev/null +++ b/src/uni_modules/uni-search-bar/readme.md @@ -0,0 +1,14 @@ + + +## SearchBar 搜索栏 + +> **组件名:uni-search-bar** +> 代码块: `uSearchBar` + + +搜索栏组件 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/src/uni_modules/uni-section/changelog.md b/src/uni_modules/uni-section/changelog.md new file mode 100644 index 0000000..738f2b3 --- /dev/null +++ b/src/uni_modules/uni-section/changelog.md @@ -0,0 +1,2 @@ +## 0.0.1(2022-07-22) +- 初始化 diff --git a/src/uni_modules/uni-section/components/uni-section/uni-section.vue b/src/uni_modules/uni-section/components/uni-section/uni-section.vue new file mode 100644 index 0000000..9a52e0b --- /dev/null +++ b/src/uni_modules/uni-section/components/uni-section/uni-section.vue @@ -0,0 +1,167 @@ + + + + diff --git a/src/uni_modules/uni-section/package.json b/src/uni_modules/uni-section/package.json new file mode 100644 index 0000000..0a31fb5 --- /dev/null +++ b/src/uni_modules/uni-section/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-section", + "displayName": "uni-section 标题栏", + "version": "0.0.1", + "description": "标题栏组件", + "keywords": [ + "uni-ui", + "uniui", + "标题栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-section/readme.md b/src/uni_modules/uni-section/readme.md new file mode 100644 index 0000000..d47faab --- /dev/null +++ b/src/uni_modules/uni-section/readme.md @@ -0,0 +1,8 @@ +## Section 标题栏 +> **组件名:uni-section** +> 代码块: `uSection` + +uni-section 组件主要用于文章、列表详情等标题展示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-section) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/src/uni_modules/uni-segmented-control/changelog.md b/src/uni_modules/uni-segmented-control/changelog.md new file mode 100644 index 0000000..a44385d --- /dev/null +++ b/src/uni_modules/uni-segmented-control/changelog.md @@ -0,0 +1,9 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-segmented-control](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-05-12) +- 新增 项目示例地址 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue b/src/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue new file mode 100644 index 0000000..044a495 --- /dev/null +++ b/src/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/uni_modules/uni-segmented-control/package.json b/src/uni_modules/uni-segmented-control/package.json new file mode 100644 index 0000000..6cae41d --- /dev/null +++ b/src/uni_modules/uni-segmented-control/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-segmented-control", + "displayName": "uni-segmented-control 分段器", + "version": "1.2.0", + "description": "分段器由至少 2 个分段控件组成,用作不同视图的显示", + "keywords": [ + "uni-ui", + "uniui", + "分段器", + "segement", + "顶部选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-segmented-control/readme.md b/src/uni_modules/uni-segmented-control/readme.md new file mode 100644 index 0000000..3527b03 --- /dev/null +++ b/src/uni_modules/uni-segmented-control/readme.md @@ -0,0 +1,13 @@ + + +## SegmentedControl 分段器 +> **组件名:uni-segmented-control** +> 代码块: `uSegmentedControl` + + +用作不同视图的显示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/src/uni_modules/uni-steps/changelog.md b/src/uni_modules/uni-steps/changelog.md new file mode 100644 index 0000000..cb9d367 --- /dev/null +++ b/src/uni_modules/uni-steps/changelog.md @@ -0,0 +1,16 @@ +## 1.1.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-steps](https://uniapp.dcloud.io/component/uniui/uni-steps) +## 1.0.8(2021-05-12) +- 新增 项目示例地址 +## 1.0.7(2021-05-06) +- 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-steps/components/uni-steps/uni-steps.vue b/src/uni_modules/uni-steps/components/uni-steps/uni-steps.vue new file mode 100644 index 0000000..a6c8f28 --- /dev/null +++ b/src/uni_modules/uni-steps/components/uni-steps/uni-steps.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/src/uni_modules/uni-steps/package.json b/src/uni_modules/uni-steps/package.json new file mode 100644 index 0000000..c687b40 --- /dev/null +++ b/src/uni_modules/uni-steps/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-steps", + "displayName": "uni-steps 步骤条", + "version": "1.1.1", + "description": "步骤条组件,提供横向和纵向两种布局格式。", + "keywords": [ + "uni-ui", + "uniui", + "步骤条", + "时间轴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-steps/readme.md b/src/uni_modules/uni-steps/readme.md new file mode 100644 index 0000000..da7a4bf --- /dev/null +++ b/src/uni_modules/uni-steps/readme.md @@ -0,0 +1,13 @@ + + +## Steps 步骤条 +> **组件名:uni-steps** +> 代码块: `uSteps` + + +步骤条,常用于显示进度 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-steps) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/src/uni_modules/uni-swipe-action/changelog.md b/src/uni_modules/uni-swipe-action/changelog.md new file mode 100644 index 0000000..e28472f --- /dev/null +++ b/src/uni_modules/uni-swipe-action/changelog.md @@ -0,0 +1,47 @@ +## 1.3.10(2024-01-17) +- 修复 点击按钮时,按钮会被点击穿透导致自动收缩的 bug(兼容阿里/百度/抖音小程序) +## 1.3.9(2024-01-17) +- 修复 点击按钮时,按钮会被点击穿透导致自动收缩的 bug +## 1.3.8(2023-04-13) +- 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +## 1.3.7(2022-06-06) +- 修复 vue3 下使用组件不能正常运行的Bug +## 1.3.6(2022-05-31) +- 修复 h5端点击click触发两次的Bug +## 1.3.5(2022-05-23) +- 修复 isPC 找不到的Bug +## 1.3.4(2022-05-19) +- 修复 在 nvue 下 disabled 失效的bug +## 1.3.3(2022-03-31) +- 修复 按钮字体大小不能设置的bug +## 1.3.2(2022-03-16) +- 修复 h5和app端下报el错误的bug +## 1.3.1(2022-03-07) +- 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swipe-action](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +## 1.2.4(2021-08-20) +- 优化 close-all 方法 +## 1.2.3(2021-08-20) +- 新增 close-all 方法,关闭所有已打开的组件 +## 1.2.2(2021-08-17) +- 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.2.1(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.1.10(2021-06-17) +- 修复 按钮点击执行两次的bug +## 1.1.9(2021-05-12) +- 新增 项目示例地址 +## 1.1.8(2021-03-26) +- 修复 微信小程序 nv_navigator is not defined 报错的bug +## 1.1.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 左侧滑动 +- 新增 插槽使用方式 +- 新增 threshold 属性,可以控制滑动缺省值 +- 优化 长列表滚动性能 +- 修复 滚动页面时触发组件滑动的Bug diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js new file mode 100644 index 0000000..707e432 --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js @@ -0,0 +1,302 @@ +let bindIngXMixins = {} + +// #ifdef APP-NVUE +const BindingX = uni.requireNativePlugin('bindingx'); +const dom = uni.requireNativePlugin('dom'); +const animation = uni.requireNativePlugin('animation'); + +bindIngXMixins = { + data() { + return {} + }, + + watch: { + show(newVal) { + if (this.autoClose) return + if (this.stop) return + this.stop = true + if (newVal) { + this.open(newVal) + } else { + this.close() + } + }, + leftOptions() { + this.getSelectorQuery() + this.init() + }, + rightOptions(newVal) { + this.init() + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.box = this.getEl(this.$refs['selector-box--hock']) + this.selector = this.getEl(this.$refs['selector-content--hock']); + this.leftButton = this.getEl(this.$refs['selector-left-button--hock']); + this.rightButton = this.getEl(this.$refs['selector-right-button--hock']); + this.init() + }, + // beforeDestroy() { + // this.swipeaction.children.forEach((item, index) => { + // if (item === this) { + // this.swipeaction.children.splice(index, 1) + // } + // }) + // }, + methods: { + init() { + this.$nextTick(() => { + this.x = 0 + this.button = { + show: false + } + setTimeout(() => { + this.getSelectorQuery() + }, 200) + }) + }, + onClick(index, item, position) { + this.$emit('click', { + content: item, + index, + position + }) + }, + touchstart(e) { + // fix by mehaotian 禁止滑动 + if (this.disabled) return + // 每次只触发一次,避免多次监听造成闪烁 + if (this.stop) return + this.stop = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + let expression = this.range(this.x, -rightWidth, leftWidth) + let leftExpression = this.range(this.x - leftWidth, -leftWidth, 0) + let rightExpression = this.range(this.x + rightWidth, 0, rightWidth) + + this.eventpan = BindingX.bind({ + anchor: this.box, + eventType: 'pan', + props: [{ + element: this.selector, + property: 'transform.translateX', + expression + }, { + element: this.leftButton, + property: 'transform.translateX', + expression: leftExpression + }, { + element: this.rightButton, + property: 'transform.translateX', + expression: rightExpression + }, ] + }, (e) => { + // nope + if (e.state === 'end') { + this.x = e.deltaX + this.x; + this.isclick = true + this.bindTiming(e.deltaX) + } + }); + }, + touchend(e) { + if (this.isopen !== 'none' && !this.isclick) { + this.open('none') + } + }, + bindTiming(x) { + const left = this.x + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + const threshold = this.threshold + if (!this.isopen || this.isopen === 'none') { + if (left > threshold) { + this.open('left') + } else if (left < -threshold) { + this.open('right') + } else { + this.open('none') + } + } else { + if ((x > -leftWidth && x < 0) || x > rightWidth) { + if ((x > -threshold && x < 0) || (x - rightWidth > threshold)) { + this.open('left') + } else { + this.open('none') + } + } else { + if ((x < threshold && x > 0) || (x + leftWidth < -threshold)) { + this.open('right') + } else { + this.open('none') + } + } + } + }, + + /** + * 移动范围 + * @param {Object} num + * @param {Object} mix + * @param {Object} max + */ + range(num, mix, max) { + return `min(max(x+${num}, ${mix}), ${max})` + }, + + /** + * 开启swipe + */ + open(type) { + this.animation(type) + }, + + /** + * 关闭swipe + */ + close() { + this.animation('none') + }, + + /** + * 开启关闭动画 + * @param {Object} type + */ + animation(type) { + const time = 300 + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + if (this.eventpan && this.eventpan.token) { + BindingX.unbind({ + token: this.eventpan.token, + eventType: 'pan' + }) + } + + switch (type) { + case 'left': + Promise.all([ + this.move(this.selector, leftWidth), + this.move(this.leftButton, 0), + this.move(this.rightButton, rightWidth * 2) + ]).then(() => { + this.setEmit(leftWidth, type) + }) + break + case 'right': + Promise.all([ + this.move(this.selector, -rightWidth), + this.move(this.leftButton, -leftWidth * 2), + this.move(this.rightButton, 0) + ]).then(() => { + this.setEmit(-rightWidth, type) + }) + break + default: + Promise.all([ + this.move(this.selector, 0), + this.move(this.leftButton, -leftWidth), + this.move(this.rightButton, rightWidth) + ]).then(() => { + this.setEmit(0, type) + }) + + } + }, + setEmit(x, type) { + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + this.isopen = this.isopen || 'none' + this.stop = false + this.isclick = false + // 只有状态不一致才会返回结果 + if (this.isopen !== type && this.x !== x) { + if (type === 'left' && leftWidth > 0) { + this.$emit('change', 'left') + } + if (type === 'right' && rightWidth > 0) { + this.$emit('change', 'right') + } + if (type === 'none') { + this.$emit('change', 'none') + } + } + this.x = x + this.isopen = type + }, + move(ref, value) { + return new Promise((resolve, reject) => { + animation.transition(ref, { + styles: { + transform: `translateX(${value})`, + }, + duration: 150, //ms + timingFunction: 'linear', + needLayout: false, + delay: 0 //ms + }, function(res) { + resolve(res) + }) + }) + + }, + + /** + * 获取ref + * @param {Object} el + */ + getEl(el) { + return el.ref + }, + /** + * 获取节点信息 + */ + getSelectorQuery() { + Promise.all([ + this.getDom('left'), + this.getDom('right'), + ]).then((data) => { + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + + if (show === 'none') { + // this.close() + } else { + this.open(show) + } + + }) + + }, + getDom(str) { + return new Promise((resolve, reject) => { + dom.getComponentRect(this.$refs[`selector-${str}-button--hock`], (data) => { + if (data) { + this.button[str] = data.size + resolve(data) + } else { + reject() + } + }) + }) + } + } +} + +// #endif + +export default bindIngXMixins diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js new file mode 100644 index 0000000..917cb48 --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js @@ -0,0 +1,12 @@ +export function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (let v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js new file mode 100644 index 0000000..35c796b --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js @@ -0,0 +1,195 @@ +export default { + data() { + return { + x: 0, + transition: false, + width: 0, + viewWidth: 0, + swipeShow: 0 + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + if (newVal && newVal !== 'none') { + this.transition = true + this.open(newVal) + } else { + this.close() + } + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.isopen = false + setTimeout(() => { + this.getQuerySelect() + }, 50) + }, + methods: { + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + /** + * 移动触发 + * @param {Object} e + */ + onChange(e) { + this.moveX = e.detail.x + this.isclose = false + }, + touchstart(e) { + this.transition = false + this.isclose = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + touchmove(e) {}, + touchend(e) { + // 0的位置什么都不执行 + if (this.isclose && this.isopen === 'none') return + if (this.isclose && this.isopen !== 'none') { + this.transition = true + this.close() + } else { + this.move(this.moveX + this.leftWidth) + } + }, + + /** + * 移动 + * @param {Object} moveX + */ + move(moveX) { + // 打开关闭的处理逻辑不太一样 + this.transition = true + // 未打开状态 + if (!this.isopen || this.isopen === 'none') { + if (moveX > this.threshold) { + this.open('left') + } else if (moveX < -this.threshold) { + this.open('right') + } else { + this.close() + } + } else { + if (moveX < 0 && moveX < this.rightWidth) { + const rightX = this.rightWidth + moveX + if (rightX < this.threshold) { + this.open('right') + } else { + this.close() + } + } else if (moveX > 0 && moveX < this.leftWidth) { + const leftX = this.leftWidth - moveX + if (leftX < this.threshold) { + this.open('left') + } else { + this.close() + } + } + + } + + }, + + /** + * 打开 + */ + open(type) { + this.x = this.moveX + this.animation(type) + }, + + /** + * 关闭 + */ + close() { + this.x = this.moveX + // TODO 解决 x 值不更新的问题,所以会多触发一次 nextTick ,待优化 + this.$nextTick(() => { + this.x = -this.leftWidth + if (this.isopen !== 'none') { + this.$emit('change', 'none') + } + this.isopen = 'none' + }) + }, + + /** + * 执行结束动画 + * @param {Object} type + */ + animation(type) { + this.$nextTick(() => { + if (type === 'left') { + this.x = 0 + } else { + this.x = -this.rightWidth - this.leftWidth + } + + if (this.isopen !== type) { + this.$emit('change', type) + } + this.isopen = type + }) + + }, + getSlide(x) {}, + getQuerySelect() { + const query = uni.createSelectorQuery().in(this); + query.selectAll('.movable-view--hock').boundingClientRect(data => { + this.leftWidth = data[1].width + this.rightWidth = data[2].width + this.width = data[0].width + this.viewWidth = this.width + this.rightWidth + this.leftWidth + if (this.leftWidth === 0) { + // TODO 疑似bug ,初始化的时候如果x 是0,会导致移动位置错误,所以让元素超出一点 + this.x = -0.1 + } else { + this.x = -this.leftWidth + } + this.moveX = this.x + this.$nextTick(() => { + this.swipeShow = 1 + }) + + if (!this.buttonWidth) { + this.disabledView = true + } + + if (this.autoClose) return + if (this.show !== 'none') { + this.transition = true + this.open(this.shows) + } + }).exec(); + + } + } +} diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js new file mode 100644 index 0000000..d389bce --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js @@ -0,0 +1,260 @@ +let otherMixins = {} + +// #ifndef APP-PLUS|| MP-WEIXIN || H5 +const MIN_DISTANCE = 10; +otherMixins = { + data() { + // TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug + const elClass = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}` + return { + uniShow: false, + left: 0, + buttonShow: 'none', + ani: false, + moveLeft: '', + elClass + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + left() { + this.moveLeft = `translateX(${this.left}px)` + }, + buttonShow(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + leftOptions() { + this.init() + }, + rightOptions() { + this.init() + } + }, + mounted() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + this.init() + }, + methods: { + init() { + clearTimeout(this.timer) + this.timer = setTimeout(() => { + this.getSelectorQuery() + }, 100) + // 移动距离 + this.left = 0 + this.x = 0 + }, + + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + touchstart(e) { + if (this.disabled) return + this.ani = false + this.x = this.left || 0 + this.stopTouchStart(e) + this.autoClose && this.closeSwipe() + }, + touchmove(e) { + if (this.disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e); + if (this.direction !== 'horizontal') { + return; + } + this.move(this.x + this.deltaX) + return false + }, + touchend() { + if (this.disabled) return + this.moveDirection(this.left) + }, + /** + * 设置移动距离 + * @param {Object} value + */ + move(value) { + value = value || 0 + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + // 获取可滑动范围 + this.left = this.range(value, -rightWidth, leftWidth); + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + */ + moveDirection(left) { + const threshold = this.threshold + const isopen = this.isopen || 'none' + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + if (this.deltaX === 0) { + this.openState('none') + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > + 0 && rightWidth + + left < threshold)) { + // right + this.openState('right') + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > + 0 && + leftWidth - left < threshold)) { + // left + this.openState('left') + } else { + // default + this.openState('none') + } + }, + + /** + * 开启状态 + * @param {Boolean} type + */ + openState(type) { + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + let left = '' + this.isopen = this.isopen ? this.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + + if (this.isopen !== type) { + this.throttle = true + this.$emit('change', type) + } + + this.isopen = type + // 添加动画类 + this.ani = true + this.$nextTick(() => { + this.move(left) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 + }, + close() { + this.openState('none') + }, + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus() { + this.direction = ''; + this.deltaX = 0; + this.deltaY = 0; + this.offsetX = 0; + this.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event) { + this.resetTouchStatus(); + const touch = event.touches[0]; + this.startX = touch.clientX; + this.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event) { + const touch = event.touches[0]; + this.deltaX = touch.clientX - this.startX; + this.deltaY = touch.clientY - this.startY; + this.offsetX = Math.abs(this.deltaX); + this.offsetY = Math.abs(this.deltaY); + this.direction = this.direction || this.getDirection(this.offsetX, this.offsetY); + }, + + getSelectorQuery() { + const views = uni.createSelectorQuery().in(this) + views + .selectAll('.' + this.elClass) + .boundingClientRect(data => { + if (data.length === 0) return + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + this.leftWidth = data[0].width || 0 + this.rightWidth = data[1].width || 0 + this.buttonShow = show + }) + .exec() + } + } +} + +// #endif + +export default otherMixins diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js new file mode 100644 index 0000000..08de1c9 --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js @@ -0,0 +1,84 @@ +let mpMixins = {} +let is_pc = null +// #ifdef H5 +import { + isPC +} from "./isPC" +is_pc = isPC() +// #endif +// #ifdef APP-VUE|| MP-WEIXIN || H5 + +mpMixins = { + data() { + return { + is_show: 'none' + } + }, + watch: { + show(newVal) { + this.is_show = this.show + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.is_show = this.show + }, + methods: { + // wxs 中调用 + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + + change(e) { + this.$emit('change', e.open) + if (this.is_show !== e.open) { + this.is_show = e.open + } + }, + + appTouchStart(e) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + onClickForPC(index, item, position) { + if (!is_pc) return + // #ifdef H5 + this.$emit('click', { + content: item, + index, + position + }) + // #endif + } + } +} + +// #endif +export default mpMixins diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js new file mode 100644 index 0000000..78f0ec6 --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js @@ -0,0 +1,270 @@ +const MIN_DISTANCE = 10; +export default { + showWatch(newVal, oldVal, ownerInstance, instance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + if (!$el) return + this.getDom(instance, ownerInstance, self) + if (newVal && newVal !== 'none') { + this.openState(newVal, instance, ownerInstance, self) + return + } + + if (state.left) { + this.openState('none', instance, ownerInstance, self) + } + this.resetTouchStatus(instance, self) + }, + + /** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ + touchstart(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state; + this.getDom(instance, ownerInstance, self) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + this.stopTouchStart(e, ownerInstance, self) + }, + + /** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchmove(e, ownerInstance, self) { + let instance = e.instance; + // 删除之后已经那不到实例了 + if (!instance) return; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e, self); + if (state.direction !== 'horizontal') { + return; + } + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + let x = state.x + state.deltaX + this.move(x, instance, ownerInstance, self) + }, + + /** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchend(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + this.moveDirection(state.left, instance, ownerInstance, self) + + }, + + /** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ + move(value, instance, ownerInstance, self) { + value = value || 0 + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = this.range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + + }, + + /** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ + getDom(instance, ownerInstance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + var leftDom = $el.querySelector('.button-group--left') + var rightDom = $el.querySelector('.button-group--right') + + state.leftWidth = leftDom.offsetWidth || 0 + state.rightWidth = rightDom.offsetWidth || 0 + state.threshold = instance.getDataset().threshold + }, + + getDisabledType(value) { + return (typeof(value) === 'string' ? JSON.parse(value) : value) || false; + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + + + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ + moveDirection(left, ins, ownerInstance, self) { + var state = self.state + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + this.openState('none', ins, ownerInstance, self) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + this.openState('right', ins, ownerInstance, self) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + this.openState('left', ins, ownerInstance, self) + } else { + // default + this.openState('none', ins, ownerInstance, self) + } + }, + + + /** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ + openState(type, ins, ownerInstance, self) { + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + let left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(() => { + ins.addClass('ani'); + this.move(left, ins, ownerInstance, self) + }) + }, + + + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus(instance, self) { + let state = self.state; + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event, ownerInstance, self) { + let instance = event.instance; + let state = self.state + this.resetTouchStatus(instance, self); + var touch = event.touches[0]; + state.startX = touch.clientX; + state.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event, self) { + let instance = event.instance; + let state = self.state; + let touch = event.touches[0]; + + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || this.getDirection(state.offsetX, state.offsetY); + } +} diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue new file mode 100644 index 0000000..a816e92 --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue @@ -0,0 +1,348 @@ + + + + + + diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs new file mode 100644 index 0000000..b394244 --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs @@ -0,0 +1,341 @@ +var MIN_DISTANCE = 10; + +/** + * 判断当前是否为H5、app-vue + */ +var IS_HTML5 = false +if (typeof window === 'object') IS_HTML5 = true + +/** + * 监听页面内值的变化,主要用于动态开关swipe-action + * @param {Object} newValue + * @param {Object} oldValue + * @param {Object} ownerInstance + * @param {Object} instance + */ +function showWatch(newVal, oldVal, ownerInstance, instance) { + var state = instance.getState() + getDom(instance, ownerInstance) + if (newVal && newVal !== 'none') { + openState(newVal, instance, ownerInstance) + return + } + + if (state.left) { + openState('none', instance, ownerInstance) + } + resetTouchStatus(instance) +} + +/** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ +function touchstart(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState(); + getDom(instance, ownerInstance) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + stopTouchStart(e, ownerInstance) +} + +/** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchmove(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 是否可以滑动页面 + stopTouchMove(e); + if (state.direction !== 'horizontal') { + return; + } + + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + + move(state.x + state.deltaX, instance, ownerInstance) +} + +/** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchend(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + moveDirection(state.left, instance, ownerInstance) + +} + +/** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function move(value, instance, ownerInstance) { + value = value || 0 + var state = instance.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + +} + +/** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ +function getDom(instance, ownerInstance) { + var state = instance.getState() + var leftDom = ownerInstance.selectComponent('.button-group--left') + var rightDom = ownerInstance.selectComponent('.button-group--right') + var leftStyles = { + width: 0 + } + var rightStyles = { + width: 0 + } + leftStyles = leftDom.getBoundingClientRect() + rightStyles = rightDom.getBoundingClientRect() + + state.leftWidth = leftStyles.width || 0 + state.rightWidth = rightStyles.width || 0 + state.threshold = instance.getDataset().threshold +} + +/** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} + + +/** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ +function moveDirection(left, ins, ownerInstance) { + var state = ins.getState() + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + openState('none', ins, ownerInstance) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + openState('right', ins, ownerInstance) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + openState('left', ins, ownerInstance) + } else { + // default + openState('none', ins, ownerInstance) + } +} + + +/** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ +function openState(type, ins, ownerInstance) { + var state = ins.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + var left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(function() { + ins.addClass('ani'); + move(left, ins, ownerInstance) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 +} + + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; +} + +/** + * 重置滑动状态 + * @param {Object} event + */ +function resetTouchStatus(instance) { + var state = instance.getState(); + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; +} + +/** + * 设置滑动开始位置 + * @param {Object} event + */ +function stopTouchStart(event) { + var instance = event.instance; + var state = instance.getState(); + resetTouchStatus(instance); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.startX = touch.clientX; + state.startY = touch.clientY; +} + +/** + * 滑动中,是否禁止打开 + * @param {Object} event + */ +function stopTouchMove(event) { + var instance = event.instance; + var state = instance.getState(); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || getDirection(state.offsetX, state.offsetY); +} + +function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} + +var movable = false + +function mousedown(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchstart(e, ins) + movable = true +} + +function mousemove(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + if (!movable) return + touchmove(e, ins) +} + +function mouseup(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchend(e, ins) + movable = false +} + +function mouseleave(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + movable = false +} + +module.exports = { + showWatch: showWatch, + touchstart: touchstart, + touchmove: touchmove, + touchend: touchend, + mousedown: mousedown, + mousemove: mousemove, + mouseup: mouseup, + mouseleave: mouseleave +} diff --git a/src/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue b/src/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue new file mode 100644 index 0000000..4971782 --- /dev/null +++ b/src/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/uni_modules/uni-swipe-action/package.json b/src/uni_modules/uni-swipe-action/package.json new file mode 100644 index 0000000..fc5dd8a --- /dev/null +++ b/src/uni_modules/uni-swipe-action/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-swipe-action", + "displayName": "uni-swipe-action 滑动操作", + "version": "1.3.10", + "description": "SwipeAction 滑动操作操作组件", + "keywords": [ + "", + "uni-ui", + "uniui", + "滑动删除", + "侧滑删除" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-swipe-action/readme.md b/src/uni_modules/uni-swipe-action/readme.md new file mode 100644 index 0000000..93a5cac --- /dev/null +++ b/src/uni_modules/uni-swipe-action/readme.md @@ -0,0 +1,11 @@ + + +## SwipeAction 滑动操作 +> **组件名:uni-swipe-action** +> 代码块: `uSwipeAction`、`uSwipeActionItem` + + +通过滑动触发选项的容器 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-swiper-dot/changelog.md b/src/uni_modules/uni-swiper-dot/changelog.md new file mode 100644 index 0000000..85cf54d --- /dev/null +++ b/src/uni_modules/uni-swiper-dot/changelog.md @@ -0,0 +1,12 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swiper-dot](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 clickItem 事件,支持指示点控制轮播 +- 新增 支持 pc 可用 diff --git a/src/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue b/src/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue new file mode 100644 index 0000000..e66b6c7 --- /dev/null +++ b/src/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/src/uni_modules/uni-swiper-dot/package.json b/src/uni_modules/uni-swiper-dot/package.json new file mode 100644 index 0000000..f2dd8d2 --- /dev/null +++ b/src/uni_modules/uni-swiper-dot/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swiper-dot", + "displayName": "uni-swiper-dot 轮播图指示点", + "version": "1.2.0", + "description": "自定义轮播图指示点组件", + "keywords": [ + "uni-ui", + "uniui", + "轮播图指示点", + "dot", + "swiper" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-swiper-dot/readme.md b/src/uni_modules/uni-swiper-dot/readme.md new file mode 100644 index 0000000..7d397e2 --- /dev/null +++ b/src/uni_modules/uni-swiper-dot/readme.md @@ -0,0 +1,11 @@ + + +## SwiperDot 轮播图指示点 +> **组件名:uni-swiper-dot** +> 代码块: `uSwiperDot` + + +自定义轮播图指示点 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-table/changelog.md b/src/uni_modules/uni-table/changelog.md new file mode 100644 index 0000000..842211c --- /dev/null +++ b/src/uni_modules/uni-table/changelog.md @@ -0,0 +1,29 @@ +## 1.2.4(2023-12-19) +- 修复 uni-tr只有一列时minWidth计算错误,列变化实时计算更新 +## 1.2.3(2023-03-28) +- 修复 在vue3模式下可能会出现错误的问题 +## 1.2.2(2022-11-29) +- 优化 主题样式 +## 1.2.1(2022-06-06) +- 修复 微信小程序存在无使用组件的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-table](https://uniapp.dcloud.io/component/uniui/uni-table) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-07-08) +- 新增 uni-th 支持 date 日期筛选范围 +## 1.0.6(2021-07-05) +- 新增 uni-th 支持 range 筛选范围 +## 1.0.5(2021-06-28) +- 新增 uni-th 筛选功能 +## 1.0.4(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.3(2021-04-16) +- 新增 sortable 属性,是否开启单列排序 +- 优化 表格多选逻辑 +## 1.0.2(2021-03-22) +- uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-table/components/uni-table/uni-table.vue b/src/uni_modules/uni-table/components/uni-table/uni-table.vue new file mode 100644 index 0000000..21d9527 --- /dev/null +++ b/src/uni_modules/uni-table/components/uni-table/uni-table.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/src/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue b/src/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue new file mode 100644 index 0000000..fbe1bdc --- /dev/null +++ b/src/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/uni_modules/uni-table/components/uni-td/uni-td.vue b/src/uni_modules/uni-table/components/uni-td/uni-td.vue new file mode 100644 index 0000000..9ce93e9 --- /dev/null +++ b/src/uni_modules/uni-table/components/uni-td/uni-td.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/uni_modules/uni-table/components/uni-th/filter-dropdown.vue b/src/uni_modules/uni-table/components/uni-th/filter-dropdown.vue new file mode 100644 index 0000000..df22a71 --- /dev/null +++ b/src/uni_modules/uni-table/components/uni-th/filter-dropdown.vue @@ -0,0 +1,511 @@ + + + + + diff --git a/src/uni_modules/uni-table/components/uni-th/uni-th.vue b/src/uni_modules/uni-table/components/uni-th/uni-th.vue new file mode 100644 index 0000000..14889dd --- /dev/null +++ b/src/uni_modules/uni-table/components/uni-th/uni-th.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/src/uni_modules/uni-table/components/uni-thead/uni-thead.vue b/src/uni_modules/uni-table/components/uni-thead/uni-thead.vue new file mode 100644 index 0000000..0dd18cd --- /dev/null +++ b/src/uni_modules/uni-table/components/uni-thead/uni-thead.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/src/uni_modules/uni-table/components/uni-tr/table-checkbox.vue b/src/uni_modules/uni-table/components/uni-tr/table-checkbox.vue new file mode 100644 index 0000000..1089187 --- /dev/null +++ b/src/uni_modules/uni-table/components/uni-tr/table-checkbox.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/src/uni_modules/uni-table/components/uni-tr/uni-tr.vue b/src/uni_modules/uni-table/components/uni-tr/uni-tr.vue new file mode 100644 index 0000000..4cb85f5 --- /dev/null +++ b/src/uni_modules/uni-table/components/uni-tr/uni-tr.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/src/uni_modules/uni-table/i18n/en.json b/src/uni_modules/uni-table/i18n/en.json new file mode 100644 index 0000000..e32023c --- /dev/null +++ b/src/uni_modules/uni-table/i18n/en.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reset", + "filter-dropdown.search": "Search", + "filter-dropdown.submit": "Submit", + "filter-dropdown.filter": "Filter", + "filter-dropdown.gt": "Greater or equal to", + "filter-dropdown.lt": "Less than or equal to", + "filter-dropdown.date": "Date" +} diff --git a/src/uni_modules/uni-table/i18n/es.json b/src/uni_modules/uni-table/i18n/es.json new file mode 100644 index 0000000..9afd04b --- /dev/null +++ b/src/uni_modules/uni-table/i18n/es.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reiniciar", + "filter-dropdown.search": "Búsqueda", + "filter-dropdown.submit": "Entregar", + "filter-dropdown.filter": "Filtrar", + "filter-dropdown.gt": "Mayor o igual a", + "filter-dropdown.lt": "Menos que o igual a", + "filter-dropdown.date": "Fecha" +} diff --git a/src/uni_modules/uni-table/i18n/fr.json b/src/uni_modules/uni-table/i18n/fr.json new file mode 100644 index 0000000..b006237 --- /dev/null +++ b/src/uni_modules/uni-table/i18n/fr.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Réinitialiser", + "filter-dropdown.search": "Chercher", + "filter-dropdown.submit": "Soumettre", + "filter-dropdown.filter": "Filtre", + "filter-dropdown.gt": "Supérieur ou égal à", + "filter-dropdown.lt": "Inférieur ou égal à", + "filter-dropdown.date": "Date" +} diff --git a/src/uni_modules/uni-table/i18n/index.js b/src/uni_modules/uni-table/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/src/uni_modules/uni-table/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/src/uni_modules/uni-table/i18n/zh-Hans.json b/src/uni_modules/uni-table/i18n/zh-Hans.json new file mode 100644 index 0000000..862af17 --- /dev/null +++ b/src/uni_modules/uni-table/i18n/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "确定", + "filter-dropdown.filter": "筛选", + "filter-dropdown.gt": "大于等于", + "filter-dropdown.lt": "小于等于", + "filter-dropdown.date": "日期范围" +} diff --git a/src/uni_modules/uni-table/i18n/zh-Hant.json b/src/uni_modules/uni-table/i18n/zh-Hant.json new file mode 100644 index 0000000..64f8061 --- /dev/null +++ b/src/uni_modules/uni-table/i18n/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "確定", + "filter-dropdown.filter": "篩選", + "filter-dropdown.gt": "大於等於", + "filter-dropdown.lt": "小於等於", + "filter-dropdown.date": "日期範圍" +} diff --git a/src/uni_modules/uni-table/package.json b/src/uni_modules/uni-table/package.json new file mode 100644 index 0000000..a52821b --- /dev/null +++ b/src/uni_modules/uni-table/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-table", + "displayName": "uni-table 表格", + "version": "1.2.4", + "description": "表格组件,多用于展示多条结构类似的数据,如", + "keywords": [ + "uni-ui", + "uniui", + "table", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-datetime-picker"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "n", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-table/readme.md b/src/uni_modules/uni-table/readme.md new file mode 100644 index 0000000..bb08c79 --- /dev/null +++ b/src/uni_modules/uni-table/readme.md @@ -0,0 +1,13 @@ + + +## Table 表单 +> 组件名:``uni-table``,代码块: `uTable`。 + +用于展示多条结构类似的数据 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + diff --git a/src/uni_modules/uni-tag/changelog.md b/src/uni_modules/uni-tag/changelog.md new file mode 100644 index 0000000..c0c5839 --- /dev/null +++ b/src/uni_modules/uni-tag/changelog.md @@ -0,0 +1,21 @@ +## 2.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-tag](https://uniapp.dcloud.io/component/uniui/uni-tag) +## 2.0.0(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +- 移除 插槽 +- 移除 type 属性的 royal 选项 +## 1.1.1(2021-08-11) +- type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-06-18) +- 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.0.6(2021-06-04) +- 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.0.5(2021-05-10) +- 修复 royal 类型无效的bug +- 修复 uni-tag 宽度不自适应的bug +- 新增 uni-tag 支持属性 custom-style 自定义样式 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-tag/components/uni-tag/uni-tag.vue b/src/uni_modules/uni-tag/components/uni-tag/uni-tag.vue new file mode 100644 index 0000000..418c955 --- /dev/null +++ b/src/uni_modules/uni-tag/components/uni-tag/uni-tag.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/src/uni_modules/uni-tag/package.json b/src/uni_modules/uni-tag/package.json new file mode 100644 index 0000000..1878088 --- /dev/null +++ b/src/uni_modules/uni-tag/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-tag", + "displayName": "uni-tag 标签", + "version": "2.1.0", + "description": "Tag 组件,用于展示1个或多个文字标签,可点击切换选中、不选中的状态。", + "keywords": [ + "uni-ui", + "uniui", + "", + "tag", + "标签" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-tag/readme.md b/src/uni_modules/uni-tag/readme.md new file mode 100644 index 0000000..6e78ff5 --- /dev/null +++ b/src/uni_modules/uni-tag/readme.md @@ -0,0 +1,13 @@ + + +## Tag 标签 +> **组件名:uni-tag** +> 代码块: `uTag` + + +用于展示1个或多个文字标签,可点击切换选中、不选中的状态 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tag) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/src/uni_modules/uni-title/changelog.md b/src/uni_modules/uni-title/changelog.md new file mode 100644 index 0000000..7626216 --- /dev/null +++ b/src/uni_modules/uni-title/changelog.md @@ -0,0 +1,10 @@ +## 1.1.1(2022-05-19) +- 修改组件描述 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-title](https://uniapp.dcloud.io/component/uniui/uni-title) +## 1.0.2(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/src/uni_modules/uni-title/components/uni-title/uni-title.vue b/src/uni_modules/uni-title/components/uni-title/uni-title.vue new file mode 100644 index 0000000..bf4f926 --- /dev/null +++ b/src/uni_modules/uni-title/components/uni-title/uni-title.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/uni_modules/uni-title/package.json b/src/uni_modules/uni-title/package.json new file mode 100644 index 0000000..2249f5a --- /dev/null +++ b/src/uni_modules/uni-title/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-title", + "displayName": "uni-title 章节标题", + "version": "1.1.1", + "description": "章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题", + "keywords": [ + "uni-ui", + "uniui", + "标题", + "章节", + "章节标题", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-title/readme.md b/src/uni_modules/uni-title/readme.md new file mode 100644 index 0000000..0e60b1b --- /dev/null +++ b/src/uni_modules/uni-title/readme.md @@ -0,0 +1,14 @@ + + +## Title 标题 +> **组件名:uni-title** +> 代码块: `uTitle` + + +章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-title) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + diff --git a/src/uni_modules/uni-tooltip/changelog.md b/src/uni_modules/uni-tooltip/changelog.md new file mode 100644 index 0000000..9bd219e --- /dev/null +++ b/src/uni_modules/uni-tooltip/changelog.md @@ -0,0 +1,12 @@ +## 0.2.2(2024-01-15) +- 新增 placement支持设置四个方向:top bottom left right +## 0.2.1(2022-05-09) +- 修复 content 为空时仍然弹出的bug +## 0.2.0(2022-05-07) +**注意:破坏性更新** +- 更新 text 属性变更为 content +- 更新 移除 width 属性 +## 0.1.1(2022-04-27) +- 修复 组件根 text 嵌套组件 warning +## 0.1.0(2022-04-21) +- 初始化 diff --git a/src/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue b/src/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue new file mode 100644 index 0000000..3910bec --- /dev/null +++ b/src/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue @@ -0,0 +1,108 @@ + + + + + + \ No newline at end of file diff --git a/src/uni_modules/uni-tooltip/package.json b/src/uni_modules/uni-tooltip/package.json new file mode 100644 index 0000000..257f341 --- /dev/null +++ b/src/uni_modules/uni-tooltip/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-tooltip", + "displayName": "uni-tooltip 提示文字", + "version": "0.2.2", + "description": "Tooltip 提示文字", + "keywords": [ + "uni-tooltip", + "uni-ui", + "tooltip", + "tip", + "文字提示" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无 ", + "data": "无", + "permissions": "无" + }, + "npmurl": "", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-tooltip/readme.md b/src/uni_modules/uni-tooltip/readme.md new file mode 100644 index 0000000..faafa2e --- /dev/null +++ b/src/uni_modules/uni-tooltip/readme.md @@ -0,0 +1,8 @@ +## Badge 数字角标 +> **组件名:uni-tooltip** +> 代码块: `uTooltip` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tooltip) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/src/uni_modules/uni-transition/changelog.md b/src/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..70c1cd4 --- /dev/null +++ b/src/uni_modules/uni-transition/changelog.md @@ -0,0 +1,22 @@ +## 1.3.2(2023-05-04) +- 修复 NVUE 平台报错的问题 +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/src/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/src/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..8f89b18 --- /dev/null +++ b/src/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,131 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 + this.animation = uni.createAnimation({ + ...options + }) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/src/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/src/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..bfbba93 --- /dev/null +++ b/src/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/src/uni_modules/uni-transition/package.json b/src/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..ea995a2 --- /dev/null +++ b/src/uni_modules/uni-transition/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.2", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uni-transition/readme.md b/src/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/src/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/src/uni_modules/uni-ui/changelog.md b/src/uni_modules/uni-ui/changelog.md new file mode 100644 index 0000000..89e6284 --- /dev/null +++ b/src/uni_modules/uni-ui/changelog.md @@ -0,0 +1,566 @@ +## 1.5.0(2024-01-13) +- 修复 npm包结构目录错误的问题 +- uni-calendar 修复 回到今天时,月份显示不一致问题 +- uni-data-picker 新增 支持 uni-app-x +- uni-datetime-picker 优化 增加noChange事件,当进行日期范围选择时,若有空值,则触发该事件 [详情](https://github.com/dcloudio/uni-ui/issues/815) +- uni-datetime-picker 修复 字节小程序时间选择范围器失效问题 [详情](https://github.com/dcloudio/uni-ui/issues/834) +- uni-datetime-picker 修复 PC端初次修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737) +- uni-datetime-picker 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146) +- uni-datetime-picker 优化 当前月可以选择上月、下月的日期的Bug +- uni-file-picker 新增 微信小程序不再调用chooseImage,而是调用chooseMedia +- uni-file-picker 新增 上传文件至云存储携带本地文件名称 +- uni-forms 优化 labelWidth 描述错误 +fix: 修复图标大小默认值错误的问题 +- uni-icons 修复 项目未使用 ts 情况下,打包报错的bug +- uni-icons 修复 size 属性为 string 时,不加单位导致尺寸异常的bug +- uni-icons 优化 兼容老版本icon类型,如 top ,bottom 等 +- uni-icons 优化 兼容老版本icon类型,如 top ,bottom 等 +- uni-icons 优化 uni-app x 下示例项目图标排序 +- uni-icons 修复 nvue下引入组件报错的bug +-优化 size 属性支持单位 +- uni-icons 新增 uni-app x 支持定义图标 +- uni-notice-bar 修复动态绑定title时,滚动速度不一致的问题 +更新示例工程 +- uni-popup 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close` +- uni-table 修复 uni-tr只有一列时minWidth计算错误,列变化实时计算更新 +## 1.4.27(2023-04-21) +- uni-calendar 修复 某些情况 monthSwitch 未触发的Bug +- uni-calendar 修复 某些情况切换月份错误的Bug +- uni-data-picker 修复 更改 modelValue 报错的 bug +- uni-data-picker 修复 v-for 未使用 key 值控制台 warning +- uni-data-picker 修复代码合并时引发 value 属性为空时不渲染数据的问题 +- uni-data-picker 修复 localdata 不支持动态更新的bug +- uni-data-select 修复 微信小程序点击时会改变背景颜色的 bug +- uni-data-select 修复 禁用时会显示清空按钮 +- uni-data-select 优化 查询条件短期内多次变更只查询最后一次变更后的结果 +- uni-data-select 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue +- uni-datetime-picker 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) +- uni-datetime-picker 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) +- uni-datetime-picker 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +- uni-datetime-picker 优化 值为空依然选中当天问题 +- uni-datetime-picker 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- uni-datetime-picker 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- uni-datetime-picker 优化 字节小程序日期时间范围选择,底部日期换行问题 +- uni-datetime-picker 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +- uni-datetime-picker 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- uni-datetime-picker 优化 PC端输入日期格式错误时返回当前日期时间 +- uni-datetime-picker 优化 PC端输入日期时间超出 start、end 限制的Bug +- uni-datetime-picker 优化 移动端日期时间范围用法时间展示不完整问题 +- uni-datetime-picker 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- uni-datetime-picker 修复 vue3 time-picker 无法显示绑定时分秒的Bug +- uni-datetime-picker 修复 字节小程序报错的Bug +- uni-datetime-picker 修复 某些情况切换月份错误的Bug +- uni-easyinput 修复 vue3 下 keyboardheightchange 事件报错的bug +- uni-easyinput 优化 trim 属性默认值 +- uni-easyinput 新增 cursor-spacing 属性 +- uni-fab 新增 pattern.icon 属性,可自定义图标 +- uni-file-picker 修复 手动上传删除一个文件后不能再上传的bug +- uni-forms 修复 required 参数无法动态绑定 +- uni-list 优化 uni-list-chat 具名插槽`header` 非app端套一层元素,方便使用时通过外层元素定位实现样式修改 +- uni-list uni-list-chat 新增 支持具名插槽`header` +- uni-list 新增 列表图标新增 customPrefix 属性 ,用法 [详见](https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props) +- uni-nav-bar 修复 自定义状态栏高度闪动BUG +- uni-nav-bar 修复 暗黑模式下边线颜色错误的bug +- uni-popup 修复 uni-popup 重复打开时的 bug +- uni-popup uni-popup-dialog 组件新增 inputType 属性 +- uni-swipe-action 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +- uni-table 修复 在vue3模式下可能会出现错误的问题 +## 1.4.26(2023-01-31) +- uni-badge 修复 运行/打包 控制台警告问题 +- uni-calendar 修复 某些情况切换月份错误问题 +- uni-data-select 修复 不关联服务空间报错的问题 +- uni-data-select 新增 属性 `format` 可用于格式化显示选项内容 +- uni-datetime-picker 修复 某些情况切换月份错误问题 +- uni-easyinput 新增 keyboardheightchange 事件,可监听键盘高度变化 +- uni-list 修复 无反馈效果呈现的bug +## 1.4.25(2023-01-11) +- uni-file-picker 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.4.24(2023-01-11) +- uni-data-select 修复 当where变化时,数据不会自动更新的问题 +- uni-datetime-picker 修复 多次加载组件造成内存占用的 bug +- uni-datetime-picker 修复 vue3 下 i18n 国际化初始值不正确的 bug +- uni-easyinput 修复 props 中背景颜色无默认值的bug +- uni-list 修复 uni-list-chat 在vue3下跳转报错的bug +- uni-list 修复 uni-list-chat avatar属性 值为本地路径时错误的问题 +- uni-list 修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题 +- uni-list 修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题 +- uni-list 修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug +- uni-list 修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug +- uni-list uni-list-chat 新增 avatar 支持 fileId +- uni-list uni-list 新增属性 render-reverse 详情参考:[https://uniapp.dcloud.net.cn/component/list.html](https://uniapp.dcloud.net.cn/component/list.html) +- uni-list uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) +- uni-list uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor +- uni-popup 修复 nvue 下 v-show 报错 +## 1.4.23(2022-10-25) +- uni-datetime-picker 修复,支付宝小程序样式错乱,[详情](https://github.com/dcloudio/uni-app/issues/3861) + +- uni-nav-bar 修复 条件编译错误的bug +- uni-nav-bar 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.4.22(2022-09-19) +- 优化 部分组件适配 uni-scss 主题色 +- uni-badge 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473) +- uni-calendar 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件 +- uni-data-select 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 +- uni-data-select 修复 点击的位置不准确 +- uni-data-select 新增 支持 disabled 属性 +- uni-datetime-picker 修复,反向选择日期范围,日期显示异常,[详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +- uni-datetime-picker 修复 close事件无效的 bug +- uni-datetime-picker 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false) +- uni-fab 修复 小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +- uni-fab 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +- uni-forms 优化 根据 rules 自动添加 required 的问题 +- uni-forms 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +- uni-nav-bar 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +- uni-notice-bar 新增 属性 fontSize,可修改文字大小。 +- uni-pagination 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- uni-pagination 修复,未对移动端当前页文字做主题色适配。 +- uni-pagination 修复 es 语言 i18n 错误 +## 1.4.21(2022-09-19) +- 修复,安装时未导入 uni-data-select 和 uni-tooltip 的问题。 +## 1.4.20(2022-07-25) +- uni-section 新增组件 +- uni-forms 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug + +## 1.4.19(2022-07-07) +- uni-data-picker 优化 pc端图标位置不正确的问题 +- uni-data-select 修复 pc端宽度异常的bug +## 1.4.18(2022-07-06) +- uni-forms 【重要】组件逻辑重构,部分用法旧版本不兼容,请注意兼容问题 +- uni-forms 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- uni-forms 新增 更多表单示例 +- uni-forms 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- uni-forms 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- uni-forms 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- uni-forms 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- uni-forms 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- uni-forms 修复 由 1.4.0 引发的 label 插槽不生效的bug +- uni-forms 修复 子组件找不到 setValue 报错的bug +- uni-forms 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- uni-forms 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +- uni-forms 修复 表单校验顺序无序问题 +- uni-forms 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +- uni-forms 优化 动态表单校验方式,废弃拼接name的方式 +- uni-breadcrumb 修复 微信小程序 separator 不显示问题 +- uni-data-checkbox 优化 在 uni-forms 中的依赖注入方式 +- uni-data-picker 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +- uni-data-picker 优化 显示样式 +- uni-data-select 优化 显示样式 +- uni-datetime-picker 修复 日历顶部年月及底部确认未国际化 bug +- uni-datetime-picker 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +- uni-easyinput 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- uni-easyinput 新增 clear 事件,点击右侧叉号图标触发 +- uni-easyinput 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- uni-easyinput 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 +- uni-easyinput 优化 clearable 显示策略 +- uni-file-picker 修复 在uni-forms下样式不生效的bug +- uni-nav-bar 修复 组件示例中插槽用法无法显示内容的bug +- uni-swipe-action 修复 vue3 下使用组件不能正常运行的Bug +- uni-swipe-action 修复 h5端点击click触发两次的Bug +- uni-table 修复 微信小程序存在无使用组件的问题 +## 1.4.17(2022-06-30) +- 支持 ios 安全区 +## 1.4.16(2022-06-06) +- uni-breadcrumb 新增 支持 uni.scss 修改颜色 +- uni-data-select 修复 localdata 赋值不生效的 bug +- uni-data-select 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +- uni-data-select 修复 当 value 为 0 时选择不生效的 bug +- uni-easyinput 修复 关闭图标某些情况下无法取消的bug +- uni-fav 新增 stat 属性 ,是否开启uni统计功能 +- uni-goods-nav 新增 stat属性,是否开启uni统计功能 +- uni-group 新增 stat属性,是否开启uni统计功能 +- uni-nav-bar 新增 stat 属性 ,可开启统计 title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +- uni-search-bar 新增 readonly 属性,组件只读 +- uni-swipe-action 修复 isPC 找不到的Bug +- uni-swipe-action 修复 在 nvue 下 disabled 失效的bug +- uni-tooltip 修复 content 为空时仍然弹出的bug +## 1.4.15(2022-05-07) +- uni-data-picker 修复 字节小程序 本地数据无法选择下一级的Bug +- uni-data-select 新增 记住上次的选项(仅 collection 存在时有效) +- uni-search-bar 修复 vue3 input 事件不生效的bug +- uni-search-bar 修复 多余代码导致的bug +- uni-tooltip 更新 text 属性变更为 content +- uni-tooltip 更新 移除 width 属性 +- uni-tooltip 修复 组件根 text 嵌套组件 warning +## 1.4.14(2022-04-18) +- uni-datetime-picker 修复 Vue3 下动态赋值,单选类型未响应的 bug +- uni-easyinput 修复 默认值不生效的bug +## 1.4.13(2022-04-02) +- uni-calendar 修复 条件编译 nvue 不支持的 css 样式 +- uni-calendar 修复 startDate、 endDate 属性失效的 bug +- uni-data-picker 修复 nvue 不支持的 v-show 的 bug +- uni-data-picker 修复 条件编译 nvue 不支持的 css 样式 +- uni-datetime-picker 修复 Vue3 下动态赋值未响应的 bug +- uni-easyinput 修复 value不能为0的bug +- uni-popup 修复 弹出层内部无法滚动的bug +- uni-popup 修复 小程序中高度错误的bug +- uni-popup 修复 快速调用open出现问题的Bug +- uni-rate 修复 条件判断 `NaN` 错误的 bug +- uni-swipe-action 修复 按钮字体大小不能设置的bug +- uni-swipe-action 修复 h5和app端下报el错误的bug +- uni-swipe-action 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.4.12(2022-02-19) +- uni-collapse 修复 初始化的时候 ,open 属性失效的bug +- uni-data-checkbox 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +- uni-icons 优化 size 属性可以传入不带单位的字符串数值 +- uni-icons 优化 size 支持其他单位 +- uni-nav-bar 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +- uni-popup 修复 safeArea 属性不能设置为false的bug +## 1.4.11(2022-01-21) +- uni-collapse 修复 微信小程序resize后组件收起的bug +- uni-countdown 修复 在微信小程序中样式不生效的bug +- uni-countdown 新增 update 方法 ,在动态更新时间后,刷新组件 +- uni-load-more 新增 showText属性 ,是否显示文本 +- uni-load-more 修复 nvue 平台下不显示文本的bug +- uni-load-more 修复 微信小程序平台样式选择器报警告的问题 +- uni-nav-bar 修复 在vue下,标题不垂直居中的bug +- uni-nav-bar 修复 height 属性类型错误 +- uni-nav-bar 新增 height 属性,可修改组件高度 +- uni-nav-bar 新增 dark 属性可可开启暗黑模式 +- uni-nav-bar 优化 标题字数过多显示省略号 +- uni-nav-bar 优化 插槽,插入内容可完全覆盖 +- uni-popup 修复 isMaskClick 失效的bug +- uni-popup 新增 cancelText \ confirmText 属性 ,可自定义文本 +- uni-popup 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- uni-popup 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 + +## 1.4.10(2022-01-17) +- uni-card 修复 在vue页面下略缩图显示不正常的bug +- uni-datetime-picker 修复 clear-icon 属性在小程序平台不生效的 bug +- uni-datetime-picker 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug +- uni-fab 更新 组件依赖 +- +- uni-icons 修复 nvue 有些图标不显示的bug,兼容老版本图标 +- uni-icons 优化 示例可复制图标名称 +- uni-nav-bar 修复 color 属性不生效的bug +- uni-popup 修复 设置 safeArea 属性不生效的bug +- uni-popup 优化 组件示例 +- uni-popup 修复 vuedoc 文字错误 +## 1.4.9(2021-11-23) +- uni-ui 修复 vue3中某些scss变量无法找到的问题 +- uni-combox 优化 label、label-width 属性 +- uni-data-picker 修复 由上个版本引发的map、v-model等属性不生效的bug +- uni-file-picker 修复 参数为对象的情况下,url在某些情况显示错误的bug +- uni-icons 优化 兼容旧组件 type 值 +- uni-list 修复 在vue3中to属性在发行应用的时候报错的bug +- uni-scss 修复 vue3中scss语法兼容问题 +- uni-transition 修复 init 方法初始化问题 +## 1.4.8(2021-11-19) +- uni-fab 修复 阴影颜色不正确的bug +## 1.4.7(2021-11-19) +- uni-ui 新增 支持国际化 +- uni-ui 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- uni-ui 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-ui](https://uniapp.dcloud.io/component/uniui/uni-ui) +- uni-badge 修改 size 属性默认值调整为 small +- uni-badge 修改 type 属性,默认值调整为 error,info 替换 default +- uni-badge 修复 在字节小程序上样式不生效的 bug +- uni-calendar 修复 弹出层被 tabbar 遮盖 bug +- uni-card 重构插槽的用法 ,header 替换为 title +- uni-card 新增 actions 插槽 +- uni-card 新增 cover 封面图属性和插槽 +- uni-card 新增 padding 内容默认内边距离 +- uni-card 新增 margin 卡片默认外边距离 +- uni-card 新增 spacing 卡片默认内边距 +- uni-card 新增 shadow 卡片阴影属性 +- uni-card 取消 mode 属性,可使用组合插槽代替 +- uni-card 取消 note 属性 ,使用actions插槽代替 +- uni-collapse 优化 show-arrow 属性默认为true +- uni-collapse 新增 show-arrow 属性,控制是否显示右侧箭头 +- uni-countdown 新增 font-size 支持自定义字体大小 +- uni-data-checkbox 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +- uni-data-checkbox 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +- uni-data-checkbox 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-dateformat 优化 默认时间不再是当前时间,而是显示'-'字符 +- uni-datetime-picker 修复 hide-second 在移动端的 bug +- uni-datetime-picker 修复 单选赋默认值时,赋值日期未高亮的 bug +- uni-datetime-picker 修复 赋默认值时,移动端未正确显示时间的 bug +- uni-datetime-picker 新增 hide-second 属性,支持只使用时分,隐藏秒 +- uni-datetime-picker 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- uni-datetime-picker 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- uni-datetime-picker 优化 调整字号大小,美化日历界面 +- uni-datetime-picker 优化 范围选择器在 pc 端过宽的问题 +- uni-datetime-picker 新增 支持作为 uni-forms 子组件相关功能 +- uni-datetime-picker 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +- uni-datetime-picker 修复 type 属性动态赋值无效的 bug +- uni-datetime-picker 修复 ‘确认’按钮被 tabbar 遮盖 bug +- uni-datetime-picker 修复 组件未赋值时范围选左、右日历相同的 bug +- uni-datetime-picker 修复 范围选未正确显示当前值的 bug +- uni-datetime-picker 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +- uni-easyinput 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +- uni-easyinput 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-file-picker 新增 参数中返回 fileID 字段 +- uni-file-picker 修复 腾讯云传入fileID 不能回显的bug +- uni-file-picker 修复 选择图片后,不能放大的问题 +- uni-file-picker 修复 由于 0.2.11 版本引起的不能回显图片的Bug +- uni-file-picker 新增 clearFiles(index) 方法,可以手动删除指定文件 +- uni-file-picker 修复 v-model 值设为 null 报错的Bug +- uni-file-picker 修复 return-type="object" 时,无法删除文件的Bug +- uni-file-picker 修复 auto-upload 属性失效的Bug +- uni-forms 修复 label 插槽不生效的bug +- uni-forms 修复 没有添加校验规则的字段依然报错的Bug +- uni-forms 修复 重置表单错误信息无法清除的问题 +- uni-forms 修复 表单验证只生效一次的问题 +- uni-icons 新增 更多图标 +- uni-icons 优化 自定义图标使用方式 +- uni-link 修复 在 nvue 下不显示的 bug +- uni-pagination 修复 current 、value 属性未监听,导致高亮样式失效的 bug +- uni-rate 优化 默认值修改为 0 颗星 +- uni-search-bar 修复 value 属性与 modelValue 属性不兼容的Bug +- uni-swipe-action 新增 close-all 方法,关闭所有已打开的组件 +- uni-swipe-action 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- uni-swipe-action 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- uni-swipe-action 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +- uni-tag 新增 提供组件设计资源,组件样式调整 +- uni-tag 移除 插槽 +- uni-tag 移除 type 属性的 royal 选项 +- uni-tag type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.4.2(2021-08-20) +- 新增 uni-ui 组件支持国际化 i18n +- uni-collapse 优化 show-arrow 属性默认为true +- uni-collapse 新增 show-arrow 属性,控制是否显示右侧箭头 +- uni-data-checkbox 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +- uni-easyinput 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +- uni-file-picker 修复 由于 0.2.11 版本引起的不能回显图片的Bug +- uni-file-picker 新增 clearFiles(index) 方法,可以手动删除指定文件 +- uni-file-picker 修复 v-model 值设为 null 报错的Bug +- uni-swipe-action 新增 close-all 方法,关闭所有已打开的组件 +- uni-swipe-action 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- uni-swipe-action 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- uni-swipe-action 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.4.0(2021-08-13) +- uni-calendar 修复 弹出层被 tabbar 遮盖 bug +- uni-data-checkbox 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-dateformat 调整 默认时间不再是当前时间,而是显示'-'字符 +- uni-datetime-picker 新增 适配 vue3 +- uni-datetime-picker 新增 支持作为 uni-forms 子组件相关功能 +- uni-datetime-picker 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +- uni-datetime-picker 修复 type 属性动态赋值无效的 bug +- uni-datetime-picker 修复 ‘确认’按钮被 tabbar 遮盖 bug +- uni-datetime-picker 修复 组件未赋值时范围选左、右日历相同的 bug +- uni-datetime-picker 修复 范围选未正确显示当前值的 bug +- uni-datetime-picker 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +- uni-easyinput 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-file-picker 修复 return-type="object" 时,无法删除文件的Bug +- uni-file-picker 修复 auto-upload 属性失效的Bug +- uni-forms 修复 没有添加校验规则的字段依然报错的Bug +- uni-forms 修复 重置表单错误信息无法清除的问题 +- uni-forms 优化 组件文档 +- uni-forms 修复 表单验证只生效一次的问题 +- uni-tag type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.3.9(2021-08-02) +- uni-datetime-picker 新增 return-type 属性支持返回 date 日期对象 +- uni-file-picker 修复 fileExtname属性不指定值报错的Bug +- uni-file-picker 修复 在某种场景下图片不回显的Bug +- uni-link 支持自定义插槽 +## 1.3.8(2021-07-31) +- uni-ui 组件兼容 vue3 +- uni-collapse 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +- uni-collapse 优化 组件示例 +- uni-collapse 新增 组件折叠动画 +- uni-collapse 新增 value\v-model 属性 ,动态修改面板折叠状态 +- uni-collapse 新增 title 插槽 ,可定义面板标题 +- uni-collapse 新增 border 属性 ,显示隐藏面板内容分隔线 +- uni-collapse 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- uni-collapse 修复 resize 方法失效的Bug +- uni-collapse 修复 change 事件返回参数不正确的Bug +- uni-collapse 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +- uni-data-checkbox 优化 在uni-forms组件,与label不对齐的问题 +- uni-data-checkbox 修复 单选默认值为0不能选中的Bug +- uni-easyinput 优化 errorMessage 属性支持 Boolean 类型 +- uni-file-picker 修复 return-type为object下,返回值不正确的Bug +- uni-file-picker 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +- uni-file-picker 优化 h5平台下上传文件导致页面卡死的问题 +- uni-forms 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- uni-forms 修复 1.2.1 引起的示例在小程序平台报错的Bug +- uni-forms 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- uni-forms 修复 不指定name属性时,运行报错的Bug +- uni-forms 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- uni-forms 优化 组件示例,新增动态校验示例代码 +- uni-forms 优化 组件文档,使用方式更清晰 +- uni-list 修复 与其他组件嵌套使用时,点击失效的Bug +- uni-swipe-action 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.3.7(2021-07-16) +- uni-ui 兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- uni-datetime-picker 修复 单选日期类型,初始赋值后不在当前日历的 bug +- uni-datetime-picker 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- uni-datetime-picker 优化 移动端移除显示框的清空按钮,无实际用途 +- uni-datetime-picker 修复 组件赋值为空,界面未更新的 bug +- uni-datetime-picker 修复 start 和 end 不能动态赋值的 bug +- uni-datetime-picker 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug +## 1.3.6(2021-07-09) +- uni-data-checkbox 优化 删除无用日志 +- uni-data-checkbox 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +- uni-data-checkbox 修复 nvue 黑框样式问题 +- uni-datetime-picker 修复 范围选择不能动态赋值的 bug +- uni-datetime-picker 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +- uni-datetime-picker 优化 弹出层在超出视窗边缘定位不准确的问题 +- uni-datetime-picker 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug +- uni-datetime-picker 优化 弹出层在超出视窗边缘被遮盖的问题 +- uni-datetime-picker 新增 maskClick 事件 +- uni-datetime-picker 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px +- uni-datetime-picker 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +- uni-datetime-picker 新增 日期时间显示框支持插槽 +- uni-file-picker 修复 sourceType 缺少默认值导致 ios 无法选择文件 +- uni-file-picker 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +- uni-table 新增 uni-th 支持 date 日期筛选范围 +- uni-table 新增 uni-th 支持 range 筛选范围 +- uni-table 新增 uni-th 筛选功能 +## 1.3.5(2021-07-02) +- uni-card 优化 图文卡片无图片加载时,提供占位图标 +- uni-card 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- uni-card 修复 thumbnail 不存在仍然占位的 bug +- uni-data-checkbox 修复 selectedTextColor 属性不生效的Bug +- uni-datetime-picker 优化 添加 uni-icons 依赖 +- uni-easyinput 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug +- uni-file-picker 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +- uni-file-picker 优化 文件上传后进度条消失时机 +- uni-file-picker 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +- uni-forms 修复 pattern 属性在微信小程序平台无效的问题 +## 1.3.4(2021-06-25) +- uni-badge 优化 示例项目 +- uni-countdown 修复 uni-countdown 重复赋值跳两秒的 bug +- uni-easyinput 修复 passwordIcon 属性拼写错误的 bug +- uni-forms 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +- uni-forms 修复 只写setRules方法而导致校验不生效的Bug +- uni-forms 修复 由上个办法引发的错误提示文字错位的Bug +- uni-forms 修复 不设置 label 属性 ,无法设置label插槽的问题 +- uni-forms 修复 不设置label属性,label-width属性不生效的bug +- uni-forms 修复 setRules 方法与rules属性冲突的问题 +- uni-link 新增 download 属性,H5平台下载文件名 +- uni-popup 新增 mask-click 遮罩层点击事件 +- uni-popup 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +- uni-tag 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.3.3(2021-06-18) +- uni-easyinput 新增 passwordIcon 属性,当type=password时是否显示小眼睛图标 +- uni-easyinput 修复 confirmType 属性不生效的问题 +- uni-easyinput 修复 disabled 状态可清出内容的 bug +- uni-file-picker 修复 删除文件时无法触发 v-model 的Bug +- uni-popup 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +- uni-popup 修复 错误的 watch 字段 +- uni-popup 修复 safeArea 属性不生效的问题 +- uni-popup 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.3.2(2021-06-04) +- uni-data-checkbox 新增 map 属性,可以方便映射text/value属性 +- uni-data-checkbox 修复 不关联服务空间的情况下组件报错的Bug +- uni-data-picker 修复 上个版本引出的本地数据无法选择带有children的2级节点 +- uni-forms 修复 动态删减数据导致报错的问题 +- uni-forms 新增 modelValue 属性 ,value 即将废弃 +- uni-forms 新增 uni-forms-item 可以设置单独的 rules +- uni-forms 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- uni-forms 优化 submit 事件重命名为 validate +- uni-data-picker 修复 无法加载云端数据的问题 +- uni-data-picker 修复 v-model无效问题 +- uni-data-picker 修复 loaddata 为空数据组时加载时间过长问题 +- uni-datetime-picker 修复 图标在小程序上不显示的 bug +- uni-datetime-picker 优化 重命名引用组件,避免潜在组件命名冲突 +- uni-datetime-picker 优化 代码目录扁平化 +- uni-tag 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.3.1(2021-05-14) +- uni-badge 新增 uni-badge 的 absolute 属性,支持定位 +- uni-badge 新增 uni-badge 的 offset 属性,支持定位偏移 +- uni-badge 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- uni-badge 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- uni-badge 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +- uni-badge 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- uni-badge 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- uni-badge 新增 uni-badge 属性 custom-style, 支持自定义样式 +- uni-datetime-picker 修复 ios 下不识别 '-' 日期格式的 bug +- uni-datetime-picker 优化 pc 下弹出层添加边框和阴影 +- uni-datetime-picker 修复 在 admin 中获取弹出层定位错误的bug +- uni-datetime-picker 修复 type 属性向下兼容,默认值从 date 变更为 datetime +- uni-datetime-picker 支持日历形式的日期+时间的范围选择 +- uni-steps 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +- uni-countdown 修复 uni-countdown 不能控制倒计时的 bug +- uni-tag 修复 royal 类型无效的bug +- uni-tag 修复 uni-tag 宽度不自适应的bug +- uni-tag 新增 uni-tag 支持属性 custom-style 自定义样式 +- uni-link 新增 href 属性支持 tel:|mailto: +- uni-popup 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +- uni-popup 新增 type 属性的 left\right 值,支持左右弹出 +- uni-popup 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- uni-popup 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- uni-popup 新增 safeArea 属性,是否适配底部安全区 +- uni-popup 修复 App\h5\微信小程序底部安全区占位不对的Bug +- uni-popup 修复 App 端弹出等待的Bug +- uni-popup 优化 提升低配设备性能,优化动画卡顿问题 +- uni-popup 优化 更简单的组件自定义方式 +- uni-table 修复 示例项目缺少组件的Bug +- uni-forms 修复 自定义检验器失效的问题 +- uni-title 修复 示例项目缺少组件的Bug +- uni-transition 修复 示例项目缺少组件的Bug +- uni-swiper-dot 修复 示例项目缺少组件的Bug +- uni-ui 新增 组件示例地址 +## 1.3.0(2021-04-23) +- uni-combox 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-data-picker 修复 非树形数据有 where 属性查询报错的问题 +- uni-fav 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-goods-nav 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-nav-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-notice-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-number-box 修复 uni-number-box 浮点数运算不精确的 bug +- uni-number-box 修复 uni-number-box change 事件触发不正确的 bug +- uni-number-box 新增 uni-number-box v-model 双向绑定 +- uni-rate 修复 布局变化后 uni-rate 星星计算不准确的 bug +- uni-rate 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +- uni-search-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-steps 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-transition 新增 通过方法自定义动画 +- uni-transition 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- uni-transition 优化 动画触发逻辑,使动画更流畅 +- uni-transition 优化 支持单独的动画类型 +- uni-transition 优化 文档示例 +## 1.2.13(2021-04-16) +- uni-ui 新增 uni-data-picker 支持云端非树形表结构数据 +- uni-ui 修复 uni-data-checkbox nvue 下无法选中的问题 +- uni-ui 修复 uni-data-picker 根节点 parent_field 字段等于null时选择界面错乱问题 +- uni-ui 修复 uni-file-picker 选择的文件非 file-extname 字段指定的扩展名报错的Bug +- uni-ui 修复 uni-swipe-action 报错 nv_navigator is not defined 的bug +- uni-ui 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +- uni-ui 优化 uni-file-picker file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +- uni-ui 优化 uni-pagination PC 和 移动端适配不同的 ui +- uni-ui 更新 uni-file-picker 组件示例 +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug +- uni-ui 新增 uni-search-bar 的 focus 事件 +- uni-ui 修复 uni-rate 属性 margin 值为 string 组件失效的 bug +- uni-data-picker 修复 本地数据概率无法回显时问题 +- uni-table 新增 sortable 属性,是否开启单列排序 +- uni-table 优化 表格多选逻辑 +## 1.2.12(2021-03-23) +- uni-ui 新增 uni-datetime-picker 的 hide-second 属性、border 属性; +- uni-ui 修复 uni-datetime-picker 选择跟显示的日期不一样的 bug, +- uni-ui 修复 uni-datetime-picker change事件触发2次的 bug +- uni-ui 修复 uni-datetime-picker 分、秒 end 范围错误的 bug +- uni-ui 新增 uni-tr selectable 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +- uni-ui 新增 uni-data-checkbox 新增 disabled属性,支持nvue +- uni-ui 优化 uni-data-checkbox 无选项时提示“暂无数据” +- uni-ui 优化 uni-data-checkbox 默认颜色显示 +- uni-ui 新增 uni-link href 属性支持 tel:|mailto: +- uni-ui 新增 uni-table 示例demo +- uni-ui 修复 uni-data-picker 微信小程序某些情况下无法选择的问题,事件无法触发的问题 +- uni-ui 修复 uni-nav-bar easycom 下,找不到 uni-status-bar 的bug +- uni-ui 修复 uni-easyinput 示例在 qq 小程序上的bug +- uni-ui 修复 uni-forms 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +- uni-ui 调整 cli 项目 建议使用 easycom 方式引用组件,如使用按需引用,需手动维护组件内部引用 + +## 1.2.11(2021-02-24) +- 调整为uni_modules目录规范 +- uni-data-picker 新增 数据驱动的picker选择器 +- uni-file-picker 新增 文件选择上传 +- uni-row 新增 栅格系统 +- uni-data-checkbox 优化 支持 nvue +- uni-forms 修复 偶发性获取表单值错误的Bug +- uni-forms 修复 校验 uni-data-picker value 为 0 时,返回值错误的Bug +- uni-forms 修复 uni-forms-item 组件隐藏时依然触发校验的bug +- uni-forms 优化 实时校验 +- uni-forms 优化 兼容nvue页面 +- uni-easyinput 优化 兼容nvue页面 +- uni-group 优化 兼容nvue页面 +- uni-popup 优化 组件适配 PC +- uni-fab 优化 适配 PC +- uni-swiper-dot 优化 适配 PC +- uni-rate 优化 适配 PC +- uni-notice-bar 优化 适配 PC +- uni-indexed-list 优化 适配 PC +- uni-combox 优化 适配 PC +- uni-transition 优化 适配 PC +- uni-nav-bar 优化 适配 PC +- uni-swipe-action 优化 适配 PC diff --git a/src/uni_modules/uni-ui/components/uni-ui/uni-ui.vue b/src/uni_modules/uni-ui/components/uni-ui/uni-ui.vue new file mode 100644 index 0000000..0970892 --- /dev/null +++ b/src/uni_modules/uni-ui/components/uni-ui/uni-ui.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/uni_modules/uni-ui/package.json b/src/uni_modules/uni-ui/package.json new file mode 100644 index 0000000..cc71ccc --- /dev/null +++ b/src/uni_modules/uni-ui/package.json @@ -0,0 +1,129 @@ +{ + "id": "uni-ui", + "displayName": "uni-ui", + "version": "1.5.0", + "description": "uni-ui 是基于uni-app的、全端兼容的、高性能UI框架", + "keywords": [ + "uni-ui", + "uniui", + "UI组件库", + "ui框架", + "ui库" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.10" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-calendar", + "uni-card", + "uni-collapse", + "uni-combox", + "uni-countdown", + "uni-data-checkbox", + "uni-data-picker", + "uni-data-select", + "uni-dateformat", + "uni-datetime-picker", + "uni-drawer", + "uni-easyinput", + "uni-fab", + "uni-fav", + "uni-file-picker", + "uni-forms", + "uni-goods-nav", + "uni-grid", + "uni-group", + "uni-icons", + "uni-indexed-list", + "uni-link", + "uni-list", + "uni-load-more", + "uni-nav-bar", + "uni-notice-bar", + "uni-number-box", + "uni-pagination", + "uni-popup", + "uni-rate", + "uni-row", + "uni-search-bar", + "uni-section", + "uni-segmented-control", + "uni-steps", + "uni-swipe-action", + "uni-swiper-dot", + "uni-table", + "uni-tag", + "uni-title", + "uni-tooltip", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/src/uni_modules/uni-ui/readme.md b/src/uni_modules/uni-ui/readme.md new file mode 100644 index 0000000..23f8456 --- /dev/null +++ b/src/uni_modules/uni-ui/readme.md @@ -0,0 +1,247 @@ +> 当前插件不包含示例页面 ,如需示例请在 HBuiderX 中新建 `hello uni-app > 扩展组件` 中查看 +> +> 代码示例地址 :[https://ext.dcloud.net.cn/plugin?id=4941](https://ext.dcloud.net.cn/plugin?id=4941) +> +> 组件演示地址:[https://hellouniapp.dcloud.net.cn](https://hellouniapp.dcloud.net.cn/pages/extUI/badge/badge) +> +> 组件文档地址:[https://uniapp.dcloud.io/component/uniui/uni-ui](https://uniapp.dcloud.io/component/uniui/uni-ui) + +# uni-ui 介绍 + +## uni-ui产品特点 + +### 1. 高性能 + +目前为止,在小程序和混合app领域,暂时还没有比 `uni-ui` 更高性能的框架。 +- 自动差量更新数据 + +虽然uni-app支持小程序自定义组件,所有小程序的ui库都可以用。但小程序自定义组件的ui库都需要使用setData手动更新数据,在大数据量时、或高频更新数据时,很容易产生性能问题。 + +而 `uni-ui` 属于vue组件,uni-app引擎底层自动diff更新数据。当然其实插件市场里众多vue组件都具备这个特点。 +- 优化逻辑层和视图层通讯折损 + +非H5,不管是小程序还是App,不管是app的webview渲染还是原生渲染,全都是逻辑层和视图层分离的。这里就有一个逻辑层和视图层通讯的折损问题。 +比如在视图层拖动一个可跟手的组件,由于通讯的损耗,用js监听很难做到实时跟手。 + +这时就需要使用css动画以及平台底层提供的wxs、bindingx等技术。不过这些技术都比较复杂,所以 `uni-ui` 里做了封装,在需要跟手式操作的ui组件,比如swiperaction列表项左滑菜单,就在底层使用了这些技术,实现了高性能的交互体验 +- 背景停止 + +很多ui组件是会一直动的,比如轮播图、跑马灯。即便这个窗体被新窗体挡住,它在背景层仍然在消耗着硬件资源。在Android的webview版本为chrome66以上,背景操作ui会引发很严重的性能问题,造成前台界面明显卡顿。 + +而 `uni-ui` 的组件,会自动判断自己的显示状态,在组件不再可见时,不会再消耗硬件资源。 + +### 2. 全端 + + `uni-ui` 的组件都是多端自适应的,底层会抹平很多小程序平台的差异或bug。 + +比如导航栏navbar组件,会自动处理不同端的状态栏。 +比如swiperaction组件,在app和微信小程序上会使用交互体验更好的wxs技术,但在不支持wxs的其他小程序端会使用js模拟类似效果。 + + `uni-ui` 还支持nvue原生渲染,[详见](https://github.com/dcloudio/uni-ui/tree/nvue-uni-ui) + +未来 `uni-ui` 还会支持pc等大屏设备。 + +### 3. 与uni统计自动集成实现免打点 + +uni统计是优秀的多端统计平台,见[tongji.dcloud.net.cn](https://tongji.dcloud.net.cn)。 + +除了一张报表看全端,它的另一个重要特点是免打点。 +比如使用 `uni-ui` 的navbar标题栏、收藏、购物车等组件,均可实现自动打点,统计页面标题等各种行为数据。 +当然你也可以关闭uni统计,这不是强制的。 + +### 4. 主题扩展 + + `uni-ui` 支持[uni.scss](https://uniapp.dcloud.io/collocation/uni-scss),可以方便的切换App的风格。 + +ui是一种需求非常发散的产品,DCloud官方也无意用 `uni-ui` 压制第三方ui插件的空间,但官方有义务在性能和多端方面提供一个开源的标杆给大家。 + +我们欢迎更多优秀的ui组件出现,也欢迎更多人贡献 `uni-ui` 的主题风格,满足更多用户的需求。 + + +## 快速开始 + +uni-ui支持 HBuilderX直接新建项目模板、npm安装和单独导入个别组件等多种使用方式 + +### 在HBuilderX 新建uni-app项目的模板中,选择uni-ui模板 +![HBuilderX内创建uni-ui项目](https://img.cdn.aliyun.dcloud.net.cn/uni-app/doc/create-uni-ui-project.jpg) + +由于uni-app独特的[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)技术,可以免引用、注册,直接使用各种符合规则的vue组件。 + +在代码区键入`u`,拉出各种内置或uni-ui的组件列表,选择其中一个,即可使用该组件。 + +光标放在组件名称上,按F1,可以查阅组件的文档。 + +![uni-ui代码块](https://img.cdn.aliyun.dcloud.net.cn/uni-app/doc/uni-ui-snippet.jpg) + +### 通过 uni_modules 单独安装组件 +如果你没有创建uni-ui项目模板,也可以在你的工程里,通过 uni_modules 单独安装需要的某个组件。下表为uni-ui的扩展组件清单,点击每个组件在详情页面可以导入组件到项目下,导入后直接使用即可,无需import和注册。 + +|组件名|组件说明| +|---|---| +|uni-badge|[数字角标](https://ext.dcloud.net.cn/plugin?name=uni-badge)| +|uni-calendar|[日历](https://ext.dcloud.net.cn/plugin?name=uni-calendar)| +|uni-card|[卡片](https://ext.dcloud.net.cn/plugin?name=uni-card)| +|uni-collapse|[折叠面板](https://ext.dcloud.net.cn/plugin?name=uni-collapse)| +|uni-combox|[组合框](https://ext.dcloud.net.cn/plugin?name=uni-combox)| +|uni-countdown|[倒计时](https://ext.dcloud.net.cn/plugin?name=uni-countdown)| +|uni-data-checkbox|[数据选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-checkbox)| +|uni-data-picker|[数据驱动的picker选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-picker)| +|uni-dateformat|[日期格式化](https://ext.dcloud.net.cn/plugin?name=uni-dateformat)| +|uni-datetime-picker|[日期选择器](https://ext.dcloud.net.cn/plugin?name=uni-datetime-picker)| +|uni-drawer|[抽屉](https://ext.dcloud.net.cn/plugin?name=uni-drawer)| +|uni-easyinput|[增强输入框](https://ext.dcloud.net.cn/plugin?name=uni-easyinput)| +|uni-fab|[悬浮按钮](https://ext.dcloud.net.cn/plugin?name=uni-fab)| +|uni-fav|[收藏按钮](https://ext.dcloud.net.cn/plugin?name=uni-fav)| +|uni-file-picker|[文件选择上传](https://ext.dcloud.net.cn/plugin?name=uni-file-picker)| +|uni-forms|[表单](https://ext.dcloud.net.cn/plugin?name=uni-forms)| +|uni-goods-nav|[商品导航](https://ext.dcloud.net.cn/plugin?name=uni-goods-nav)| +|uni-grid|[宫格](https://ext.dcloud.net.cn/plugin?name=uni-grid)| +|uni-group|[分组](https://ext.dcloud.net.cn/plugin?name=uni-group)| +|uni-icons|[图标](https://ext.dcloud.net.cn/plugin?name=uni-icons)| +|uni-indexed-list|[索引列表](https://ext.dcloud.net.cn/plugin?name=uni-indexed-list)| +|uni-link|[超链接](https://ext.dcloud.net.cn/plugin?name=uni-link)| +|uni-list|[列表](https://ext.dcloud.net.cn/plugin?name=uni-list)| +|uni-load-more|[加载更多](https://ext.dcloud.net.cn/plugin?name=uni-load-more)| +|uni-nav-bar|[自定义导航栏](https://ext.dcloud.net.cn/plugin?name=uni-nav-bar)| +|uni-notice-bar|[通告栏](https://ext.dcloud.net.cn/plugin?name=uni-notice-bar)| +|uni-number-box|[数字输入框](https://ext.dcloud.net.cn/plugin?name=uni-number-box)| +|uni-pagination|[分页器](https://ext.dcloud.net.cn/plugin?name=uni-pagination)| +|uni-popup|[弹出层](https://ext.dcloud.net.cn/plugin?name=uni-popup)| +|uni-rate|[评分](https://ext.dcloud.net.cn/plugin?name=uni-rate)| +|uni-row|[布局-行](https://ext.dcloud.net.cn/plugin?name=uni-row)| +|uni-search-bar|[搜索栏](https://ext.dcloud.net.cn/plugin?name=uni-search-bar)| +|uni-segmented-control|[分段器](https://ext.dcloud.net.cn/plugin?name=uni-segmented-control)| +|uni-steps|[步骤条](https://ext.dcloud.net.cn/plugin?name=uni-steps)| +|uni-swipe-action|[滑动操作](https://ext.dcloud.net.cn/plugin?name=uni-swipe-action)| +|uni-swiper-dot|[轮播图指示点](https://ext.dcloud.net.cn/plugin?name=uni-swiper-dot)| +|uni-table|[表格](https://ext.dcloud.net.cn/plugin?name=uni-table)| +|uni-tag|[标签](https://ext.dcloud.net.cn/plugin?name=uni-tag)| +|uni-title|[章节标题](https://ext.dcloud.net.cn/plugin?name=uni-title)| +|uni-transition|[过渡动画](https://ext.dcloud.net.cn/plugin?name=uni-transition)| + + +使用 `uni_modules` 方式安装组件库,可以直接通过插件市场导入,通过右键菜单快速更新组件,不需要引用、注册,直接在页面中使用 `uni-ui` 组件。[点击安装 uni-ui 组件库](https://ext.dcloud.net.cn/plugin?id=55) + +**注意:下载最新的组件目前仅支持 uni_modules ,非 uni_modules 版本最高支持到组件的1.2.10版本** + +如不能升级到 `uni_modules` 版本,可以使用 `uni_modules` 安装好对应组件,将组件拷贝到对应目录。 + +例如需更新 `uni-list`和`uni-badge` ,将 `uni_modules>uni-list>components`和`uni_modules>uni-badege>components`下所有目录拷贝到如下目录即可: + + +**目录示例** + +```json +┌─components 组件目录 +│ ├─uni-list list 列表目录 +│ │ └─uni-list.vue list 组件文件 +│ ├─uni-list-item list-item 列表目录 +│ │ └─uni-list-item.vue list 组件文件 +│ ├─uni-badge badge 角标目录 +│ │ └─uni-badge.vue badge 组件文件 +│ └─ //.... 更多组件文件 +├─pages 业务页面文件存放的目录 +│ ├─index +│ │ └─index.vue index示例页面 +├─main.js Vue初始化入口文件 +├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期 +├─manifest.json 配置应用名称、appid、logo、版本等打包信息,详见 +└─pages.json 配置页 + +``` + +### 通过 `uni_modules` 导入全部组件 +如果想一次把所有uni-ui组件导入到项目中,只需要导入一个 `uni-ui` 组件即可 [点击去导入](https://ext.dcloud.net.cn/plugin?id=55)。 + +如果没有自动导入其他组件,可以在 uni-ui 组件目录上右键选择 `安装三方插件依赖` 即可。 + + + +### npm安装 +在 `vue-cli` 项目中可以使用 `npm` 安装 `uni-ui` 库 ,或者直接在 `HBuilderX` 项目中使用 `npm` 。 + +> **注意** +> cli 项目默认是不编译 `node_modules` 下的组件的,导致条件编译等功能失效 ,导致组件异常 +> 需要在根目录创建 `vue.config.js` 文件 ,增加 `@dcloudio/uni-ui` 包的编译即可正常 +> ```javascript +> // vue.config.js +> module.exports = { +> transpileDependencies:['@dcloudio/uni-ui'] +> } +> ``` + + + +**准备 sass** + +`vue-cli` 项目请先安装 sass 及 sass-loader,如在 HBuliderX 中使用,可跳过此步。 + +- 安装 sass +``` + npm i sass -D 或 yarn add sass -D +``` + +- 安装 sass-loader +``` +npm i sass-loader@10.1.1 -D 或 yarn add sass-loader@10.1.1 -D +``` + +> 如果 `node` 版本小于 16 ,sass-loader 请使用低于 @11.0.0 的版本,[sass-loader@11.0.0 不支持 vue@2.6.12 ](https://stackoverflow.com/questions/66082397/typeerror-this-getoptions-is-not-a-function) +> 如果 `node` 版本大于 16 , `sass-loader` 建议使用 `v8.x` 版本 + +**安装 uni-ui** + +``` +npm i @dcloudio/uni-ui 或 yarn add @dcloudio/uni-ui +``` + + + +**配置easycom** + +使用 `npm` 安装好 `uni-ui` 之后,需要配置 `easycom` 规则,让 `npm` 安装的组件支持 `easycom` + +打开项目根目录下的 `pages.json` 并添加 `easycom` 节点: + +```javascript +// pages.json +{ + "easycom": { + "autoscan": true, + "custom": { + // uni-ui 规则如下配置 + "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" + } + }, + + // 其他内容 + pages:[ + // ... + ] +} + +``` + +在 ``template`` 中使用组件: + +```html + + + +``` + + **注意** + - uni-ui 现在只推荐使用 `easycom` ,如自己引用组件,可能会出现组件找不到的问题 + - 使用 npm 安装的组件,默认情况下 babel-loader 会忽略所有 node_modules 中的文件 ,导致条件编译失效,需要通过配置 `vue.config.js` 解决: + ```javascript + // 在根目录创建 vue.config.js 文件,并配置如下 + module.exports = { + transpileDependencies: ['@dcloudio/uni-ui'] + } + ``` + - uni-ui 是uni-app内置组件的扩展。注意与web开发不同,uni-ui不包括基础组件,它是基础组件的补充。web开发中有的开发者习惯用一个ui库完成所有开发,但在uni-app体系中,推荐开发者首先使用性能更高的基础组件,然后按需引入必要的扩展组件。 + - `uni-ui` 不支持使用 `Vue.use()` 的方式安装 + + +### 贡献代码 +在使用 `uni-ui` 中,如遇到无法解决的问题,请提 [Issues](https://github.com/dcloudio/uni-ui/issues) 给我们,假如您有更好的点子或更好的实现方式,也欢迎给我们提交 [PR](https://github.com/dcloudio/uni-ui/pulls) \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/changelog.md b/src/uni_modules/wot-design-uni/changelog.md new file mode 100644 index 0000000..529aa8b --- /dev/null +++ b/src/uni_modules/wot-design-uni/changelog.md @@ -0,0 +1,1654 @@ +## 1.3.7(2024-08-06) +### [1.3.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.6...v1.3.7) (2024-08-06) + + +### Documentation | 文档 + +* 更新爱发电地址和示例demo二维码 ([0ecc4c1](https://github.com/Moonofweisheng/wot-design-uni/commit/0ecc4c194d753a11dfa461d74df1a00d75be0e4e)) +* 更新README ([0c33dd4](https://github.com/Moonofweisheng/wot-design-uni/commit/0c33dd48ad8528b4b080125272375bae9fedf352)) +* 允许文档组件列表折叠收起 ([#468](https://github.com/Moonofweisheng/wot-design-uni/issues/468)) ([b0e4d23](https://github.com/Moonofweisheng/wot-design-uni/commit/b0e4d235b27a729024951a7b31950e83bd43d3de)) + + +### Bug Fixes | Bug 修复 + +* 修复addUnit工具方法为string类型的参数时未添加单位导致swiper高度丢失的问题 ([3d7775c](https://github.com/Moonofweisheng/wot-design-uni/commit/3d7775c5a93668cb7ac6b50563869d13bbd39bfa)) +* 修复Input设置为number类型时绑定值重设为0时显示异常的问题 ([df6a6a0](https://github.com/Moonofweisheng/wot-design-uni/commit/df6a6a0ab1f911296002e39299a93bbee5546715)), closes [#470](https://github.com/Moonofweisheng/wot-design-uni/issues/470) +* 修复LockScroll后切换页面无法滚动 ([#478](https://github.com/Moonofweisheng/wot-design-uni/issues/478)) ([197d61a](https://github.com/Moonofweisheng/wot-design-uni/commit/197d61a678738bda608588d660263e0d5657f940)), closes [#473](https://github.com/Moonofweisheng/wot-design-uni/issues/473) +* 修复Textarea的placeholder无法设置空字符串问题 ([#472](https://github.com/Moonofweisheng/wot-design-uni/issues/472)) ([bb3d329](https://github.com/Moonofweisheng/wot-design-uni/commit/bb3d3292af56016ad21d7bf49024a0338d93ec3d)), closes [#471](https://github.com/Moonofweisheng/wot-design-uni/issues/471) +* **type:** 修复vue>=2.7版本的GlobalComponents类型声明问题 ([#464](https://github.com/Moonofweisheng/wot-design-uni/issues/464)) ([a175f05](https://github.com/Moonofweisheng/wot-design-uni/commit/a175f05e01eff86678dd08bd226bd401192b0c0b)) + + +### ✨ Features | 新功能 + +* ✨ 修复Text组件设置color属性后lines失效的问题 ([84826f8](https://github.com/Moonofweisheng/wot-design-uni/commit/84826f8057ba29f65b26ee8f292073edb2f441f0)), closes [#477](https://github.com/Moonofweisheng/wot-design-uni/issues/477) +* ✨ Input 组件新增clear-triger属性 ([#476](https://github.com/Moonofweisheng/wot-design-uni/issues/476)) ([364cfbf](https://github.com/Moonofweisheng/wot-design-uni/commit/364cfbf1af7a9109be9af59b543b4ccef9c32916)), closes [#462](https://github.com/Moonofweisheng/wot-design-uni/issues/462) +* ✨ Swiper 轮播组件增加value-key用于自定义目标字段属性名 ([#485](https://github.com/Moonofweisheng/wot-design-uni/issues/485)) ([f207876](https://github.com/Moonofweisheng/wot-design-uni/commit/f20787690368e341850c2fd51cf725b26b192ec9)), closes [#410](https://github.com/Moonofweisheng/wot-design-uni/issues/410) +* ✨ Textarea 组件新增clear-triger属性 ([1c13f2e](https://github.com/Moonofweisheng/wot-design-uni/commit/1c13f2e629fc259e282d7d859097f8905ef1053e)), closes [#462](https://github.com/Moonofweisheng/wot-design-uni/issues/462) +* 组件text新增金额类型,前后插槽,下划线等功能 ([#452](https://github.com/Moonofweisheng/wot-design-uni/issues/452)) ([95735be](https://github.com/Moonofweisheng/wot-design-uni/commit/95735be75e276b8679a5a76c9cbe49ea29a9b18d)) +* **drop-menu:** 支持自定义图标以及before-toggle ([#479](https://github.com/Moonofweisheng/wot-design-uni/issues/479)) ([108e1b3](https://github.com/Moonofweisheng/wot-design-uni/commit/108e1b36c69cdb28b59f8742d82bb78540a0e043)) + +# 更新日志 + + +### [1.3.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.6...v1.3.7) (2024-08-06) + + +### ✏️ Documentation | 文档 + +* ✏️ 更新爱发电地址和示例demo二维码 ([0ecc4c1](https://github.com/Moonofweisheng/wot-design-uni/commit/0ecc4c194d753a11dfa461d74df1a00d75be0e4e)) +* ✏️ 更新README ([0c33dd4](https://github.com/Moonofweisheng/wot-design-uni/commit/0c33dd48ad8528b4b080125272375bae9fedf352)) +* ✏️ 允许文档组件列表折叠收起 ([#468](https://github.com/Moonofweisheng/wot-design-uni/issues/468)) ([b0e4d23](https://github.com/Moonofweisheng/wot-design-uni/commit/b0e4d235b27a729024951a7b31950e83bd43d3de)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复addUnit工具方法为string类型的参数时未添加单位导致swiper高度丢失的问题 ([3d7775c](https://github.com/Moonofweisheng/wot-design-uni/commit/3d7775c5a93668cb7ac6b50563869d13bbd39bfa)) +* 🐛 修复Input设置为number类型时绑定值重设为0时显示异常的问题 ([df6a6a0](https://github.com/Moonofweisheng/wot-design-uni/commit/df6a6a0ab1f911296002e39299a93bbee5546715)), closes [#470](https://github.com/Moonofweisheng/wot-design-uni/issues/470) +* 🐛 修复LockScroll后切换页面无法滚动 ([#478](https://github.com/Moonofweisheng/wot-design-uni/issues/478)) ([197d61a](https://github.com/Moonofweisheng/wot-design-uni/commit/197d61a678738bda608588d660263e0d5657f940)), closes [#473](https://github.com/Moonofweisheng/wot-design-uni/issues/473) +* 🐛 修复Textarea的placeholder无法设置空字符串问题 ([#472](https://github.com/Moonofweisheng/wot-design-uni/issues/472)) ([bb3d329](https://github.com/Moonofweisheng/wot-design-uni/commit/bb3d3292af56016ad21d7bf49024a0338d93ec3d)), closes [#471](https://github.com/Moonofweisheng/wot-design-uni/issues/471) +* **type:** 🐛 修复vue>=2.7版本的GlobalComponents类型声明问题 ([#464](https://github.com/Moonofweisheng/wot-design-uni/issues/464)) ([a175f05](https://github.com/Moonofweisheng/wot-design-uni/commit/a175f05e01eff86678dd08bd226bd401192b0c0b)) + + +### ✨ Features | 新功能 + +* ✨ 修复Text组件设置color属性后lines失效的问题 ([84826f8](https://github.com/Moonofweisheng/wot-design-uni/commit/84826f8057ba29f65b26ee8f292073edb2f441f0)), closes [#477](https://github.com/Moonofweisheng/wot-design-uni/issues/477) +* ✨ Input 组件新增clear-triger属性 ([#476](https://github.com/Moonofweisheng/wot-design-uni/issues/476)) ([364cfbf](https://github.com/Moonofweisheng/wot-design-uni/commit/364cfbf1af7a9109be9af59b543b4ccef9c32916)), closes [#462](https://github.com/Moonofweisheng/wot-design-uni/issues/462) +* ✨ Swiper 轮播组件增加value-key用于自定义目标字段属性名 ([#485](https://github.com/Moonofweisheng/wot-design-uni/issues/485)) ([f207876](https://github.com/Moonofweisheng/wot-design-uni/commit/f20787690368e341850c2fd51cf725b26b192ec9)), closes [#410](https://github.com/Moonofweisheng/wot-design-uni/issues/410) +* ✨ Textarea 组件新增clear-triger属性 ([1c13f2e](https://github.com/Moonofweisheng/wot-design-uni/commit/1c13f2e629fc259e282d7d859097f8905ef1053e)), closes [#462](https://github.com/Moonofweisheng/wot-design-uni/issues/462) +* 组件text新增金额类型,前后插槽,下划线等功能 ([#452](https://github.com/Moonofweisheng/wot-design-uni/issues/452)) ([95735be](https://github.com/Moonofweisheng/wot-design-uni/commit/95735be75e276b8679a5a76c9cbe49ea29a9b18d)) +* **drop-menu:** 支持自定义图标以及before-toggle ([#479](https://github.com/Moonofweisheng/wot-design-uni/issues/479)) ([108e1b3](https://github.com/Moonofweisheng/wot-design-uni/commit/108e1b36c69cdb28b59f8742d82bb78540a0e043)) + +### [1.3.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.5...v1.3.6) (2024-07-26) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Button为disabled状态时仍能触发open-type指定事件的问题 ([a64a570](https://github.com/Moonofweisheng/wot-design-uni/commit/a64a5707d2573c042cd9bb16d6f7fecba9a38291)), closes [#458](https://github.com/Moonofweisheng/wot-design-uni/issues/458) +* 🐛 修复MessageBox设置为prompt时输入框绑定值异常的问题 ([140d960](https://github.com/Moonofweisheng/wot-design-uni/commit/140d96019d91a51f2af2efbd91a279d203a8408b)) + + +### ✏️ Documentation | 文档 + +* ✏️ 文档地址更新并增加QQ2群二维码 ([ef1ad01](https://github.com/Moonofweisheng/wot-design-uni/commit/ef1ad011f205612d6d2a8f5fc8cbf7d05dfffc7d)) +* ✏️ 修复Toast组件文档中关于提示方法描述的错误 ([8ed19a2](https://github.com/Moonofweisheng/wot-design-uni/commit/8ed19a2949064ec93cc281aadae4710d4d24a25f)) +* ✏️ 修正DateTimePicker文档中关于minDate和maxDate类型标注错误的问题 ([b322264](https://github.com/Moonofweisheng/wot-design-uni/commit/b322264c9a84d9acb82276ecacf5f12f1fd25f6e)) + +### [1.3.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.4...v1.3.5) (2024-07-20) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Text组件使用日期工具方法路径错误的问题 ([c4071c3](https://github.com/Moonofweisheng/wot-design-uni/commit/c4071c3759d8328f5dd6a6a374bb91dda5af1029)), closes [#453](https://github.com/Moonofweisheng/wot-design-uni/issues/453) + + +### ✏️ Documentation | 文档 + +* ✏️ 文档中全局引入ElTag用于显示组件上线版本 ([1d05654](https://github.com/Moonofweisheng/wot-design-uni/commit/1d056547c89f4b6f39e9f2b503d55790abc02b52)) +* ✏️ 修复RadioBox文档中关于表单模式表述错误的问题 ([1da6c34](https://github.com/Moonofweisheng/wot-design-uni/commit/1da6c34565d20c7fdb0970cfc93dada208b1f82e)) +* ✏️ 优化Segmented分段器关于绑定激活项的文档 ([5caf3b9](https://github.com/Moonofweisheng/wot-design-uni/commit/5caf3b95073c9bf28f280cbe88431a40f937e994)) + +### [1.3.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.3...v1.3.4) (2024-07-19) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复双向滑块响应式丢失 ([#436](https://github.com/Moonofweisheng/wot-design-uni/issues/436)) ([825ea9b](https://github.com/Moonofweisheng/wot-design-uni/commit/825ea9b5b81981ae2a8cb497b412bf950caf6aaf)) +* 🐛 修复Input组件[@input](https://github.com/input)事件参数错误的问题 ([82357f9](https://github.com/Moonofweisheng/wot-design-uni/commit/82357f916def6283003aef64ef522a5bb155c307)) +* 🐛 修复Table组件异步填充数据源无效的问题 ([c795c00](https://github.com/Moonofweisheng/wot-design-uni/commit/c795c00560a267de41d8ef3f976fe16c6ad8ba00)), closes [#445](https://github.com/Moonofweisheng/wot-design-uni/issues/445) +* 🐛 修复Upload组件accept为media时图片预览顺序混乱的问题 ([f8c1053](https://github.com/Moonofweisheng/wot-design-uni/commit/f8c1053abd2b0ce3f3bee89fbd0e9adcdf1961d2)), closes [#442](https://github.com/Moonofweisheng/wot-design-uni/issues/442) +* 🐛 Button按钮click事件直接透传event ([017aeda](https://github.com/Moonofweisheng/wot-design-uni/commit/017aeda89d7950024baddc40a4a1e83a36010be3)), closes [#443](https://github.com/Moonofweisheng/wot-design-uni/issues/443) +* 修复 textarea 组件同时使用 auto-height 和 no-border 属性时,no-border 属性不生效 ([#448](https://github.com/Moonofweisheng/wot-design-uni/issues/448)) ([a2f4b32](https://github.com/Moonofweisheng/wot-design-uni/commit/a2f4b322f5b9bd01a36a46b904684d531d5e6730)) + + +### ✨ Features | 新功能 + +* ✨ Button按钮组件支持使用自定义组件 ([517b583](https://github.com/Moonofweisheng/wot-design-uni/commit/517b583f262e374154111d635644dfb225a473c9)), closes [#310](https://github.com/Moonofweisheng/wot-design-uni/issues/310) +* ✨ Toast 轻提示组件支持使用组件库内置和自定义图标 ([723c51b](https://github.com/Moonofweisheng/wot-design-uni/commit/723c51bac98bb751af44f13737fba12deb298dd4)), closes [#444](https://github.com/Moonofweisheng/wot-design-uni/issues/444) +* ✨ Upload上传组件新增支持successStatus属性 ([99eab74](https://github.com/Moonofweisheng/wot-design-uni/commit/99eab74260e1e3c43f9f4b147edb4a5a3147d086)) +* 新增Text 文本组件 ([#403](https://github.com/Moonofweisheng/wot-design-uni/issues/403)) ([14f5f44](https://github.com/Moonofweisheng/wot-design-uni/commit/14f5f4430a7cd599149adf16f7bc704dc42f4d90)) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整QQ群与提问相关文档 ([cb11e98](https://github.com/Moonofweisheng/wot-design-uni/commit/cb11e9822ff714d3c1e03ad5f2b01b0a07e8fcec)) +* ✏️ 移除示例demo中手机号等字样方便过审 ([7488a7f](https://github.com/Moonofweisheng/wot-design-uni/commit/7488a7f708035b5f59c60078190c880cc8d11800)) + +### [1.3.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.2...v1.3.3) (2024-07-14) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复IndexBar索引值显示错误的问题 ([#433](https://github.com/Moonofweisheng/wot-design-uni/issues/433)) ([19dc35b](https://github.com/Moonofweisheng/wot-design-uni/commit/19dc35bf40eecc263ed19e9f54d05c004b1d3425)), closes [#408](https://github.com/Moonofweisheng/wot-design-uni/issues/408) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整演示demo中图片到npmmirror上 ([93ff5f9](https://github.com/Moonofweisheng/wot-design-uni/commit/93ff5f938fdb1ced622080bce9168bfe0e7ed771)) +* ✏️ 新增关于messageBox弹出多个的常见问题解答 ([a362928](https://github.com/Moonofweisheng/wot-design-uni/commit/a3629283aa3838803df900512afc990f920b3e0b)) +* ✏️ 修复SelectPicker文档中存在的拼写错误 ([9e28b57](https://github.com/Moonofweisheng/wot-design-uni/commit/9e28b5771a30fa0bf8aad60e8e494e0bc976d9a1)), closes [#426](https://github.com/Moonofweisheng/wot-design-uni/issues/426) +* ✏️ Upload文档增加微信隐私协议的介绍 ([c7f3a4a](https://github.com/Moonofweisheng/wot-design-uni/commit/c7f3a4adc2907bab30f5e075417f34541cba7a5e)) + +### [1.3.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.1...v1.3.2) (2024-07-08) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复ActionSheet样式调整导致微信编译错误的问题 ([a9189d2](https://github.com/Moonofweisheng/wot-design-uni/commit/a9189d2c263459a33cdbb68bec3dd0dd0213b5c0)) + +### [1.3.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.0...v1.3.1) (2024-07-08) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复暗黑模式下Grid和ActionSheet组件部分样式异常的问题 ([a28938c](https://github.com/Moonofweisheng/wot-design-uni/commit/a28938c91d4b437e6b583793e32f8373cec102ae)), closes [#409](https://github.com/Moonofweisheng/wot-design-uni/issues/409) + +## [1.3.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.28...v1.3.0) (2024-07-07) + + +### ✨ Features | 新功能 + +* ✨ Upload上传组件新增支持上传视频和文件 ([#412](https://github.com/Moonofweisheng/wot-design-uni/issues/412)) ([e07dbdd](https://github.com/Moonofweisheng/wot-design-uni/commit/e07dbdd5305c112fe3648ce988a45b2cc36ae143)), closes [#186](https://github.com/Moonofweisheng/wot-design-uni/issues/186) [#336](https://github.com/Moonofweisheng/wot-design-uni/issues/336) +* ✨select-picker组件增加open、close事件 ([#395](https://github.com/Moonofweisheng/wot-design-uni/issues/395)) ([9237a04](https://github.com/Moonofweisheng/wot-design-uni/commit/9237a04bcbde9960864b9a7b09a64fc2b6c27595)) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整ColPicker多列选择器文档中省市区数据源及演示demo ([d09bd03](https://github.com/Moonofweisheng/wot-design-uni/commit/d09bd037e735b02264074c2a251c59c01b8ff571)) +* ✏️ DropDownItem文档增加closed和opened介绍 ([401bd28](https://github.com/Moonofweisheng/wot-design-uni/commit/401bd284ceaafe957a0f4184d0a009bed70e9377)) +* ✏️ PasswordInput 修复示例代码错误的问题 ([#391](https://github.com/Moonofweisheng/wot-design-uni/issues/391)) ([519d172](https://github.com/Moonofweisheng/wot-design-uni/commit/519d17235b7c61acf2048104a495690bff0b9804)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Calendar等组件暗黑模式部分样式异常的问题 ([281e20f](https://github.com/Moonofweisheng/wot-design-uni/commit/281e20f2a922d98c00321d1316efc96b985c620d)), closes [#388](https://github.com/Moonofweisheng/wot-design-uni/issues/388) +* 🐛 修复IndexBar点击索引序号时未显示预期索引值的问题 ([c33991e](https://github.com/Moonofweisheng/wot-design-uni/commit/c33991ee14b8108bcd084b5d7b59f35cb79b2b35)), closes [#408](https://github.com/Moonofweisheng/wot-design-uni/issues/408) +* 🐛 修复Swiper在微信端长时间处于后台出现抖动的问题 ([#413](https://github.com/Moonofweisheng/wot-design-uni/issues/413)) ([4741439](https://github.com/Moonofweisheng/wot-design-uni/commit/4741439277f1a2668634a4e5e3649236ed95a627)), closes [#411](https://github.com/Moonofweisheng/wot-design-uni/issues/411) + +### [1.2.28](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.27...v1.2.28) (2024-06-24) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复omitBy工具方法实现错误导致Tabbar等组件徽标显示异常的问题 ([1491fe4](https://github.com/Moonofweisheng/wot-design-uni/commit/1491fe44616a0db1c165e2bed29637f8c46fbc7e)) + +### [1.2.27](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.26...v1.2.27) (2024-06-21) + + +### ✨ Features | 新功能 + +* ✨ add title slot for wd-collapse-item ([#372](https://github.com/Moonofweisheng/wot-design-uni/issues/372)) ([0252bd9](https://github.com/Moonofweisheng/wot-design-uni/commit/0252bd98254f8e108e545651127a744640b39692)), closes [#356](https://github.com/Moonofweisheng/wot-design-uni/issues/356) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整文档中关于类型声明文件的配置 ([0c38e98](https://github.com/Moonofweisheng/wot-design-uni/commit/0c38e986f0151b8aa2e17ab1770d1f39b178d354)) +* ✏️ Input 密码输入框示例移除disabled属性 ([3026c78](https://github.com/Moonofweisheng/wot-design-uni/commit/3026c78d237217b08e2fa3cdf64260c294a61b2b)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复ActionSheet禁用和加载状态时仍有点击效果的问题 ([c6baf45](https://github.com/Moonofweisheng/wot-design-uni/commit/c6baf452f0b626dea378148131d624589bb0c47e)), closes [#379](https://github.com/Moonofweisheng/wot-design-uni/issues/379) +* 🐛 修复Sidebar等组件css变量前缀错误的问题 ([0c31e16](https://github.com/Moonofweisheng/wot-design-uni/commit/0c31e16699e0b70b91384da0a5c0537b791e6bcf)) + +### [1.2.26](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.25...v1.2.26) (2024-06-14) + + +### ✨ Features | 新功能 + +* ✨ fab组件添加gap属性 ([#366](https://github.com/Moonofweisheng/wot-design-uni/issues/366)) ([7b44765](https://github.com/Moonofweisheng/wot-design-uni/commit/7b44765adc08fd16e055fbd326698a8f6b708426)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Fab初始化时存在初始位置闪现的问题 ([74c90be](https://github.com/Moonofweisheng/wot-design-uni/commit/74c90beb402e519fee1057870b0631673945cb73)) +* 🐛 修复Transition被打断时出现显示异常的问题 ([#368](https://github.com/Moonofweisheng/wot-design-uni/issues/368)) ([9c21b95](https://github.com/Moonofweisheng/wot-design-uni/commit/9c21b9512076cc95098a36ee7a7283f70386c94b)) + +### [1.2.25](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.24...v1.2.25) (2024-06-09) + + +### ✨ Features | 新功能 + +* ✨ Pickerview选择器新增immediate-change属性,目前微信和支付宝小程序支持。 ([3428ae1](https://github.com/Moonofweisheng/wot-design-uni/commit/3428ae17889a36552010e3f7cc4a9bebb7a94461)) +* ✨ Slider暴露initSlider方法用于外部初始化slider宽度信息 ([fc3e4ef](https://github.com/Moonofweisheng/wot-design-uni/commit/fc3e4ef3bb108e6bb6a660ffead40f4658c119e7)), closes [#344](https://github.com/Moonofweisheng/wot-design-uni/issues/344) + + +### ✏️ Documentation | 文档 + +* ✏️ 常见问题中增加关于交流群的内容 ([9ddaeec](https://github.com/Moonofweisheng/wot-design-uni/commit/9ddaeec32299463406ae2f60406cf39daff575cf)) +* ✏️ 更新文档中组件数量 ([10d2ba9](https://github.com/Moonofweisheng/wot-design-uni/commit/10d2ba9035970c5627fc731219ec529e634d2578)) +* ✏️ 增加关于微信小程序v-if和slot执行顺序异常问题的介绍 ([6a14879](https://github.com/Moonofweisheng/wot-design-uni/commit/6a1487900b214d071fdbda52034f220b8b046eec)) +* ✏️ 修正upload组件文档中change事件的dmeo错误 ([#360](https://github.com/Moonofweisheng/wot-design-uni/issues/360)) ([61004d3](https://github.com/Moonofweisheng/wot-design-uni/commit/61004d30ed3e79b439ef8a3c5d2e78723d7fa017)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复时间选择器设置minDate之后选择器显示值和实际选择值不一致的问题 ([3c0284f](https://github.com/Moonofweisheng/wot-design-uni/commit/3c0284f1f27b743ea3bdb7eeac5c489939057e13)), closes [#339](https://github.com/Moonofweisheng/wot-design-uni/issues/339) +* 🐛 修复ImgCropper未暴露resetImg和setRoate方法的问题 ([e58f111](https://github.com/Moonofweisheng/wot-design-uni/commit/e58f1111f2ae8e2da23e60c0ed60130373117970)), closes [#354](https://github.com/Moonofweisheng/wot-design-uni/issues/354) +* 🐛 修复Tag在钉钉小程序平台close方法不执行的问题 ([242d2f2](https://github.com/Moonofweisheng/wot-design-uni/commit/242d2f25c6ac829b5d20d63d520b1f8c8ae921a8)), closes [#359](https://github.com/Moonofweisheng/wot-design-uni/issues/359) + +### [1.2.24](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.23...v1.2.24) (2024-06-03) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Input支付宝小程序number/digit类型使用maxlength=-1时v-model失效的问题 ([7aa21b0](https://github.com/Moonofweisheng/wot-design-uni/commit/7aa21b0baadeccf4f0eb179f74332013acec6a10)) + +### [1.2.23](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.22...v1.2.23) (2024-06-02) + + +### ✏️ Documentation | 文档 + +* ✏️ 更新LICENSE文件地址 ([dae3ffc](https://github.com/Moonofweisheng/wot-design-uni/commit/dae3ffcc7b488dd6d87bc1c5e8ae16a78b794f85)) +* ✏️ 修复loading组件示例代码中文标点符号、img-cropper组件示例代码标签缺失的问题 ([#347](https://github.com/Moonofweisheng/wot-design-uni/issues/347)) ([d171255](https://github.com/Moonofweisheng/wot-design-uni/commit/d171255899d232f141c84aa1251c03cc1d0a0b75)) +* update select-picker doc ([#346](https://github.com/Moonofweisheng/wot-design-uni/issues/346)) ([7454452](https://github.com/Moonofweisheng/wot-design-uni/commit/7454452ad44331f329408cead9b483cf774cce5f)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Cell的value为0时无法渲染的问题 ([dc64c09](https://github.com/Moonofweisheng/wot-design-uni/commit/dc64c09e6c6f991fe6f8f9fcfa309392e233ce21)) +* 🐛 修复Sticky在h5和App端缓慢拖动时存在几率始终固定在顶部的问题 ([#350](https://github.com/Moonofweisheng/wot-design-uni/issues/350)) ([c5b3c5f](https://github.com/Moonofweisheng/wot-design-uni/commit/c5b3c5f68e1bb376249ed5f2c30b1898cc375abe)) + + +### ✨ Features | 新功能 + +* ✨ 调整Circle环形进度条在微信小程序端使用canvas2d支持同层渲染 ([#351](https://github.com/Moonofweisheng/wot-design-uni/issues/351)) ([4489517](https://github.com/Moonofweisheng/wot-design-uni/commit/44895179e4688ceb995ea1968d23df4f0bf9cdc2)) + +### [1.2.22](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.21...v1.2.22) (2024-05-23) + + +### ✏️ Documentation | 文档 + +* ✏️ 组件库介绍组件数量调整至70+ ([efd55ca](https://github.com/Moonofweisheng/wot-design-uni/commit/efd55ca8afc07368b8d9f348d73c9a25cf186c47)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Form指定prop为`a.b`时校验失败的问题 ([#329](https://github.com/Moonofweisheng/wot-design-uni/issues/329)) ([ab600b9](https://github.com/Moonofweisheng/wot-design-uni/commit/ab600b915a647ff089d5cfbb0ac955e3baa581c3)) + +### [1.2.21](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.20...v1.2.21) (2024-05-20) + + +### ✨ Features | 新功能 + +* ✨ 添加索引栏组件 ([#321](https://github.com/Moonofweisheng/wot-design-uni/issues/321)) ([f84e9af](https://github.com/Moonofweisheng/wot-design-uni/commit/f84e9affb1a044a37661c5d1dc118d834b49239c)) +* ✨ img组件添加loading、error插槽 ([#323](https://github.com/Moonofweisheng/wot-design-uni/issues/323)) ([00ffa9f](https://github.com/Moonofweisheng/wot-design-uni/commit/00ffa9f3e54f3ba9eec967887e195c0266ef0a41)) +* ✨ skeleton添加默认内容插槽 ([#322](https://github.com/Moonofweisheng/wot-design-uni/issues/322)) ([9a68c47](https://github.com/Moonofweisheng/wot-design-uni/commit/9a68c477dbf5e0f30f74882df92251eac707fdde)) +* add backtop ([#314](https://github.com/Moonofweisheng/wot-design-uni/issues/314)) ([bf9e55a](https://github.com/Moonofweisheng/wot-design-uni/commit/bf9e55a24e676a764b1e035ca86bd6fe26b87420)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Cell组件单独使用时设置border无效的问题 ([19b9f19](https://github.com/Moonofweisheng/wot-design-uni/commit/19b9f196466b88456e8b3e7221afd710da3df99b)) +* 🐛 修复Picker选择器多列选择模式绑定值为空数组时将列第一项作为显示值的问题 ([c3b96ce](https://github.com/Moonofweisheng/wot-design-uni/commit/c3b96ce912bfc13d30c09393dd57cbcbf2d0b80a)) +* 🐛 修复Sticky吸顶组件在微信小程序中放置在页面顶部时吸顶失效的问题 ([4ca3ebe](https://github.com/Moonofweisheng/wot-design-uni/commit/4ca3ebe7202f118a1bf6a462b27dc76ab6c720f9)), closes [#325](https://github.com/Moonofweisheng/wot-design-uni/issues/325) +* 修复wd-button在自定义样式时激活态样式问题 ([#312](https://github.com/Moonofweisheng/wot-design-uni/issues/312)) ([7544d69](https://github.com/Moonofweisheng/wot-design-uni/commit/7544d690f176b44a8e016688723af70d2a77388a)) + + +### ✏️ Documentation | 文档 + +* ✏️ 常见问题增加关于useToast等hooks的答疑以及自定义编译平台的内容 ([65597c7](https://github.com/Moonofweisheng/wot-design-uni/commit/65597c76b812e5e61be17879de320989d0873df4)) +* ✏️ 文档中增加解释导入方式的faq ([83fa0b0](https://github.com/Moonofweisheng/wot-design-uni/commit/83fa0b06927fddabd1021ee02c3c7f8377704786)) + +### [1.2.20](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.19...v1.2.20) (2024-05-12) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整捐赠榜单和友情链接的数据到cloudflare上 ([1314373](https://github.com/Moonofweisheng/wot-design-uni/commit/1314373af1dff95aee4cd3cddefebcb3a6a5c5d2)) +* ✏️ 推荐文档地址调整至cloudflare ([9119f30](https://github.com/Moonofweisheng/wot-design-uni/commit/9119f30b23676ad1b9a3869e362a3840ba288dc3)) +* ✏️ Curtain组件width属性标记为number类型 ([d172ce7](https://github.com/Moonofweisheng/wot-design-uni/commit/d172ce7ffcfebf29b184b57a7f74a25acad1f967)), closes [#303](https://github.com/Moonofweisheng/wot-design-uni/issues/303) + + +### ✨ Features | 新功能 + +* Segmented组件添加click事件 ([#301](https://github.com/Moonofweisheng/wot-design-uni/issues/301)) ([225ce22](https://github.com/Moonofweisheng/wot-design-uni/commit/225ce225ac7faedffd4686b908076c47ba111695)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复MessageBox中使用TextArea字数统计样式错误的问题 ([b186ac0](https://github.com/Moonofweisheng/wot-design-uni/commit/b186ac09294a4fede16c514cd96ff94f661fcbc9)), closes [#290](https://github.com/Moonofweisheng/wot-design-uni/issues/290) +* 🐛 修复PickerView可以滚动到禁用选项的问题 ([edd44ed](https://github.com/Moonofweisheng/wot-design-uni/commit/edd44eda3fc9879dc980b02d1885d77530a3d2e8)), closes [#302](https://github.com/Moonofweisheng/wot-design-uni/issues/302) +* 🐛 修复Popover指定placement后箭头显示异常的问题([#306](https://github.com/Moonofweisheng/wot-design-uni/issues/306)) ([a9b108d](https://github.com/Moonofweisheng/wot-design-uni/commit/a9b108d231a8e537aab4ba49781590bcafb9354d)) +* 🐛 修复release脚本处理最低版本号问题 ([c8077c9](https://github.com/Moonofweisheng/wot-design-uni/commit/c8077c9f3790e7844c902528d43596c4bc4025af)) +* 🐛 修复Sticky组件获取节点错误的问题 ([5483ea6](https://github.com/Moonofweisheng/wot-design-uni/commit/5483ea6c447f85229af66b950e34c1dc690fadb1)) +* 修复wd-calendar未抛出事件 ([c1203c9](https://github.com/Moonofweisheng/wot-design-uni/commit/c1203c91841c3d5bcd407923a577711e462207a3)) + +### [1.2.19](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.18...v1.2.19) (2024-05-01) + + +### ✨ Features | 新功能 + +* ✨ `Slider`组件`min`值允许负数 ([9e7c8d3](https://github.com/Moonofweisheng/wot-design-uni/commit/9e7c8d33eb2c0fccc44f465ed3b28d2cd81efa2d)), closes [#266](https://github.com/Moonofweisheng/wot-design-uni/issues/266) +* ✨ fab添加draggable属性 ([#259](https://github.com/Moonofweisheng/wot-design-uni/issues/259)) ([5e0cd6c](https://github.com/Moonofweisheng/wot-design-uni/commit/5e0cd6caa2296a44a3dc1b3d33033d4cc91d01b9)) +* ✨ table组件添加index参数 ([2161705](https://github.com/Moonofweisheng/wot-design-uni/commit/2161705a2f868f874b89ee28b6029677854a7741)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复`slider`组件`step`属性无效问题 ([50133b9](https://github.com/Moonofweisheng/wot-design-uni/commit/50133b9e5e2a18aace8cbf9eb7570579cc563f1d)), closes [#269](https://github.com/Moonofweisheng/wot-design-uni/issues/269) +* 🐛 修复Cell组件title文字对齐方式受外部影响的问题 ([caf66b6](https://github.com/Moonofweisheng/wot-design-uni/commit/caf66b6beeb236a9295cf0d8ec250557dc19e54e)), closes [#282](https://github.com/Moonofweisheng/wot-design-uni/issues/282) +* 🐛 修复SelectPicker无默认值时仍会查找选择项节点的问题 ([130c438](https://github.com/Moonofweisheng/wot-design-uni/commit/130c4383dc862e190b96bc3670a852a4cce3e629)), closes [#281](https://github.com/Moonofweisheng/wot-design-uni/issues/281) +* 🐛 修复Slider组件max和min变化时滑块和进度条未更新的问题 ([#276](https://github.com/Moonofweisheng/wot-design-uni/issues/276)) ([69303b5](https://github.com/Moonofweisheng/wot-design-uni/commit/69303b52077bd268e3563fa9096e91530bb978c5)) + + +### ✏️ Documentation | 文档 + +* ✏️ 补充Table组件关于Events的介绍 ([6760317](https://github.com/Moonofweisheng/wot-design-uni/commit/676031781b189a3a89dba9e57cb989c06999091a)), closes [#260](https://github.com/Moonofweisheng/wot-design-uni/issues/260) + +### [1.2.18](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.17...v1.2.18) (2024-04-23) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复InputNumber步进器组件在初始化时未发生变化仍触发change的问题 ([6ac20fd](https://github.com/Moonofweisheng/wot-design-uni/commit/6ac20fd60728e9056282466571c64ff747af4c9f)) +* 🐛 修复InputNumber的change事件无法取到当前绑定值的更新的问题 ([45980c5](https://github.com/Moonofweisheng/wot-design-uni/commit/45980c526a0b47fb1cb2c95ad50ab9f226464d7c)) + +### [1.2.17](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.16...v1.2.17) (2024-04-18) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复debounce调整后导致tabs无法切换的问题 ([bd594a7](https://github.com/Moonofweisheng/wot-design-uni/commit/bd594a7202d3cd4e641f23a0b98d468227370d6f)) + +### [1.2.16](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.15...v1.2.16) (2024-04-17) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Gap组件文档中safeAreaBottom属性名错误的问题 ([b03e39f](https://github.com/Moonofweisheng/wot-design-uni/commit/b03e39f601a68ff5f7e72aa3605279683e5e5b74)) +* 🐛 修复PickerView在绑定值为0时无法生效的问题 ([742b4d6](https://github.com/Moonofweisheng/wot-design-uni/commit/742b4d65255926a0e8c3899ae3ee2eb9d7b7e5e5)) + + +### ✏️ Documentation | 文档 + +* ✏️ 补充Img图片支持图片预览的最低支持版本 ([82d8e49](https://github.com/Moonofweisheng/wot-design-uni/commit/82d8e493c0723da9e3ba88981a45ea31ae8ef9d5)), closes [#244](https://github.com/Moonofweisheng/wot-design-uni/issues/244) + + +### ✨ Features | 新功能 + +* ✨ 阻止tag的关闭和新增事件冒泡 ([4c22cf5](https://github.com/Moonofweisheng/wot-design-uni/commit/4c22cf515e2e121b3bbe7d9fd64c5777ce72df32)) +* ✨ Checkbox 新增toggle方法 ([6ec0397](https://github.com/Moonofweisheng/wot-design-uni/commit/6ec0397bc9a5e80780b22245c29c6f05f1b25313)), closes [#239](https://github.com/Moonofweisheng/wot-design-uni/issues/239) +* ✨ date-time-picker-view 添加年选择 ([#241](https://github.com/Moonofweisheng/wot-design-uni/issues/241)) ([0073b32](https://github.com/Moonofweisheng/wot-design-uni/commit/0073b323967fe859ed15284607f4117243614d5e)) +* ✨ Noticebar 通知栏新增支持click点击事件 ([6fc786d](https://github.com/Moonofweisheng/wot-design-uni/commit/6fc786d9be63c2f021c10e0c48c466e0114f5c24)) +* ✨ TableColumn组件value插槽新增index参数 ([b8b03c3](https://github.com/Moonofweisheng/wot-design-uni/commit/b8b03c352b62e31a584faa41ced65d72bc427d89)) + +### [1.2.15](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.14...v1.2.15) (2024-04-11) + + +### ✏️ Documentation | 文档 + +* ✏️ 优化文档及演示demo访问速度 ([#232](https://github.com/Moonofweisheng/wot-design-uni/issues/232)) ([8d3f617](https://github.com/Moonofweisheng/wot-design-uni/commit/8d3f617e403fdbf53a29ca0d48624dc5da74fc94)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Button不同尺寸显示固定尺寸icon样式不协调的问题 ([2a73992](https://github.com/Moonofweisheng/wot-design-uni/commit/2a73992d9c551c51f4f3672167b972d0d0cca881)), closes [#235](https://github.com/Moonofweisheng/wot-design-uni/issues/235) +* 🐛 修复Upload自定义上传样式时未应用limit数量限制和customEvokeClass的问题 ([50baac8](https://github.com/Moonofweisheng/wot-design-uni/commit/50baac876279029214062a23072bb7c309110c0c)) + + +### ✨ Features | 新功能 + +* ✨ MessageBox支持确认前置处理钩子beforeConfirm ([78bed6a](https://github.com/Moonofweisheng/wot-design-uni/commit/78bed6a212a12639cd8831e3a1ad4542d6fbf518)), closes [#229](https://github.com/Moonofweisheng/wot-design-uni/issues/229) +* ✨ Toast轻提示增加opened、closed两个钩子 ([ead218b](https://github.com/Moonofweisheng/wot-design-uni/commit/ead218b87b6b0bd53c8c541c38561fdb45396c72)) + +### [1.2.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.13...v1.2.14) (2024-04-09) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复NoticeBar通知栏在小程序端垂直滚动无效的问题 ([eaeb935](https://github.com/Moonofweisheng/wot-design-uni/commit/eaeb935a299dee3c5e54dee6b926d625a7ef66a8)) + +### [1.2.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.12...v1.2.13) (2024-04-08) + + +### ✏️ Documentation | 文档 + +* ✏️ demo首页使用Cell组件重构显示样式 ([9ae8a20](https://github.com/Moonofweisheng/wot-design-uni/commit/9ae8a207f3ee8c765e6269b7ef5cb42ff1cd10fd)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复升级vue到3.4.2.之后defineEmits位置不规范导致访问'emit'报错的问题 ([ef574cf](https://github.com/Moonofweisheng/wot-design-uni/commit/ef574cfcb8f805ec308d8364cb887b65394e6108)), closes [#226](https://github.com/Moonofweisheng/wot-design-uni/issues/226) +* 🐛 修复NumberKeyboard暗黑模式无效的问题 ([b0cc958](https://github.com/Moonofweisheng/wot-design-uni/commit/b0cc958e0fd762915fe427275288a87d0c58ed38)) +* 🐛 修复Upload组件sourceType属性丢失默认值导致在iOS系统微信小程序报错的问题 ([b70991a](https://github.com/Moonofweisheng/wot-design-uni/commit/b70991a1133be77439fc139df9019527ded9b71d)), closes [#227](https://github.com/Moonofweisheng/wot-design-uni/issues/227) + +### [1.2.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.11...v1.2.12) (2024-04-07) + + +### ✨ Features | 新功能 + +* ✨ 增强`notice-bar`组件`vertical`模式下插槽的功能 ([e3daed5](https://github.com/Moonofweisheng/wot-design-uni/commit/e3daed516c958dbb5bff0d4a51d7d16cf9971da1)) +* ✨ NumberKeyboard数字键盘增加名为title的插槽 ([7edc746](https://github.com/Moonofweisheng/wot-design-uni/commit/7edc7462aa43ea800536ac0a464bb6e6c131a20c)), closes [#213](https://github.com/Moonofweisheng/wot-design-uni/issues/213) +* ✨ StatusTip缺省提示组件新增支持图片mode和自定义图片宽高 ([171c2bb](https://github.com/Moonofweisheng/wot-design-uni/commit/171c2bbdaf9e5ec62fa13fad1079b86daca85d54)) +* ✨ Swiper轮播为image-mode增加ts类型标注 ([9a4ceb2](https://github.com/Moonofweisheng/wot-design-uni/commit/9a4ceb21160dab06a08b39c35e50f69c7c49d023)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 修复 step 的 description 插槽不显示的bug ([f979ccc](https://github.com/Moonofweisheng/wot-design-uni/commit/f979cccc05b9956fe0df121fc2e8cbbb24544766)) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整演示demo iframe加载完成后再同步当前是否暗黑模式 ([9ab370e](https://github.com/Moonofweisheng/wot-design-uni/commit/9ab370e19395aaef013da8a386dd310c7deec59e)), closes [#210](https://github.com/Moonofweisheng/wot-design-uni/issues/210) +* ✏️ Steps步骤条增加控制进度的示例 ([8025174](https://github.com/Moonofweisheng/wot-design-uni/commit/80251742f6f5d560d546bd7cd812c35433158a91)) + +### [1.2.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.10...v1.2.11) (2024-04-06) + + +### ⚡ Performance Improvements | 性能优化 + +* ⚡ 优化Calendar日历选择器打开关闭时的动画效果 ([5fb9542](https://github.com/Moonofweisheng/wot-design-uni/commit/5fb9542087c62b8cf6974d2e5f4b5f455b456495)) + + +### ✏️ Documentation | 文档 + +* ✏️ `notice-bar`组件补充`event`事件 ([8f11c8a](https://github.com/Moonofweisheng/wot-design-uni/commit/8f11c8a0fe02f3bb0a2e7a67e105f2e33d658477)) +* ✏️ 优化文档与演示demo同步暗黑模式的逻辑 ([d057607](https://github.com/Moonofweisheng/wot-design-uni/commit/d0576071ebaeb69828b8c5e789471c3324dabb1f)), closes [#210](https://github.com/Moonofweisheng/wot-design-uni/issues/210) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复ActionSheet丢失props默认值的问题 ([e50cccc](https://github.com/Moonofweisheng/wot-design-uni/commit/e50cccceeccebeb99ca69712b9f64e8a9e5fd23f)) +* 🐛 修复Calendar部分文字运行时切换国际化未应用国际化文字的问题 ([857c922](https://github.com/Moonofweisheng/wot-design-uni/commit/857c922d4f3542cb543b8b99600bf9c48ffa24b9)) +* 🐛 修复Calendar的type为datetime且无默认值时无法在首次选择日期后选择时间的问题 ([3746ba3](https://github.com/Moonofweisheng/wot-design-uni/commit/3746ba304021c56e14414dfaed225c465869a473)), closes [#214](https://github.com/Moonofweisheng/wot-design-uni/issues/214) +* 🐛 修复search组件suffix插槽无法使用的问题 ([6a4af41](https://github.com/Moonofweisheng/wot-design-uni/commit/6a4af41b93e8edd92e297eaea7c1bc566bfb4d6d)) + + +### ✨ Features | 新功能 + +* ✨ `notice-bar`增加垂直滚动功能 ([93d048b](https://github.com/Moonofweisheng/wot-design-uni/commit/93d048b219d66718880609d6ec9086ce058121fa)), closes [#122](https://github.com/Moonofweisheng/wot-design-uni/issues/122) +* ✨ `notice-bar`增加多文本轮播功能 ([c2e5e9b](https://github.com/Moonofweisheng/wot-design-uni/commit/c2e5e9bbd86093a5795d93aa23c2bd03d8416767)) +* ✨ `upload`组件增加`mode`属性传递给预览`image` ([acf3f99](https://github.com/Moonofweisheng/wot-design-uni/commit/acf3f999033df7b2925040ff83ad1088d0e59a44)), closes [#203](https://github.com/Moonofweisheng/wot-design-uni/issues/203) +* ✨ img组件的mode属性增加类型`ImageMode` ([1398982](https://github.com/Moonofweisheng/wot-design-uni/commit/139898209fea4559a69cbaffed2e7b45b91aa107)) +* ✨ img组件增加enable-preview属性来支持点击预览功能 ([e6a3b73](https://github.com/Moonofweisheng/wot-design-uni/commit/e6a3b73142e37547e60b8f1dd1845fc3e9d5d17e)), closes [#193](https://github.com/Moonofweisheng/wot-design-uni/issues/193) +* ✨ swiper组件增加current属性控制轮播项功能 ([443fd8a](https://github.com/Moonofweisheng/wot-design-uni/commit/443fd8a19e3b73ee61ae6a1692c5409e3d0c0b84)), closes [#211](https://github.com/Moonofweisheng/wot-design-uni/issues/211) + +### [1.2.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.9...v1.2.10) (2024-04-02) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Step组件description插槽无法使用的问题 ([e431294](https://github.com/Moonofweisheng/wot-design-uni/commit/e431294ea2b97858f93513c112f1a7574654a87d)) +* 🐛 修复Toast、MessageBox二次打开时部分参数未重置的问题 ([e2e7d37](https://github.com/Moonofweisheng/wot-design-uni/commit/e2e7d378e577d3d1f5582464bdd9e6c4e6d82e3d)) + + +### ✨ Features | 新功能 + +* ✨ 为所有组件补充customStyle属性 ([964240e](https://github.com/Moonofweisheng/wot-design-uni/commit/964240e2e7f640586a18bec1c11b0359afcf99e2)), closes [#212](https://github.com/Moonofweisheng/wot-design-uni/issues/212) + + +### ✏️ Documentation | 文档 + +* ✏️ 更新vitepress至1.0.1 ([da7684f](https://github.com/Moonofweisheng/wot-design-uni/commit/da7684f33ada867a9ba2f22bb1489c804a7d840e)) +* ✏️ 修复更新vitepress至1.0.1后友情链接丢失logo的问题 ([1e36c39](https://github.com/Moonofweisheng/wot-design-uni/commit/1e36c39ff7ab814741792ee91a2ee7d9085862f9)) +* ✏️ Steps文档标题调整为步骤条 ([1ea7996](https://github.com/Moonofweisheng/wot-design-uni/commit/1ea79960fd9facef7aa5ef17f0f9bde03daa0d7c)) + +### [1.2.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.8...v1.2.9) (2024-04-01) + + +### ✨ Features | 新功能 + +* ✨ Segmented分段器change事件参数类型扩充为SegmentedOption ([5592bc4](https://github.com/Moonofweisheng/wot-design-uni/commit/5592bc49b9439ef34306741f16c4b5c702d562b2)), closes [#204](https://github.com/Moonofweisheng/wot-design-uni/issues/204) + +### [1.2.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.7...v1.2.8) (2024-03-30) + + +### 🐛 Bug Fixes | Bug 修复 + +* 修复useLocale 不传 message 会丢失原有语言配置的问题 ([#209](https://github.com/Moonofweisheng/wot-design-uni/issues/209)) ([e854d0e](https://github.com/Moonofweisheng/wot-design-uni/commit/e854d0e758e44cba9213992794974b7ae5985abf)) + + +### ✨ Features | 新功能 + +* ✨ SelectPicker单选模式支持自动完成 ([#207](https://github.com/Moonofweisheng/wot-design-uni/issues/207)) ([11aa887](https://github.com/Moonofweisheng/wot-design-uni/commit/11aa887ae36153c0a6a0cd9053fc94c70acbcb0d)), closes [#206](https://github.com/Moonofweisheng/wot-design-uni/issues/206) + + +### ✏️ Documentation | 文档 + +* ✏️ 文档中增加@uni-helper/vite-plugin-uni-components的使用提示 ([37d9d46](https://github.com/Moonofweisheng/wot-design-uni/commit/37d9d4631e434792b1e97dccac8a52a6d253d616)) + +### [1.2.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.6...v1.2.7) (2024-03-29) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复DatePicker占位符展示缺失的问题 ([8fbca94](https://github.com/Moonofweisheng/wot-design-uni/commit/8fbca94e3690e8b86ce59fbe668805839c50192b)) +* 🐛 修复DateTimePicker区域选择极值计算错误的问题 ([a1e9530](https://github.com/Moonofweisheng/wot-design-uni/commit/a1e9530a917981ca4cf96dde1aa268eaf3da059f)) +* 🐛 修复picker-view初始化报错的问题 ([2102f38](https://github.com/Moonofweisheng/wot-design-uni/commit/2102f38a107a7cc8a316cb7fdc5a9738a5bb7499)), closes [#205](https://github.com/Moonofweisheng/wot-design-uni/issues/205) +* 🐛 修复picker选择器在APP端包装二维数组逻辑错误导致无法实现多列选择器的问题 ([ed5d7ac](https://github.com/Moonofweisheng/wot-design-uni/commit/ed5d7ace2050f5ae7541c8fd2ec395de56fa73cc)) +* 🐛 移除文件移动时volar变更文件路径错误导致.vue文件中多出的无用路径字符串 ([1f8f8ae](https://github.com/Moonofweisheng/wot-design-uni/commit/1f8f8ae2bfb2b13a6b6fcd6435a2d75f47d0e775)) + +### [1.2.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.5...v1.2.6) (2024-03-27) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Picker 未选择时显示第一列值的问题 ([21839e0](https://github.com/Moonofweisheng/wot-design-uni/commit/21839e0caf170248f454d80645bc3aa2f3ae2cdb)) +* 🐛 修复DatetimePicker区间模式未选值时显示占位符错误的问题 ([37350ee](https://github.com/Moonofweisheng/wot-design-uni/commit/37350ee5234a0f30debd22d33fb168415ec4e72d)) + +### [1.2.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.4...v1.2.5) (2024-03-24) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复textarea在支付宝小程序上清除按钮点击热区失效的问题 ([84662f2](https://github.com/Moonofweisheng/wot-design-uni/commit/84662f254b85d3b554113c9ba4f73ca695596fe9)) + +### [1.2.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.3...v1.2.4) (2024-03-23) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复textarea、input的label存在icon时高度异常的问题 ([e487ced](https://github.com/Moonofweisheng/wot-design-uni/commit/e487ced1624ce9ba35b29537481302e07050612c)) +* 🐛 修复textarea无法换行的问题 ([25bd564](https://github.com/Moonofweisheng/wot-design-uni/commit/25bd56485508ae8b3dfffd13d47c306fbf42d65e)) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整组件库基于vite配置自动引入组件的介绍 ([2d23607](https://github.com/Moonofweisheng/wot-design-uni/commit/2d2360706fbe2a5d4024ceebd82720014c6b1ea2)) +* ✏️ 文档推荐用户从wot-design-uni.cn迁移至wot-design-uni.gitee.io ([72a567c](https://github.com/Moonofweisheng/wot-design-uni/commit/72a567c44867f049c1526f5d682e46155047516a)) +* ✏️ 增加steps设置激活项的介绍 ([7c0d36c](https://github.com/Moonofweisheng/wot-design-uni/commit/7c0d36c36214517d959aa27e284aacf59d2b074b)) + +### [1.2.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.2...v1.2.3) (2024-03-20) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复部分外部链接不可用的问题 ([e2fb515](https://github.com/Moonofweisheng/wot-design-uni/commit/e2fb5155c40e58e44920329cdfb4f2391bb81970)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 修复 checkbox 单独使用时无法切换选中状态的问题 ([#198](https://github.com/Moonofweisheng/wot-design-uni/issues/198)) ([4a20219](https://github.com/Moonofweisheng/wot-design-uni/commit/4a2021908f0d63ca398660950609bd5f4a7ca9b9)) + +### [1.2.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.1...v1.2.2) (2024-03-19) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复picker选择器绑定值value值为0时无法生效的问题 ([d4de4ba](https://github.com/Moonofweisheng/wot-design-uni/commit/d4de4ba93824905840adc49e2d85d7168c9fd48e)), closes [#195](https://github.com/Moonofweisheng/wot-design-uni/issues/195) + +### [1.2.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.0...v1.2.1) (2024-03-19) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复部分可为null的props丢失null类型的问题 ([604e9f3](https://github.com/Moonofweisheng/wot-design-uni/commit/604e9f3810f38637ee1a7640e642790719cd9d3f)) + +## [1.2.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.10...v1.2.0) (2024-03-19) + + +### ✨ Features | 新功能 + +* ✨ typescript类型支持增强 ([#192](https://github.com/Moonofweisheng/wot-design-uni/issues/192)) ([201e7a1](https://github.com/Moonofweisheng/wot-design-uni/commit/201e7a12b9c4023e35ff9540f5da09794ea3c6f7)) + +### [1.1.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.9...v1.1.10) (2024-03-15) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复tabbar默认shape固定底部安全区无遮挡的问题 ([03048bb](https://github.com/Moonofweisheng/wot-design-uni/commit/03048bba17966e13e864c4a3d29047986778d586)) + +### [1.1.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.8...v1.1.9) (2024-03-11) + + +### ✏️ Documentation | 文档 + +* ✏️ 推荐使用托管在gitee上的文档地址 ([24ae6ca](https://github.com/Moonofweisheng/wot-design-uni/commit/24ae6cac05b150ff8da3ab47cc4bb3eeac48a369)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复textarea在微信小程序平台下部分安卓手机maxlength不生效的问题 ([512e63b](https://github.com/Moonofweisheng/wot-design-uni/commit/512e63b0ad30ff7acb14fffbb124dba59e34d450)) + +### [1.1.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.7...v1.1.8) (2024-03-10) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复transitiont打开后立即关闭时无法关闭的问题 ([c1cebf6](https://github.com/Moonofweisheng/wot-design-uni/commit/c1cebf6de0b1c6a2f8a32aa4815adc8c0466eeca)) + +### [1.1.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.6...v1.1.7) (2024-03-09) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复badge组件多出一个script标签的问题 ([e1819b4](https://github.com/Moonofweisheng/wot-design-uni/commit/e1819b4dbcb3dc1244bbe5641cdb538d0ad9c5e7)), closes [#188](https://github.com/Moonofweisheng/wot-design-uni/issues/188) + +### [1.1.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.5...v1.1.6) (2024-03-06) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Tabar为round类型时开启safeAreaInsetBottom是样式异常的问题 ([aa9ae88](https://github.com/Moonofweisheng/wot-design-uni/commit/aa9ae88f35236dec15635bd8e4fd0c7023e5fb70)) + +### [1.1.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.4...v1.1.5) (2024-03-05) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Search、Input等组件clear事件在value变更前触发的问题 ([8d113a2](https://github.com/Moonofweisheng/wot-design-uni/commit/8d113a285dbffa705e44a31ad05e48f36978c46c)), closes [#185](https://github.com/Moonofweisheng/wot-design-uni/issues/185) + + +### ✏️ Documentation | 文档 + +* ✏️ 首页增加常见问题的入口 ([fd7a7dd](https://github.com/Moonofweisheng/wot-design-uni/commit/fd7a7dd287226f670cf02db9cf2856c9ebe52498)) + +### [1.1.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.3...v1.1.4) (2024-03-04) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Navbar显示下边框时fixed不生效的问题 ([18c09d8](https://github.com/Moonofweisheng/wot-design-uni/commit/18c09d87384699c044a9f84838b17f74eaff77b3)) + + +### ✏️ Documentation | 文档 + +* ✏️ 增加支付宝小程序styleIsolation配置的文档 ([68d1262](https://github.com/Moonofweisheng/wot-design-uni/commit/68d1262ed5ac6ccf8c078ba089e045739c2275e8)) + +### [1.1.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.2...v1.1.3) (2024-03-03) + + +### ✏️ Documentation | 文档 + +* ✏️ 文档中增加提问的智慧和toast、message组件的常见问题 ([2fdd4b1](https://github.com/Moonofweisheng/wot-design-uni/commit/2fdd4b1c050ed8805637ec0b082ca4d20c3c17b6)) + +### [1.1.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.1...v1.1.2) (2024-03-01) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Button会存在一个默认border的问题 ([#182](https://github.com/Moonofweisheng/wot-design-uni/issues/182)) ([3714ffb](https://github.com/Moonofweisheng/wot-design-uni/commit/3714ffb0f1de55f3eae5a36b9235bdbc518b0738)) + +### [1.1.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.0...v1.1.1) (2024-02-29) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 ImgCropper 在钉钉小程序平台无法展示所选图片的问题 ([db8d029](https://github.com/Moonofweisheng/wot-design-uni/commit/db8d029db3a227cd062c6e9d7c14eb9d0f3dae87)) +* 🐛 修复微信小程序css使用标签选择器抛出警告的问题(wd-img) ([#181](https://github.com/Moonofweisheng/wot-design-uni/issues/181)) ([ee3da01](https://github.com/Moonofweisheng/wot-design-uni/commit/ee3da016439d68f1d9d061bb1b1cbd10f2863aa4)) + +## [1.1.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.0.0...v1.1.0) (2024-02-27) + + +### ✨ Features | 新功能 + +* ✨ Button 支持微信小程序chooseavatar和agreeprivacyauthorization事件 ([177c726](https://github.com/Moonofweisheng/wot-design-uni/commit/177c726e0d0f9bc435f815af2e4fc8e917ef144d)) +* ✨ DropDown组件支持钉钉小程序 ([924c65b](https://github.com/Moonofweisheng/wot-design-uni/commit/924c65b4f66e7d1ff75aa2bcb5c6cbe4e045fb92)) +* ✨ Slider 支持钉钉小程序 ([bea7a49](https://github.com/Moonofweisheng/wot-design-uni/commit/bea7a499edc3e0681ec11dd26333d8a969dd9b0e)) + + +### ✏️ Documentation | 文档 + +* ✏️ 新增支持钉钉小程序平台 ([9525f23](https://github.com/Moonofweisheng/wot-design-uni/commit/9525f23f207af47c10c37614279b8318500e3ede)) +* ✏️ 修复Segment演示demo在钉钉小程序平台展示异常的问题 ([4fbe556](https://github.com/Moonofweisheng/wot-design-uni/commit/4fbe5569b3cb1761c2ef7847a4abc1721d3ed220)) +* ✏️ 支持平台的介绍中新增支付宝小程序 ([320e4dd](https://github.com/Moonofweisheng/wot-design-uni/commit/320e4dd2e102146b8a466d378c8356286faeb28c)) + +## [1.0.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.3.1...v1.0.0) (2024-02-26) + + +### ✨ Features | 新功能 + +* ✨ 支持支付宝小程序并提供ConfigProvider的便利性优化 ([e1baca3](https://github.com/Moonofweisheng/wot-design-uni/commit/e1baca3ce5201c38e6b0aee5e6cb7099ecba9772)) +* ✨ sticky组件支持支付宝平台 ([3805882](https://github.com/Moonofweisheng/wot-design-uni/commit/3805882b8b1f8ad165d8cda528fa0b5cf3f96c27)) + + +### ✏️ Documentation | 文档 + +* ✏️ 演示demo增加组件库版本号的显示 ([19a00e3](https://github.com/Moonofweisheng/wot-design-uni/commit/19a00e34652bf672f7fdfd28899625dac977a1b6)) + +### [0.3.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.3.0...v0.3.1) (2024-02-26) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复大尺寸checkbox选中样式异常的问题 ([413cf3b](https://github.com/Moonofweisheng/wot-design-uni/commit/413cf3b6a04358bca5284704d750cfd224c1d277)) + +## [0.3.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.23...v0.3.0) (2024-02-21) + + +### ✨ Features | 新功能 + +* ✨ 调整Button 按钮样式受主色控制并优化幽灵按钮显示效果 ([5f0d1f5](https://github.com/Moonofweisheng/wot-design-uni/commit/5f0d1f5f8bac81435d248348ec5823e82d35f7a4)) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复select-picker组件绑定值描述错误的问题 ([b287111](https://github.com/Moonofweisheng/wot-design-uni/commit/b2871114311656580ade25c25f0775d9246f32b7)), closes [#178](https://github.com/Moonofweisheng/wot-design-uni/issues/178) +* ✏️ 增加Button细边框幽灵按钮的使用说明 ([366c34b](https://github.com/Moonofweisheng/wot-design-uni/commit/366c34b69faedee4874221c604d1a6d5c8c1a8e0)) + +### [0.2.23](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.22...v0.2.23) (2024-02-07) + + +### ✏️ Documentation | 文档 + +* ✏️ 文档支持显示友情链接 ([adac43f](https://github.com/Moonofweisheng/wot-design-uni/commit/adac43f2a1b300d4169249e108389b3a24ac9ffa)) +* ✏️ 友情链接支持来自线上配置 ([50896bb](https://github.com/Moonofweisheng/wot-design-uni/commit/50896bb475c5e1c5be42bdc22a56a47db9a51481)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 MessageBox 国际化不生效的问题 ([48404a1](https://github.com/Moonofweisheng/wot-design-uni/commit/48404a1ccccf9081cf3e9f9918e20cb58a6bb12f)), closes [#177](https://github.com/Moonofweisheng/wot-design-uni/issues/177) + +### [0.2.22](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.21...v0.2.22) (2024-01-30) + + +### ✏️ Documentation | 文档 + +* ✏️ 修正 Popover 组件文档中menuclick示例错误的问题 ([9df96e7](https://github.com/Moonofweisheng/wot-design-uni/commit/9df96e7629296bfba2b7f951b83508cc9e4a3935)) + +### [0.2.21](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.19...v0.2.21) (2024-01-28) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Dropdown 组件点击已展开项时无法关闭的问题 ([3846590](https://github.com/Moonofweisheng/wot-design-uni/commit/38465905e76b929a4d4af93dfe4ad9f31503b2ad)) + + +### ✨ Features | 新功能 + +* ✨ 支持国际化 ([#168](https://github.com/Moonofweisheng/wot-design-uni/issues/168)) ([ce9f192](https://github.com/Moonofweisheng/wot-design-uni/commit/ce9f19244e4d376c5104be2b89d57426bf722aee)) + +### [0.2.19](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.18...v0.2.19) (2024-01-25) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Input 绑定值无法为null的问题 ([f745e14](https://github.com/Moonofweisheng/wot-design-uni/commit/f745e14d10d64b643aa2f9c0170f72db3a99bb3e)) +* 🐛 修复多列、单复选选择器列更新时显示值未更新的问题 ([5ba45b9](https://github.com/Moonofweisheng/wot-design-uni/commit/5ba45b94b711e1129873fa29b243a616087ddc2a)), closes [#167](https://github.com/Moonofweisheng/wot-design-uni/issues/167) + +### [0.2.18](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.17...v0.2.18) (2024-01-24) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 CheckBox 组件的选中色无法应用到css变量的问题 ([febfb61](https://github.com/Moonofweisheng/wot-design-uni/commit/febfb61cab3b55a9f78920ed4715f05a232fb9f6)) +* 🐛 修复 Radio 组件的选中色无法应用到css变量的问题 ([b7e8631](https://github.com/Moonofweisheng/wot-design-uni/commit/b7e86314139cc6291e851c350219fce837f0f26e)) + +### [0.2.17](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.16...v0.2.17) (2024-01-23) + + +### ✨ Features | 新功能 + +* ✨ Form 表单组件提供开关控制是否model变化时重置提示信息 ([b9f46ba](https://github.com/Moonofweisheng/wot-design-uni/commit/b9f46ba0da85acd7312753a34dd0ad3f2f7379a2)), closes [#166](https://github.com/Moonofweisheng/wot-design-uni/issues/166) + +### [0.2.16](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.15...v0.2.16) (2024-01-21) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复文档中关于日期选择器最大日期描述错误的问题 ([bb76ce3](https://github.com/Moonofweisheng/wot-design-uni/commit/bb76ce332c6977cbae981790aa356bc27c0d9efa)) + +### [0.2.15](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.14...v0.2.15) (2024-01-15) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Tab class类名属性错误的问题 ([dc87df7](https://github.com/Moonofweisheng/wot-design-uni/commit/dc87df70c7920d7cfabc571ace8beb2ce0dc2a7c)) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复 Upload 文档中before-upload钩子参数描述错误的问题 ([3ec7299](https://github.com/Moonofweisheng/wot-design-uni/commit/3ec7299ce724fce771b782f6110ba6ec29376291)) + +### [0.2.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.13...v0.2.14) (2024-01-14) + + +### ✨ Features | 新功能 + +* ✨ InputNumber步进器支持禁用输入框 ([933bce3](https://github.com/Moonofweisheng/wot-design-uni/commit/933bce314618956ff922daacef5b3594f36baf9b)) + +### [0.2.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.12...v0.2.13) (2024-01-12) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复演示文档刷新后指向localhost的问题 ([4cd8b16](https://github.com/Moonofweisheng/wot-design-uni/commit/4cd8b16bdf5ea8e93cff85396025844e9ebd031c)) + +### [0.2.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.11...v0.2.12) (2024-01-11) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Tabbar 错误地抛出提示信息的问题 ([1c89ed0](https://github.com/Moonofweisheng/wot-design-uni/commit/1c89ed0a7158e79556e83c6aeb89bd1e93e4ea0d)) + + +### ✏️ Documentation | 文档 + +* ✏️ 增加 Circle 组件使用插槽的示例 ([6341594](https://github.com/Moonofweisheng/wot-design-uni/commit/6341594295732dac951c465d95537f36addbbf9c)) +* ✏️ 增加展示gitee的star徽标 ([1abf962](https://github.com/Moonofweisheng/wot-design-uni/commit/1abf962e37e27c1c1688bed2026c66022e63ce9b)) + +### [0.2.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.10...v0.2.11) (2024-01-09) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Overlay 类型声明错误的问题 ([930e59a](https://github.com/Moonofweisheng/wot-design-uni/commit/930e59a9b09aee535ec4c316e44ed3c0e31be628)) + + +### ✏️ Documentation | 文档 + +* ✏️ 提供托管在Giteee上的文档网站 ([6d62e9e](https://github.com/Moonofweisheng/wot-design-uni/commit/6d62e9e7ddda0bd9f51f2ad9e2893f1ed3709c63)) + +### [0.2.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.9...v0.2.10) (2024-01-08) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 col-picker 暗黑模式下标题文字颜色不清楚的问题 ([217ffb7](https://github.com/Moonofweisheng/wot-design-uni/commit/217ffb7dacb66b2017145c6e43fc8c873a6e9dd2)) +* 🐛 修复 steps 组件自定义图标显示异常的问题 ([0300f63](https://github.com/Moonofweisheng/wot-design-uni/commit/0300f63f35a5afcd278aba3b4ab721f498716d94)) +* 🐛 修复支付宝小程序暗黑模式下 Input、Textarea 组件显示异常的问题 ([8a9c344](https://github.com/Moonofweisheng/wot-design-uni/commit/8a9c344872bfcd81a73f71520f51b6b849f516d5)) + +### [0.2.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.8...v0.2.9) (2024-01-07) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 col-picker 组件首次打开指示线位置异常的问题 ([323fb00](https://github.com/Moonofweisheng/wot-design-uni/commit/323fb00942b7032b678d92ab03360dc7bb8faae8)) + +### [0.2.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.7...v0.2.8) (2024-01-06) + + +### ✏️ Documentation | 文档 + +* ✏️ 展示netlify支持 ([410b180](https://github.com/Moonofweisheng/wot-design-uni/commit/410b180ec9c660ab9c49d6eb203d53c35919c512)) + +### [0.2.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.5...v0.2.7) (2024-01-06) + + +### ✨ Features | 新功能 + +* ✨ 优化provide/inject的使用方式 ([892f467](https://github.com/Moonofweisheng/wot-design-uni/commit/892f4675a848ee3d4c965c36d5c4034aa5806b6d)) + + +### ✏️ Documentation | 文档 + +* ✏️ 文档网站增加自定义footer ([dd8bc00](https://github.com/Moonofweisheng/wot-design-uni/commit/dd8bc003eedcdc43cdd60bb896c897d108dd4a51)) +* ✏️ 修复vitepress自定义footer展示错误的问题 ([c0701d5](https://github.com/Moonofweisheng/wot-design-uni/commit/c0701d584e5d9b84e6d913dd23666b80d803407b)) + +### [0.2.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.5...v0.2.6) (2024-01-06) + + +### ✨ Features | 新功能 + +* ✨ 优化provide/inject的使用方式 ([892f467](https://github.com/Moonofweisheng/wot-design-uni/commit/892f4675a848ee3d4c965c36d5c4034aa5806b6d)) + + +### ✏️ Documentation | 文档 + +* ✏️ 文档网站增加自定义footer ([dd8bc00](https://github.com/Moonofweisheng/wot-design-uni/commit/dd8bc003eedcdc43cdd60bb896c897d108dd4a51)) + +### [0.2.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.4...v0.2.5) (2023-12-28) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Form 导入FormRules、ErrorMessage时未指定为type的问题 ([c88c84e](https://github.com/Moonofweisheng/wot-design-uni/commit/c88c84e8b71fc2404643a623c28f4953ffe36e71)) +* 🐛 修复 SwipeAction 组件在H5端导致页面无法上下滚动的问题 ([1f68ce1](https://github.com/Moonofweisheng/wot-design-uni/commit/1f68ce13c8109dd92ca4bf055f66aa8dff24c83d)), closes [#149](https://github.com/Moonofweisheng/wot-design-uni/issues/149) + +### [0.2.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.3...v0.2.4) (2023-12-27) + +### [0.2.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.2...v0.2.3) (2023-12-27) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复动态表单演示页面标题错误的问题 ([7c65359](https://github.com/Moonofweisheng/wot-design-uni/commit/7c65359c88614ae53c4800d0946d8e09ef547a26)) + +### [0.2.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.1...v0.2.2) (2023-12-26) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 移除 Swiper 的list中不必填的属性 ([672f680](https://github.com/Moonofweisheng/wot-design-uni/commit/672f680051009edd23a67d4e32722839f519d9ba)) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复 Textarea 文档示例错误的问题 ([7da3a4c](https://github.com/Moonofweisheng/wot-design-uni/commit/7da3a4cdfe35f87193f57139de0819130424d6ea)) +* ✏️ 优化 Form 相关组件的文档介绍 ([6a0a7a7](https://github.com/Moonofweisheng/wot-design-uni/commit/6a0a7a730fcd8904609f8a48339e1079baf3e9be)) + +### [0.2.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.0...v0.2.1) (2023-12-25) + + +### ✏️ Documentation | 文档 + +* ✏️ PassowrdInput 密码输入框组件增加文档标题 ([cccc4cc](https://github.com/Moonofweisheng/wot-design-uni/commit/cccc4cc0d4952f594e5387bad32a7248009ebd9e)) + +## [0.2.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.70...v0.2.0) (2023-12-24) + + +### ✨ Features | 新功能 + +* ✨ 新增 Form 表单组件 ([c8086d6](https://github.com/Moonofweisheng/wot-design-uni/commit/c8086d624c01bfbae3b9dfc324d33d6bfe46e041)) +* ✨ 新增 PasswordInput 密码输入框 ([b8c68f9](https://github.com/Moonofweisheng/wot-design-uni/commit/b8c68f92f7ddbf3ae2a58bf36593a0cd0340f225)) +* ✨ 新增 textarea 文本域组件 ([ed56bcd](https://github.com/Moonofweisheng/wot-design-uni/commit/ed56bcdb0337c198e8834182d47d1cd83513091d)) +* ✨ 增加父子组件 Provide/Inject 的hooks ([eb971d4](https://github.com/Moonofweisheng/wot-design-uni/commit/eb971d4e86733b0337de0c63f26b373424a842f0)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Input 组件在支付宝平台存在一个默认padding的问题 ([921c906](https://github.com/Moonofweisheng/wot-design-uni/commit/921c90606e05ea1b29cdee39cde7858907b2cd4d)) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整主题定制相关文档 ([2d5b1af](https://github.com/Moonofweisheng/wot-design-uni/commit/2d5b1af2787d33ec24eb6e6ab9db6ff941d80c2b)) +* ✏️ 增加 textarea 文本域组件功能的迁移说明 ([61ebc7d](https://github.com/Moonofweisheng/wot-design-uni/commit/61ebc7db1e1db3e8634a87c24fae0869f4b6f17b)) +* ✏️ PasswordInput 密码输入框文档增加版本介绍 ([56ccf60](https://github.com/Moonofweisheng/wot-design-uni/commit/56ccf6005e502237e1ff45b5b52e852b402a10c9)) + +### [0.1.70](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.69...v0.1.70) (2023-12-23) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 picker 的列value为0时回显异常的问题 ([2ba93c3](https://github.com/Moonofweisheng/wot-design-uni/commit/2ba93c328c54c41b6e1e9ead946e9c46e278ebb9)), closes [#155](https://github.com/Moonofweisheng/wot-design-uni/issues/155) + +### [0.1.69](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.68...v0.1.69) (2023-12-13) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Notify 使用文档错误的问题 ([3fe6423](https://github.com/Moonofweisheng/wot-design-uni/commit/3fe6423c9c6727eaa3655029bf862b9be182b70b)), closes [#148](https://github.com/Moonofweisheng/wot-design-uni/issues/148) + +### [0.1.68](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.67...v0.1.68) (2023-12-07) + + +### ✏️ Documentation | 文档 + +* ✏️ 增加 Gap 组件的文档 ([9e3a8c1](https://github.com/Moonofweisheng/wot-design-uni/commit/9e3a8c1506f9ef93f9f0155ac948c8bc4d215ea8)) + +### [0.1.67](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.66...v0.1.67) (2023-12-06) + + +### ✨ Features | 新功能 + +* ✨ 新增 Gap 间隔槽组件 ([#147](https://github.com/Moonofweisheng/wot-design-uni/issues/147)) ([fa7cd16](https://github.com/Moonofweisheng/wot-design-uni/commit/fa7cd163810cbcd63fc2a99a6a92ccd8a803b2f1)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Picker组件v-model数据不更新的问题 ([e60f475](https://github.com/Moonofweisheng/wot-design-uni/commit/e60f47538130625a8c8f93e3a6795b7e71588002)), closes [#146](https://github.com/Moonofweisheng/wot-design-uni/issues/146) + +### [0.1.66](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.65...v0.1.66) (2023-12-01) + + +### ✨ Features | 新功能 + +* ✨ Tag 组件type增加属性值default ([#143](https://github.com/Moonofweisheng/wot-design-uni/issues/143)) ([48f0e4b](https://github.com/Moonofweisheng/wot-design-uni/commit/48f0e4b3c484755a0da4eb11fa814c6b52be74b1)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 ActionSheet 组件设置custom-class无效的问题 ([1e5bcf7](https://github.com/Moonofweisheng/wot-design-uni/commit/1e5bcf7d0a8be66b80de81a0359d3fb429fdf52d)) + +### [0.1.65](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.64...v0.1.65) (2023-11-29) + + +### ✨ Features | 新功能 + +* ✨ 新增 NumberKeyboard 数字键盘组件 ([#139](https://github.com/Moonofweisheng/wot-design-uni/issues/139)) ([7bb4455](https://github.com/Moonofweisheng/wot-design-uni/commit/7bb4455c6d9eca179ba174b8ad0da6ae8a09defc)) +* Tag新增类型标签添加slot ([7977dbb](https://github.com/Moonofweisheng/wot-design-uni/commit/7977dbbe3565eb06b700f2c55a31803647760fa9)) + + +### ✏️ Documentation | 文档 + +* ✏️ 新增关于 Tag 组件的add插槽的介绍 ([537fa5e](https://github.com/Moonofweisheng/wot-design-uni/commit/537fa5ebf8dcdc14ee12fc1f1e5a5f829653a14a)) + +### [0.1.64](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.63...v0.1.64) (2023-11-25) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复DateTimePicker标题展示和模式为区间时before-confirm参数错误的问题 ([7bcd12b](https://github.com/Moonofweisheng/wot-design-uni/commit/7bcd12ba633224dd42b160f0b43fadc99ac76707)) + +### [0.1.63](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.62...v0.1.63) (2023-11-23) + + +### ✨ Features | 新功能 + +* ✨ CountDown 倒计时组件支持custom-class和custom-style ([dd60d6d](https://github.com/Moonofweisheng/wot-design-uni/commit/dd60d6df855cc49eba36beb7bcfb9eeb96ed0c82)) +* ✨ Search 搜索组件支持自动聚焦和清空后自动聚焦 ([2e3ab63](https://github.com/Moonofweisheng/wot-design-uni/commit/2e3ab63d3dad582c44d9d9f8d2b57e21ee22f380)) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复文档中config-provider等页面的错误 ([f71e641](https://github.com/Moonofweisheng/wot-design-uni/commit/f71e6412e770f2043e4cb9a35950a68aacf0e542)) + +### [0.1.62](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.61...v0.1.62) (2023-11-22) + + +### ✨ Features | 新功能 + +* ✨ Badge 徽标组件支持控制是否显示0值 ([65cfb2c](https://github.com/Moonofweisheng/wot-design-uni/commit/65cfb2ca15c29783f6de48de0bda4ddc3d43664a)) +* ✨ Upload 上传组件支持h5端获取文件后缀名 ([59fe70c](https://github.com/Moonofweisheng/wot-design-uni/commit/59fe70c0d0c55c7ecca26902b41599be94e34fe3)) + + +### ✏️ Documentation | 文档 + +* ✏️ 优化 Upload 文档中关于云存储内容的样式 ([607ce05](https://github.com/Moonofweisheng/wot-design-uni/commit/607ce05100ffef9c5c98b503e580a718551f5552)) + +### [0.1.61](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.60...v0.1.61) (2023-11-20) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复 Tag 标签组件文档错乱的问题 ([502203b](https://github.com/Moonofweisheng/wot-design-uni/commit/502203bebf08d7e6851b8dd2f94768f6c620da26)) +* ✏️ ImgCropper 组件演示页面增加微信小程序隐私协议弹框 ([3af9246](https://github.com/Moonofweisheng/wot-design-uni/commit/3af9246d1f1876ba3c83f6829a9716ad37ae5829)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Calendar 日历组件存在未定义属性导致警告的问题 ([d0d3152](https://github.com/Moonofweisheng/wot-design-uni/commit/d0d3152a5ca1a3e06135b12f4565211258619d1f)) +* 🐛 修复 CountDown 倒计时组件文档手动控制示例错误的问题 ([3c373fb](https://github.com/Moonofweisheng/wot-design-uni/commit/3c373fbf3af02c8a73ddd3a4063f9408ec4f33ff)) +* 🐛 修复 SelectPicker 组件loading状态仍可以滚动的问题 ([c5a1bff](https://github.com/Moonofweisheng/wot-design-uni/commit/c5a1bfff576aad8a6f03288a6a12a8ed24f776f2)) + + +### ✨ Features | 新功能 + +* ✨ Upload 上传组件支持上传至云存储 ([523a6be](https://github.com/Moonofweisheng/wot-design-uni/commit/523a6be40b065c4cc28cfe81fdcb200142d9a455)) + +### [0.1.60](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.59...v0.1.60) (2023-11-20) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复 CountDown 倒计时组件默认slot用法的介绍错误的问题 ([2fbb88f](https://github.com/Moonofweisheng/wot-design-uni/commit/2fbb88fcd9fe21de09637d48149278d9aef5e1d9)) + +### [0.1.59](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.58...v0.1.59) (2023-11-19) + +### [0.1.58](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.57...v0.1.58) (2023-11-19) + + +### ✨ Features | 新功能 + +* ✨ 新增 CountDown 倒计时组件 ([a805d04](https://github.com/Moonofweisheng/wot-design-uni/commit/a805d04827600525c08fbc1848cb3a524b48e81a)) +* ✨ CountDown 倒计时组件支持小程序 ([22f249a](https://github.com/Moonofweisheng/wot-design-uni/commit/22f249ae5bdedea1ecebfe31350c7b5a1e394f2e)) + +### [0.1.57](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.56...v0.1.57) (2023-11-17) + + +### ✨ Features | 新功能 + +* ✨ 新增 Fab 悬浮动作按钮组件 ([3c526fe](https://github.com/Moonofweisheng/wot-design-uni/commit/3c526feb102ccf17da0678a6e1c004bb82d57f0f)) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复 Cell 组件点击反馈的介绍错误的问题 ([9096d81](https://github.com/Moonofweisheng/wot-design-uni/commit/9096d81f514348d6103f33590387d0406b217198)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Table 表格组件数字英文换行失效的问题 ([47ac339](https://github.com/Moonofweisheng/wot-design-uni/commit/47ac3390cb58d250129a9db6ade8d90f980855a1)) + +### [0.1.56](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.55...v0.1.56) (2023-11-12) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Tabbar 标签栏组件 bordered 属性无效的问题 ([69c2656](https://github.com/Moonofweisheng/wot-design-uni/commit/69c265638c6fc36a1479a37c052a572da333006f)) + +### [0.1.55](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.54...v0.1.55) (2023-11-12) + + +### 🐛 Bug Fixes | Bug 修复 + +* 修正README.md 中[贡献指南]链接错误,跳转失败的问题。 ([071de88](https://github.com/Moonofweisheng/wot-design-uni/commit/071de88f98fa90492032193606941fbcdfe9283d)) + + +### ✨ Features | 新功能 + +* ✨ Swiper 轮播图组件增加imageMode属性支持自定义图片裁剪缩放模式 ([4205c01](https://github.com/Moonofweisheng/wot-design-uni/commit/4205c0149d3224e318ef21563e96f0a843ad13bc)) + +### [0.1.54](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.53...v0.1.54) (2023-11-10) + + +### 🐛 Bug Fixes | Bug 修复 + +* 修正ColPicker多列选择器v-model类型提示使用Record[]实际上的数据是单维数组的问题 ([c490ac6](https://github.com/Moonofweisheng/wot-design-uni/commit/c490ac607e6f9eb7207b90943b83ce1696a30fd4)) + +### [0.1.53](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.52...v0.1.53) (2023-11-09) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Input 输入框组件包含无用显示内容的问题 ([13a3106](https://github.com/Moonofweisheng/wot-design-uni/commit/13a3106055d66083d640912bfff67f2e08781f03)) + +### [0.1.52](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.51...v0.1.52) (2023-11-09) + + +### ✨ Features | 新功能 + +* ✨ Input绑定值为null时的警告从error改为warn ([70f1407](https://github.com/Moonofweisheng/wot-design-uni/commit/70f1407eec057668da0117c9861b523ab667da70)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Badge 徽标组件暗黑模式下边框颜色未兼容的问题 ([c0a0b5a](https://github.com/Moonofweisheng/wot-design-uni/commit/c0a0b5aaea238f144978a3a9b2ab6db202dfdc21)), closes [#115](https://github.com/Moonofweisheng/wot-design-uni/issues/115) + +### [0.1.51](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.50...v0.1.51) (2023-11-06) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复引入错误依赖的问题 ([15bc876](https://github.com/Moonofweisheng/wot-design-uni/commit/15bc876a3026319c88ce4b757593243f9869ce39)) + +### [0.1.50](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.49...v0.1.50) (2023-11-06) + + +### ✨ Features | 新功能 + +* ✨ SidebarItem、TabbarItem、GridItem组件增加徽标自定义属性badge-props ([7143098](https://github.com/Moonofweisheng/wot-design-uni/commit/71430989bff81a137fc5199eeeefe0a4da3ce31d)) + +### [0.1.49](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.48...v0.1.49) (2023-11-05) + + +### ✨ Features | 新功能 + +* ✨ 新增 Sidebar 侧边栏组件 ([#113](https://github.com/Moonofweisheng/wot-design-uni/issues/113)) ([d189378](https://github.com/Moonofweisheng/wot-design-uni/commit/d189378a02aeb36c275218358849a187e88ce687)) + +### [0.1.48](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.47...v0.1.48) (2023-11-04) + + +### ✨ Features | 新功能 + +* ✨ Input 输入框增加支持微信小程序原生属性always-embed ([57d00ec](https://github.com/Moonofweisheng/wot-design-uni/commit/57d00ececd9849a2d21f59fc863b6ad8933419d8)) + +### [0.1.47](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.46...v0.1.47) (2023-11-02) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复 Image 图片组件演示demo样式不友好的问题 ([cbdab19](https://github.com/Moonofweisheng/wot-design-uni/commit/cbdab1959efff642a60a351ffd6454dcd173b9a4)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Input 组件为textarea类型时show-confirm-bar不生效的问题 ([eebec8a](https://github.com/Moonofweisheng/wot-design-uni/commit/eebec8a74fa9399bfd305cadb1a9b6a526e88568)) +* 🐛 img 预览demo布局错位 ([0397809](https://github.com/Moonofweisheng/wot-design-uni/commit/0397809d81010e109c238eefea56c82bd06a50cb)) + + +### ✨ Features | 新功能 + +* ✨ 图片添加圆角大小设置 ([98edaed](https://github.com/Moonofweisheng/wot-design-uni/commit/98edaed6cb1c81b9ed6e05561814aaa51b31b2b3)) +* ✨ Badge 徽标组件增加customStyle自定义样式 ([d194106](https://github.com/Moonofweisheng/wot-design-uni/commit/d194106f07fb46f6a979967ba327dee1b41ca70e)) + +### [0.1.46](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.45...v0.1.46) (2023-11-02) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Tabs 组件在微信小程序端有概率不绘制下划线的问题 ([d70ec65](https://github.com/Moonofweisheng/wot-design-uni/commit/d70ec65998d1ca1fbdbd3b4ef1af4a292a597f55)) + +### [0.1.45](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.44...v0.1.45) (2023-11-01) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Switch 开关组件自定义大小无效的问题 ([15ffa1f](https://github.com/Moonofweisheng/wot-design-uni/commit/15ffa1f9172d3c11722c71ca370c1016e25f2b41)) + +### [0.1.44](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.43...v0.1.44) (2023-11-01) + + +### ✨ Features | 新功能 + +* ✨ 使用 useQueue hook替换clickOut实现关闭多个气泡等组件的功能 ([3a24999](https://github.com/Moonofweisheng/wot-design-uni/commit/3a24999c1e28414b12806cad3c3bc6f7a445593f)) + + +### ✏️ Documentation | 文档 + +* ✏️ 优化演示项目首页样式 ([e98f30e](https://github.com/Moonofweisheng/wot-design-uni/commit/e98f30e0125e287d2bc5cdbcfff69a35cb7436d8)) + +### [0.1.43](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.42...v0.1.43) (2023-10-31) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Tooltip 文字提示组件微信端关闭按钮样式错误的问题 ([ec1b949](https://github.com/Moonofweisheng/wot-design-uni/commit/ec1b9490b9517d0e4ebe4a5130a418a684b1a589)) + +### [0.1.42](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.41...v0.1.42) (2023-10-31) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Popover、Tooltip 组件展开过程中无法遮盖图片的问题 ([db009c1](https://github.com/Moonofweisheng/wot-design-uni/commit/db009c1229413f7ecc446e3e3a1db4d7678268b3)) + +### [0.1.41](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.40...v0.1.41) (2023-10-31) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Popover、Tooltip 组件展开切换动画不流畅的问题 ([c765b08](https://github.com/Moonofweisheng/wot-design-uni/commit/c765b085a6018433bb95fd7647c091393e2e6e7c)), closes [#101](https://github.com/Moonofweisheng/wot-design-uni/issues/101) + +### [0.1.40](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.39...v0.1.40) (2023-10-30) + + +### ✏️ Documentation | 文档 + +* ✏️ 移除文档中 Search 组件未支持的插槽 ([325e140](https://github.com/Moonofweisheng/wot-design-uni/commit/325e14046de38eb7c4e792a64a290c9997af5cba)) + +### [0.1.39](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.38...v0.1.39) (2023-10-29) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 DateTimePicker 日期选择器组件双向绑定错误的问题 ([1b13873](https://github.com/Moonofweisheng/wot-design-uni/commit/1b13873cef4b7c760698abce7dca500cd548c660)) + + +### ✨ Features | 新功能 + +* ✨ 新增 Table 表格组件 ([#98](https://github.com/Moonofweisheng/wot-design-uni/issues/98)) ([c8395f8](https://github.com/Moonofweisheng/wot-design-uni/commit/c8395f8a7e1ad041b003672081b715a7c755adc1)) +* ✨ Collapse 折叠面板组件增加分割线 ([adc6633](https://github.com/Moonofweisheng/wot-design-uni/commit/adc6633ad80b74e801a48a50917c9a2d378de9e0)), closes [#97](https://github.com/Moonofweisheng/wot-design-uni/issues/97) + +### [0.1.38](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.37...v0.1.38) (2023-10-25) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Upload 组件showLimitNum属性名拼写错误的问题 ([301cbff](https://github.com/Moonofweisheng/wot-design-uni/commit/301cbff20facf60b5645108972f22c8c14235f87)) + +### [0.1.37](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.36...v0.1.37) (2023-10-25) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复Tabbar组件类型警告的问题并优化文档相关链接 ([28c3cef](https://github.com/Moonofweisheng/wot-design-uni/commit/28c3cefdfc24f3f6f2669de5f93456a0db281f72)) +* ✏️ issues 模板更新 ([e34c5cd](https://github.com/Moonofweisheng/wot-design-uni/commit/e34c5cded1c850d22165c544a3c6a351701479ec)) + +### [0.1.36](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.35...v0.1.36) (2023-10-21) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Tabs 指定name时双向绑定值仍为index的问题 ([756cad8](https://github.com/Moonofweisheng/wot-design-uni/commit/756cad8d6fcaefb0bf73f1cd2b9f4a24f5827b37)), closes [#91](https://github.com/Moonofweisheng/wot-design-uni/issues/91) + +### [0.1.35](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.34...v0.1.35) (2023-10-21) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Tabs 组件通过name匹配时抛出异常的问题 ([b36fb1f](https://github.com/Moonofweisheng/wot-design-uni/commit/b36fb1f9def0aa99c521ffc20c6cae8074b56838)), closes [#91](https://github.com/Moonofweisheng/wot-design-uni/issues/91) + +### [0.1.34](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.33...v0.1.34) (2023-10-18) + + +### ✨ Features | 新功能 + +* ✨ SelectPicker 单复选选择器增加 scroll-into-view 属性支持定位到选中值 ([00b27c1](https://github.com/Moonofweisheng/wot-design-uni/commit/00b27c187438426471dab2ea15bc39d627773ab2)), closes [#68](https://github.com/Moonofweisheng/wot-design-uni/issues/68) + +### [0.1.33](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.32...v0.1.33) (2023-10-17) + + +### ✨ Features | 新功能 + +* ✨ 新增 Navbar 导航栏组件 ([#86](https://github.com/Moonofweisheng/wot-design-uni/issues/86)) ([5f66f71](https://github.com/Moonofweisheng/wot-design-uni/commit/5f66f713fae9e693fda4a472bc3e0767a1a6d3e8)) + +### [0.1.32](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.31...v0.1.32) (2023-10-16) + + +### ✨ Features | 新功能 + +* ✨ Tabs 组件调整为受控组件 ([b2a70bc](https://github.com/Moonofweisheng/wot-design-uni/commit/b2a70bc8f32800119924b29283db760af8a3ddb1)), closes [#82](https://github.com/Moonofweisheng/wot-design-uni/issues/82) + +### [0.1.31](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.30...v0.1.31) (2023-10-16) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复wd-popup组件的click-modal方法错误调用的问题 ([224e3e5](https://github.com/Moonofweisheng/wot-design-uni/commit/224e3e53f912a236e8e24f8afef64fa09f6a89aa)) + + +### ✏️ Documentation | 文档 + +* ✏️ 更新文档中关于组件数量的介绍 ([4fa7355](https://github.com/Moonofweisheng/wot-design-uni/commit/4fa7355e69a8bb32d1c9924cfc717caaf3345ee5)) +* ✏️ 增加 Overlay 遮罩层组件的文档 ([3bca4b6](https://github.com/Moonofweisheng/wot-design-uni/commit/3bca4b65c2bc7cd7f90e8b9513c619799f9a438b)) + +### [0.1.30](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.29...v0.1.30) (2023-10-14) + + +### ✨ Features | 新功能 + +* ✨ 新增 Overlay 遮罩层组件 ([41b2c4f](https://github.com/Moonofweisheng/wot-design-uni/commit/41b2c4f3677dcce9c3e18875b7a1ec32d02b3d6a)) +* ✨ Popup 弹出层组件增加 lock-scroll 属性 ([a6987e6](https://github.com/Moonofweisheng/wot-design-uni/commit/a6987e65da2f121d4e95c1b5cb271ed8f9a06e58)) + +### [0.1.29](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.28...v0.1.29) (2023-10-13) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Tabbar 标签栏组件固定底部时不设置placeholder情况下仍占据相应空间的问题 ([b58f9df](https://github.com/Moonofweisheng/wot-design-uni/commit/b58f9dfc8230e9427f2af658c8315c5b022b232c)) + +### [0.1.28](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.27...v0.1.28) (2023-10-12) + + +### ✏️ Documentation | 文档 + +* ✏️ 文档样式优化 ([f21ecb9](https://github.com/Moonofweisheng/wot-design-uni/commit/f21ecb9dfbfbf0afe49a760d24ebdc08e4799717)) + +### [0.1.27](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.26...v0.1.27) (2023-10-12) + + +### ⚡ Performance Improvements | 性能优化 + +* ⚡ Segmented 分段器组件兼容支付宝小程序 ([3fd57a6](https://github.com/Moonofweisheng/wot-design-uni/commit/3fd57a600b537b945a8224bb97344baa9b0929e0)) + + +### ✏️ Documentation | 文档 + +* ✏️ 调整文档中图片的CDN地址 ([f704568](https://github.com/Moonofweisheng/wot-design-uni/commit/f704568f0299acbd3cc2d88934bfa1641b6cc792)) +* ✏️ 修复文档中根节点错写为根结点的问题 ([6da4145](https://github.com/Moonofweisheng/wot-design-uni/commit/6da414503ceb8b6de680b10332af45dbbbe7229d)) + + +### ✨ Features | 新功能 + +* ✨ 新增 Tabbar 标签栏组件 ([aa0bf19](https://github.com/Moonofweisheng/wot-design-uni/commit/aa0bf194865e381af41f7afa18e46105e0c812a9)) +* ✨ Icon 组件新增图标并支持第三方iconfont ([bc241ac](https://github.com/Moonofweisheng/wot-design-uni/commit/bc241acfc103309f196f4c04e08288526a056073)) + +### [0.1.26](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.25...v0.1.26) (2023-10-10) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Slider 滑块组件双向滑动时右边滑块百分比计算错误的问题 ([92db0f2](https://github.com/Moonofweisheng/wot-design-uni/commit/92db0f2c7fb60b04e1562c55f6296b1b2b456144)) + +### [0.1.25](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.24...v0.1.25) (2023-10-10) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Silder 滑块组件双向滑动时自定义最大值小于100无法滚动到最大值的问题 ([a70afa4](https://github.com/Moonofweisheng/wot-design-uni/commit/a70afa43239bc233ee0250e26227dbacd5c7021b)), closes [#69](https://github.com/Moonofweisheng/wot-design-uni/issues/69) + +### [0.1.24](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.23...v0.1.24) (2023-10-10) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 优化 Badge 徽标组件超出max的显示并修复分段器组件错误依赖的问题 ([a48adc8](https://github.com/Moonofweisheng/wot-design-uni/commit/a48adc8395ab167bb88a7a647420b467d7e4c46d)) + +### [0.1.23](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.22...v0.1.23) (2023-09-28) + + +### ✨ Features | 新功能 + +* ✨ 增加 segmented 分段器组件 ([00f52c8](https://github.com/Moonofweisheng/wot-design-uni/commit/00f52c89e0aebc86f70aa8a7391ce1f17412333d)) + +### [0.1.22](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.21...v0.1.22) (2023-09-25) + + +### ✨ Features | 新功能 + +* ✨ 新增 Swiper 轮播图组件 ([cf9fe98](https://github.com/Moonofweisheng/wot-design-uni/commit/cf9fe9807efe863e786bc56eedf506647ac143d2)) + +### [0.1.21](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.20...v0.1.21) (2023-09-22) + +### [0.1.20](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.19...v0.1.20) (2023-09-20) + + +### ✏️ Documentation | 文档 + +* ✏️ 恢复展示 Circle 组件的演示Demo ([c2cba05](https://github.com/Moonofweisheng/wot-design-uni/commit/c2cba056578593172998f03592652ab63ed23aef)) +* ✏️ 文档演示项目 Circle 页面文件调整为大写 ([fff8de8](https://github.com/Moonofweisheng/wot-design-uni/commit/fff8de8f8d5f829c5b054d863905a7bb116f45f4)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Circle 组件重复创建canvas导致警告的问题 ([6917201](https://github.com/Moonofweisheng/wot-design-uni/commit/69172016ba840458dd40755050929a8231fd4cd5)) +* 🐛 修复 Skeleton 骨架屏组件编译到APP端异常的问题([#52](https://github.com/Moonofweisheng/wot-design-uni/issues/52)) ([7a9a31b](https://github.com/Moonofweisheng/wot-design-uni/commit/7a9a31bd5db76419408a114fbed02c108b972049)) +* 🐛 修复 Tag 组件编译到微信小程序平台样式错误的问题([#53](https://github.com/Moonofweisheng/wot-design-uni/issues/53)) ([6aec241](https://github.com/Moonofweisheng/wot-design-uni/commit/6aec2414a384c68e7b4b09f57d028173be942f7b)) + +### [0.1.19](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.18...v0.1.19) (2023-09-20) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Cell、Grid 组件跳转方法在编译到H5端失效的问题([#49](https://github.com/Moonofweisheng/wot-design-uni/issues/49)) ([51425b1](https://github.com/Moonofweisheng/wot-design-uni/commit/51425b107a8b262bf9c1f0c7ee41bb8d56a12837)) + + +### ✨ Features | 新功能 + +* ✨ 新增 Circle 环形进度条组件,支持进度渐变动画 ([7c38a6f](https://github.com/Moonofweisheng/wot-design-uni/commit/7c38a6f03e76d91d82a80d2a4cdd875acfb7290b)) + +### [0.1.18](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.17...v0.1.18) (2023-09-19) + + +### ✏️ Documentation | 文档 + +* ✏️ README中增加展示 star-history ([e7cd794](https://github.com/Moonofweisheng/wot-design-uni/commit/e7cd794201435ae8109b562daf70def74ab4ac98)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 PickerView 组件选中框被遮盖的问题([#46](https://github.com/Moonofweisheng/wot-design-uni/issues/46)) ([a60440b](https://github.com/Moonofweisheng/wot-design-uni/commit/a60440b8c52723e4c194b103e9b1b236a7cb29fe)) + +### [0.1.17](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.16...v0.1.17) (2023-09-19) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复 Slider 滑块组件最大值和最小值不生效的问题([#43](https://github.com/Moonofweisheng/wot-design-uni/issues/43)) ([0fa7f46](https://github.com/Moonofweisheng/wot-design-uni/commit/0fa7f46718e918007491a3d9494292a003924243)) + +### [0.1.16](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.15...v0.1.16) (2023-09-18) + + +### ✨ Features | 新功能 + +* ✨ 新增 WaterMark 水印组件 ([70d8c25](https://github.com/Moonofweisheng/wot-design-uni/commit/70d8c2546135fce1709edb0e1ba0c3b66c1e9e2e)) + +### [0.1.15](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.14...v0.1.15) (2023-09-18) + + +### ✏️ Documentation | 文档 + +* ✏️ 优化DateTimePicker组件关于time类型选择器绑定值格式的介绍 ([9e958c7](https://github.com/Moonofweisheng/wot-design-uni/commit/9e958c73f1d09ee0e02097e3ca8eeabfcc1bc59b)) + +### [0.1.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.13...v0.1.14) (2023-09-14) + + +### ✏️ Documentation | 文档 + +* ✏️ 增加QQ群沟通渠道 ([80efad9](https://github.com/Moonofweisheng/wot-design-uni/commit/80efad950613d65e7e65d305ad6efe7cd0e201d8)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复SelectPicker 单复选选择器单选可搜索状态搜索报错的问题([#38](https://github.com/Moonofweisheng/wot-design-uni/issues/38)) ([01cf01d](https://github.com/Moonofweisheng/wot-design-uni/commit/01cf01d46fbc4ac35f0c09e3db6f6d18b2d3455e)) + +### [0.1.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.12...v0.1.13) (2023-09-12) + + +### ✨ Features | 新功能 + +* ✨ Tabs组件增加animated属性支持切换动画 ([2572ea4](https://github.com/Moonofweisheng/wot-design-uni/commit/2572ea4c31f834bb9c8776322c24148ca2bda4e2)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Popover组件content属性必填警告的问题 ([4d8f8e6](https://github.com/Moonofweisheng/wot-design-uni/commit/4d8f8e640742b0588b91b0a5b82a062b976f8306)) + +### [0.1.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.11...v0.1.12) (2023-09-12) + + +### ✏️ Documentation | 文档 + +* ✏️ 修复文档中定制主题和反馈组件404的问题 ([c0302ad](https://github.com/Moonofweisheng/wot-design-uni/commit/c0302ada89ea15039ef516f4a425b5e18512c2d5)) +* ✏️ 修复Button组件文档中loading属性重复的问题 ([b26da5a](https://github.com/Moonofweisheng/wot-design-uni/commit/b26da5aba7d698adc75c3e1d143660a698ce5de8)) + +### [0.1.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.10...v0.1.11) (2023-09-08) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复文档中部分页面存在死链问题 ([b3e5cbe](https://github.com/Moonofweisheng/wot-design-uni/commit/b3e5cbef1116d9a356f7c9c18dffc1caec20ea22)) + +### [0.1.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.9...v0.1.10) (2023-09-08) + + +### ✏️ Documentation | 文档 + +* ✏️ 将驼峰命名的文档文件改为短横线命名便于爬虫爬取及搜索 ([497e991](https://github.com/Moonofweisheng/wot-design-uni/commit/497e991903559c9d62dcb1b00842ee377d70b445)) +* ✏️ 优化icon组件文档的体验,支持点击图标复制使用示例 ([ce0526b](https://github.com/Moonofweisheng/wot-design-uni/commit/ce0526b99dcd203d3f1081a8fd6a0551da88b9b8)) + +### [0.1.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.8...v0.1.9) (2023-09-08) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复npm包未配置主入口导致在使用Hbx创建的项目中通过npm安装编译警告的问题 ([fa95a0d](https://github.com/Moonofweisheng/wot-design-uni/commit/fa95a0d19b6e13157154405ddaa2525545bd9f7e)) + +### [0.1.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.7...v0.1.8) (2023-09-07) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复ActionSheet等组件在H5端隐藏导航栏或在tabbar页面高度计算错误的问题 ([39201cb](https://github.com/Moonofweisheng/wot-design-uni/commit/39201cbeddde1c7ea883ad331c0607bced755475)) +* 🐛 修复pmpm安装时ts导入类型信息在H5平台报错的问题 ([237c03c](https://github.com/Moonofweisheng/wot-design-uni/commit/237c03c6ae8d041c565ca6bb984765be4418f9e1)) + +### [0.1.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.6...v0.1.7) (2023-09-06) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复tabs组件change事件执行两次的问题 ([819059a](https://github.com/Moonofweisheng/wot-design-uni/commit/819059abe19fcf8f9646703fcc7a472b6ae62d4e)) + +### [0.1.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.5...v0.1.6) (2023-09-06) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Input组件内置变量showClear和showWordCount定义为props的问题 ([8021a35](https://github.com/Moonofweisheng/wot-design-uni/commit/8021a35ac9d05d549909531ff4f1c7325127833e)) +* 🐛 修复pnpm安装时运行到h5平台Ref导入报错的问题 ([39c68bf](https://github.com/Moonofweisheng/wot-design-uni/commit/39c68bf57720c1a12b99412c96e46b341cf536b5)) + +### [0.1.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.4...v0.1.5) (2023-09-05) + + +### ✏️ Documentation | 文档 + +* ✏️ 增加Stickty和Tabs组件关于H5端自定义导航栏的offset-top的处理方案 ([8a03c4d](https://github.com/Moonofweisheng/wot-design-uni/commit/8a03c4da64296e88a7b3aff5efed4ac04cd039b6)) + +### [0.1.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.3...v0.1.4) (2023-09-05) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复CollapseItem组件在微信小程序中展开/收起时指向图标未跟随转动的问题 ([7d0eeae](https://github.com/Moonofweisheng/wot-design-uni/commit/7d0eeae92f2f7b7664a23f7d548187ed8075d5b0)) + +### [0.1.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.2...v0.1.3) (2023-09-03) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复通过npm安装时配置自动导入Notify、Toast、Message组件无法打开的问题 ([f45b739](https://github.com/Moonofweisheng/wot-design-uni/commit/f45b73907227c25d9c2fd7b7f0018cc2ab5c47d1)) + +### [0.1.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.1...v0.1.2) (2023-09-03) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复部分js引入路径问题 ([67cdfae](https://github.com/Moonofweisheng/wot-design-uni/commit/67cdfaebf9478e286758b2ef851e1a44dc8565a6)) + +### [0.1.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.0...v0.1.1) (2023-09-02) + +## [0.1.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.14...v0.1.0) (2023-09-02) + + +### ✏️ Documentation | 文档 + +* ✏️ ConfigProvider组件演示页面增加手动切换暗黑模式 ([e5f55c7](https://github.com/Moonofweisheng/wot-design-uni/commit/e5f55c72fc1ed6e603f22e501d6cff9d8212a976)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Grid组件不展示border的问题 ([819bbbc](https://github.com/Moonofweisheng/wot-design-uni/commit/819bbbca6ab1c999096936da5e9d2dd664e480ce)) +* 🐛 修复MessageBox组件取消按钮不展示的问题 ([d8563d8](https://github.com/Moonofweisheng/wot-design-uni/commit/d8563d833d75b27d0c497c6c945fae8c00ef8dc7)) + +### [0.0.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.13...v0.0.14) (2023-09-02) + + +### ✨ Features | 新功能 + +* ✨ 优化缺省状态组件StautsTip,增加支持自定义url和图片大小 ([f463d32](https://github.com/Moonofweisheng/wot-design-uni/commit/f463d3258a954e64352df36004d34b0f12be9a8f)) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复util中addUnit无法处理有单位的字符串的问题 ([8967540](https://github.com/Moonofweisheng/wot-design-uni/commit/8967540ad0f3f0ad7426ee79571cfc4dee6c4d0c)) + + +### ✏️ Documentation | 文档 + +* ✏️ 完善和修复文档中不详细不正确的内容 ([d1b118e](https://github.com/Moonofweisheng/wot-design-uni/commit/d1b118ea78a797499f465269d3a838c0770d993a)) + +### [0.0.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.12...v0.0.13) (2023-09-01) + + +### ✏️ Documentation | 文档 + +* ✏️ 官网地址迁移至阿里云oss ([a98868a](https://github.com/Moonofweisheng/wot-design-uni/commit/a98868ae6213c7d7002e5a88893aabe1d0f5d11b)) + +### [0.0.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.11...v0.0.12) (2023-08-30) + +### [0.0.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.10...v0.0.11) (2023-08-30) + + +### ✨ Features | 新功能 + +* ✨ util工具类提供更好的类型提示 ([4fed439](https://github.com/Moonofweisheng/wot-design-uni/commit/4fed43926f49be6a86ebab54bb36a1a086df4ac6)) + +### [0.0.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.9...v0.0.10) (2023-08-27) + + +### ✨ Features | 新功能 + +* ✨ 新增Notify组件、演示demo、文档 ([#9](https://github.com/Moonofweisheng/wot-design-uni/issues/9)) ([996fc39](https://github.com/Moonofweisheng/wot-design-uni/commit/996fc39d708699214faf2e54224b8d38a8a706f7)) +* ✨ 新增Skeleton组件、演示demo、文档 ([#12](https://github.com/Moonofweisheng/wot-design-uni/issues/12)) ([a49e22c](https://github.com/Moonofweisheng/wot-design-uni/commit/a49e22c370163ec3c93bbeb360cc89b3b3c0abc0)) + +### [0.0.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.8...v0.0.9) (2023-08-25) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复Cell 单格组件 is-link 不触发 click ([ece5568](https://github.com/Moonofweisheng/wot-design-uni/commit/ece5568ecc03fd8470c2c02120b94c1ee27d55e7)) + +### [0.0.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.7...v0.0.8) (2023-08-24) + + +### ✨ Features | 新功能 + +* ✨ 演示项目新增用户隐私保护指引的处理 ([4dd7efe](https://github.com/Moonofweisheng/wot-design-uni/commit/4dd7efe4049c4c815ea1bc57a7fd1819055f10bc)) +* ✨ ActionSheet组件调整为使用v-model设置显示与隐藏 ([aa92332](https://github.com/Moonofweisheng/wot-design-uni/commit/aa92332f3913be000d1aef36a8aed7f34b736ad6)) + +### [0.0.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.6...v0.0.7) (2023-08-23) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复部分组件某些属性必填警告的问题 ([1b866c0](https://github.com/Moonofweisheng/wot-design-uni/commit/1b866c062eb7a4ab894d5b2ecd7b7b3fd50ef864)) + +### [0.0.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.5...v0.0.6) (2023-08-22) + +### [0.0.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.4...v0.0.5) (2023-08-22) + +### [0.0.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.3...v0.0.4) (2023-08-21) + + +### ✨ Features | 新功能 + +* ✨ Picker组件优化性能 ([24dd43f](https://github.com/Moonofweisheng/wot-design-uni/commit/24dd43f3a05b7b4ce6bb897219a215f8198e64ac)) + +### [0.0.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.2...v0.0.3) (2023-08-18) + +### [0.0.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.1...v0.0.2) (2023-08-18) + + +### 🐛 Bug Fixes | Bug 修复 + +* 🐛 修复CheckBoxGroup组件的disabled属性作用在子组件上失效的问题 ([1bab820](https://github.com/Moonofweisheng/wot-design-uni/commit/1bab820c0335c89e099c597caa47af16bb998d83)) + +### 0.0.1 (2023-08-16) + + +### ✨ Features | 新功能 + +* ✨ 适配暗黑模式 ([f5946a4](https://github.com/Moonofweisheng/wot-design-uni/commit/f5946a4b7134fed161bc123d66485e7bc91cdc68)) +* ✨ 新增 50+ 组件 diff --git a/src/uni_modules/wot-design-uni/components/common/AbortablePromise.ts b/src/uni_modules/wot-design-uni/components/common/AbortablePromise.ts new file mode 100644 index 0000000..efe5167 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/AbortablePromise.ts @@ -0,0 +1,28 @@ +export class AbortablePromise { + promise: Promise + private _reject: ((res?: any) => void) | null = null + + constructor(executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) { + this.promise = new Promise((resolve, reject) => { + executor(resolve, reject) + this._reject = reject // 保存reject方法的引用,以便在abort时调用 + }) + } + // 提供abort方法来中止Promise + abort(error?: any) { + if (this._reject) { + this._reject(error) // 调用reject方法来中止Promise + } + } + + then( + onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, + onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null + ): Promise { + return this.promise.then(onfulfilled, onrejected) + } + + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise { + return this.promise.catch(onrejected) + } +} diff --git a/src/uni_modules/wot-design-uni/components/common/abstracts/_config.scss b/src/uni_modules/wot-design-uni/components/common/abstracts/_config.scss new file mode 100644 index 0000000..fe65cb4 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/abstracts/_config.scss @@ -0,0 +1,7 @@ +/** + * SCSS 配置项:命名空间以及BEM + */ +$namespace: 'wd'; +$elementSeparator: '__'; +$modifierSeparator: '--'; +$state-prefix: 'is-'; \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/common/abstracts/_function.scss b/src/uni_modules/wot-design-uni/components/common/abstracts/_function.scss new file mode 100644 index 0000000..24c0ca0 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/abstracts/_function.scss @@ -0,0 +1,89 @@ +/** + * 辅助函数 + */ +@import 'config'; +$default-theme: #4d80f0 !default; // 正常色 + +/* 转换成字符串 */ +@function selectorToString($selector) { + $selector: inspect($selector); + $selector: str-slice($selector, 2, -2); + + @return $selector; +} + +/* 判断是否存在 Modifier */ +@function containsModifier($selector) { + $selector: selectorToString($selector); + + @if str-index($selector, $modifierSeparator) { + @return true; + } + + @else { + @return false; + } +} + +/* 判断是否存在伪类 */ +@function containsPseudo($selector) { + $selector: selectorToString($selector); + + @if str-index($selector, ':') { + @return true; + } + + @else { + @return false; + } +} + + +/** + * 主题色切换 + * @params $theme-color 主题色 + * @params $type 变暗’dark‘ 变亮 'light' + * @params $mix-color 自己设置的混色 + */ +@function themeColor($theme-color, $type: "", $mix-color: "") { + @if $default-theme !=#4d80f0 { + @if $type=="dark" { + @return darken($theme-color, 10%); + } + + @else if $type=="light" { + @return lighten($theme-color, 10%); + } + + @else { + @return $theme-color; + } + } + + @else { + @return $mix-color; + } +} + +/** + * 颜色结果切换, 如果开启线性渐变色 使用渐变色,如果没有开启,那么使用主题色 + * @params $open-linear 是否开启线性渐变色 + * @params $deg 渐变色角度 + * @params $theme-color 当前配色 + * @params [Array] $set 主题色明暗设置,与 $color-list 数量对应 + * @params [Array] $color-list 渐变色顺序, $color-list 和 $per-list 数量相同 + * @params [Array] $per-list 渐变色比例 + */ +@function resultColor($deg, $theme-color, $set, $color-list, $per-list) { + // 开启渐变 + + $len: length($color-list); + $arg: $deg; + + @for $i from 1 through $len { + $arg: $arg + ","+ themeColor($theme-color, nth($set, $i), nth($color-list, $i)) + " "+ nth($per-list, $i); + } + + @return linear-gradient(unquote($arg)); + +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/common/abstracts/_mixin.scss b/src/uni_modules/wot-design-uni/components/common/abstracts/_mixin.scss new file mode 100644 index 0000000..6d7e14f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/abstracts/_mixin.scss @@ -0,0 +1,368 @@ +/** + * 混合宏 + */ +@import "config"; +@import "function"; + +/** + * BEM,定义块(b) + */ +@mixin b($block) { + $B: $namespace + "-"+ $block !global; + + .#{$B} { + @content; + } +} + +/* 定义元素(e),对于伪类,会自动将 e 嵌套在 伪类 底下 */ +@mixin e($element...) { + $selector: &; + $selectors: ""; + + @if containsPseudo($selector) { + @each $item in $element { + $selectors: #{$selectors + "." + $B + $elementSeparator + $item + ","}; + } + + @at-root { + #{$selector} { + #{$selectors} { + @content; + } + } + } + } + + @else { + @each $item in $element { + $selectors: #{$selectors + $selector + $elementSeparator + $item + ","}; + } + + @at-root { + #{$selectors} { + @content; + } + } + } +} + + + +/* 此方法用于生成穿透样式 */ + +/* 定义元素(e),对于伪类,会自动将 e 嵌套在 伪类 底下 */ +@mixin edeep($element...) { + $selector: &; + $selectors: ""; + + @if containsPseudo($selector) { + @each $item in $element { + $selectors: #{$selectors + "." + $B + $elementSeparator + $item + ","}; + } + + @at-root { + #{$selector} { + :deep() { + #{$selectors} { + @content; + } + } + } + } + } + + @else { + @each $item in $element { + $selectors: #{$selectors + $selector + $elementSeparator + $item + ","}; + } + + @at-root { + :deep() { + #{$selectors} { + @content; + } + } + } + } +} + + +/* 定义状态(m) */ +@mixin m($modifier...) { + $selectors: ""; + + @each $item in $modifier { + $selectors: #{$selectors + & + $modifierSeparator + $item + ","}; + } + + @at-root { + #{$selectors} { + @content; + } + } +} + +/* 对于需要需要嵌套在 m 底下的 e,调用这个混合宏,一般在切换整个组件的状态,如切换颜色的时候 */ +@mixin me($element...) { + $selector: &; + $selectors: ""; + + @if containsModifier($selector) { + @each $item in $element { + $selectors: #{$selectors + "." + $B + $elementSeparator + $item + ","}; + } + + @at-root { + #{$selector} { + #{$selectors} { + @content; + } + } + } + } + + @else { + @each $item in $element { + $selectors: #{$selectors + $selector + $elementSeparator + $item + ","}; + } + + @at-root { + #{$selectors} { + @content; + } + } + } +} + +/* 状态,生成 is-$state 类名 */ +@mixin when($states...) { + @at-root { + @each $state in $states { + &.#{$state-prefix + $state} { + @content; + } + } + } +} + +/** + * 常用混合宏 + */ + +/* 单行超出隐藏 */ +@mixin lineEllipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* 多行超出隐藏 */ +@mixin multiEllipsis($lineNumber: 3) { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: $lineNumber; + overflow: hidden; +} + +/* 清除浮动 */ +@mixin clearFloat { + &::after { + display: block; + content: ""; + height: 0; + clear: both; + overflow: hidden; + visibility: hidden; + } +} + +/* 0.5px 边框 指定方向*/ +@mixin halfPixelBorder($direction: "bottom", $left: 0, $color: $-color-border-light) { + position: relative; + + &::after { + position: absolute; + display: block; + content: ""; + + @if ($left==0) { + width: 100%; + } + + @else { + width: calc(100% - #{$left}); + } + + height: 1px; + left: $left; + + @if ($direction=="bottom") { + bottom: 0; + } + + @else { + top: 0; + } + + transform: scaleY(0.5); + background: $color; + } +} + + +/* 0.5px 边框 环绕 */ +@mixin halfPixelBorderSurround($color: $-color-border-light) { + position: relative; + + &::after { + position: absolute; + display: block; + content: ' '; + pointer-events: none; + width: 200%; + height: 200%; + left: 0; + top: 0; + border: 1px solid $color; + transform: scale(0.5); + box-sizing: border-box; + transform-origin: left top; + } +} + +@mixin buttonClear { + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: transparent; + background: transparent; +} + +/** + * 三角形实现尖角样式,适用于背景透明情况 + * @param $size 三角形高,底边为 $size * 2 + * @param $bg 三角形背景颜色 + */ +@mixin triangleArrow($size, $bg) { + @include e(arrow) { + position: absolute; + width: 0; + height: 0; + } + + @include e(arrow-down) { + border-left: $size solid transparent; + border-right: $size solid transparent; + border-top: $size solid $bg; + transform: translateX(-50%); + bottom: calc(-1 * $size) + } + + @include e(arrow-up) { + border-left: $size solid transparent; + border-right: $size solid transparent; + border-bottom: $size solid $bg; + transform: translateX(-50%); + top: calc(-1 * $size) + } + + @include e(arrow-left) { + border-top: $size solid transparent; + border-bottom: $size solid transparent; + border-right: $size solid $bg; + transform: translateY(-50%); + left: calc(-1 * $size) + } + + @include e(arrow-right) { + border-top: $size solid transparent; + border-bottom: $size solid transparent; + border-left: $size solid $bg; + transform: translateY(-50%); + right: calc(-1 * $size) + } +} + +/** + * 正方形实现尖角样式,适用于背景不透明情况 + * @param $size 正方形边长 + * @param $bg 正方形背景颜色 + * @param $z-index z-index属性值,不得大于外部包裹器 + * @param $box-shadow 阴影 +*/ +@mixin squareArrow($size, $bg, $z-index, $box-shadow) { + @include e(arrow) { + position: absolute; + width: $size; + height: $size; + z-index: $z-index; + } + + @include e(arrow-down) { + transform: translateX(-50%); + bottom: 0; + + &:after { + content: ""; + width: $size; + height: $size; + background-color: $bg; + position: absolute; + left: 0; + bottom: calc(-1 * $size / 2); + transform: rotateZ(45deg); + box-shadow: $box-shadow; + } + } + + @include e(arrow-up) { + transform: translateX(-50%); + top: 0; + + &:after { + content: ""; + width: $size; + height: $size; + background-color: $bg; + position: absolute; + left: 0; + top: calc(-1 * $size / 2); + transform: rotateZ(45deg); + box-shadow: $box-shadow; + } + } + + @include e(arrow-left) { + transform: translateY(-50%); + left: 0; + + &:after { + content: ""; + width: $size; + height: $size; + background-color: $bg; + position: absolute; + left: calc(-1 * $size / 2); + top: 0; + transform: rotateZ(45deg); + box-shadow: $box-shadow; + } + } + + @include e(arrow-right) { + transform: translateY(-50%); + right: 0; + + &:after { + content: ""; + width: $size; + height: $size; + background-color: $bg; + position: absolute; + right: calc(-1 * $size / 2); + top: 0; + transform: rotateZ(45deg); + box-shadow: $box-shadow; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/common/abstracts/variable.scss b/src/uni_modules/wot-design-uni/components/common/abstracts/variable.scss new file mode 100644 index 0000000..d3cb31b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/abstracts/variable.scss @@ -0,0 +1,920 @@ +@import './function'; + +/** + * UI规范基础变量 + */ +/*----------------------------------------- Theme color. start ----------------------------------------*/ +/* 主题颜色 */ +$-color-theme: var(--wot-color-theme, $default-theme) !default; // 主题色 +$-color-white: var(--wot-color-white, rgb(255, 255, 255)) !default; // 用于mix的白色 +$-color-black: var(--wot-color-black, rgb(0, 0, 0)) !default; // 用于mix的黑色 + +/* 辅助色 */ +$-color-success: var(--wot-color-success, #34d19d) !default; // 成功色 +$-color-warning: var(--wot-color-warning, #f0883a) !default; // 警告色 +$-color-danger: var(--wot-color-danger, #fa4350) !default; // 危险出错色 +$-color-purple: var(--wot-color-purple, #8268de) !default; // 紫色 +$-color-yellow: var(--wot-color-yellow, #f0cd1d) !default; // 黄色 +$-color-blue: var(--wot-color-blue, #2bb3ed) !default; // 蓝色 +$-color-info: var(--wot-color-info, #909399) !default; + +$-color-gray-1: var(--wot-color-gray-1, #f7f8fa) !default; +$-color-gray-2: var(--wot-color-gray-2, #f2f3f5) !default; +$-color-gray-3: var(--wot-color-gray-3, #ebedf0) !default; +$-color-gray-4: var(--wot-color-gray-4, #dcdee0) !default; +$-color-gray-5: var(--wot-color-gray-5, #c8c9cc) !default; +$-color-gray-6: var(--wot-color-gray-6, #969799) !default; +$-color-gray-7: var(--wot-color-gray-7, #646566) !default; +$-color-gray-8: var(--wot-color-gray-8, #323233) !default; + +$-font-gray-1: var(--wot-font-gray-1, rgba(0, 0, 0, 0.9)); +$-font-gray-2: var(--wot-font-gray-2, rgba(0, 0, 0, 0.6)); +$-font-gray-3: var(--wot-font-gray-3, rgba(0, 0, 0, 0.4)); +$-font-gray-4: var(--wot-font-gray-4, rgba(0, 0, 0, 0.26)); + +$-font-white-1: var(--wot-font-white-1, rgba(255, 255, 255, 1)); +$-font-white-2: var(--wot-font-white-2, rgba(255, 255, 255, 0.55)); +$-font-white-3: var(--wot-font-white-3, rgba(255, 255, 255, 0.35)); +$-font-white-4: var(--wot-font-white-4, rgba(255, 255, 255, 0.22)); + + + +/* 文字颜色(默认浅色背景下 */ +$-color-title: var(--wot-color-title, $-color-black) !default; // 模块标题/重要正文 000 +$-color-content: var(--wot-color-content, #262626) !default; // 普通正文 262626 +$-color-secondary: var(--wot-color-secondary, #595959) !default; // 次要信息,注释/补充/正文 595959 +$-color-aid: var(--wot-color-aid, #8c8c8c) !default; // 辅助文字字号,弱化信息,引导性/不可点文字 8c8c8c +$-color-tip: var(--wot-color-tip, #bfbfbf) !default; // 失效、默认提示文字 bfbfbf +$-color-border: var(--wot-color-border, #d9d9d9) !default; // 控件边框线 d9d9d9 +$-color-border-light: var(--wot-color-border-light, #e8e8e8) !default; // 分割线颜色 e8e8e8 +$-color-bg: var(--wot-color-bg, #f5f5f5) !default; // 背景色、禁用填充色 f5f5f5 + +/* 暗黑模式 */ +$-dark-background: var(--wot-dark-background, #131313) !default; +$-dark-background2: var(--wot-dark-background2, #1b1b1b) !default; +$-dark-background3: var(--wot-dark-background3, #141414) !default; +$-dark-background4: var(--wot-dark-background4, #323233) !default; +$-dark-background5: var(--wot-dark-background5, #646566) !default; +$-dark-background6: var(--wot-dark-background6, #380e08) !default; +$-dark-background7: var(--wot-dark-background7, #707070) !default; +$-dark-color: var(--wot-dark-color, $-color-white) !default; +$-dark-color2: var(--wot-dark-color2, #f2270c) !default; +$-dark-color3: var(--wot-dark-color3, rgba(232, 230, 227, 0.8)) !default; +$-dark-color-gray: var(--wot-dark-color-gray, $-color-secondary) !default; +$-dark-border-color: var(--wot-dark-border-color, #3a3a3c) !default; + +/* 图形颜色 */ +$-color-icon: var(--wot-color-icon, #d9d9d9) !default; // icon颜色 +$-color-icon-active: var(--wot-color-icon-active, #eee) !default; // icon颜色hover +$-color-icon-disabled: var(--wot-color-icon-disabled, #a7a7a7) !default; // icon颜色disabled + + +/*----------------------------------------- Theme color. end -------------------------------------------*/ + +/*-------------------------------- Theme color application size. start --------------------------------*/ + +/* 文字字号 */ +$-fs-big: var(--wot-fs-big, 24px) !default; // 大型标题 +$-fs-important: var(--wot-fs-important, 19px) !default; // 重要数据 +$-fs-title: var(--wot-fs-title, 16px) !default; // 标题字号/重要正文字号 +$-fs-content: var(--wot-fs-content, 14px) !default; // 普通正文 +$-fs-secondary: var(--wot-fs-secondary, 12px) !default; // 次要信息,注释/补充/正文 +$-fs-aid: var(--wot-fs-aid, 10px) !default; // 辅助文字字号,弱化信息,引导性/不可点文字 + +/* 文字字重 */ +$-fw-medium: var(--wot-fw-medium, 500) !default; // PingFangSC-Medium +$-fw-semibold: var(--wot-fw-semibold, 600) !default; // PingFangSC-Semibold + +/* 尺寸 */ +$-size-side-padding: var(--wot-size-side-padding, 15px) !default; // 屏幕两边留白 + +/*-------------------------------- Theme color application size. end --------------------------------*/ + +/* action-sheet */ +$-action-sheet-weight: var(--wot-action-sheet-weight, 500) !default; // 面板字重 +$-action-sheet-radius: var(--wot-action-sheet-radius, 16px) !default; // 面板圆角大小 +$-action-sheet-loading-size: var(--wot-action-sheet-loading-size, 20px) !default; // loading动画尺寸 +$-action-sheet-action-height: var(--wot-action-sheet-action-height, 48px) !default; // 单条菜单高度 +$-action-sheet-color: var(--wot-action-sheet-color, rgba(0, 0, 0, 0.85)) !default; // 选项名称颜色 +$-action-sheet-fs: var(--wot-action-sheet-fs, $-fs-title) !default; // 选项名称字号 +$-action-sheet-active-color: var(--wot-action-sheet-active-color, $-color-bg) !default; // 点击高亮颜色 +$-action-sheet-subname-fs: var(--wot-action-sheet-subname-fs, $-fs-secondary) !default; // 描述信息字号 +$-action-sheet-subname-color: var(--wot-action-sheet-subname-color, rgba(0, 0, 0, 0.45)) !default; // 描述信息颜色 +$-action-sheet-disabled-color: var(--wot-action-sheet-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 禁用颜色 +$-action-sheet-bg: var(--wot-action-sheet-bg, $-color-white) !default; // 菜单容器颜色(取消按钮上方的颜色) +$-action-sheet-title-height: var(--wot-action-sheet-title-height, 64px) !default; // 标题高度 +$-action-sheet-title-fs: var(--wot-action-sheet-title-fs, $-fs-title) !default; // 标题字号 +$-action-sheet-close-fs: var(--wot-action-sheet-close-fs, $-fs-title) !default; // 关闭按钮大小 +$-action-sheet-close-color: var(--wot-action-sheet-close-color, rgba(0, 0, 0, 0.65)) !default; // 关闭按钮颜色 +$-action-sheet-close-top: var(--wot-action-sheet-close-top, 25px) !default; // 关闭按钮距离标题顶部距离 +$-action-sheet-close-right: var(--wot-action-sheet-close-right, 15px) !default; // 关闭按钮距离标题右侧距离 +$-action-sheet-cancel-color: var(--wot-action-sheet-cancel-color, #131415) !default; // 取消按钮颜色 +$-action-sheet-cancel-height: var(--wot-action-sheet-cancel-height, 44px) !default; // 取消按钮高度 +$-action-sheet-cancel-bg: var(--wot-action-sheet-cancel-bg, rgba(240, 240, 240, 1)) !default; // 取消按钮背景色 +$-action-sheet-cancel-radius: var(--wot-action-sheet-cancel-radius, 22px) !default; // 取消按钮圆角大小 +$-action-sheet-panel-padding: var(--wot-action-sheet-panel-padding, 12px 0 11px) !default; // 自定义面板内边距大小 +$-action-sheet-panel-img-fs: var(--wot-action-sheet-panel-img-fs, 40px) !default; // 自定义面板图片大小 +$-action-sheet-panel-img-radius: var(--wot-action-sheet-panel-img-radius, 4px) !default; // 自定义面板图片圆角大小 + +/* badge */ +$-badge-bg: var(--wot-badge-bg, $-color-danger) !default; // 背景填充颜色 +$-badge-color: var(--wot-badge-color, #fff) !default; // 文字颜色 +$-badge-fs: var(--wot-badge-fs, 12px) !default; // 文字字号 +$-badge-padding: var(--wot-badge-padding, 0 5px) !default; // padding +$-badge-height: var(--wot-badge-height, 16px) !default; // 高度 +$-badge-primary: var(--wot-badge-primary, $-color-theme) !default; +$-badge-success: var(--wot-badge-success, $-color-success) !default; +$-badge-warning: var(--wot-badge-warning, $-color-warning) !default; +$-badge-danger: var(--wot-badge-danger, $-color-danger) !default; +$-badge-info: var(--wot-badge-info, $-color-info) !default; +$-badge-dot-size: var(--wot-badge-dot-size, 6px) !default; // dot 类型大小 +$-badge-border: var(--wot-badge-border, 2px solid $-badge-color) !default; // 边框样式 + +/* button */ +$-button-disabled-opacity: var(--wot-button-disabled-opacity, 0.6) !default; // button禁用透明度 + +$-button-small-height: var(--wot-button-small-height, 28px) !default; // 小型按钮高度 +$-button-small-padding: var(--wot-button-small-padding, 0 12px) !default; // 小型按钮padding +$-button-small-fs: var(--wot-button-small-fs, $-fs-secondary) !default; // 小型按钮字号 +$-button-small-radius: var(--wot-button-small-radius, 2px) !default; // 小型按钮圆角大小 +$-button-small-loading: var(--wot-button-small-loading, 14px) !default; // 小型按钮loading图标大小 + +$-button-medium-height: var(--wot-button-medium-height, 36px) !default; // 中型按钮高度 +$-button-medium-padding: var(--wot-button-medium-padding, 0 16px) !default; // 中型按钮padding +$-button-medium-fs: var(--wot-button-medium-fs, $-fs-content) !default; // 中型按钮字号 +$-button-medium-radius: var(--wot-button-medium-radius, 4px) !default; // 中型按钮圆角大小 +$-button-medium-loading: var(--wot-button-medium-loading, 18px) !default; // 中型按钮loading图标大小 +$-button-medium-box-shadow-size: var(--wot-button-medium-box-shadow-size, 0px 2px 4px 0px) !default; // 中尺寸阴影尺寸 + +$-button-large-height: var(--wot-button-large-height, 44px) !default; // 大型按钮高度 +$-button-large-padding: var(--wot-button-large-padding, 0 36px) !default; // 大型按钮padding +$-button-large-fs: var(--wot-button-large-fs, $-fs-title) !default; // 大型按钮字号 +$-button-large-radius: var(--wot-button-large-radius, 8px) !default; // 大型按钮圆角大小 +$-button-large-loading: var(--wot-button-large-loading, 24px) !default; // 大小按钮loading图标大小 +$-button-large-box-shadow-size: var(--wot-button-large-box-shadow-size, 0px 4px 8px 0px) !default; // 大尺寸阴影尺寸 + +$-button-icon-fs: var(--wot-button-icon-fs, 1.18em) !default; // 带图标的按钮的图标大小 +$-button-icon-size: var(--wot-button-icon-size, 40px) !default; // icon 类型按钮尺寸 +$-button-icon-color: var(--wot-button-icon-color, rgba(0, 0, 0, 0.65)) !default; // icon 类型按钮颜色 +$-button-icon-disabled-color: var(--wot-button-icon-disabled-color, $-color-icon-disabled) !default; // icon 类型按钮禁用颜色 + +$-button-normal-color: var(--wot-button-normal-color, $-color-title) !default; // 文字颜色 +$-button-normal-disabled-color: var(--wot-button-normal-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 默认按钮禁用文字色 + +$-button-plain-bg-color: var(--wot-button-plain-bg-color, $-color-white) !default; // 幽灵按钮背景色 + +$-button-primary-color: var(--wot-button-primary-color, $-color-white) !default; // 主要按钮颜色 +$-button-primary-bg-color: var(--wot-button-primary-bg-color, $-color-theme) !default; // 主要按钮背景颜色 +$-button-primary-box-shadow-color: var(--wot-button-primary-box-shadow-color, rgba($-color-theme, 0.25)) !default; // 主要按钮阴影颜色 + +$-button-success-color: var(--wot-button-success-color, $-color-white) !default; // 成功按钮文字颜色 +$-button-success-bg-color: var(--wot-button-success-bg-color, $-color-success) !default; // 成功按钮颜色 +$-button-success-box-shadow-color: var(--wot-button-success-box-shadow-color, rgba($-color-success, 0.25)) !default; // 主要按钮阴影颜色 + +$-button-info-color: var(--wot-button-info-color, $-color-title) !default; // 信息按钮颜色 +$-button-info-bg-color: var(--wot-button-info-bg-color, #F0F0F0) !default; // 信息按钮背景颜色 +$-button-info-plain-border-color: var(--wot-button-info-plain-border-color, rgba(0, 0, 0, 0.45)) !default; // 信息按钮禁用颜色 +$-button-info-plain-normal-color: var(--wot-button-info-plain-normal-color, rgba(0, 0, 0, 0.85)) !default; // 信息幽灵按钮默认颜色 + +$-button-warning-color: var(--wot-button-warning-color, $-color-white) !default; // 警告按钮字体颜色 +$-button-warning-bg-color: var(--wot-button-warning-bg-color, $-color-warning) !default; // 警告按钮背景颜色 +$-button-warning-box-shadow-color: var(--wot-button-warning-box-shadow-color, rgba($-color-warning, 0.25)) !default; // 主要按钮阴影颜色 + +$-button-error-color: var(--wot-button-error-color, $-color-white) !default; // 错误按钮颜色 +$-button-error-bg-color: var(--wot-button-error-bg-color, $-color-danger) !default; // 错误按钮背景颜色 +$-button-error-box-shadow-color: var(--wot-button-error-box-shadow-color, rgba($-color-danger, 0.25)) !default; // 主要按钮阴影颜色 + +$-button-text-hover-opacity: var(--wot-button-text-hover-opacity, 0.7) !default; // 文字button激活时透明度 + + +/* cell */ +$-cell-padding: var(--wot-cell-padding, $-size-side-padding) !default; // cell 左右padding距离 +$-cell-line-height: var(--wot-cell-line-height, 24px) !default; // 行高 + +$-cell-group-title-fs: var(--wot-cell-group-title-fs, $-fs-title) !default; // 组标题字号 +$-cell-group-padding: var(--wot-cell-group-padding, 13px $-cell-padding) !default; // 组padding +$-cell-group-title-color: var(--wot-cell-group-title-color, rgba(0, 0, 0, 0.85)) !default; // 组标题文字颜色 +$-cell-group-value-fs: var(--wot-cell-group-value-fs, $-fs-content) !default; // 组值字号 +$-cell-group-value-color: var(--wot-cell-group-value-color, $-color-content) !default; // 组值文字颜色 + +$-cell-wrapper-padding: var(--wot-cell-wrapper-padding, 10px) !default; // cell 容器padding +$-cell-wrapper-padding-large: var(--wot-cell-wrapper-padding-large, 12px) !default; // large类型cell容器padding + +$-cell-wrapper-padding-with-label: var(--wot-cell-wrapper-padding-with-label, 16px) !default; // cell 容器上下padding(有label情况下) +$-cell-icon-right: var(--wot-cell-icon-right, 4px) !default; // 图标距离右边缘 +$-cell-icon-size: var(--wot-cell-icon-size, 16px) !default; // 图标大小 +$-cell-title-fs: var(--wot-cell-title-fs, 14px) !default; // 标题字号 +$-cell-title-color: var(--wot-cell-title-color, rgba(0, 0, 0, 0.85)) !default; // 标题文字颜色 +$-cell-label-fs: var(--wot-cell-label-fs, 12px) !default; // 描述信息字号 +$-cell-label-color: var(--wot-cell-label-color, rgba(0, 0, 0, 0.45)) !default; // 描述信息文字颜色 +$-cell-value-fs: var(--wot-cell-value-fs, 14px) !default; // 右侧内容字号 +$-cell-value-color: var(--wot-cell-value-color, rgba(0, 0, 0, 0.85)) !default; // 右侧内容文字颜色 +$-cell-arrow-size: var(--wot-cell-arrow-size, 18px) !default; // 右箭头大小 +$-cell-arrow-color: var(--wot-cell-arrow-color, rgba(0, 0, 0, 0.25)) !default; // 右箭头颜色 +$-cell-tap-bg: var(--wot-cell-tap-bg, rgba(0, 0, 0, 0.06)) !default; // 点击态背景色 + +$-cell-title-fs-large: var(--wot-cell-title-fs-large, 16px) !default; // 大尺寸标题字号 +$-cell-label-fs-large: var(--wot-cell-label-fs-large, 14px) !default; // 描述信息字号 +$-cell-icon-size-large: var(--wot-cell-icon-size-large, 18px) !default; // 图标大小 + +$-cell-required-color: var(--wot-cell-required-color, $-color-danger) !default; // 要求必填*颜色 +$-cell-required-size: var(--wot-cell-required-size, 18px) !default; // 必填*字号 +$-cell-vertical-top: var(--wot-cell-vertical-top, 16px) !default; // 表单类型-上下结构的间距 + +/* calendar */ +$-calendar-fs: var(--wot-calendar-fs, 16px) !default; +$-calendar-panel-padding: var(--wot-calendar-panel-padding, 0 12px) !default; +$-calendar-panel-title-fs: var(--wot-calendar-panel-title-fs, 14px) !default; +$-calendar-panel-title-color: var(--wot-calendar-panel-title-color, rgba(0, 0, 0, 0.85)) !default; +$-calendar-week-color: var(--wot-calendar-week-color, rgba(0, 0, 0, 0.85)) !default; +$-calendar-week-height: var(--wot-calendar-week-height, 36px) !default; +$-calendar-week-fs: var(--wot-calendar-week-fs, 12px) !default; +$-calendar-day-fs: var(--wot-calendar-day-fs, 16px) !default; +$-calendar-day-color: var(--wot-calendar-day-color, rgba(0, 0, 0, 0.85)) !default; +$-calendar-day-fw: var(--wot-calendar-day-fw, 500) !default; +$-calendar-day-height: var(--wot-calendar-day-height, 64px) !default; +$-calendar-month-width: var(--wot-calendar-month-width, 50px) !default; +$-calendar-active-color: var(--wot-calendar-active-color, $-color-theme) !default; +$-calendar-disabled-color: var(--wot-calendar-disabled-color, rgba(0, 0, 0, 0.25)) !default; +$-calendar-range-color: var(--wot-calendar-range-color, rgba(#4d80f0, 0.09)) !default; +$-calendar-active-border: var(--wot-calendar-active-border, 8px) !default; +$-calendar-info-fs: var(--wot-calendar-info-fs, 10px) !default; + +/* checkbox */ +$-checkbox-margin: var(--wot-checkbox-margin, 10px) !default; // 多个复选框距离 +$-checkbox-bg: var(--wot-checkbox-bg, $-color-white) !default; // 多个复选框距离 +$-checkbox-label-margin: var(--wot-checkbox-label-margin, 9px) !default; // 右侧文字与左侧图标距离 +$-checkbox-size: var(--wot-checkbox-size, 16px) !default; // 左侧图标尺寸 +$-checkbox-icon-size: var(--wot-checkbox-icon-size, 14px) !default; // 左侧图标尺寸 +$-checkbox-border-color: var(--wot-checkbox-border-color, #dcdcdc) !default; // 左侧图标边框颜色 +$-checkbox-check-color: var(--wot-checkbox-check-color, $-color-white) !default; // 左侧图标边框颜色 +$-checkbox-label-fs: var(--wot-checkbox-label-fs, 14px) !default; // 右侧文字字号 +$-checkbox-label-color: var(--wot-checkbox-label-color, rgba(0, 0, 0, 0.85)) !default; // 右侧文字颜色 +$-checkbox-checked-color: var(--wot-checkbox-checked-color, $-color-theme) !default; // 选中颜色 + +$-checkbox-disabled-color: var(--wot-checkbox-disabled-color, rgba(0, 0, 0, 0.04)) !default; // 禁用背景颜色 +$-checkbox-disabled-label-color: var(--wot-checkbox-disabled-label-color, rgba(0, 0, 0, 0.25)) !default; // 禁用文字颜色 +$-checkbox-disabled-check-color: var(--wot-checkbox-disabled-check-color, rgba(0, 0, 0, 0.15)) !default; // 禁用图标颜色 +$-checkbox-disabled-check-bg: var(--wot-checkbox-disabled-check-bg, rgba(0, 0, 0, 0.15)) !default; // 禁用边框背景颜色 +$-checkbox-square-radius: var(--wot-checkbox-square-radius, 4px) !default; // 方型圆角大小 + +$-checkbox-large-size: var(--wot-checkbox-large-size, 18px) !default; // 左侧图标尺寸 +$-checkbox-large-label-fs: var(--wot-checkbox-large-label-fs, 16px) !default; // 右侧文字字号 + +$-checkbox-button-height: var(--wot-checkbox-button-height, 32px) !default; // 按钮模式复选框高 +$-checkbox-button-min-width: var(--wot-checkbox-button-min-width, 78px) !default; // 按钮模式最小宽 +$-checkbox-button-radius: var(--wot-checkbox-button-radius, 16px) !default; // 按钮圆角大小 +$-checkbox-button-bg: var(--wot-checkbox-button-bg, rgba(0, 0, 0, 0.04)) !default; // 按钮模式背景颜色 +$-checkbox-button-font-size: var(--wot-checkbox-button-font-size, 14px) !default; // 按钮模式字号 +$-checkbox-button-border: var(--wot-checkbox-button-border, #f5f5f5) !default; // 按钮边框颜色 +$-checkbox-button-disabled-border: var(--wot-checkbox-button-disabled-border, rgba(0, 0, 0, 0.15)) !default; // 按钮禁用边框颜色 + +/* collapse */ +$-collapse-side-padding: var(--wot-collapse-side-padding, $-size-side-padding) !default; // 左右间距 +$-collapse-body-padding: var(--wot-collapse-body-padding, 14px 25px) !default; // body padding +$-collapse-header-padding: var(--wot-collapse-header-padding, 13px $-size-side-padding) !default; // 头部padding +$-collapse-title-color: var(--wot-collapse-title-color, rgba(0, 0, 0, 0.85)) !default; // 标题颜色 +$-collapse-title-fs: var(--wot-collapse-title-fs, 16px) !default; // 标题字号 +$-collapse-arrow-size: var(--wot-collapse-arrow-size, 18px) !default; // 箭头大小 +$-collapse-arrow-color: var(--wot-collapse-arrow-color, #d8d8d8) !default; // 箭头颜色 +$-collapse-body-fs: var(--wot-collapse-body-fs, 14px) !default; // 内容字号 +$-collapse-body-color: var(--wot-collapse-body-color, rgba(0, 0, 0, 0.65)) !default; // 内容颜色 +$-collapse-disabled-color: var(--wot-collapse-disabled-color, rgba(0, 0, 0, 0.15)) !default; // 禁用颜色 +$-collapse-retract-fs: var(--wot-collapse-retract-fs, 14px) !default; // 更多 字号 +$-collapse-more-color: var(--wot-collapse-more-color, $-color-theme) !default; // 更多 颜色 + +/* divider */ +$-divider-padding: var(--wot-divider-padding, 0 $-size-side-padding) !default; // 两边间距 +$-divider-color: var(--wot-divider-color, rgba(0, 0, 0, 0.45)) !default; // 字体颜色 +$-divider-line-color: var(--wot-divider-line-color, rgba(0, 0, 0, 0.15)) !default; // 线条颜色 +$-divider-fs: var(--wot-divider-fs, 14px) !default; // 字体大小 + +/* drop-menu */ +$-drop-menu-height: var(--wot-drop-menu-height, 48px) !default; // 展示选中项的高度 +$-drop-menu-color: var(--wot-drop-menu-color, $-color-content) !default; // 展示选中项的颜色 +$-drop-menu-fs: var(--wot-drop-menu-fs, $-fs-content) !default; // 展示选中项的字号 +$-drop-menu-arrow-fs: var(--wot-drop-menu-arrow-fs, $-fs-content) !default; // 箭头图标大小 + +$-drop-menu-side-padding: var(--wot-drop-menu-side-padding, $-size-side-padding) !default; // 两边留白间距 +$-drop-menu-disabled-color: var(--wot-drop-menu-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 禁用颜色 +$-drop-menu-item-height: var(--wot-drop-menu-item-height, 48px) !default; // 选项高度 +$-drop-menu-item-color: var(--wot-drop-menu-item-color, $-color-content) !default; // 选项颜色 +$-drop-menu-item-fs: var(--wot-drop-menu-item-fs, $-fs-content) !default; // 选项字号 +$-drop-menu-item-color-active: var(--wot-drop-menu-item-color-active, $-color-theme) !default; // 选中颜色 +$-drop-menu-item-color-tip: var(--wot-drop-menu-item-color-tip, rgba(0, 0, 0, 0.45)) !default; // 提示文字颜色 +$-drop-menu-item-fs-tip: var(--wot-drop-menu-item-fs-tip, $-fs-secondary) !default; // 提示文字字号 +$-drop-menu-option-check-size: var(--wot-drop-menu-option-check-size, 20px) !default; // check 图标大小 +$-drop-menu-line-color: var(--wot-drop-menu-line-color, $-color-theme) !default; // 下划线颜色 +$-drop-menu-line-height: var(--wot-drop-menu-line-height, 3px) !default; // 下划线高度 + +/* input-number */ +$-input-number-color: var(--wot-input-number-color, #262626) !default; // 文字颜色 +$-input-number-border-color: var(--wot-input-number-border-color, #e8e8e8) !default; // 边框颜色 +$-input-number-disabled-color: var(--wot-input-number-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 禁用颜色 +$-input-number-height: var(--wot-input-number-height, 24px) !default; // 加减号按钮高度 +$-input-number-btn-width: var(--wot-input-number-btn-width, 26px) !default; // 加减号按钮宽度 +$-input-number-input-width: var(--wot-input-number-input-width, 36px) !default; // 输入框宽度 +$-input-number-radius: var(--wot-input-number-radius, 4px) !default; // 加减号按钮圆角大小 +$-input-number-fs: var(--wot-input-number-fs, 12px) !default; // 输入框字号 +$-input-number-icon-size: var(--wot-input-number-icon-size, 14px) !default; // 加减号图标大小 +$-input-number-icon-color: var(--wot-input-number-icon-color, rgba(0, 0, 0, 0.65)) !default; // icon颜色 + +/* input */ +$-input-padding: var(--wot-input-padding, $-size-side-padding) !default; // input 左右padding距离 +$-input-border-color: var(--wot-input-border-color, #dadada) !default; // 无label边框颜色 +$-input-not-empty-border-color: var(--wot-input-not-empty-border-color, #262626) !default; // 输入框有值时 无label边框颜色 +$-input-fs: var(--wot-input-fs, $-cell-title-fs) !default; // 字号 +$-input-fs-large: var(--wot-input-fs-large, $-cell-title-fs-large) !default; // 大尺寸字号 +$-input-icon-margin: var(--wot-input-icon-margin, 8px) !default; // 图标距离 +$-input-color: var(--wot-input-color, #262626) !default; // 文字颜色 +$-input-placeholder-color: var(--wot-input-placeholder-color, #bfbfbf) !default; // 占位符颜色 +$-input-disabled-color: var(--wot-input-disabled-color, #d9d9d9) !default; // 输入框禁用颜色 +$-input-error-color: var(--wot-input-error-color, $-color-danger) !default; // 输入框错误颜色 +$-input-icon-color: var(--wot-input-icon-color, #bfbfbf) !default; // 图标颜色 +$-input-clear-color: var(--wot-input-clear-color, #585858) !default; // 关闭按钮颜色 +$-input-count-color: var(--wot-input-count-color, #bfbfbf) !default; // 计数文字颜色 +$-input-count-current-color: var(--wot-input-count-current-color, #262626) !default; // 当前长度颜色 +$-input-bg: var(--wot-input-bg, $-color-white) !default; // 默认背景颜色 + +$-input-cell-bg: var(--wot-input-cell-bg, $-color-white) !default; // cell 类型背景色 +$-input-cell-border-color: var(--wot-input-cell-border-color, $-color-border-light) !default; // cell 类型边框颜色 +$-input-cell-padding: var(--wot-input-cell-padding, 10px) !default; // cell 容器padding +$-input-cell-padding-large: var(--wot-input-cell-padding-large, 12px) !default; // large类型cell容器padding +$-input-cell-height: var(--wot-input-cell-height, 24px) !default; // cell 高度 +$-input-cell-label-width: var(--wot-input-cell-label-width, 33%) !default; // cell 下 label 的宽度 +$-input-inner-height: var(--wot-input-inner-height, 34px) !default; // 非cell和textarea下的高度 +$-input-inner-height-no-border: var(--wot-input-inner-height-no-border, 24px) !default; // 无边框下的高度 +$-input-count-fs: var(--wot-input-count-fs, 14px) !default; // 计数字号 +$-input-count-fs-large: var(--wot-input-count-fs-large, 14px) !default; // 大尺寸计数字号 +$-input-icon-size: var(--wot-input-icon-size, 16px) !default; // 图标大小 +$-input-icon-size-large: var(--wot-input-icon-size-large, 18px) !default; // 大尺寸图标大小 + +/* textarea */ +$-textarea-padding: var(--wot-textarea-padding, $-size-side-padding) !default; // textarea 左右padding距离 +$-textarea-border-color: var(--wot-textarea-border-color, #dadada) !default; // 无label边框颜色 +$-textarea-not-empty-border-color: var(--wot-textarea-not-empty-border-color, #262626) !default; // 输入框有值时 无label边框颜色 +$-textarea-fs: var(--wot-textarea-fs, $-cell-title-fs) !default; // 字号 +$-textarea-fs-large: var(--wot-textarea-fs-large, $-cell-title-fs-large) !default; // 大尺寸字号 +$-textarea-icon-margin: var(--wot-textarea-icon-margin, 8px) !default; // 图标距离 +$-textarea-color: var(--wot-textarea-color, #262626) !default; // 文字颜色 +$-textarea-icon-color: var(--wot-textarea-icon-color, #bfbfbf) !default; // 图标颜色 +$-textarea-clear-color: var(--wot-textarea-clear-color, #585858) !default; // 关闭按钮颜色 +$-textarea-count-color: var(--wot-textarea-count-color, #bfbfbf) !default; // 计数文字颜色 +$-textarea-count-current-color: var(--wot-textarea-count-current-color, #262626) !default; // 当前长度颜色 +$-textarea-bg: var(--wot-textarea-bg, $-color-white) !default; // 默认背景颜色 +$-textarea-cell-border-color: var(--wot-textarea-cell-border-color, $-color-border-light) !default; // cell 类型边框颜色 +$-textarea-cell-padding: var(--wot-textarea-cell-padding, 10px) !default; // cell 容器padding +$-textarea-cell-padding-large: var(--wot-textarea-cell-padding-large, 12px) !default; // large类型cell容器padding +$-textarea-cell-height: var(--wot-textarea-cell-height, 24px) !default; // cell 高度 +$-textarea-count-fs: var(--wot-textarea-count-fs, 14px) !default; // 计数字号 +$-textarea-count-fs-large: var(--wot-textarea-count-fs-large, 14px) !default; // 大尺寸计数字号 +$-textarea-icon-size: var(--wot-textarea-icon-size, 16px) !default; // 图标大小 +$-textarea-icon-size-large: var(--wot-textarea-icon-size-large, 18px) !default; // 大尺寸图标大小 + +/* loadmore */ +$-loadmore-height: var(--wot-loadmore-height, 48px) !default; // 高度 +$-loadmore-color: var(--wot-loadmore-color, rgba(0, 0, 0, 0.45)) !default; // 颜色 +$-loadmore-fs: var(--wot-loadmore-fs, 14px) !default; // 字号 +$-loadmore-error-color: var(--wot-loadmore-error-color, $-color-theme) !default; // 点击重试颜色 +$-loadmore-refresh-fs: var(--wot-loadmore-refresh-fs, $-fs-title) !default; // refresh图标字号 +$-loadmore-loading-size: var(--wot-loadmore-loading-size, $-fs-title) !default; // loading尺寸 + + + +/* message-box */ +$-message-box-width: var(--wot-message-box-width, 300px) !default; // 宽度 +$-message-box-bg: var(--wot-message-box-bg, $-color-white) !default; // 默认背景颜色 +$-message-box-radius: var(--wot-message-box-radius, 16px) !default; // 圆角大小 +$-message-box-padding: var(--wot-message-box-padding, 25px 24px 0) !default; // 主体内容padding +$-message-box-title-fs: var(--wot-message-box-title-fs, 16px) !default; // 标题字号 +$-message-box-title-color: var(--wot-message-box-title-color, rgba(0, 0, 0, 0.85)) !default; // 标题颜色 +$-message-box-content-fs: var(--wot-message-box-content-fs, 14px) !default; // 内容字号 +$-message-box-content-color: var(--wot-message-box-content-color, #666666) !default; // 内容颜色 +$-message-box-content-max-height: var(--wot-message-box-content-max-height, 264px) !default; // 内容最大高度 +$-message-box-content-scrollbar-width: var(--wot-message-box-content-scrollbar-width, 4px) !default; // 内容滚动条宽度 +$-message-box-content-scrollbar-color: var(--wot-message-box-content-scrollbar-color, rgba(0, 0, 0, 0.1)) !default; // 内容滚动条颜色 +$-message-box-input-error-color: var(--wot-message-box-input-error-color, $-input-error-color) !default; // 输入框错误颜色 + +/* notice-bar */ +$-notice-bar-fs: var(--wot-notice-bar-fs, 12px) !default; // 字号 +$-notice-bar-line-height: var(--wot-notice-bar-line-height, 18px) !default; // 行高 +$-notice-bar-border-radius: var(--wot-notice-bar-border-radius, 8px) !default; // 圆角 +$-notice-bar-padding: var(--wot-notice-bar-padding, 9px 20px 9px 15px) !default; // 非换行下的padding +$-notice-bar-warning-bg: var(--wot-notice-bar-warning-bg, #fff6c8) !default; // 背景色 +$-notice-bar-info-bg: var(--wot-notice-bar-info-bg, #f4f9ff) !default; // 背景色 +$-notice-bar-danger-bg: var(--wot-notice-bar-danger-bg, #feeced) !default; // 背景色 +$-notice-bar-warning-color: var(--wot-notice-bar-warning-color, $-color-warning) !default; // 文字和图标颜色 +$-notice-bar-info-color: var(--wot-notice-bar-info-color, $-color-theme) !default; // 文字和图标颜色 +$-notice-bar-danger-color: var(--wot-notice-bar-danger-color, $-color-danger) !default; // 文字和图标颜色 +$-notice-bar-prefix-size: var(--wot-notice-bar-prefix-size, 18px) !default; // 图标大小 +$-notice-bar-close-bg: var(--wot-notice-bar-close-bg, rgba(0, 0, 0, 0.15)) !default; // 右侧关闭按钮背景颜色 +$-notice-bar-close-size: var(--wot-notice-bar-close-size, 18px) !default; // 右侧关闭按钮背景颜色 +$-notice-bar-close-color: var(--wot-notice-bar-close-color, $-color-white) !default; // 右侧关闭按钮颜色 +$-notice-bar-wrap-padding: var(--wot-notice-bar-wrap-padding, 14px $-size-side-padding) !default; // 换行下的padding + +/* pagination */ +$-pagination-content-padding: var(--wot-pagination-content-padding, 10px 15px) !default; +$-pagination-message-padding: var(--wot-pagination-message-padding, 1px 0 16px 0) !default; +$-pagination-message-fs: var(--wot-pagination-message-fs, 12px) !default; +$-pagination-message-color: var(--wot-pagination-message-color, rgba(0, 0, 0, 0.69)) !default; +$-pagination-nav-border: var(--wot-pagination-nav-border, 1px solid rgba(0, 0, 0, 0.45)) !default; +$-pagination-nav-border-radius: var(--wot-pagination-nav-border-radius, 16px) !default; +$-pagination-nav-fs: var(--wot-pagination-nav-fs, 12px) !default; +$-pagination-nav-width: var(--wot-pagination-nav-width, 60px) !default; +$-pagination-nav-color: var(--wot-pagination-nav-color, rgba(0, 0, 0, 0.85)) !default; +$-pagination-nav-content-fs: var(--wot-pagination-nav-content-fs, 12px) !default; +$-pagination-nav-sepatator-padding: var(--wot-pagination-nav-sepatator-padding, 0 4px) !default; +$-pagination-nav-current-color: var(--wot-pagination-nav-current-color, $-color-theme) !default; +$-pagination-icon-size: var(--wot-pagination-icon-size, $-fs-content) !default; + + +/* picker */ +$-picker-toolbar-height: var(--wot-picker-toolbar-height, 54px) !default; // toolbar 操作条的高度 +$-picker-action-height: var(--wot-picker-action-height, 16px) !default; // toolbar 操作条的高度 +$-picker-toolbar-finish-color: var(--wot-picker-toolbar-finish-color, $-color-theme) !default; // toolbar 操作条完成按钮的颜色 +$-picker-toolbar-cancel-color: var(--wot-picker-toolbar-cancel-color, #666666) !default; // toolbar 操作条的边框颜色 +$-picker-toolbar-fs: var(--wot-picker-toolbar-fs, $-fs-title) !default; // toolbar 操作条的字号 +$-picker-toolbar-title-color: var(--wot-picker-toolbar-title-color, rgba(0, 0, 0, 0.85)) !default; // toolbar 操作台的标题颜色 +$-picker-column-fs: var(--wot-picker-column-fs, 16px) !default; // 选择器选项的字号 +$-picker-bg: var(--wot-picker-bg, $-color-white) !default; // 选择器选项的字号 +$-picker-column-active-fs: var(--wot-picker-column-active-fs, 18px) !default; // 选择器选项被选中的字号 +$-picker-column-color: var(--wot-picker-column-color, rgba(0, 0, 0, 0.85)) !default; // 选择器选项的颜色 +$-picker-column-height: var(--wot-picker-column-height, 210px) !default; // 列高 滚筒外部的高度 +$-picker-column-item-height: var(--wot-picker-column-item-height, 35px) !default; // 列高 滚筒外部的高度 +$-picker-column-select-bg: var(--wot-picker-column-select-bg, #f5f5f5) !default; +$-picker-loading-button-color: var(--wot-picker-loading-button-color, rgba(0, 0, 0, 0.25)) !default; // loading 背景颜色 +$-picker-column-padding: var(--wot-picker-column-padding, 0 $-size-side-padding) !default; // 选项内间距 + +$-picker-column-disabled-color: var(--wot-picker-column-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 选择器选项禁用的颜色 +$-picker-mask: var(--wot-picker-mask, linear-gradient(180deg, hsla(0, 0%, 100%, 0.9), hsla(0, 0%, 100%, 0.25)), ) linear-gradient(0deg, hsla(0, 0%, 100%, 0.9), hsla(0, 0%, 100%, 0.25)) !default; // 上下阴影 +$-picker-loading-bg: var(--wot-picker-loading-bg, rgba($-color-white, 0.8)) !default; // loading 背景颜色 +$-picker-region-separator-color: var(--wot-picker-region-separator-color, rgba(0, 0, 0, 0.65)) !default; // 区域选择文字颜色 +$-picker-cell-arrow-size-large: var(--wot-picker-cell-arrow-size-large, $-cell-icon-size) !default; // cell 类型的大尺寸 右侧icon尺寸 + +$-picker-region-color: var(--wot-picker-region-color, rgba(0, 0, 0, 0.45)) !default; // 区域选择文字颜色 +$-picker-region-bg-active-color: var(--wot-picker-region-bg-active-color, $-color-theme) !default; // 区域选择激活选中背景颜色 + +$-picker-region-fs: var(--wot-picker-region-fs, 14px) !default; // 区域选择文字字号 + +/* col-picker */ +$-col-picker-selected-height: var(--wot-col-picker-selected-height, 44px) !default; // 弹框顶部值高度 +$-col-picker-selected-padding: var(--wot-col-picker-selected-padding, 0 16px) !default; // 弹框顶部值左右间距 +$-col-picker-selected-fs: var(--wot-col-picker-selected-fs, 14px) !default; // 弹框顶部值字号 +$-col-picker-selected-color: var(--wot-col-picker-selected-color, rgba(0, 0, 0, 0.85)) !default; // 弹框顶部值文字颜色 +$-col-picker-selected-fw: var(--wot-col-picker-selected-fw, 700) !default; // 弹框顶部值高亮字重 +$-col-picker-line-width: var(--wot-col-picker-line-width, 16px) !default; // 弹框顶部值高亮线条宽度 +$-col-picker-line-height: var(--wot-col-picker-line-height, 3px) !default; // 弹框顶部值高亮线条高度 +$-col-picker-line-color: var(--wot-col-picker-line-color, linear-gradient(315deg, rgba(81, 124, 240, 1), rgba(118, 158, 245, 1))) !default; // 弹框顶部值高亮线条颜色 +$-col-picker-line-box-shadow: var(--wot-col-picker-line-box-shadow, 0px 1px 2px 0px rgba(1, 87, 255, 0.2)) !default; // 弹框顶部值高亮线条阴影 +$-col-picker-list-height: var(--wot-col-picker-list-height, 53vh) !default; // 弹框列表高度 +$-col-picker-list-padding-bottom: var(--wot-col-picker-list-padding-bottom, 30px) !default; // 弹框列表底部间距 +$-col-picker-list-color: var(--wot-col-picker-list-color, rgba(0, 0, 0, 0.85)) !default; // 弹框列表文字颜色 +$-col-picker-list-color-disabled: var(--wot-col-picker-list-color-disabled, rgba(0, 0, 0, 0.15)) !default; // 弹框列表文字禁用颜色 +$-col-picker-list-color-tip: var(--wot-col-picker-list-color-tip, rgba(0, 0, 0, 0.45)) !default; // 弹框列表提示文字颜色 +$-col-picker-list-fs: var(--wot-col-picker-list-fs, 14px) !default; // 弹框列表文字字号 +$-col-picker-list-fs-tip: var(--wot-col-picker-list-fs-tip, 12px) !default; // 弹框列表提示文字字号 +$-col-picker-list-item-padding: var(--wot-col-picker-list-item-padding, 12px 15px) !default; // 弹框列表选项间距 +$-col-picker-list-checked-icon-size: var(--wot-col-picker-list-checked-icon-size, 18px) !default; // 弹框列表选中箭头大小 +$-col-picker-list-color-checked: var(--wot-col-picker-list-color-checked, $-color-theme) !default; // 弹框列表选中选项颜色 + +/* overlay */ +$-overlay-bg: var(--wot-overlay-bg, rgba(0, 0, 0, 0.65)) !default; +$-overlay-bg-dark: var(--wot-overlay-bg-dark, rgba(0, 0, 0, 0.75)) !default; + +/* popup */ +$-popup-close-size: var(--wot-popup-close-size, 24px) !default; // 关闭按钮尺寸 +$-popup-close-color: var(--wot-popup-close-color, #666) !default; // 关闭按钮颜色 + +/* progress */ +$-progress-padding: var(--wot-progress-padding, 9px 0 8px) !default; // 进度条内边距 +$-progress-bg: var(--wot-progress-bg, rgba(229, 229, 229, 1)) !default; // 进度条底色 +$-progress-danger-color: var(--wot-progress-danger-color, $-color-danger) !default; // 进度条danger颜色 +$-progress-success-color: var(--wot-progress-success-color, $-color-success) !default; // 进度条success进度条颜色 +$-progress-color: var(--wot-progress-color, resultColor(315deg, $-color-theme, "dark""light", #517CF0 #769EF5, 0% 100%)) !default; // 进度条渐变色 +$-progress-linear-success-color: var(--wot-progress-linear-success-color, resultColor(315deg, $-color-theme, "dark""light", #20B080 #2BD69D, 0% 100%)) !default; // success进度条渐变色 +$-progress-linear-danger-color: var(--wot-progress-linear-danger-color, resultColor(315deg, $-color-theme, "dark""light", #E04350 #FF5964, 0% 100%)) !default; // danger进度条渐变色 +$-progress-height: var(--wot-progress-height, 3px) !default; // 进度条高度 +$-progress-label-color: var(--wot-progress-label-color, #333) !default; // 文字颜色 +$-progress-label-fs: var(--wot-progress-label-fs, 14px) !default; // 文字字号 +$-progress-icon-fs: var(--wot-progress-icon-fs, 18px) !default; // 图标字号 + +/* radio */ +$-radio-margin: var(--wot-radio-margin, $-checkbox-margin) !default; // 多个单选框距离 +$-radio-label-margin: var(--wot-radio-label-margin, $-checkbox-label-margin) !default; // 右侧文字与左侧图标距离 +$-radio-size: var(--wot-radio-size, 16px) !default; // 左侧图标尺寸 +$-radio-bg: var(--wot-radio-bg, $-checkbox-bg) !default; // 左侧图标尺寸 +$-radio-label-fs: var(--wot-radio-label-fs, $-checkbox-label-fs) !default; // 右侧文字字号 +$-radio-label-color: var(--wot-radio-label-color, $-checkbox-label-color) !default; // 右侧文字颜色 +$-radio-checked-color: var(--wot-radio-checked-color, $-checkbox-checked-color) !default; // 选中颜色 +$-radio-disabled-color: var(--wot-radio-disabled-color, $-checkbox-disabled-color) !default; // 禁用颜色 +$-radio-disabled-label-color: var(--wot-radio-disabled-label-color, $-checkbox-disabled-label-color) !default; // 禁用文字颜色 + +$-radio-large-size: var(--wot-radio-large-size, $-checkbox-large-size) !default; // 左侧图标尺寸 +$-radio-large-label-fs: var(--wot-radio-large-label-fs, $-checkbox-large-label-fs) !default; // 右侧文字字号 + +$-radio-button-height: var(--wot-radio-button-height, $-checkbox-button-height) !default; // 按钮模式复选框高 +$-radio-button-min-width: var(--wot-radio-button-min-width, 60px) !default; // 按钮模式最小宽 +$-radio-button-max-width: var(--wot-radio-button-max-width, 144px) !default; // 按钮模式最大宽 +$-radio-button-radius: var(--wot-radio-button-radius, $-checkbox-button-radius) !default; // 按钮圆角大小 +$-radio-button-bg: var(--wot-radio-button-bg, $-checkbox-button-bg) !default; // 按钮模式背景颜色 +$-radio-button-fs: var(--wot-radio-button-fs, $-checkbox-button-font-size) !default; // 按钮模式字号 +$-radio-button-border: var(--wot-radio-button-border, $-checkbox-button-border) !default; // 按钮边框颜色 +$-radio-button-disabled-border: var(--wot-radio-button-disabled-border, $-checkbox-button-disabled-border) !default; // 按钮禁用边框颜色 + +$-radio-dot-size: var(--wot-radio-dot-size, 8px) !default; // 单选dot模式圆点尺寸 +$-radio-dot-large-size: var(--wot-radio-dot-large-size, 10px) !default; // 单选dot模式大尺寸圆点尺寸 +$-radio-dot-checked-bg: var(--wot-radio-dot-checked-bg, $-color-theme) !default; // 单选dot模式选中背景色 +$-radio-dot-checked-border-color: var(--wot-radio-dot-checked-border-color, $-color-theme) !default; // 单选dot模式选中边框色 +$-radio-dot-border-color: var(--wot-radio-dot-border-color, #dcdcdc) !default; // 单选dot模式边框色 +$-radio-dot-disabled-border: var(--wot-radio-dot-disabled-border, #d9d9d9) !default; // 单选dot模式禁用边框颜色 +$-radio-dot-disabled-bg: var(--wot-radio-dot-disabled-bg, #d9d9d9) !default; // 单选dot模式禁用背景颜色 + +/* search */ +$-search-side-padding: var(--wot-search-side-padding, $-size-side-padding) !default; // 左右间距 +$-search-padding: var(--wot-search-padding, 10px 0 10px $-search-side-padding) !default; // 不包含取消按钮的间距 +$-search-input-radius: var(--wot-search-input-radius, 15px) !default; // 输入框圆角大小 +$-search-input-bg: var(--wot-search-input-bg, $-color-bg) !default; // 输入框背景色 +$-search-input-height: var(--wot-search-input-height, 30px) !default; // 输入框高度 +$-search-input-padding: var(--wot-search-input-padding, 0 32px 0 42px) !default; // 输入框间距 +$-search-input-fs: var(--wot-search-input-fs, $-fs-content) !default; // 输入框字号 +$-search-input-color: var(--wot-search-input-color, #262626) !default; // 输入框文字颜色 +$-search-icon-color: var(--wot-search-icon-color, $-color-icon) !default; // 图标颜色 +$-search-icon-size: var(--wot-search-icon-size, 18px) !default; // 图标大小 +$-search-clear-icon-size: var(--wot-search-clear-icon-size, $-fs-title) !default; // 清除图标大小 +$-search-placeholder-color: var(--wot-search-placeholder-color, #bfbfbf) !default; // placeholder 颜色 +$-search-cancel-padding: var(--wot-search-cancel-padding, 0 $-search-side-padding 0 10px) !default; // 取消按钮间距 +$-search-cancel-fs: var(--wot-search-cancel-fs, $-fs-title) !default; // 取消按钮字号 +$-search-cancel-color: var(--wot-search-cancel-color, rgba(0, 0, 0, 0.65)) !default; // 取消按钮颜色 +$-search-light-bg: var(--wot-search-light-bg, $-color-bg) !default; // light 类型的容器背景色 + +/* slider */ +$-slider-fs: var(--wot-slider-fs, $-fs-content) !default; // 字体大小 +$-slider-handle-radius: var(--wot-slider-handle-radius, 12px) !default; // 滑块半径 +$-slider-handle-bg: var(--wot-slider-handle-bg, resultColor(139deg, $-color-theme, "dark""light", #FFFFFF #F7F7F7, 0% 100%)) !default; // 滑块背景 +$-slider-axie-height: var(--wot-slider-axie-height, 3px) !default; // 滑轴高度 +$-slider-color: var(--wot-slider-color, #333) !default; // 字体颜色 +$-slider-axie-bg: var(--wot-slider-axie-bg, #E5E5E5) !default; // 滑轴的默认背景色 +$-slider-line-color: var(--wot-slider-line-color, resultColor(315deg, $-color-theme, "dark""light", #517CF0 #769EF5, 0% 100%)) !default; // 进度条颜色 +$-slider-disabled-color: var(--wot-slider-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 禁用状态下字体颜色 + +/* sort-button */ +$-sort-button-fs: var(--wot-sort-button-fs, $-fs-content) !default; // 字号 +$-sort-button-color: var(--wot-sort-button-color, $-color-content) !default; // 颜色 +$-sort-button-height: var(--wot-sort-button-height, 48px) !default; // 高度 +$-sort-button-line-height: var(--wot-sort-button-line-height, 3px) !default; // 下划线高度 +$-sort-button-line-color: var(--wot-sort-button-line-color, $-color-theme) !default; // 下划线颜色 + +/* steps */ +$-steps-icon-size: var(--wot-steps-icon-size, 22px) !default; // 图标尺寸 +$-steps-inactive-color: var(--wot-steps-inactive-color, rgba(0, 0, 0, 0.25)) !default; // 等待状态文字颜色 +$-steps-finished-color: var(--wot-steps-finished-color, $-color-theme) !default; // 完成文字颜色 +$-steps-icon-text-fs: var(--wot-steps-icon-text-fs, $-fs-content) !default; // 数字图标文字字号 +$-steps-error-color: var(--wot-steps-error-color, $-color-danger) !default; // 异常颜色 +$-steps-title-fs: var(--wot-steps-title-fs, $-fs-content) !default; // 标题字号 +$-steps-title-fw: var(--wot-steps-title-fw, $-fw-medium) !default; // 标题字重 +$-steps-label-fs: var(--wot-steps-label-fs, $-fs-secondary) !default; // 描述信息字号 +$-steps-description-color: var(--wot-steps-description-color, rgba(0, 0, 0, 0.45)) !default; // 描述信息颜色 +$-steps-is-icon-width: var(--wot-steps-is-icon-width, 30px) !default; // 自定义图标的宽度,给左右留白 +$-steps-line-color: var(--wot-steps-line-color, rgba(0, 0, 0, 0.15)) !default; // 线条颜色 +$-steps-dot-size: var(--wot-steps-dot-size, 7px) !default; // 点状大小 +$-steps-dot-active-size: var(--wot-steps-dot-active-size, 9px) !default; // 点状高亮大小 + +/* switch */ +$-switch-size: var(--wot-switch-size, 28px) !default; // switch大小 +$-switch-width: var(--wot-switch-width, calc(1.8em + 4px)) !default; // 宽度 +$-switch-height: var(--wot-switch-height, calc(1em + 4px)) !default; // 高度 +$-switch-circle-size: var(--wot-switch-circle-size, 1em) !default; // 圆点大小 +$-switch-border-color: var(--wot-switch-border-color, #e5e5e5) !default; // 边框颜色选中状态背景颜色 +$-switch-active-color: var(--wot-switch-active-color, $-color-theme) !default; // 选中状态背景 +$-switch-active-shadow-color: var(--wot-switch-active-shadow-color, rgba(0, 83, 162, 0.5)) !default; // 选中状态shadow颜色 +$-switch-inactive-color: var(--wot-switch-inactive-color, #EAEAEA) !default; // 非选中背景颜色 +$-switch-inactive-shadow-color: var(--wot-switch-inactive-shadow-color, rgba(155, 155, 155, 0.5)) !default; // 非选中状态shadow颜色 + + +/* tabs */ +$-tabs-nav-arrow-fs: var(--wot-tabs-nav-arrow-fs, 18px) !default; // 全部Icon字号 +$-tabs-nav-arrow-open-fs: var(--wot-tabs-nav-arrow-open-fs, 14px) !default; // 展开Icon字号 +$-tabs-nav-width: var(--wot-tabs-nav-width, 100vw) !default; // tabs 头部切换宽度 +$-tabs-nav-height: var(--wot-tabs-nav-height, 42px) !default; // 头部切换高度 +$-tabs-nav-fs: var(--wot-tabs-nav-fs, $-fs-content) !default; // 头部切换文字大小 +$-tabs-nav-color: var(--wot-tabs-nav-color, rgba(0, 0, 0, 0.85)) !default; // 头部切换文字颜色 +$-tabs-nav-bg: var(--wot-tabs-nav-bg, $-color-white) !default; // 背景颜色 +$-tabs-nav-active-color: var(--wot-tabs-nav-active-color, $-color-theme) !default; // 头部高亮颜色 +$-tabs-nav-disabled-color: var(--wot-tabs-nav-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 头部禁用颜色 +$-tabs-nav-line-height: var(--wot-tabs-nav-line-height, 3px) !default; // 高亮边框高度 +$-tabs-nav-line-width: var(--wot-tabs-nav-line-width, 19px) !default; // 高亮边框宽度 +$-tabs-nav-line-bg-color: var(--wot-tabs-nav-line-bg-color, $-color-theme) !default; // 底部条颜色 +$-tabs-nav-map-fs: var(--wot-tabs-nav-map-fs, $-fs-content) !default; // map 类型按钮字号 +$-tabs-nav-map-color: var(--wot-tabs-nav-map-color, rgba(0, 0, 0, 0.85)) !default; // map 类型按钮文字颜色 +$-tabs-nav-map-arrow-color: var(--wot-tabs-nav-map-arrow-color, rgba(0, 0, 0, 0.65)) !default; // map 类型箭头颜色 +$-tabs-nav-map-btn-before-bg: var(--wot-tabs-nav-map-btn-before-bg, linear-gradient(270deg, rgba(255, 255, 255, 1) 1%, rgba(255, 255, 255, 0) 100%)) !default; // 左侧map遮罩阴影 +$-tabs-nav-map-button-back-color: var(--wot-tabs-nav-map-button-back-color, rgba(0, 0, 0, 0.04)) !default; // map 类型按钮边框颜色 +$-tabs-nav-map-button-radius: var(--wot-tabs-nav-map-button-radius, 16px) !default; // map 类型按钮圆角大小 +$-tabs-nav-map-modal-bg: var(--wot-tabs-nav-map-modal-bg, $-overlay-bg) !default; // map 类型蒙层背景色 + +/* tag */ +$-tag-fs: var(--wot-tag-fs, $-fs-secondary) !default; // 字号 +$-tag-color: var(--wot-tag-color, $-color-white) !default; // 字体颜色 +$-tag-small-fs: var(--wot-tag-small-fs, $-fs-aid) !default; // 小尺寸字号 +$-tag-info-color: var(--wot-tag-info-color, #585858) !default; // info 颜色 +$-tag-primary-color: var(--wot-tag-primary-color, $-color-theme) !default; // 主颜色 +$-tag-danger-color: var(--wot-tag-danger-color, $-color-danger) !default; // danger 颜色 +$-tag-warning-color: var(--wot-tag-warning-color, $-color-warning) !default; // warning 颜色 +$-tag-success-color: var(--wot-tag-success-color, $-color-success) !default; // success 颜色 +$-tag-info-bg: var(--wot-tag-info-bg, resultColor(49deg, $-color-black, "dark""light", #808080 #999999, 0% 100%)) !default; // info 背景颜色 +$-tag-primary-bg: var(--wot-tag-primary-bg, $-color-theme) !default; // 主背景颜色 +$-tag-danger-bg: var(--wot-tag-danger-bg, $-color-danger) !default; // danger 背景颜色 +$-tag-warning-bg: var(--wot-tag-warning-bg, $-color-warning) !default; // warning 背景颜色 +$-tag-success-bg: var(--wot-tag-success-bg, $-color-success) !default; // success 背景颜色 +$-tag-round-color: var(--wot-tag-round-color, rgba(102, 102, 102, 1)) !default; // round 字体颜色 +$-tag-round-border-color: var(--wot-tag-round-border-color, rgba(225, 225, 225, 1)) !default; // round 边框颜色 +$-tag-round-radius: var(--wot-tag-round-radius, 12px) !default; // round 圆角大小 +$-tag-mark-radius: var(--wot-tag-mark-radius, 6px 2px 6px 2px) !default; // mark 圆角大小 +$-tag-close-size: var(--wot-tag-close-size, 14px) !default; // 关闭按钮字号 +$-tag-close-color: var(--wot-tag-close-color, $-tag-info-color) !default; // 关闭按钮颜色 +$-tag-close-active-color: var(--wot-tag-close-active-color, rgba(0, 0, 0, 0.45)) !default; // 关闭按钮 active 颜色 + +/* toast */ +$-toast-padding: var(--wot-toast-padding, 16px 24px) !default; // padding +$-toast-max-width: var(--wot-toast-max-width, 300px) !default; // 最大宽度 +$-toast-radius: var(--wot-toast-radius, 8px) !default; // 圆角大小 +$-toast-bg: var(--wot-toast-bg, $-overlay-bg) !default; // 背景色 +$-toast-fs: var(--wot-toast-fs, $-fs-content) !default; // 字号 +$-toast-with-icon-min-width: var(--wot-toast-with-icon-min-width, 150px) !default; // 有图标的情况下最小宽度 +$-toast-icon-size: var(--wot-toast-icon-size, 32px) !default; // 图标大小 +$-toast-icon-margin-right: var(--wot-toast-icon-margin-right, 12px) !default; // 图标右边距 +$-toast-loading-padding: var(--wot-toast-loading-padding, 10px) !default; // loading 下的padding +$-toast-box-shadow: var(--wot-toast-box-shadow, 0px 6px 16px 0px rgba(0, 0, 0, 0.08)) !default; // 外部阴影 + +/* loading */ +$-loading-size: var(--wot-loading-size, 32px) !default; // loading 大小 + +/* tooltip */ +$-tooltip-bg: var(--wot-tooltip-bg, rgba(38, 39, 40, 0.8)) !default; // 背景色 +$-tooltip-color: var(--wot-tooltip-color, $-color-white) !default; // 文字颜色 +$-tooltip-radius: var(--wot-tooltip-radius, 8px) !default; // 圆角大小 +$-tooltip-arrow-size: var(--wot-tooltip-arrow-size, 5px) !default; // 箭头大小 +$-tooltip-fs: var(--wot-tooltip-fs, $-fs-content) !default; // 字号 +$-tooltip-blur: var(--wot-tooltip-blur, 10px) !default; // 背景高斯模糊效果 +$-tooltip-padding: var(--wot-tooltip-padding, 9px 20px) !default; // 间距 +$-tooltip-close-size: var(--wot-tooltip-close-size, 6px) !default; // 背景高斯模糊效果 +$-tooltip-z-index: var(--wot-tooltip-z-index, 500) !default; +$-tooltip-line-height: var(--wot-tooltip-line-height, 18px) !default; // 行高 + +/* popover */ +$-popover-bg: var(--wot-popover-bg, $-color-white) !default; // 背景色 +$-popover-color: var(--wot-popover-color, rgba(0, 0, 0, 0.85)) !default; // 文字颜色 +$-popover-box-shadow: var(--wot-popover-box-shadow, 0px 2px 10px 0px rgba(0, 0, 0, 0.1)) !default; // 阴影颜色 +$-popover-arrow-box-shadow: var(--wot-popover-arrow-box-shadow, 0px 2px 10px 0px rgba(0, 0, 0, 0.2)) !default; // 阴影颜色 +$-popover-border-color: var(--wot-popover-border-color, rgba(0, 0, 0, 0.09)) !default; // 阴影颜色 +$-popover-radius: var(--wot-popover-radius, 4px) !default; // 圆角大小 +$-popover-arrow-size: var(--wot-popover-arrow-size, 6px) !default; // 箭头大小 +$-popover-fs: var(--wot-popover-fs, $-fs-content) !default; // 字号 +$-popover-padding: var(--wot-popover-padding, 15px) !default; // 间距 +$-popover-line-height: var(--wot-popover-line-height, 18px) !default; // 行高 +$-popover-z-index: var(--wot-popover-z-index, $-tooltip-z-index) !default; + +/* grid-item */ +$-grid-item-fs: var(--wot-grid-item-fs, 12px) !default; // 字号 +$-grid-item-bg: var(--wot-grid-item-bg, $-color-white) !default; // 字号 +$-grid-item-padding: var(--wot-grid-item-padding, 14px 0px) !default; // 内容的 padding +$-grid-item-border-color: var(--wot-grid-item-border-color, $-color-border-light) !default; // 边框颜色 + +/* statustip */ +$-statustip-fs: var(--wot-statustip-fs, $-fs-content) !default; // 字号 +$-statustip-color: var(--wot-statustip-color, rgba(0, 0, 0, 0.45)) !default; // 文字颜色 +$-statustip-line-height: var(--wot-statustip-line-height, 16px) !default; // 文字行高 +$-statustip-padding: var(--wot-statustip-padding, 5px 10px) !default; // 间距 + +/* card */ +$-card-bg: var(--wot-card-bg, $-color-white) !default; // 背景色 +$-card-fs: var(--wot-card-fs, $-fs-content) !default; // 卡片字号 +$-card-padding: var(--wot-card-padding, 0 $-size-side-padding) !default; // 内边距 +$-card-footer-padding: var(--wot-card-footer-padding, 12px 0 16px) !default; // 底部内边距 +$-card-shadow-color: var(--wot-card-shadow-color, 0px 4px 8px 0px rgba(0, 0, 0, 0.02)) !default; // 阴影 +$-card-radius: var(--wot-card-radius, 8px) !default; // 圆角大小 +$-card-line-height: var(--wot-card-line-height, 1.1) !default; // 行高 +$-card-margin: var(--wot-card-margin, 0 $-size-side-padding) !default; // 外边距 +$-card-title-color: var(--wot-card-title-color, rgba(0, 0, 0, 0.85)) !default; // 标题颜色 +$-card-title-fs: var(--wot-card-title-fs, $-fs-title) !default; // 矩形卡片标题字号 +$-card-content-border-color: var(--wot-card-content-border-color, rgba(0, 0, 0, 0.09)) !default; // 内容边框 +$-card-rectangle-title-padding: var(--wot-card-rectangle-title-padding, 15px 15px 12px) !default; // 矩形卡片头部内边距 +$-card-rectangle-content-padding: var(--wot-card-rectangle-content-padding, 16px 0) !default; // 矩形卡片内容内边距 +$-card-rectangle-footer-padding: var(--wot-card-rectangle-footer-padding, 12px 0) !default; // 矩形卡片底部内边距 +$-card-content-color: var(--wot-card-content-color, rgba(0, 0, 0, 0.45)) !default; // 文本内容颜色 +$-card-content-line-height: var(--wot-card-content-line-height, 1.428) !default; // 文本内容行高 +$-card-content-margin: var(--wot-card-content-margin, 13px 0 12px) !default; // 内容外边距 +$-card-content-rectangle-margin: var(--wot-card-content-rectangle-margin, 14px 0 12px) !default; // 矩形卡片内容外边距 + +/* upload */ +$-upload-size: var(--wot-upload-size, 80px) !default; // upload的外边框默认尺寸 +$-upload-evoke-icon-size: var(--wot-upload-evoke-icon-size, 32px) !default; // 唤起项的图标大小 +$-upload-evoke-bg: var(--wot-upload-evoke-bg, rgba(0, 0, 0, 0.04)) !default; // 唤起项的背景色 +$-upload-evoke-color: var(--wot-upload-evoke-color, rgba(0, 0, 0, 0.25)) !default; // 唤起项的图标颜色 +$-upload-evoke-disabled-color: var(--wot-upload-evoke-disabled-color, rgba(0, 0, 0, 0.09)) !default; // 唤起项禁用颜色 +$-upload-close-icon-size: var(--wot-upload-close-icon-size, 16px) !default; // 移除按钮尺寸 +$-upload-close-icon-color: var(--wot-upload-close-icon-color, rgba(0, 0, 0, 0.65)) !default; // 移除按钮颜色 +$-upload-progress-fs: var(--wot-upload-progress-fs, 14px) !default; // 进度文字字号 +$-upload-file-fs: var(--wot-upload-file-fs, 12px) !default; // 文件名字号 +$-upload-file-color: var(--wot-upload-file-color, $-color-secondary) !default; // 文件名字颜色 +$-upload-preview-name-fs: var(--wot-upload-preview-name-fs, 12px) !default; // 预览图片名字号 +$-upload-preview-icon-size: var(--wot-upload-preview-icon-size, 24px) !default; // 预览内部图标尺寸 +$-upload-preview-name-bg: var(--wot-upload-preview-name-bg, rgba(0, 0, 0, 0.6)) !default; // 预览文件名背景色 +$-upload-preview-name-height: var(--wot-upload-preview-name-height, 22px) !default; // 预览文件名背景高度 +$-upload-cover-icon-size: var(--wot-upload-cover-icon-size, 22px) !default; // 视频/文件图标尺寸 + + +/* curtain */ +$-curtain-content-radius: var(--wot-curtain-content-radius, 24px) !default; // 内容圆角 +$-curtain-content-close-color: var(--wot-curtain-content-close-color, $-color-white) !default; // 关闭按钮颜色 +$-curtain-content-close-fs: var(--wot-curtain-content-close-fs, $-fs-big) !default; // 关闭按钮大小 + +/* notify */ +$-notify-text-color: var(--wot-notify-text-color, $-color-white) !default; +$-notify-padding: var(--wot-notify-padding, 8px 16px) !default; +$-notify-font-size: var(--wot-notify-font-size, $-fs-content) !default; +$-notify-line-height: var(--wot-notify-line-height, 20px) !default; +$-notify-primary-background: var(--wot-notify-primary-background, $-color-theme) !default; +$-notify-success-background: var(--wot-notify-success-background, $-color-success) !default; +$-notify-danger-background: var(--wot-notify-danger-background, $-color-danger) !default; +$-notify-warning-background: var(--wot-notify-warning-background, $-color-warning) !default; + +/* skeleton */ +$-skeleton-background-color: var(--wot-skeleton-background-color, #eee) !default; +$-skeleton-animation-gradient: var(--wot-skeleton-animation-gradient, rgba(0, 0, 0, 0.04)) !default; +$-skeleton-animation-flashed: var(--wot-skeleton-animation-flashed, rgba(230, 230, 230, 0.3)) !default; +$-skeleton-text-height-default: var(--wot-skeleton-text-height-default, 16px) !default; +$-skeleton-rect-height-default: var(--wot-skeleton-rect-height-default, 16px) !default; +$-skeleton-circle-height-default: var(--wot-skeleton-circle-height-default, 48px) !default; +$-skeleton-row-margin-bottom: var(--wot-skeleton-row-margin-bottom, 16px) !default; +$-skeleton-border-radius-text: var(--wot-skeleton-border-radius-text, 2px) !default; +$-skeleton-border-radius-rect: var(--wot-skeleton-border-radius-rect, 4px) !default; +$-skeleton-border-radius-circle: var(--wot-skeleton-border-radius-circle, 50%) !default; + +/* circle */ +$-circle-text-color: var(--wot-circle-text-color, $-color-content) !default; // circle文字颜色 + +/* swiper */ +$-swiper-radius: var(--wot-swiper-radius, 8px); +$-swiper-item-padding: var(--wot-swiper-item-padding, 0); + + +/* swiper-nav */ +// dot & dots-bar +$-swiper-nav-dot-color: var(--wot-swiper-nav-dot-color, $-font-white-2) !default; +$-swiper-nav-dot-active-color: var(--wot-swiper-nav-dot-active-color, $-font-white-1) !default; +$-swiper-nav-dot-size: var(--wot-swiper-nav-dot-size, 12rpx) !default; +$-swiper-nav-dots-bar-active-width: var(--wot-swiper-nav-dots-bar-active-width, 40rpx) !default; +// fraction +$-swiper-nav-fraction-color: var(--wot-swiper-nav-fraction-color, $-font-white-1) !default; +$-swiper-nav-fraction-bg-color: var(--wot-swiper-nav-fraction-bg-color, $-font-gray-3) !default; +$-swiper-nav-fraction-height: var(--wot-swiper-nav-fraction-height, 48rpx) !default; +$-swiper-nav-fraction-font-size: var(--wot-swiper-nav-fraction-font-size, 24rpx) !default; +// button +$-swiper-nav-btn-color: var(--wot-swiper-nav-btn-color, $-font-white-1) !default; +$-swiper-nav-btn-bg-color: var(--wot-swiper-nav-btn-bg-color, $-font-gray-3) !default; +$-swiper-nav-btn-size: var(--wot-swiper-nav-btn-size, 48rpx) !default; + +/* segmented */ +$-segmented-padding: var(--wot-segmented-padding, 4px) !default; // 分段器padding +$-segmented-item-bg-color: var(--wot-segmented-item-bg-color, #eeeeee) !default; +$-segmented-item-color: var(--wot-segmented-item-color, rgba(0, 0, 0, 0.85)) !default; // 标题文字颜色 +$-segmented-item-acitve-bg: var(--wot-segmented-item-acitve-bg, #FFFFFF) !default; // 标题文字颜色 +$-segmented-item-disabled-color: var(--wot-segmented-item-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 标题文字禁用颜色 + +/* tabbar */ +$-tabbar-height: var(--wot-tabbar-height, 50px) !default; +$-tabbar-box-shadow: var(--wot-tabbar-box-shadow, 0 6px 30px 5px rgba(0, 0, 0, 0.05), 0 16px 24px 2px rgba(0, 0, 0, 0.04), 0 8px 10px -5px rgba(0, 0, 0, 0.08)) !default; // round类型tabbar阴影 + +/* tabbar-item */ +$-tabbar-item-title-font-size: var(--wot-tabbar-item-title-font-size, 10px) !default; // tabbar选项文字大小 +$-tabbar-item-title-line-height: var(--wot-tabbar-item-title-line-height, initial) !default; // tabbar选项标题文字行高 +$-tabbar-inactive-color: var(--wot-tabbar-inactive-color, $-color-title) !default; // 标题文字和图标颜色 +$-tabbar-active-color: var(--wot-tabbar-active-color, $-color-theme) !default; // 选中文字和图标颜色 +$-tabbar-item-icon-size: var(--wot-tabbar-item-icon-size, 20px) !default; // tabbar选项图标大小 + + + +/* navbar */ +$-navbar-height: var(--wot-navbar-height, 44px) !default; // navbar高度 +$-navbar-color: var(--wot-navbar-color, $-font-gray-1) !default; // navbar字体颜色 +$-navbar-background: var(--wot-navbar-background, $-color-white) !default; // navbar背景颜色 +$-navbar-arrow-size: var(--wot-navbar-arrow-size, 24px) !default; // navbar左箭头图标大小 +$-navbar-desc-font-size: var(--wot-navbar-desc-font-size, 16px); // navbar 左箭头字体大小 +$-navbar-desc-font-color: var(--wot-navbar-desc-font-color, $-font-gray-1) !default; // navbar左右两侧字体颜色 +$-navbar-title-font-size: var(--wot-navbar-title-font-size, 18px); // navbar title字体大小 +$-navbar-title-font-weight: var(--wot-navbar-title-font-weight, 600); // navbar title字重 +$-navbar-disabled-opacity: var(--wot-navbar-disabled-opacity, 0.6) !default; // navbar左右两侧字体禁用 +$-navbar-hover-color :var(--wot-navbar-hover-color, #eee) !default; // navbar hover样式 + +/* navbar-capsule */ +$-navbar-capsule-border-color: var(--wot-navbar-capsule-border-color, #e7e7e7) !default; +$-navbar-capsule-border-radius: var(--wot-navbar-capsule-border-radius, 16px) !default; +$-navbar-capsule-width: var(--wot-navbar-capsule-width, 88px) !default; +$-navbar-capsule-height: var(--wot-navbar-capsule-height, 32px) !default; +$-navbar-capsule-icon-size: var(--wot-navbar-capsule-icon-size, 20px) !default; // navbar capsule图标大小 + + + +/* table */ +$-table-color: var(--wot-table-color, $-font-gray-1) !default; // 表格字体颜色 +$-table-bg: var(--wot-table-bg, #FFFFFF) !default; // 表格背景颜色 +$-table-stripe-bg: var(--wot-table-stripe-bg, #f3f3f3) !default; // 表格背景颜色 +$-table-border-color: var(--wot-table-border-color, #ececec) !default; // 表格边框颜色 +$-table-font-size: var(--wot-table-font-size, 13px) !default; // 表格字体大小 + +/* sidebar */ +$-sidebar-bg: var(--wot-sidebar-bg, $-color-gray-1) !default; // 侧边栏背景色 +$-sidebar-width: var(--wot-sidebar-width, 104px) !default; // 侧边栏宽度 +$-sidebar-height: var(--wot-sidebar-height, 100%) !default; // 侧边栏高度 + +/* sidebar-item */ +$-sidebar-color: var(--wot-sidebar-color, $-font-gray-1) !default; +$-sidebar-item-height: var(--wot-sidebar-item-height, 56px) !default; +$-sidebar-item-line-height: var(--wot-sidebar-item-line-height, 24px) !default; +$-sidebar-disabled-color: var(--wot-side-bar-disabled-color, $-font-gray-4) !default; +$-sidebar-active-color: var(--wot-sidebar-active-color, $-color-theme) !default; // 激活项字体颜色 +$-sidebar-active-bg: var(--wot-sidebar-active-bg, $-color-white) !default; // 激活项背景颜色 +$-sidebar-hover-bg: var(--wot-sidebar-hover-bg, $-color-gray-2) !default; // 激活项点击背景颜色 +$-sidebar-border-radius: var(--wot-sidebar-border-radius, 8px) !default; +$-sidebar-font-size: var(--wot-sidebar-font-size, 16px) !default; +$-sidebar-icon-size: var(--wot-sidebar-icon-size, 20px) !default; +$-sidebar-active-border-width: var(--wot-sidebar-active-border-width, 4px) !default; +$-sidebar-active-border-height: var(--wot-sidebar-active-border-height, 16px) !default; + +/* fab */ +$-fab-trigger-height: var(--wot-fab-trigger-height, 56px) !default; +$-fab-trigger-width: var(--wot-fab-trigger-width, 56px) !default; +$-fab-actions-padding: var(--wot-actions-padding, 12px) !default; +$-fab-icon-fs: var(--wot-fab-icon-fs, 20px) !default; + +/* count-down */ +$-count-down-text-color: var(--wot-count-down-text-color, $-color-gray-8) !default; +$-count-down-font-size: var(--wot-count-down-font-size, $-fs-content) !default; +$-count-down-line-height: var(--wot-count-down-line-height, 20px) !default; + +/* number-keyboard */ +$-number-keyboard-key-height: var(--wot-number-keyboard-key-height, 48px) !default; +$-number-keyboard-key-font-size: var(--wot-number-keyboard-key-font-size, 28px) !default; +$-number-keyboard-key-background: var(--wot-number-keyboard-key-background, $-color-white) !default; +$-number-keyboard-key-border-radius: var(--wot-number-keyboard-key-border-radius, 8px) !default; +$-number-keyboard-delete-font-size: var(--wot-number-keyboard-delete-font-size, 16px) !default; +$-number-keyboard-key-active-color: var(--wot-number-keyboard-key-active-color, $-color-gray-3) !default; +$-number-keyboard-button-text-color: var(--wot-number-keyboard-button-text-color, $-color-white) !default; +$-number-keyboard-button-background: var(--wot-number-keyboard--button-background, $-color-theme) !default; +$-number-keyboard-button-active-opacity: var(--wot-number-keyboard-button-active-opacity, 0.6) !default; +$-number-keyboard-background: var(--wot-number-keyboard-background, $-color-gray-2) !default; +$-number-keyboard-title-height: var(--wot-number-keyboard-title-height, 34px) !default; +$-number-keyboard-title-color: var(--wot-number-keyboard-title-color, $-color-gray-7) !default; +$-number-keyboard-title-font-size: var(--wot-number-keyboard-title-font-size, 16px) !default; +$-number-keyboard-close-padding: var(--wot-number-keyboard-title-font-size, 0 16px) !default; +$-number-keyboard-close-color: var(--wot-number-keyboard-close-color, $-color-theme) !default; +$-number-keyboard-close-font-size: var(--wot-number-keyboard-close-font-size, 14px) !default; +$-number-keyboard-icon-size: var(--wot-number-keyboard-icon-size, 22px) !default; + + +/* passwod-input */ +$-password-input-height: var(--wot-password-input-height, 50px); +$-password-input-margin: var(--wot-password-input-margin, 16px); +$-password-input-font-size: var(--wot-password-input-margin, 20px); +$-password-input-radius: var(--wot-password-input-radius, 6px); +$-password-input-background: var(--wot-password-input-background, #fff); +$-password-input-info-color: var(--wot-password-input-info-color, $-color-info); +$-password-input-info-font-size: var(--wot-password-input-info-font-size, $-fs-content); +$-password-input-border-color: var(--wot-password-border-color, #ebedf0); +$-password-input-error-info-color: var(--wot-password-input-error-info-color, $-color-danger); +$-password-input-dot-size: var(--wot-password-input-dot-size, 10px); +$-password-input-dot-color: var(--wot-password-input-dot-color, $-color-gray-8); +$-password-input-text-color: var(--wot-password-input-text-color, $-color-gray-8); +$-password-input-cursor-color: var(--wot-password-input-cursor-color, $-color-gray-8); +$-password-input-cursor-width: var(--wot-password-input-cursor-width, 1px); +$-password-input-cursor-height: var(--wot-password-input-cursor-height, 40%); +$-password-input-cursor-duration: var(--wot-password-input-cursor-duration, 1s); + +/* form-item */ +$-form-item-error-message-color: var(--wot-form-item-error-message-color, $-color-danger) !default; +$-form-item-error-message-font-size: var(--wot-form-item-error-message-font-size, $-fs-secondary) !default; +$-form-item-error-message-line-height: var(--wot-form-item-error-message-line-height, 24px) !default; + +/* backtop */ +$-backtop-bg: var(--wot-backtop-bg, #e1e1e1) !default; +$-backtop-icon-size: var(--wot-backtop-icon-size, 20px) !default; + +/* index-bar */ +$-index-bar-index-font-size: var(--wot-index-bar-index-font-size, $-fs-aid) !default; + +/* text */ +$-text-info-color: var(--wot-text-info-color, $-color-info) !default; +$-text-primary-color: var(--wot-text-primary-color, $-color-theme) !default; +$-text-error-color: var(--wot-text-error-color, $-color-danger) !default; +$-text-warning-color: var(--wot-text-warning-color, $-color-warning) !default; +$-text-success-color: var(--wot-text-success-color, $-color-success) !default; + +/* video-preview */ +$-video-preview-bg: var(--wot-video-preview-bg, rgba(0, 0, 0, 0.8)) !default; // 背景色 +$-video-preview-close-color: var(--wot-video-preview-close-color, #fff) !default; // 图标颜色 +$-video-preview-close-font-size: var(--wot-video-preview-close-font-size, 20px) !default; // 图标大小 + +/* img-cropper */ +$-img-cropper-icon-size: var(--wot-img-cropper-icon-size, $-fs-big) !default; // 图标大小 +$-img-cropper-icon-color: var(--wot-img-cropper-icon-color, #fff) !default; // 图标颜色 \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/common/base64.ts b/src/uni_modules/wot-design-uni/components/common/base64.ts new file mode 100644 index 0000000..65aa2e8 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/base64.ts @@ -0,0 +1,29 @@ +const _b64chars: string[] = [...'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'] +const _mkUriSafe = (src: string): string => src.replace(/[+/]/g, (m0: string) => (m0 === '+' ? '-' : '_')).replace(/=+\$/m, '') +const fromUint8Array = (src: Uint8Array, rfc4648 = false): string => { + let b64 = '' + for (let i = 0, l = src.length; i < l; i += 3) { + const [a0, a1, a2] = [src[i], src[i + 1], src[i + 2]] + const ord = (a0 << 16) | (a1 << 8) | a2 + b64 += _b64chars[ord >>> 18] + b64 += _b64chars[(ord >>> 12) & 63] + b64 += typeof a1 !== 'undefined' ? _b64chars[(ord >>> 6) & 63] : '=' + b64 += typeof a2 !== 'undefined' ? _b64chars[ord & 63] : '=' + } + return rfc4648 ? _mkUriSafe(b64) : b64 +} +const _btoa: (s: string) => string = + typeof btoa === 'function' + ? (s: string) => btoa(s) + : (s: string) => { + if (s.charCodeAt(0) > 255) { + throw new RangeError('The string contains invalid characters.') + } + return fromUint8Array(Uint8Array.from(s, (c: string) => c.charCodeAt(0))) + } +const utob = (src: string): string => unescape(encodeURIComponent(src)) + +export default function encode(src: string, rfc4648 = false): string { + const b64 = _btoa(utob(src)) + return rfc4648 ? _mkUriSafe(b64) : b64 +} diff --git a/src/uni_modules/wot-design-uni/components/common/canvasHelper.ts b/src/uni_modules/wot-design-uni/components/common/canvasHelper.ts new file mode 100644 index 0000000..ee17e14 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/canvasHelper.ts @@ -0,0 +1,49 @@ +/** + * 适配 canvas 2d 上下文 + * @param ctx canvas 2d 上下文 + * @returns + */ +export function canvas2dAdapter(ctx: CanvasRenderingContext2D): UniApp.CanvasContext { + return Object.assign(ctx, { + setFillStyle(color: string | CanvasGradient) { + ctx.fillStyle = color + }, + setStrokeStyle(color: string | CanvasGradient | CanvasPattern) { + ctx.strokeStyle = color + }, + setLineWidth(lineWidth: number) { + ctx.lineWidth = lineWidth + }, + setLineCap(lineCap: 'butt' | 'round' | 'square') { + ctx.lineCap = lineCap + }, + + setFontSize(font: string) { + ctx.font = font + }, + setGlobalAlpha(alpha: number) { + ctx.globalAlpha = alpha + }, + setLineJoin(lineJoin: 'bevel' | 'round' | 'miter') { + ctx.lineJoin = lineJoin + }, + setTextAlign(align: 'left' | 'center' | 'right') { + ctx.textAlign = align + }, + setMiterLimit(miterLimit: number) { + ctx.miterLimit = miterLimit + }, + setShadow(offsetX: number, offsetY: number, blur: number, color: string) { + ctx.shadowOffsetX = offsetX + ctx.shadowOffsetY = offsetY + ctx.shadowBlur = blur + ctx.shadowColor = color + }, + setTextBaseline(textBaseline: 'top' | 'bottom' | 'middle') { + ctx.textBaseline = textBaseline + }, + createCircularGradient() {}, + draw() {}, + addColorStop() {} + }) as unknown as UniApp.CanvasContext +} diff --git a/src/uni_modules/wot-design-uni/components/common/clickoutside.ts b/src/uni_modules/wot-design-uni/components/common/clickoutside.ts new file mode 100644 index 0000000..0800afd --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/clickoutside.ts @@ -0,0 +1,34 @@ +/* + * @Author: weisheng + * @Date: 2023-07-02 22:51:06 + * @LastEditTime: 2024-03-16 19:59:07 + * @LastEditors: weisheng + * @Description: + * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/common/clickoutside.ts + * 记得注释 + */ +let queue: any[] = [] + +export function pushToQueue(comp: any) { + queue.push(comp) +} + +export function removeFromQueue(comp: any) { + queue = queue.filter((item) => { + return item.$.uid !== comp.$.uid + }) +} + +export function closeOther(comp: any) { + queue.forEach((item) => { + if (item.$.uid !== comp.$.uid) { + item.$.exposed.close() + } + }) +} + +export function closeOutside() { + queue.forEach((item) => { + item.$.exposed.close() + }) +} diff --git a/src/uni_modules/wot-design-uni/components/common/dayjs.ts b/src/uni_modules/wot-design-uni/components/common/dayjs.ts new file mode 100644 index 0000000..bc3277a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/dayjs.ts @@ -0,0 +1,148 @@ +import { isDate } from './util' + +/* eslint-disable */ +class Dayjs { + utc: boolean + date: Date + timeZone: number + timeZoneString: any + mYear: any + mMonth: any + mDay: any + mWeek: any + mHour: any + mMinute: any + mSecond: any + constructor(dateStr?: string | number | Date) { + this.utc = false + const parsedDate = this.parseConfig(dateStr) + this.date = new Date(parsedDate) + this.timeZone = this.date.getTimezoneOffset() / 60 + this.timeZoneString = this.padNumber(String(-1 * this.timeZone).replace(/^(.)?(\d)/, '$10$200'), 5, '+') + this.mYear = this.date.getFullYear() + this.mMonth = this.date.getMonth() + this.mDay = this.date.getDate() + this.mWeek = this.date.getDay() + this.mHour = this.date.getHours() + this.mMinute = this.date.getMinutes() + this.mSecond = this.date.getSeconds() + } + + parseConfig(dateStr?:string | number | Date) { + if (!dateStr) return new Date() + if (isDate(dateStr)) return dateStr + if (/^(\d){8}$/.test(dateStr as string)) { + this.utc = true + return `${(dateStr as string).substr(0, 4)}-${(dateStr as string).substr(4, 2)}-${(dateStr as string).substr(6, 2)}` + } + return dateStr + } + + padNumber(num:string, length:number, padChar:string) { + return !num || num.length >= length ? num : `${Array(length + 1 - num.length).join(padChar)}${num}` + } + + year() { + return this.mYear + } + + month() { + return this.mMonth + } + + unix() { + const timeZoneOffset = this.utc ? 60 * this.timeZone * 60 * 1000 : 0 + return Math.floor((this.date.getTime() + timeZoneOffset) / 1000) + } + + toString() { + return this.date.toUTCString() + } + + startOf(unit:string) { + switch (unit) { + case 'year': + return new Dayjs(new Date(this.year(), 0, 1)) + case 'month': + return new Dayjs(new Date(this.year(), this.month(), 1)) + default: + return this + } + } + + add(amount:number, unit:string) { + let interval + switch (unit) { + case 'm': + case 'minutes': + interval = 60 + break + case 'h': + case 'hours': + interval = 60 * 60 + break + case 'd': + case 'days': + interval = 24 * 60 * 60 + break + case 'w': + case 'weeks': + interval = 7 * 24 * 60 * 60 + break + default: + interval = 1 + } + const newUnixTime = this.unix() + amount * interval + return new Dayjs(1000 * newUnixTime) + } + + subtract(amount:number, unit:string) { + return this.add(-1 * amount, unit) + } + + format(formatStr = 'YYYY-MM-DDTHH:mm:ssZ') { + const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] + return formatStr.replace(/Y{2,4}|M{1,2}|D{1,2}|d{1,4}|H{1,2}|m{1,2}|s{1,2}|Z{1,2}/g, (match) => { + switch (match) { + case 'YY': + return String(this.mYear).slice(-2) + case 'YYYY': + return String(this.mYear) + case 'M': + return String(this.mMonth + 1) + case 'MM': + return this.padNumber(String(this.mMonth + 1), 2, '0') + case 'D': + return String(this.mDay) + case 'DD': + return this.padNumber(String(this.mDay), 2, '0') + case 'd': + return String(this.mWeek) + case 'dddd': + return weekdays[this.mWeek] + case 'H': + return String(this.mHour) + case 'HH': + return this.padNumber(String(this.mHour), 2, '0') + case 'm': + return String(this.mMinute) + case 'mm': + return this.padNumber(String(this.mMinute), 2, '0') + case 's': + return String(this.mSecond) + case 'ss': + return this.padNumber(String(this.mSecond), 2, '0') + case 'Z': + return `${this.timeZoneString.slice(0, -2)}:00` + case 'ZZ': + return this.timeZoneString + default: + return match + } + }) + } +} + +export function dayjs(dateStr?: string | number | Date) { + return new Dayjs(dateStr) +} diff --git a/src/uni_modules/wot-design-uni/components/common/event.ts b/src/uni_modules/wot-design-uni/components/common/event.ts new file mode 100644 index 0000000..44a00e4 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/event.ts @@ -0,0 +1,8 @@ +export const UPDATE_MODEL_EVENT = 'update:modelValue' +export const CHANGE_EVENT = 'change' +export const INPUT_EVENT = 'input' +export const CLICK_EVENT = 'click' +export const CLOSE_EVENT = 'close' +export const OPEN_EVENT = 'open' +export const CONFIRM_EVENT = 'confirm' +export const CANCEL_EVENT = 'cancel' diff --git a/src/uni_modules/wot-design-uni/components/common/props.ts b/src/uni_modules/wot-design-uni/components/common/props.ts new file mode 100644 index 0000000..ebb9dc0 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/props.ts @@ -0,0 +1,51 @@ +import type { PropType } from 'vue' + +export const unknownProp = null as unknown as PropType + +export const numericProp = [Number, String] + +export const truthProp = { + type: Boolean, + default: true as const +} + +export const makeRequiredProp = (type: T) => ({ + type, + required: true as const +}) + +export const makeArrayProp = () => ({ + type: Array as PropType, + default: () => [] +}) + +export const makeBooleanProp = (defaultVal: T) => ({ + type: Boolean, + default: defaultVal +}) + +export const makeNumberProp = (defaultVal: T) => ({ + type: Number, + default: defaultVal +}) + +export const makeNumericProp = (defaultVal: T) => ({ + type: numericProp, + default: defaultVal +}) + +export const makeStringProp = (defaultVal: T) => ({ + type: String as unknown as PropType, + default: defaultVal +}) + +export const baseProps = { + /** + * 自定义根节点样式 + */ + customStyle: makeStringProp(''), + /** + * 自定义根节点样式类 + */ + customClass: makeStringProp('') +} diff --git a/src/uni_modules/wot-design-uni/components/common/util.ts b/src/uni_modules/wot-design-uni/components/common/util.ts new file mode 100644 index 0000000..b6c2f5e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/common/util.ts @@ -0,0 +1,710 @@ +import { AbortablePromise } from './AbortablePromise' + +type NotUndefined = T extends undefined ? never : T + +/** + * 生成uuid + * @returns string + */ +export function uuid() { + return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4() +} + +function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1) +} + +/** + * @description 对num自动填充px + * @param {Number} num + * @return {string} num+px + */ +export function addUnit(num: number | string) { + return Number.isNaN(Number(num)) ? `${num}` : `${num}px` +} + +/** + * @description 判断target是否对象 + * @param value + * @return {boolean} + */ +export function isObj(value: any): value is object { + return Object.prototype.toString.call(value) === '[object Object]' || typeof value === 'object' +} + +/** + * 获取目标原始类型 + * @param target 任意类型 + * @returns {string} type 数据类型 + */ +export function getType(target: unknown): string { + // 得到原生类型 + const typeStr = Object.prototype.toString.call(target) + // 拿到类型值 + const match = typeStr.match(/\[object (\w+)\]/) + const type = match && match.length ? match[1].toLowerCase() : '' + // 类型值转小写并返回 + return type +} + +/** + * @description 默认的外部格式化函数 - picker 组件 + * @param items - 要格式化的数据项数组或单个数据项 + * @param kv - 配置对象,包含 labelKey 作为键值 + * @returns 格式化后的字符串 + */ +export const defaultDisplayFormat = function (items: any[] | Record, kv?: { labelKey?: string }): string { + const labelKey: string = kv?.labelKey || 'value' + + if (Array.isArray(items)) { + return items.map((item) => item[labelKey]).join(', ') + } else { + return items[labelKey] + } +} + +/** + * @description 默认函数占位符 - pickerView组件 + * @param value 值 + * @return value + */ +export const defaultFunction = (value: T): T => value + +/** + * @description 检查值是否不为空 + * @param value 值 + * @return {Boolean} 是否不为空 + */ +export const isDef = (value: T): value is NonNullable => value !== undefined && value !== null + +/** + * @description 防止数字小于零 + * @param {number} num + * @param {string} label 标签 + */ +export const checkNumRange = (num: number, label: string = 'value'): void => { + if (num < 0) { + throw new Error(`${label} shouldn't be less than zero`) + } +} + +/** + * @description 防止 pixel 无意义 + * @param {number} num + * @param {string} label 标签 + */ +export const checkPixelRange = (num: number, label: string = 'value'): void => { + if (num <= 0) { + throw new Error(`${label} should be greater than zero`) + } +} + +/** + * 将 RGB 值转换为十六进制颜色代码。 + * @param {number} r - 红色分量 (0-255)。 + * @param {number} g - 绿色分量 (0-255)。 + * @param {number} b - 蓝色分量 (0-255)。 + * @returns {string} 十六进制颜色代码 (#RRGGBB)。 + */ +export function rgbToHex(r: number, g: number, b: number): string { + // 将 RGB 分量组合成一个十六进制数。 + const hex = ((r << 16) | (g << 8) | b).toString(16) + + // 使用零填充十六进制数,确保它有 6 位数字(RGB 范围)。 + const paddedHex = '#' + '0'.repeat(Math.max(0, 6 - hex.length)) + hex + + return paddedHex +} + +/** + * 将十六进制颜色代码转换为 RGB 颜色数组。 + * @param hex 十六进制颜色代码(例如:'#RRGGBB') + * @returns 包含红、绿、蓝三个颜色分量的数组 + */ +function hexToRgb(hex: string): number[] { + const rgb: number[] = [] + + // 从第一个字符开始,每两个字符代表一个颜色分量 + for (let i = 1; i < 7; i += 2) { + // 将两个字符的十六进制转换为十进制,并添加到 rgb 数组中 + rgb.push(parseInt('0x' + hex.slice(i, i + 2), 16)) + } + + return rgb +} + +/** + * 计算渐变色的中间变量数组。 + * @param {string} startColor 开始颜色 + * @param {string} endColor 结束颜色 + * @param {number} step 获取渲染位置,默认为中间位置 + * @returns {string[]} 渐变色中间颜色变量数组 + */ +export const gradient = (startColor: string, endColor: string, step: number = 2): string[] => { + // 将hex转换为rgb + const sColor: number[] = hexToRgb(startColor) + const eColor: number[] = hexToRgb(endColor) + + // 计算R\G\B每一步的差值 + const rStep: number = (eColor[0] - sColor[0]) / step + const gStep: number = (eColor[1] - sColor[1]) / step + const bStep: number = (eColor[2] - sColor[2]) / step + + const gradientColorArr: string[] = [] + for (let i = 0; i < step; i++) { + // 计算每一步的hex值 + gradientColorArr.push( + rgbToHex(parseInt(String(rStep * i + sColor[0])), parseInt(String(gStep * i + sColor[1])), parseInt(String(bStep * i + sColor[2]))) + ) + } + return gradientColorArr +} + +/** + * 确保数值不超出指定范围。 + * @param {number} num 要限制范围的数值 + * @param {number} min 最小范围 + * @param {number} max 最大范围 + * @returns {number} 在指定范围内的数值 + */ +export const range = (num: number, min: number, max: number): number => { + // 使用 Math.min 和 Math.max 保证 num 不会超出指定范围 + return Math.min(Math.max(num, min), max) +} + +/** + * 比较两个值是否相等。 + * @param {any} value1 第一个值 + * @param {any} value2 第二个值 + * @returns {boolean} 如果值相等则为 true,否则为 false + */ +export const isEqual = (value1: any, value2: any): boolean => { + // 使用严格相等运算符比较值是否相等 + if (value1 === value2) { + return true + } + + // 如果其中一个值不是数组,则认为值不相等 + if (!Array.isArray(value1) || !Array.isArray(value2)) { + return false + } + + // 如果数组长度不相等,则认为值不相等 + if (value1.length !== value2.length) { + return false + } + + // 逐个比较数组元素是否相等 + for (let i = 0; i < value1.length; ++i) { + if (value1[i] !== value2[i]) { + return false + } + } + + // 所有比较均通过,则认为值相等 + return true +} + +/** + * 在数字前补零,使其达到指定长度。 + * @param {number | string} number 要补零的数字 + * @param {number} length 目标长度,默认为 2 + * @returns {string} 补零后的结果 + */ +export const padZero = (number: number | string, length: number = 2): string => { + // 将输入转换为字符串 + let numStr: string = number.toString() + + // 在数字前补零,直到达到指定长度 + while (numStr.length < length) { + numStr = '0' + numStr + } + + return numStr +} + +/** @description 全局变量id */ +export const context = { + id: 1000 +} + +export type RectResultType = T extends true ? UniApp.NodeInfo[] : UniApp.NodeInfo + +/** + * 获取节点信息 + * @param selector 节点选择器 #id,.class + * @param all 是否返回所有 selector 对应的节点 + * @param scope 作用域(支付宝小程序无效) + * @returns 节点信息或节点信息数组 + */ +export function getRect(selector: string, all: T, scope?: any): Promise> { + return new Promise>((resolve, reject) => { + let query: UniNamespace.SelectorQuery | null = null + if (scope) { + query = uni.createSelectorQuery().in(scope) + } else { + query = uni.createSelectorQuery() + } + query[all ? 'selectAll' : 'select'](selector) + .boundingClientRect((rect) => { + if (all && isArray(rect) && rect.length > 0) { + resolve(rect as RectResultType) + } else if (!all && rect) { + resolve(rect as RectResultType) + } else { + reject(new Error('No nodes found')) + } + }) + .exec() + }) +} + +/** + * 将驼峰命名转换为短横线命名。 + * @param {string} word 待转换的词条 + * @returns {string} 转换后的结果 + */ +export function kebabCase(word: string): string { + // 使用正则表达式匹配所有大写字母,并在前面加上短横线,然后转换为小写 + const newWord: string = word + .replace(/[A-Z]/g, function (match) { + return '-' + match + }) + .toLowerCase() + + return newWord +} + +/** + * 将短横线链接转换为驼峰命名 + * @param word 需要转换的短横线链接 + * @returns 转换后的驼峰命名字符串 + */ +export function camelCase(word: string): string { + return word.replace(/-(\w)/g, (_, c) => c.toUpperCase()) +} + +/** + * 检查给定值是否为数组。 + * @param {any} value 要检查的值 + * @returns {boolean} 如果是数组则返回 true,否则返回 false + */ +export function isArray(value: any): value is Array { + // 如果 Array.isArray 函数可用,直接使用该函数检查 + if (typeof Array.isArray === 'function') { + return Array.isArray(value) + } + // 否则,使用对象原型的 toString 方法进行检查 + return Object.prototype.toString.call(value) === '[object Array]' +} + +/** + * 检查给定值是否为函数。 + * @param {any} value 要检查的值 + * @returns {boolean} 如果是函数则返回 true,否则返回 false + */ +// eslint-disable-next-line @typescript-eslint/ban-types +export function isFunction(value: any): value is T { + return getType(value) === 'function' +} + +/** + * 检查给定值是否为字符串。 + * @param {unknown} value 要检查的值 + * @returns {value is string} 如果是字符串则返回 true,否则返回 false + */ +export function isString(value: unknown): value is string { + return getType(value) === 'string' +} + +/** + * 否是数值 + * @param {*} value + */ +export function isNumber(value: any): value is number { + return getType(value) === 'number' +} + +/** + * 检查给定值是否为 Promise 对象。 + * @param {unknown} value 要检查的值 + * @returns {value is Promise} 如果是 Promise 对象则返回 true,否则返回 false + */ +export function isPromise(value: unknown): value is Promise { + // 先将 value 断言为 object 类型 + if (isObj(value) && isDef(value)) { + // 然后进一步检查 value 是否具有 then 和 catch 方法,并且它们是函数类型 + return isFunction((value as Promise).then) && isFunction((value as Promise).catch) + } + return false // 如果 value 不是对象类型,则肯定不是 Promise +} + +/** + * 检查给定的值是否为布尔类型 + * @param value 要检查的值 + * @returns 如果值为布尔类型,则返回true,否则返回false + */ +export function isBoolean(value: any): value is boolean { + return typeof value === 'boolean' +} + +export function isUndefined(value: any): value is undefined { + return typeof value === 'undefined' +} + +export function isNotUndefined(value: T): value is NotUndefined { + return !isUndefined(value) +} + +/** + * 检查给定的值是否为奇数 + * @param value 要检查的值 + * @returns + */ +export function isOdd(value: number): boolean { + if (typeof value !== 'number') { + throw new Error('输入必须为数字') + } + + // 使用取模运算符来判断是否为奇数 + // 如果 number 除以 2 的余数为 1,就是奇数 + // 否则是偶数 + return value % 2 === 1 +} + +/** + * 是否为base64图片 + * @param {string} url + * @return + */ +export function isBase64Image(url: string) { + // 使用正则表达式检查URL是否以"data:image"开头,这是Base64图片的常见前缀 + return /^data:image\/(png|jpg|jpeg|gif|bmp);base64,/.test(url) +} + +/** + * 将外部传入的样式格式化为可读的 CSS 样式。 + * @param {object | object[]} styles 外部传入的样式对象或数组 + * @returns {string} 格式化后的 CSS 样式字符串 + */ +export function objToStyle(styles: Record | Record[]): string { + // 如果 styles 是数组类型 + if (isArray(styles)) { + // 使用过滤函数去除空值和 null 值的元素 + // 对每个非空元素递归调用 objToStyle,然后通过分号连接 + return styles + .filter(function (item) { + return item != null && item !== '' + }) + .map(function (item) { + return objToStyle(item) + }) + .join(';') + } + + if (isString(styles)) { + return styles + } + + // 如果 styles 是对象类型 + if (isObj(styles)) { + // 使用 Object.keys 获取所有属性名 + // 使用过滤函数去除值为 null 或空字符串的属性 + // 对每个属性名和属性值进行格式化,通过分号连接 + return Object.keys(styles) + .filter(function (key) { + return styles[key] != null && styles[key] !== '' + }) + .map(function (key) { + // 使用 kebabCase 函数将属性名转换为 kebab-case 格式 + // 将属性名和属性值格式化为 CSS 样式的键值对 + return [kebabCase(key), styles[key]].join(':') + }) + .join(';') + } + // 如果 styles 不是对象也不是数组,则直接返回 + return '' +} + +export const requestAnimationFrame = (cb = () => {}) => { + return new AbortablePromise((resolve) => { + const timer = setInterval(() => { + clearInterval(timer) + resolve(true) + cb() + }, 1000 / 30) + }) +} + +/** + * 暂停指定时间函数 + * @param ms 延迟时间 + * @returns + */ +export const pause = (ms: number) => { + return new AbortablePromise((resolve) => { + const timer = setTimeout(() => { + clearTimeout(timer) + resolve(true) + }, ms) + }) +} + +/** + * 深拷贝函数,用于将对象进行完整复制。 + * @param obj 要深拷贝的对象 + * @param cache 用于缓存已复制的对象,防止循环引用 + * @returns 深拷贝后的对象副本 + */ +export function deepClone(obj: T, cache: Map = new Map()): T { + // 如果对象为 null 或者不是对象类型,则直接返回该对象 + if (obj === null || typeof obj !== 'object') { + return obj + } + + // 处理特殊对象类型:日期、正则表达式、错误对象 + if (isDate(obj)) { + return new Date(obj.getTime()) as any + } + if (obj instanceof RegExp) { + return new RegExp(obj.source, obj.flags) as any + } + if (obj instanceof Error) { + const errorCopy = new Error(obj.message) as any + errorCopy.stack = obj.stack + return errorCopy + } + + // 检查缓存中是否已存在该对象的复制 + if (cache.has(obj)) { + return cache.get(obj) + } + + // 根据原始对象的类型创建对应的空对象或数组 + const copy: any = Array.isArray(obj) ? [] : {} + + // 将当前对象添加到缓存中 + cache.set(obj, copy) + + // 递归地深拷贝对象的每个属性 + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + copy[key] = deepClone(obj[key], cache) + } + } + + return copy as T +} + +/** + * 深度合并两个对象。 + * @param target 目标对象,将合并的结果存放在此对象中 + * @param source 源对象,要合并到目标对象的对象 + * @returns 合并后的目标对象 + */ +export function deepMerge>(target: T, source: Record): T { + // 深拷贝目标对象,避免修改原始对象 + target = deepClone(target) + + // 检查目标和源是否都是对象类型 + if (typeof target !== 'object' || typeof source !== 'object') { + throw new Error('Both target and source must be objects.') + } + + // 遍历源对象的属性 + for (const prop in source) { + // eslint-disable-next-line no-prototype-builtins + if (!source.hasOwnProperty(prop)) + continue + // 使用类型断言,告诉 TypeScript 这是有效的属性 + ;(target as Record)[prop] = source[prop] + } + + return target +} + +/** + * 深度合并两个对象。 + * @param target + * @param source + * @returns + */ +export function deepAssign(target: Record, source: Record): Record { + Object.keys(source).forEach((key) => { + const targetValue = target[key] + const newObjValue = source[key] + if (isObj(targetValue) && isObj(newObjValue)) { + deepAssign(targetValue, newObjValue) + } else { + target[key] = newObjValue + } + }) + return target +} + +/** + * 构建带参数的URL + * @param baseUrl 基础URL + * @param params 参数对象,键值对表示要添加到URL的参数 + * @returns 返回带有参数的URL + */ +export function buildUrlWithParams(baseUrl: string, params: Record) { + // 将参数对象转换为查询字符串 + const queryString = Object.entries(params) + .map(([key, value]) => `${key}=${encodeURIComponent(value)}`) + .join('&') + + // 检查基础URL是否已包含查询字符串,并选择适当的分隔符 + const separator = baseUrl.includes('?') ? '&' : '?' + + // 返回带有参数的URL + return `${baseUrl}${separator}${queryString}` +} + +type DebounceOptions = { + leading?: boolean // 是否在延迟时间开始时调用函数 + trailing?: boolean // 是否在延迟时间结束时调用函数 +} + +export function debounce any>(func: T, wait: number, options: DebounceOptions = {}): T { + let timeoutId: ReturnType | null = null + let lastArgs: any[] | undefined + let lastThis: any + let result: ReturnType | undefined + const leading = isDef(options.leading) ? options.leading : false + const trailing = isDef(options.trailing) ? options.trailing : true + + function invokeFunc() { + if (lastArgs !== undefined) { + result = func.apply(lastThis, lastArgs) + lastArgs = undefined + } + } + + function startTimer() { + timeoutId = setTimeout(() => { + timeoutId = null + if (trailing) { + invokeFunc() + } + }, wait) + } + + function cancelTimer() { + if (timeoutId !== null) { + clearTimeout(timeoutId) + timeoutId = null + } + } + + function debounced(this: any, ...args: Parameters): ReturnType | undefined { + lastArgs = args + lastThis = this + + if (timeoutId === null) { + if (leading) { + invokeFunc() + } + startTimer() + } else if (trailing) { + cancelTimer() + startTimer() + } + + return result + } + + return debounced as T +} + +// eslint-disable-next-line @typescript-eslint/ban-types +export function throttle(func: Function, wait: number): Function { + let timeout: ReturnType | null = null + let previous: number = 0 + + const throttled = function (this: any, ...args: any[]) { + const now = Date.now() + const remaining = wait - (now - previous) + + if (remaining <= 0) { + if (timeout) { + clearTimeout(timeout) + timeout = null + } + previous = now + func.apply(this, args) + } else if (!timeout) { + timeout = setTimeout(() => { + previous = Date.now() + timeout = null + func.apply(this, args) + }, remaining) + } + } + + return throttled +} + +/** + * 根据属性路径获取对象中的属性值 + * @param obj 目标对象 + * @param path 属性路径,可以是字符串或字符串数组 + * @returns 属性值,如果属性不存在或中间的属性为 null 或 undefined,则返回 undefined + */ +export const getPropByPath = (obj: any, path: string): any => { + const keys: string[] = path.split('.') + + try { + return keys.reduce((acc: any, key: string) => (acc !== undefined && acc !== null ? acc[key] : undefined), obj) + } catch (error) { + return undefined + } +} + +/** + * 检查一个值是否为Date类型 + * @param val 要检查的值 + * @returns 如果值是Date类型,则返回true,否则返回false + */ +export const isDate = (val: unknown): val is Date => Object.prototype.toString.call(val) === '[object Date]' && !Number.isNaN((val as Date).getTime()) + +/** + * 检查提供的URL是否为视频链接。 + * @param url 需要检查的URL字符串。 + * @returns 返回一个布尔值,如果URL是视频链接则为true,否则为false。 + */ +export function isVideoUrl(url: string): boolean { + // 使用正则表达式匹配视频文件类型的URL + const videoRegex = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|video)/i + return videoRegex.test(url) +} + +/** + * 检查提供的URL是否为图片URL。 + * @param url 待检查的URL字符串。 + * @returns 返回一个布尔值,如果URL是图片格式,则为true;否则为false。 + */ +export function isImageUrl(url: string): boolean { + // 使用正则表达式匹配图片URL + const imageRegex = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg|image)/i + return imageRegex.test(url) +} + +/** + * 判断环境是否是H5 + */ +export const isH5 = process.env.UNI_PLATFORM === 'h5' + +/** + * 剔除对象中的某些属性 + * @param obj + * @param predicate + * @returns + */ +export function omitBy>(obj: O, predicate: (value: any, key: keyof O) => boolean): Partial { + const newObj = deepClone(obj) + Object.keys(newObj).forEach((key) => predicate(newObj[key], key) && delete newObj[key]) // 遍历对象的键,删除值为不满足predicate的字段 + return newObj +} diff --git a/src/uni_modules/wot-design-uni/components/composables/useCell.ts b/src/uni_modules/wot-design-uni/components/composables/useCell.ts new file mode 100644 index 0000000..d245312 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/useCell.ts @@ -0,0 +1,13 @@ +import { computed } from 'vue' +import { useParent } from './useParent' +import { CELL_GROUP_KEY } from '../wd-cell-group/types' + +export function useCell() { + const { parent: cellGroup, index } = useParent(CELL_GROUP_KEY) + + const border = computed(() => { + return cellGroup && cellGroup.props.border && index.value + }) + + return { border } +} diff --git a/src/uni_modules/wot-design-uni/components/composables/useChildren.ts b/src/uni_modules/wot-design-uni/components/composables/useChildren.ts new file mode 100644 index 0000000..b52ac9b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/useChildren.ts @@ -0,0 +1,113 @@ +import { + provide, + reactive, + getCurrentInstance, + type VNode, + type InjectionKey, + type VNodeNormalizedChildren, + type ComponentPublicInstance, + type ComponentInternalInstance +} from 'vue' + +// 小程序端不支持从vue导出的isVNode方法,参考uni-mp-vue的实现 +function isVNode(value: any): value is VNode { + return value ? value.__v_isVNode === true : false +} + +export function flattenVNodes(children: VNodeNormalizedChildren) { + const result: VNode[] = [] + + const traverse = (children: VNodeNormalizedChildren) => { + if (Array.isArray(children)) { + children.forEach((child) => { + if (isVNode(child)) { + result.push(child) + + if (child.component?.subTree) { + result.push(child.component.subTree) + traverse(child.component.subTree.children) + } + + if (child.children) { + traverse(child.children) + } + } + }) + } + } + + traverse(children) + + return result +} + +const findVNodeIndex = (vnodes: VNode[], vnode: VNode) => { + const index = vnodes.indexOf(vnode) + if (index === -1) { + return vnodes.findIndex((item) => vnode.key !== undefined && vnode.key !== null && item.type === vnode.type && item.key === vnode.key) + } + return index +} + +// sort children instances by vnodes order +export function sortChildren( + parent: ComponentInternalInstance, + publicChildren: ComponentPublicInstance[], + internalChildren: ComponentInternalInstance[] +) { + const vnodes = parent && parent.subTree && parent.subTree.children ? flattenVNodes(parent.subTree.children) : [] + + internalChildren.sort((a, b) => findVNodeIndex(vnodes, a.vnode) - findVNodeIndex(vnodes, b.vnode)) + + const orderedPublicChildren = internalChildren.map((item) => item.proxy!) + + publicChildren.sort((a, b) => { + const indexA = orderedPublicChildren.indexOf(a) + const indexB = orderedPublicChildren.indexOf(b) + return indexA - indexB + }) +} + +export function useChildren< + // eslint-disable-next-line + Child extends ComponentPublicInstance = ComponentPublicInstance<{}, any>, + ProvideValue = never +>(key: InjectionKey) { + const publicChildren: Child[] = reactive([]) + const internalChildren: ComponentInternalInstance[] = reactive([]) + const parent = getCurrentInstance()! + + const linkChildren = (value?: ProvideValue) => { + const link = (child: ComponentInternalInstance) => { + if (child.proxy) { + internalChildren.push(child) + publicChildren.push(child.proxy as Child) + sortChildren(parent, publicChildren, internalChildren) + } + } + + const unlink = (child: ComponentInternalInstance) => { + const index = internalChildren.indexOf(child) + publicChildren.splice(index, 1) + internalChildren.splice(index, 1) + } + + provide( + key, + Object.assign( + { + link, + unlink, + children: publicChildren, + internalChildren + }, + value + ) + ) + } + + return { + children: publicChildren, + linkChildren + } +} diff --git a/src/uni_modules/wot-design-uni/components/composables/useCountDown.ts b/src/uni_modules/wot-design-uni/components/composables/useCountDown.ts new file mode 100644 index 0000000..65c7eb6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/useCountDown.ts @@ -0,0 +1,159 @@ +import { ref, computed, onBeforeUnmount } from 'vue' +import { isDef } from '../common/util' + +// 定义倒计时时间的数据结构 +export type CurrentTime = { + days: number + hours: number + total: number + minutes: number + seconds: number + milliseconds: number +} + +// 定义倒计时的配置项 +export type UseCountDownOptions = { + time: number // 倒计时总时间,单位为毫秒 + millisecond?: boolean // 是否开启毫秒级倒计时,默认为 false + onChange?: (current: CurrentTime) => void // 倒计时每次变化时的回调函数 + onFinish?: () => void // 倒计时结束时的回调函数 +} + +// 定义常量 +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR + +// 将时间转换为倒计时数据结构 +function parseTime(time: number): CurrentTime { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + + return { + total: time, + days, + hours, + minutes, + seconds, + milliseconds + } +} + +// 判断两个时间是否在同一秒内 +function isSameSecond(time1: number, time2: number): boolean { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} + +// 判断当前环境是否为 H5 +const isH5 = process.env.UNI_PLATFORM === 'h5' + +// 封装 requestAnimationFrame 和 setTimeout +function raf(fn: FrameRequestCallback): number { + return isH5 ? requestAnimationFrame(fn) : setTimeout(fn, 33) +} + +function cancelRaf(id: number) { + if (isH5) { + cancelAnimationFrame(id) + } else { + clearTimeout(id) + } +} + +// 定义 useCountDown 函数 +export function useCountDown(options: UseCountDownOptions) { + let timer: number | null = null // 定时器 + let endTime: number // 结束时间 + let counting: boolean // 是否计时中 + + const remain = ref(options.time) // 剩余时间 + const current = computed(() => parseTime(remain.value)) // 当前倒计时数据 + + // 暂停倒计时 + const pause = () => { + counting = false + cancelRaf(timer!) + } + + // 获取当前剩余时间 + const getCurrentRemain = () => Math.max(endTime - Date.now(), 0) + + // 设置剩余时间 + const setRemain = (value: number) => { + remain.value = value + isDef(options.onChange) && options.onChange(current.value) + + if (value === 0) { + pause() + isDef(options.onFinish) && options.onFinish() + } + } + + // 每毫秒更新一次倒计时 + const microTick = () => { + timer = raf(() => { + if (counting) { + setRemain(getCurrentRemain()) + + if (remain.value > 0) { + microTick() + } + } + }) + } + + // 每秒更新一次倒计时 + const macroTick = () => { + timer = raf(() => { + if (counting) { + const remainRemain = getCurrentRemain() + + if (!isSameSecond(remainRemain, remain.value) || remainRemain === 0) { + setRemain(remainRemain) + } + + if (remain.value > 0) { + macroTick() + } + } + }) + } + + // 根据配置项选择更新方式 + const tick = () => { + if (options.millisecond) { + microTick() + } else { + macroTick() + } + } + + // 开始倒计时 + const start = () => { + if (!counting) { + endTime = Date.now() + remain.value + counting = true + tick() + } + } + + // 重置倒计时 + const reset = (totalTime: number = options.time) => { + pause() + remain.value = totalTime + } + + // 在组件卸载前暂停倒计时 + onBeforeUnmount(pause) + + return { + start, + pause, + reset, + current + } +} diff --git a/src/uni_modules/wot-design-uni/components/composables/useLockScroll.ts b/src/uni_modules/wot-design-uni/components/composables/useLockScroll.ts new file mode 100644 index 0000000..4f45468 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/useLockScroll.ts @@ -0,0 +1,39 @@ +import { onBeforeUnmount, onDeactivated, ref, watch } from 'vue' + +function useLockScroll(shouldLock: () => boolean) { + const scrollLockCount = ref(0) + + const lock = () => { + if (scrollLockCount.value === 0) { + document.getElementsByTagName('body')[0].style.overflow = 'hidden' + } + scrollLockCount.value++ + } + + const unlock = () => { + if (scrollLockCount.value > 0) { + scrollLockCount.value-- + if (scrollLockCount.value === 0) { + document.getElementsByTagName('body')[0].style.overflow = '' + } + } + } + + const destroy = () => { + shouldLock() && unlock() + } + + watch(shouldLock, (value) => { + value ? lock() : unlock() + }) + + onDeactivated(destroy) + onBeforeUnmount(destroy) + + return { + lock, + unlock + } +} + +export default useLockScroll diff --git a/src/uni_modules/wot-design-uni/components/composables/useParent.ts b/src/uni_modules/wot-design-uni/components/composables/useParent.ts new file mode 100644 index 0000000..f48fea9 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/useParent.ts @@ -0,0 +1,41 @@ +import { + ref, + inject, + computed, + onUnmounted, + type InjectionKey, + getCurrentInstance, + type ComponentPublicInstance, + type ComponentInternalInstance +} from 'vue' + +type ParentProvide = T & { + link(child: ComponentInternalInstance): void + unlink(child: ComponentInternalInstance): void + children: ComponentPublicInstance[] + internalChildren: ComponentInternalInstance[] +} + +export function useParent(key: InjectionKey>) { + const parent = inject(key, null) + + if (parent) { + const instance = getCurrentInstance()! + const { link, unlink, internalChildren } = parent + + link(instance) + onUnmounted(() => unlink(instance)) + + const index = computed(() => internalChildren.indexOf(instance)) + + return { + parent, + index + } + } + + return { + parent: null, + index: ref(-1) + } +} diff --git a/src/uni_modules/wot-design-uni/components/composables/usePopover.ts b/src/uni_modules/wot-design-uni/components/composables/usePopover.ts new file mode 100644 index 0000000..eff783b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/usePopover.ts @@ -0,0 +1,164 @@ +import { getCurrentInstance, ref } from 'vue' +import { getRect } from '../common/util' + +export function usePopover() { + const { proxy } = getCurrentInstance() as any + const popStyle = ref('') + const arrowStyle = ref('') + const showStyle = ref('') + const arrowClass = ref('') + const popWidth = ref(0) + const popHeight = ref(0) + const left = ref(0) + const bottom = ref(0) + const width = ref(0) + const height = ref(0) + const top = ref(0) + + function noop() {} + + function init( + placement: + | 'top' + | 'top-start' + | 'top-end' + | 'bottom' + | 'bottom-start' + | 'bottom-end' + | 'left' + | 'left-start' + | 'left-end' + | 'right' + | 'right-start' + | 'right-end', + visibleArrow: boolean, + selector: string + ) { + // 初始化 class + if (visibleArrow) { + const arrowClassArr = [ + `wd-${selector}__arrow`, + placement === 'bottom' || placement === 'bottom-start' || placement === 'bottom-end' ? `wd-${selector}__arrow-up` : '', + placement === 'left' || placement === 'left-start' || placement === 'left-end' ? `wd-${selector}__arrow-right` : '', + placement === 'right' || placement === 'right-start' || placement === 'right-end' ? `wd-${selector}__arrow-left` : '', + placement === 'top' || placement === 'top-start' || placement === 'top-end' ? `wd-${selector}__arrow-down` : '' + ] + arrowClass.value = arrowClassArr.join(' ') + } + + // 初始化数据获取 + getRect('#target', false, proxy).then((rect) => { + if (!rect) return + left.value = rect.left as number + bottom.value = rect.bottom as number + width.value = rect.width as number + height.value = rect.height as number + top.value = rect.top as number + }) + // 用透明度可在初始化时获取到pop尺寸 + getRect('#pos', false, proxy).then((rect) => { + if (!rect) return + popWidth.value = rect.width as number + popHeight.value = rect.height as number + }) + } + + function control( + placement: + | 'top' + | 'top-start' + | 'top-end' + | 'bottom' + | 'bottom-start' + | 'bottom-end' + | 'left' + | 'left-start' + | 'left-end' + | 'right' + | 'right-start' + | 'right-end', + offset: number + ) { + // arrow size + const arrowSize = 9 + // 上下位(纵轴)对应的距离左边的距离 + const verticalX = width.value / 2 + // 上下位(纵轴)对应的距离底部的距离 + const verticalY = arrowSize + height.value + 5 + // 左右位(横轴)对应的距离左边的距离 + const horizontalX = width.value + arrowSize + 5 + // 左右位(横轴)对应的距离底部的距离 + const horizontalY = height.value / 2 + + const offsetX = (verticalX - 17 > 0 ? 0 : verticalX - 25) + offset + const offsetY = (horizontalY - 17 > 0 ? 0 : horizontalY - 25) + offset + + const placements = new Map([ + // 上 + ['top', [`left: ${verticalX}px; bottom: ${verticalY}px; transform: translateX(-50%);`, 'left: 50%;']], + [ + 'top-start', + [ + `left: ${offsetX}px; bottom: ${verticalY}px;`, + `left: ${(popWidth.value >= width.value ? width.value / 2 : popWidth.value - 25) - offsetX}px;` + ] + ], + [ + 'top-end', + [ + `right: ${offsetX}px; bottom: ${verticalY}px;`, + `right: ${(popWidth.value >= width.value ? width.value / 2 : popWidth.value - 25) - offsetX}px; transform: translateX(50%);` + ] + ], + // 下 + ['bottom', [`left: ${verticalX}px; top: ${verticalY}px; transform: translateX(-50%);`, 'left: 50%;']], + [ + 'bottom-start', + [`left: ${offsetX}px; top: ${verticalY}px;`, `left: ${(popWidth.value >= width.value ? width.value / 2 : popWidth.value - 25) - offsetX}px;`] + ], + [ + 'bottom-end', + [ + `right: ${offsetX}px; top: ${verticalY}px;`, + `right: ${(popWidth.value >= width.value ? width.value / 2 : popWidth.value - 25) - offsetX}px; transform: translateX(50%);` + ] + ], + // 左 + ['left', [`right: ${horizontalX}px; top: ${horizontalY}px; transform: translateY(-50%);`, 'top: 50%']], + [ + 'left-start', + [ + `right: ${horizontalX}px; top: ${offsetY}px;`, + `top: ${(popHeight.value >= height.value ? height.value / 2 : popHeight.value - 20) - offsetY}px;` + ] + ], + [ + 'left-end', + [ + `right: ${horizontalX}px; bottom: ${offsetY}px;`, + `bottom: ${(popHeight.value >= height.value ? height.value / 2 : popHeight.value - 20) - offsetY}px; transform: translateY(50%);` + ] + ], + // 右 + ['right', [`left: ${horizontalX}px; top: ${horizontalY}px; transform: translateY(-50%);`, 'top: 50%']], + [ + 'right-start', + [ + `left: ${horizontalX}px; top: ${offsetY}px;`, + `top: ${(popHeight.value >= height.value ? height.value / 2 : popHeight.value - 20) - offsetY}px;` + ] + ], + [ + 'right-end', + [ + `left: ${horizontalX}px; bottom: ${offsetY}px;`, + `bottom: ${(popHeight.value >= height.value ? height.value / 2 : popHeight.value - 20) - offsetY}px; transform: translateY(50%);` + ] + ] + ]) + popStyle.value = placements.get(placement)![0] + arrowStyle.value = placements.get(placement)![1] + } + + return { popStyle, arrowStyle, showStyle, arrowClass, init, control, noop } +} diff --git a/src/uni_modules/wot-design-uni/components/composables/useQueue.ts b/src/uni_modules/wot-design-uni/components/composables/useQueue.ts new file mode 100644 index 0000000..80021b3 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/useQueue.ts @@ -0,0 +1,52 @@ +import { type Ref, provide, ref } from 'vue' + +export const queueKey = '__QUEUE_KEY__' + +export interface Queue { + queue: Ref + pushToQueue: (comp: any) => void + removeFromQueue: (comp: any) => void + closeOther: (comp: any) => void + closeOutside: () => void +} + +export function useQueue() { + const queue = ref([]) + + function pushToQueue(comp: any) { + queue.value.push(comp) + } + + function removeFromQueue(comp: any) { + queue.value = queue.value.filter((item) => { + return item.$.uid !== comp.$.uid + }) + } + + function closeOther(comp: any) { + queue.value.forEach((item) => { + if (item.$.uid !== comp.$.uid) { + item.$.exposed.close() + } + }) + } + + function closeOutside() { + queue.value.forEach((item) => { + item.$.exposed.close() + }) + } + + provide(queueKey, { + queue, + pushToQueue, + removeFromQueue, + closeOther, + closeOutside + }) + + return { + closeOther, + closeOutside + } +} diff --git a/src/uni_modules/wot-design-uni/components/composables/useTouch.ts b/src/uni_modules/wot-design-uni/components/composables/useTouch.ts new file mode 100644 index 0000000..c3e9b37 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/useTouch.ts @@ -0,0 +1,43 @@ +import { ref } from 'vue' + +export function useTouch() { + const direction = ref('') + const deltaX = ref(0) + const deltaY = ref(0) + const offsetX = ref(0) + const offsetY = ref(0) + const startX = ref(0) + const startY = ref(0) + + function touchStart(event: any) { + const touch = event.touches[0] + direction.value = '' + deltaX.value = 0 + deltaY.value = 0 + offsetX.value = 0 + offsetY.value = 0 + startX.value = touch.clientX + startY.value = touch.clientY + } + + function touchMove(event: any) { + const touch = event.touches[0] + deltaX.value = touch.clientX - startX.value + deltaY.value = touch.clientY - startY.value + offsetX.value = Math.abs(deltaX.value) + offsetY.value = Math.abs(deltaY.value) + direction.value = offsetX.value > offsetY.value ? 'horizontal' : offsetX.value < offsetY.value ? 'vertical' : '' + } + + return { + touchStart, + touchMove, + direction, + deltaX, + deltaY, + offsetX, + offsetY, + startX, + startY + } +} diff --git a/src/uni_modules/wot-design-uni/components/composables/useTranslate.ts b/src/uni_modules/wot-design-uni/components/composables/useTranslate.ts new file mode 100644 index 0000000..0c0c326 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/composables/useTranslate.ts @@ -0,0 +1,22 @@ +/* + * @Author: weisheng + * @Date: 2024-01-25 23:06:48 + * @LastEditTime: 2024-01-26 14:00:48 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\composables\useTranslate.ts + * 记得注释 + */ +import { camelCase, getPropByPath, isFunction } from '../common/util' +import Locale from '../../locale' + +export const useTranslate = (name?: string) => { + const prefix = name ? camelCase(name) + '.' : '' + const translate = (key: string, ...args: unknown[]) => { + const currentMessages = Locale.messages() + const message = getPropByPath(currentMessages, prefix + key) + return isFunction(message) ? message(...args) : message + } + + return { translate } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-action-sheet/index.scss b/src/uni_modules/wot-design-uni/components/wd-action-sheet/index.scss new file mode 100644 index 0000000..8831de3 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-action-sheet/index.scss @@ -0,0 +1,204 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(action-sheet) { + background-color: $-dark-background2; + color: $-dark-color; + + @include e(action) { + color: $-dark-color; + background: $-dark-background2; + + &:not(.wd-action-sheet__action--disabled):not(.wd-action-sheet__action--loading):active { + background: $-dark-background4; + } + + @include m(disabled) { + color: $-dark-color-gray; + } + } + + @include e(subname) { + color: $-dark-color3; + } + + @include e(cancel) { + color: $-dark-color; + background: $-dark-background4; + + &:active { + background: $-dark-background5; + } + } + + :deep(.wd-action-sheet__close) { + color: $-dark-color3; + } + + @include e(panel-title) { + color: $-dark-color; + } + + @include e(header) { + color: $-dark-color; + } + } +} + +:deep(.wd-action-sheet__popup) { + border-radius: $-action-sheet-radius $-action-sheet-radius 0 0; +} + +@include b(action-sheet) { + background-color: $-color-white; + padding-bottom: 1px; + + @include edeep(popup) { + border-radius: $-action-sheet-radius $-action-sheet-radius 0 0; + } + + @include e(actions) { + padding: 8px 0; + max-height: 50vh; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + } + + @include e(action) { + position: relative; + display: block; + width: 100%; + height: $-action-sheet-action-height; + line-height: $-action-sheet-action-height; + color: $-action-sheet-color; + font-size: $-action-sheet-fs; + text-align: center; + border: none; + background: $-action-sheet-bg; + outline: none; + + &:after { + display: none; + } + + &:not(&--disabled):not(&--loading):active { + background: $-action-sheet-active-color; + } + + @include m(disabled) { + color: $-action-sheet-disabled-color; + cursor: not-allowed; + } + + @include m(loading) { + display: flex; + align-items: center; + justify-content: center; + line-height: initial; + } + } + + @include edeep(action-loading){ + width: $-action-sheet-loading-size; + height: $-action-sheet-loading-size; + } + + @include e(name) { + display: inline-block; + } + + @include e(subname) { + display: inline-block; + margin-left: 4px; + font-size: $-action-sheet-subname-fs; + color: $-action-sheet-subname-color; + } + + @include e(cancel) { + display: block; + width: calc(100% - 48px); + line-height: $-action-sheet-cancel-height; + padding: 0; + color: $-action-sheet-cancel-color; + font-size: $-action-sheet-fs; + text-align: center; + border-radius: $-action-sheet-cancel-radius; + border: none; + background: $-action-sheet-cancel-bg; + outline: none; + margin: 0 auto 24px; + font-weight: $-action-sheet-weight; + + &:active { + background: $-action-sheet-active-color; + } + + &:after { + display: none; + } + } + + @include e(header) { + color: $-action-sheet-color; + position: relative; + height: $-action-sheet-title-height; + line-height: $-action-sheet-title-height; + text-align: center; + font-size: $-action-sheet-title-fs; + font-weight: $-action-sheet-weight; + } + + @include edeep(close) { + position: absolute; + top: $-action-sheet-close-top; + right: $-action-sheet-close-right; + color: $-action-sheet-close-color; + font-size: $-action-sheet-close-fs; + transform: rotate(-45deg); + line-height: 1.1; + } + + @include e(panels) { + height: 84px; + overflow-y: hidden; + + &:first-of-type { + margin-top: 20px; + } + + &:last-of-type { + margin-bottom: 12px; + } + } + + @include e(panels-content) { + display: flex; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + + @include e(panel) { + width: 88px; + flex: 0 0 auto; + display: inline-block; + padding: $-action-sheet-panel-padding; + } + + @include e(panel-img) { + display: block; + width: $-action-sheet-panel-img-fs; + height: $-action-sheet-panel-img-fs; + margin: 0 auto; + margin-bottom: 7px; + border-radius: $-action-sheet-panel-img-radius; + } + + @include e(panel-title) { + font-size: $-action-sheet-subname-fs; + line-height: 1.2; + text-align: center; + color: $-action-sheet-color; + @include lineEllipsis; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts b/src/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts new file mode 100644 index 0000000..a825b58 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts @@ -0,0 +1,121 @@ +/* + * @Author: weisheng + * @Date: 2024-03-18 11:22:03 + * @LastEditTime: 2024-04-04 22:35:25 + * @LastEditors: weisheng + * @Description: + * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts + * 记得注释 + */ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props' + +export type Action = { + /** + * 选项名称 + */ + name: string + /** + * 描述信息 + */ + subname: string + /** + * 颜色 + */ + color: string + /** + * 禁用 + */ + disabled: boolean + /** + * 加载中状态 + */ + loading: boolean +} + +export type Panel = { + /** + * 图片地址 + */ + iconUrl: string + /** + * 标题内容 + */ + title: string +} + +export const actionSheetProps = { + ...baseProps, + /** + * header 头部样式 + * @default '' + * @type {string} + */ + customHeaderClass: makeStringProp(''), + /** + * 设置菜单显示隐藏 + * @default false + * @type {boolean} + */ + modelValue: { ...makeBooleanProp(false), ...makeRequiredProp(Boolean) }, + /** + * 菜单选项 + * @default [] + * @type {Action[]} + */ + actions: makeArrayProp(), + /** + * 自定义面板项,可以为字符串数组,也可以为对象数组,如果为二维数组,则为多行展示 + * @default [] + * @type {Array} + */ + panels: makeArrayProp(), + /** + * 标题 + * @type {string} + */ + title: String, + /** + * 取消按钮文案 + * @type {string} + */ + cancelText: String, + /** + * 点击选项后是否关闭菜单 + * @default true + * @type {boolean} + */ + closeOnClickAction: makeBooleanProp(true), + /** + * 点击遮罩是否关闭 + * @default true + * @type {boolean} + */ + closeOnClickModal: makeBooleanProp(true), + /** + * 弹框动画持续时间 + * @default 200 + * @type {number} + */ + duration: makeNumberProp(200), + /** + * 菜单层级 + * @default 10 + * @type {number} + */ + zIndex: makeNumberProp(10), + /** + * 弹层内容懒渲染,触发展示时才渲染内容 + * @default true + * @type {boolean} + */ + lazyRender: makeBooleanProp(true), + /** + * 弹出面板是否设置底部安全距离(iphone X 类型的机型) + * @default true + * @type {boolean} + */ + safeAreaInsetBottom: makeBooleanProp(true) +} + +export type ActionSheetProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue b/src/uni_modules/wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue new file mode 100644 index 0000000..99fa7be --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue @@ -0,0 +1,152 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-backtop/index.scss b/src/uni_modules/wot-design-uni/components/wd-backtop/index.scss new file mode 100644 index 0000000..a9dc001 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-backtop/index.scss @@ -0,0 +1,25 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(backtop) { + position: fixed; + background-color: $-backtop-bg; + width: 40px; + height: 40px; + display: flex; + justify-content: center; + align-items: center; + color: $-color-gray-8; + + @include edeep(backicon) { + font-size: $-backtop-icon-size; + } + + @include when(circle) { + border-radius: 50%; + } + + @include when(square) { + border-radius: 4px; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-backtop/types.ts b/src/uni_modules/wot-design-uni/components/wd-backtop/types.ts new file mode 100644 index 0000000..209c67a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-backtop/types.ts @@ -0,0 +1,37 @@ +import { baseProps, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props' + +export const backtopProps = { + ...baseProps, + /** + * 页面滚动距离 + */ + scrollTop: makeRequiredProp(Number), + /** + * 距离顶部多少距离时显示 + */ + top: makeNumberProp(300), + /** + * 返回顶部滚动时间 + */ + duration: makeNumberProp(100), + /** + * 层级 + */ + zIndex: makeNumberProp(10), + /** + * icon样式 + */ + iconStyle: makeStringProp(''), + /** + * 形状 + */ + shape: makeStringProp('circle'), + /** + * 距离屏幕底部距离 + */ + bottom: makeNumberProp(100), + /** + * 距离屏幕右边距离 + */ + right: makeNumberProp(20) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-backtop/wd-backtop.vue b/src/uni_modules/wot-design-uni/components/wd-backtop/wd-backtop.vue new file mode 100644 index 0000000..d0857a7 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-backtop/wd-backtop.vue @@ -0,0 +1,43 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-badge/index.scss b/src/uni_modules/wot-design-uni/components/wd-badge/index.scss new file mode 100644 index 0000000..a098e74 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-badge/index.scss @@ -0,0 +1,60 @@ +@import './../common/abstracts/_mixin.scss'; +@import './../common/abstracts/variable.scss'; + +.wot-theme-dark { + @include b(badge) { + @include e(content) { + border-color: $-dark-background2; + } + } +} + + +@include b(badge) { + position: relative; + vertical-align: middle; + display: inline-block; + + @include e(content) { + display: inline-block; + height: $-badge-height; + line-height: $-badge-height; + padding: $-badge-padding; + background-color: $-badge-bg; + border-radius: calc($-badge-height / 2 + 2px); + color: $-badge-color; + font-size: $-badge-fs; + text-align: center; + white-space: nowrap; + border: $-badge-border; + font-weight: 500; + + @include when(fixed) { + position: absolute; + transform: translateY(-50%) translateX(50%); + } + + @include when(dot) { + height: $-badge-dot-size; + width: $-badge-dot-size; + padding: 0; + border-radius: 50%; + } + + @each $type in (primary, success, warning, info, danger) { + @include m($type) { + @if $type == primary { + background-color: $-badge-primary; + } @else if $type == success { + background-color: $-badge-success; + } @else if $type == warning { + background-color: $-badge-warning; + } @else if $type == info { + background-color: $-badge-info; + } @else { + background-color: $-badge-danger; + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-badge/types.ts b/src/uni_modules/wot-design-uni/components/wd-badge/types.ts new file mode 100644 index 0000000..89da2e5 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-badge/types.ts @@ -0,0 +1,53 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 11:36:12 + * @LastEditTime: 2024-03-19 16:33:12 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-badge\types.ts + * 记得注释 + */ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' + +export type BadgeType = 'primary' | 'success' | 'warning' | 'danger' | 'info' + +export const badgeProps = { + ...baseProps, + /** + * 显示值 + */ + modelValue: { + type: [Number, String, null] as PropType, + default: null + }, + /** 当数值为 0 时,是否展示徽标 */ + showZero: makeBooleanProp(false), + bgColor: String, + /** + * 最大值,超过最大值会显示 '{max}+',要求 value 是 Number 类型 + */ + max: Number, + /** + * 是否为红色点状标注 + */ + isDot: Boolean, + /** + * 是否隐藏 badge + */ + hidden: Boolean, + /** + * badge类型,可选值primary / success / warning / danger / info + */ + type: makeStringProp(undefined), + /** + * 为正时,角标向下偏移对应的像素 + */ + top: Number, + /** + * 为正时,角标向左偏移对应的像素 + */ + right: Number +} + +export type BadgeProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-badge/wd-badge.vue b/src/uni_modules/wot-design-uni/components/wd-badge/wd-badge.vue new file mode 100644 index 0000000..9c16a6d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-badge/wd-badge.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-button/index.scss b/src/uni_modules/wot-design-uni/components/wd-button/index.scss new file mode 100644 index 0000000..02e4d58 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-button/index.scss @@ -0,0 +1,349 @@ +@import './../common/abstracts/_mixin.scss'; +@import './../common/abstracts/variable.scss'; + + +.wot-theme-dark { + @include b(button) { + @include when(info) { + background: $-dark-background4; + color: $-dark-color3; + } + + @include when(plain) { + background: transparent; + + @include when(info) { + color: $-dark-color; + + &::after { + border-color: $-dark-background5; + } + } + } + + @include when(text) { + @include when(disabled) { + color: $-dark-color-gray; + background: transparent; + } + } + + @include when(icon) { + color: $-dark-color; + + @include when(disabled) { + color: $-dark-color-gray; + background: transparent; + } + + } + } +} + +@include b(button) { + position: relative; + display: inline-flex; + justify-content: center; + align-items: center; + outline: none; + -webkit-appearance: none; + outline: none; + background: transparent; + box-sizing: border-box; + border: none; + color: $-button-normal-color; + transition: opacity 0.2s; + user-select: none; + font-weight: normal; + + + &::before { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 100%; + background: $-color-black; + border: inherit; + border-color: $-color-black; + border-radius: inherit; + transform: translate(-50%, -50%); + opacity: 0; + content: ' '; + } + + + &::after { + border: none; + } + + @include m(active) { + &:active::before { + opacity: 0.15; + } + } + + @include when(disabled) { + opacity: $-button-disabled-opacity; + } + + @include e(loading) { + margin-right: 5px; + animation: wd-rotate 0.8s linear infinite; + animation-duration: 2s; + } + + @include e(loading-svg) { + width: 100%; + height: 100%; + background-size: cover; + background-repeat: no-repeat; + } + + @include when(loading) {} + + @include when(primary) { + background: $-button-primary-bg-color; + color: $-button-primary-color; + } + + @include when(success) { + background: $-button-success-bg-color; + color: $-button-success-color; + } + + @include when(info) { + background: $-button-info-bg-color; + color: $-button-info-color; + } + + @include when(warning) { + background: $-button-warning-bg-color; + color: $-button-warning-color; + } + + @include when(error) { + background: $-button-error-bg-color; + color: $-button-error-color; + } + + @include when(small) { + height: $-button-small-height; + padding: $-button-small-padding; + border-radius: $-button-small-radius; + font-size: $-button-small-fs; + font-weight: normal; + + .wd-button__loading { + width: $-button-small-loading; + height: $-button-small-loading; + } + } + + @include when(medium) { + height: $-button-medium-height; + padding: $-button-medium-padding; + border-radius: $-button-medium-radius; + font-size: $-button-medium-fs; + + @include when(primary) { + box-shadow: $-button-medium-box-shadow-size $-button-primary-box-shadow-color; + } + + @include when(success) { + box-shadow: $-button-medium-box-shadow-size $-button-success-box-shadow-color; + } + + @include when(warning) { + box-shadow: $-button-medium-box-shadow-size $-button-warning-box-shadow-color; + } + + @include when(error) { + box-shadow: $-button-medium-box-shadow-size $-button-error-box-shadow-color; + } + + @include when(plain) { + box-shadow: none; + } + + @include when(round) { + min-width: 120px; + + @include when(icon) { + min-width: 0; + border-radius: 50%; + } + + @include when(text) { + border-radius: 0; + min-width: 0; + } + } + + .wd-button__loading { + width: $-button-medium-loading; + height: $-button-medium-loading; + } + } + + @include when(large) { + height: $-button-large-height; + padding: $-button-large-padding; + border-radius: $-button-large-radius; + font-size: $-button-large-fs; + + &::after { + border-radius: $-button-large-radius; + } + + &:not(.is-plain) { + @include when(primary) { + box-shadow: $-button-large-box-shadow-size $-button-primary-box-shadow-color; + } + + @include when(success) { + box-shadow: $-button-large-box-shadow-size $-button-success-box-shadow-color; + } + + @include when(warning) { + box-shadow: $-button-large-box-shadow-size $-button-warning-box-shadow-color; + } + + @include when(error) { + box-shadow: $-button-large-box-shadow-size $-button-error-box-shadow-color; + } + } + + + .wd-button__loading { + width: $-button-large-loading; + height: $-button-large-loading; + } + } + + + @include when(round) { + border-radius: 999px; + overflow: hidden; + } + + @include when(text) { + color: $-button-primary-bg-color; + min-width: 0; + padding: 4px 0; + + &::after { + display: none; + } + + &.wd-button--active { + opacity: $-button-text-hover-opacity; + + &:active::before { + display: none; + } + + } + + @include when(disabled) { + color: $-button-normal-disabled-color; + background: transparent; + } + } + + @include when(plain) { + background: $-button-plain-bg-color; + + @include when(primary) { + color: $-button-primary-bg-color; + border: 1px solid $-button-primary-bg-color; + } + + @include when(success) { + color: $-button-success-bg-color; + border: 1px solid $-button-success-bg-color; + } + + @include when(info) { + color: $-button-info-plain-normal-color; + border: 1px solid $-button-info-plain-border-color; + } + + @include when(warning) { + color: $-button-warning-bg-color; + border: 1px solid $-button-warning-bg-color; + } + + @include when(error) { + color: $-button-error-bg-color; + border: 1px solid $-button-error-bg-color; + } + } + + @include when(hairline) { + &.is-plain { + border-width: 0; + border-radius: 0; + @include halfPixelBorderSurround(); + + &::after { + border-color: inherit; + } + } + + } + + + @include when(block) { + display: flex; + } + + @include when(icon) { + width: $-button-icon-size; + height: $-button-icon-size; + padding: 0; + border-radius: 50%; + color: $-button-icon-color; + + &::after { + display: none; + } + + :deep(.wd-button__icon) { + margin-right: 0; + } + + @include when(disabled) { + color: $-button-icon-disabled-color; + background: transparent; + } + } + + @include edeep(icon) { + display: block; + margin-right: 6px; + font-size: $-button-icon-fs; + vertical-align: middle; + } + + @include e(text) { + user-select: none; + white-space: nowrap; + } +} + +// 微信2.8.0以上版本加了较高层级的默认样式,需要重置掉 +.wd-button { + min-height: auto; + width: auto; +} + +@keyframes wd-rotate { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-button/types.ts b/src/uni_modules/wot-design-uni/components/wd-button/types.ts new file mode 100644 index 0000000..74e0e5f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-button/types.ts @@ -0,0 +1,104 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 11:36:12 + * @LastEditTime: 2024-07-23 11:38:09 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-button\types.ts + * 记得注释 + */ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' + +export type ButtonType = 'primary' | 'success' | 'info' | 'warning' | 'error' | 'default' | 'text' | 'icon' +export type ButtonSize = 'small' | 'medium' | 'large' + +export const buttonProps = { + ...baseProps, + /** + * 幽灵按钮 + */ + plain: makeBooleanProp(false), + /** + * 圆角按钮 + */ + round: makeBooleanProp(true), + /** + * 禁用按钮 + */ + disabled: makeBooleanProp(false), + /** + * 是否细边框 + */ + hairline: makeBooleanProp(false), + /** + * 块状按钮 + */ + block: makeBooleanProp(false), + /** + * 按钮类型,可选值:primary / success / info / warning / error / text / icon + */ + type: makeStringProp('primary'), + /** + * 按钮尺寸,可选值:small / medium / large + */ + size: makeStringProp('medium'), + /** + * 图标类名 + */ + icon: String, + /** + * 类名前缀,用于使用自定义图标,用法参考Icon组件 + */ + classPrefix: makeStringProp('wd-icon'), + /** + * 加载中按钮 + */ + loading: makeBooleanProp(false), + /** + * 加载图标颜色 + */ + loadingColor: String, + /** + * 开放能力 + */ + openType: String, + /** + * 指定是否阻止本节点的祖先节点出现点击态 + */ + hoverStopPropagation: Boolean, + /** + * 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文 + */ + lang: String, + /** + * 会话来源,open-type="contact"时有效 + */ + sessionFrom: String, + /** + * 会话内消息卡片标题,open-type="contact"时有效 + */ + sendMessageTitle: String, + /** + * 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + */ + sendMessagePath: String, + /** + * 会话内消息卡片图片,open-type="contact"时有效 + */ + sendMessageImg: String, + /** + * 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + */ + appParameter: String, + /** + * 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,open-type="contact"时有效 + */ + showMessageCard: Boolean, + /** + * 按钮的唯一标识,可用于设置隐私同意授权按钮的id + */ + buttonId: String +} + +export type ButtonProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-button/wd-button.vue b/src/uni_modules/wot-design-uni/components/wd-button/wd-button.vue new file mode 100644 index 0000000..75db307 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-button/wd-button.vue @@ -0,0 +1,172 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/index.scss b/src/uni_modules/wot-design-uni/components/wd-calendar-view/index.scss new file mode 100644 index 0000000..abec32d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/index.scss @@ -0,0 +1,9 @@ +/* + * @Author: weisheng + * @Date: 2023-06-12 10:04:19 + * @LastEditTime: 2023-07-15 16:16:34 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-calendar-view\index.scss + * 记得注释 + */ diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/index.scss b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/index.scss new file mode 100644 index 0000000..3ed3d98 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/index.scss @@ -0,0 +1,151 @@ +@import '../../common/abstracts/variable'; +@import '../../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(month) { + @include e(title) { + color: $-dark-color; + } + + @include e(days) { + color: $-dark-color; + } + + @include e(day) { + @include when(disabled) { + .wd-month__day-text { + color: $-dark-color-gray; + } + } + } + } +} + +@include b(month) { + @include e(title) { + display: flex; + align-items: center; + justify-content: center; + height: 45px; + font-size: $-calendar-panel-title-fs; + color: $-calendar-panel-title-color; + } + + @include e(days) { + display: flex; + flex-wrap: wrap; + font-size: $-calendar-day-fs; + color: $-calendar-day-color; + } + + @include e(day) { + position: relative; + width: 14.285%; + height: $-calendar-day-height; + line-height: $-calendar-day-height; + text-align: center; + + @include when(disabled) { + .wd-month__day-text { + color: $-calendar-disabled-color; + } + } + + @include when(current) { + color: $-calendar-active-color; + } + + @include when(selected) { + .wd-month__day-container { + border-radius: $-calendar-active-border; + background: $-calendar-active-color; + color: #fff; + } + } + + @include when(middle) { + .wd-month__day-container { + background: $-calendar-range-color; + } + } + + @include when(start) { + &::after { + position: absolute; + content: ''; + height: $-calendar-day-height; + top: 0; + right: 0; + left: 50%; + background: $-calendar-range-color; + z-index: 1; + } + + &.is-without-end::after { + display: none; + } + + .wd-month__day-container { + background: $-calendar-active-color; + color: #fff; + border-radius: $-calendar-active-border; + } + } + + @include when(end) { + &::after { + position: absolute; + content: ''; + height: $-calendar-day-height; + top: 0; + left: 0; + right: 50%; + background: $-calendar-range-color; + z-index: 1; + } + + .wd-month__day-container { + background: $-calendar-active-color; + color: #fff; + border-radius: $-calendar-active-border; + } + } + + @include when(same) { + .wd-month__day-container { + background: $-calendar-active-color; + color: #fff; + border-radius: $-calendar-active-border; + } + } + } + + @include e(day-container) { + position: relative; + z-index: 2; + } + + @include e(day-text) { + font-weight: $-calendar-day-fw; + } + + @include e(day-top) { + position: absolute; + top: 10px; + left: 0; + right: 0; + line-height: 1.1; + font-size: $-calendar-info-fs; + text-align: center; + } + + @include e(day-bottom) { + position: absolute; + bottom: 10px; + left: 0; + right: 0; + line-height: 1.1; + font-size: $-calendar-info-fs; + text-align: center; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/month.vue b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/month.vue new file mode 100644 index 0000000..419908f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/month.vue @@ -0,0 +1,361 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/types.ts b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/types.ts new file mode 100644 index 0000000..067e6e8 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/types.ts @@ -0,0 +1,19 @@ +import type { PropType } from 'vue' +import { makeBooleanProp, makeRequiredProp } from '../../common/props' +import type { CalendarFormatter, CalendarType } from '../types' + +export const monthProps = { + type: makeRequiredProp(String as PropType), + date: makeRequiredProp(Number), + value: makeRequiredProp([Number, Array, null] as PropType), + minDate: makeRequiredProp(Number), + maxDate: makeRequiredProp(Number), + firstDayOfWeek: makeRequiredProp(Number), + formatter: Function as PropType, + maxRange: Number, + rangePrompt: String, + allowSameDay: makeBooleanProp(false), + defaultTime: { + type: [Array] as PropType> + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/index.scss b/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/index.scss new file mode 100644 index 0000000..f8b9fe5 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/index.scss @@ -0,0 +1,89 @@ +@import '../../common/abstracts/variable'; +@import '../../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(month-panel) { + @include e(title) { + color: $-dark-color; + } + + @include e(weeks) { + box-shadow: 0px 4px 8px 0 rgba(255, 255, 255, 0.02); + color: $-dark-color; + } + + @include e(time-label) { + color: $-dark-color; + &::after{ + background: $-dark-background4; + } + } + } +} + +@include b(month-panel) { + font-size: $-calendar-fs; + + @include e(title) { + padding: 5px 0; + text-align: center; + font-size: $-calendar-panel-title-fs; + color: $-calendar-panel-title-color; + padding: $-calendar-panel-padding; + } + + @include e(weeks) { + display: flex; + height: $-calendar-week-height; + line-height: $-calendar-week-height; + box-shadow: 0px 4px 8px 0 rgba(0, 0, 0, 0.02); + color: $-calendar-week-color; + font-size: $-calendar-week-fs; + padding: $-calendar-panel-padding; + } + + @include e(week) { + flex: 1; + text-align: center; + } + + @include e(container) { + padding: $-calendar-panel-padding; + box-sizing: border-box; + } + + @include e(time) { + display: flex; + box-shadow: 0px -4px 8px 0px rgba(0, 0, 0, 0.02); + } + + @include e(time-label) { + position: relative; + flex: 1; + font-size: $-picker-column-fs; + text-align: center; + line-height: 125px; + color: $-picker-column-color; + + &::after { + position: absolute; + content: ''; + height: 35px; + top: 50%; + left: 0; + right: 0; + transform: translateY(-50%); + background: $-picker-column-select-bg; + z-index: 0; + } + } + + @include e(time-text) { + position: relative; + z-index: 1; + } + + @include e(time-picker) { + flex: 3; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/month-panel.vue b/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/month-panel.vue new file mode 100644 index 0000000..629843d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/month-panel.vue @@ -0,0 +1,357 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/types.ts b/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/types.ts new file mode 100644 index 0000000..bd27a85 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/types.ts @@ -0,0 +1,48 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { makeBooleanProp, makeRequiredProp } from '../../common/props' +import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../types' + +/** + * 月份信息 + */ +export interface MonthInfo { + date: number + height: number +} + +export const monthPanelProps = { + type: makeRequiredProp(String as PropType), + value: makeRequiredProp([Number, Array, null] as PropType), + minDate: makeRequiredProp(Number), + maxDate: makeRequiredProp(Number), + firstDayOfWeek: makeRequiredProp(Number), + formatter: Function as PropType, + maxRange: Number, + rangePrompt: String, + allowSameDay: makeBooleanProp(false), + showPanelTitle: makeBooleanProp(false), + defaultTime: { + type: [Array] as PropType> + }, + panelHeight: makeRequiredProp(Number), + // type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据 + timeFilter: Function as PropType, + hideSecond: makeBooleanProp(false), + /** + * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 + */ + immediateChange: makeBooleanProp(false) +} + +export type MonthPanelProps = ExtractPropTypes + +export type MonthPanelTimeType = 'start' | 'end' | '' + +export type MonthPanelExpose = { + /** + * 使当前日期或者选中日期滚动到可视区域 + */ + scrollIntoView: () => void +} + +export type MonthPanelInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/types.ts b/src/uni_modules/wot-design-uni/components/wd-calendar-view/types.ts new file mode 100644 index 0000000..6a900d6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/types.ts @@ -0,0 +1,108 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props' + +export type CalendarType = 'date' | 'dates' | 'datetime' | 'week' | 'month' | 'daterange' | 'datetimerange' | 'weekrange' | 'monthrange' + +export const calendarViewProps = { + ...baseProps, + /** + * 选中值,为 13 位时间戳或时间戳数组 + */ + modelValue: makeRequiredProp([Number, Array, null] as PropType), + /** + * 日期类型 + */ + type: makeStringProp('date'), + /** + * 最小日期,为 13 位时间戳 + */ + minDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() - 6, new Date().getDate()).getTime()), + /** + * 最大日期,为 13 位时间戳 + */ + maxDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() + 6, new Date().getDate(), 23, 59, 59).getTime()), + /** + * 周起始天 + */ + firstDayOfWeek: makeNumberProp(0), + /** + * 日期格式化函数 + */ + formatter: Function as PropType, + /** + * type 为范围选择时有效,最大日期范围 + */ + maxRange: Number, + /** + * type 为范围选择时有效,选择超出最大日期范围时的错误提示文案 + */ + rangePrompt: String, + /** + * type 为范围选择时有效,是否允许选择同一天 + */ + allowSameDay: makeBooleanProp(false), + // 是否展示面板标题,自动计算当前滚动的日期月份 + showPanelTitle: makeBooleanProp(true), + /** + * 选中日期所使用的当日内具体时刻 + */ + defaultTime: { + type: [String, Array] as PropType, + default: '00:00:00' + }, + /** + * 可滚动面板的高度 + */ + panelHeight: makeNumberProp(378), + /** + * type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据 + */ + timeFilter: Function as PropType, + /** + * type 为 'datetime' 或 'datetimerange' 时有效,是否不展示秒修改 + */ + hideSecond: makeBooleanProp(false), + /** + * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 + */ + immediateChange: makeBooleanProp(false) +} + +export type CalendarViewProps = ExtractPropTypes + +export type CalendarDayType = '' | 'start' | 'middle' | 'end' | 'selected' | 'same' | 'current' + +export type CalendarDayItem = { + date: number + text?: number | string + topInfo?: string + bottomInfo?: string + type?: CalendarDayType + disabled?: boolean +} + +export type CalendarFormatter = (day: CalendarDayItem) => CalendarDayItem + +export type CalendarTimeFilterOptionType = 'hour' | 'minute' | 'second' + +export type CalendarTimeFilterOption = { + type: CalendarTimeFilterOptionType + values: CalendarItem[] +} + +export type CalendarTimeFilter = (option: CalendarTimeFilterOption) => CalendarItem[] + +export type CalendarItem = { + label: string + value: number + disabled: boolean +} + +export type CalendarViewExpose = { + /** + * 使当前日期或者选中日期滚动到可视区域 + */ + scrollIntoView: () => void +} + +export type CalendarViewInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/utils.ts b/src/uni_modules/wot-design-uni/components/wd-calendar-view/utils.ts new file mode 100644 index 0000000..04db27c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/utils.ts @@ -0,0 +1,444 @@ +import { computed } from 'vue' +import { dayjs } from '../common/dayjs' +import { isArray, isFunction, padZero } from '../common/util' +import { useTranslate } from '../composables/useTranslate' +import type { CalendarDayType, CalendarItem, CalendarTimeFilter, CalendarType } from './types' +const { translate } = useTranslate('calendar-view') + +const weeks = computed(() => { + return [ + translate('weeks.sun'), + translate('weeks.mon'), + translate('weeks.tue'), + translate('weeks.wed'), + translate('weeks.thu'), + translate('weeks.fri'), + translate('weeks.sat') + ] +}) + +/** + * 比较两个时间的日期是否相等 + * @param {timestamp} date1 + * @param {timestamp} date2 + */ +export function compareDate(date1: number, date2: number | null) { + const dateValue1 = new Date(date1) + const dateValue2 = new Date(date2 || '') + + const year1 = dateValue1.getFullYear() + const year2 = dateValue2.getFullYear() + const month1 = dateValue1.getMonth() + const month2 = dateValue2.getMonth() + const day1 = dateValue1.getDate() + const day2 = dateValue2.getDate() + + if (year1 === year2) { + if (month1 === month2) { + return day1 === day2 ? 0 : day1 > day2 ? 1 : -1 + } + return month1 === month2 ? 0 : month1 > month2 ? 1 : -1 + } + + return year1 > year2 ? 1 : -1 +} + +/** + * 判断是否是范围选择 + * @param {string} type + */ +export function isRange(type: CalendarType) { + return type.indexOf('range') > -1 +} + +/** + * 比较两个日期的月份是否相等 + * @param {timestamp} date1 + * @param {timestamp} date2 + */ +export function compareMonth(date1: number, date2: number) { + const dateValue1 = new Date(date1) + const dateValue2 = new Date(date2) + + const year1 = dateValue1.getFullYear() + const year2 = dateValue2.getFullYear() + const month1 = dateValue1.getMonth() + const month2 = dateValue2.getMonth() + + if (year1 === year2) { + return month1 === month2 ? 0 : month1 > month2 ? 1 : -1 + } + + return year1 > year2 ? 1 : -1 +} + +/** + * 比较两个日期的年份是否一致 + * @param {timestamp} date1 + * @param {timestamp} date2 + */ +export function compareYear(date1: number, date2: number) { + const dateValue1 = new Date(date1) + const dateValue2 = new Date(date2) + + const year1 = dateValue1.getFullYear() + const year2 = dateValue2.getFullYear() + + return year1 === year2 ? 0 : year1 > year2 ? 1 : -1 +} + +/** + * 获取一个月的最后一天 + * @param {number} year + * @param {number} month + */ +export function getMonthEndDay(year: number, month: number) { + return 32 - new Date(year, month - 1, 32).getDate() +} + +/** + * 格式化年月 + * @param {timestamp} date + */ +export function formatMonthTitle(date: number) { + return dayjs(date).format(translate('monthTitle')) +} + +/** + * 根据下标获取星期 + * @param {number} index + */ +export function getWeekLabel(index: number) { + if (index >= 7) { + index = index % 7 + } + + return weeks.value[index] +} + +/** + * 获取一个月第一天的样式 + * @param {number} index + * @param {timestamp} date + * @param {number} firstDayOfWeek + */ +export function getFirstDayStyle(index: number, date: number, firstDayOfWeek: number) { + if (firstDayOfWeek >= 7) { + firstDayOfWeek = firstDayOfWeek % 7 + } + + if (index !== 0) return '' + + const offset = (7 + new Date(date).getDay() - firstDayOfWeek) % 7 + + return 'margin-left: ' + (100 / 7) * offset + '%' +} + +/** + * 格式化年份 + * @param {timestamp} date + */ +export function formatYearTitle(date: number) { + return dayjs(date).format(translate('yearTitle')) +} + +/** + * 根据最小日期和最大日期获取这之间总共有几个月份 + * @param {timestamp} minDate + * @param {timestamp} maxDate + */ +export function getMonths(minDate: number, maxDate: number) { + const months: number[] = [] + const month = new Date(minDate) + month.setDate(1) + + while (compareMonth(month.getTime(), maxDate) < 1) { + months.push(month.getTime()) + month.setMonth(month.getMonth() + 1) + } + + return months +} + +/** + * 根据最小日期和最大日期获取这之间总共有几年 + * @param {timestamp} minDate + * @param {timestamp} maxDate + */ +export function getYears(minDate: number, maxDate: number) { + const years: number[] = [] + const year = new Date(minDate) + year.setMonth(0) + year.setDate(1) + + while (compareYear(year.getTime(), maxDate) < 1) { + years.push(year.getTime()) + year.setFullYear(year.getFullYear() + 1) + } + + return years +} + +/** + * 获取一个日期所在周的第一天和最后一天 + * @param {timestamp} date + */ +export function getWeekRange(date: number, firstDayOfWeek: number) { + if (firstDayOfWeek >= 7) { + firstDayOfWeek = firstDayOfWeek % 7 + } + + const dateValue = new Date(date) + dateValue.setHours(0, 0, 0, 0) + const year = dateValue.getFullYear() + const month = dateValue.getMonth() + const day = dateValue.getDate() + const week = dateValue.getDay() + + const weekStart = new Date(year, month, day - ((7 + week - firstDayOfWeek) % 7)) + const weekEnd = new Date(year, month, day + 6 - ((7 + week - firstDayOfWeek) % 7)) + + return [weekStart.getTime(), weekEnd.getTime()] +} + +/** + * 获取日期偏移量 + * @param {timestamp} date1 + * @param {timestamp} date2 + */ +export function getDayOffset(date1: number, date2: number) { + return (date1 - date2) / (24 * 60 * 60 * 1000) + 1 +} + +/** + * 获取偏移日期 + * @param {timestamp} date + * @param {number} offset + */ +export function getDayByOffset(date: number, offset: number) { + const dateValue = new Date(date) + dateValue.setDate(dateValue.getDate() + offset) + + return dateValue.getTime() +} + +/** + * 获取月份偏移量 + * @param {timestamp} date1 + * @param {timestamp} date2 + */ +export function getMonthOffset(date1: number, date2: number) { + const dateValue1 = new Date(date1) + const dateValue2 = new Date(date2) + + const year1 = dateValue1.getFullYear() + const year2 = dateValue2.getFullYear() + let month1 = dateValue1.getMonth() + const month2 = dateValue2.getMonth() + + month1 = (year1 - year2) * 12 + month1 + + return month1 - month2 + 1 +} + +/** + * 获取偏移月份 + * @param {timestamp} date + * @param {number} offset + */ +export function getMonthByOffset(date: number, offset: number) { + const dateValue = new Date(date) + dateValue.setMonth(dateValue.getMonth() + offset) + + return dateValue.getTime() +} + +/** + * 获取默认时间,格式化为数组 + * @param {array|string|null} defaultTime + */ +export function getDefaultTime(defaultTime: string[] | string | null) { + if (isArray(defaultTime)) { + const startTime = (defaultTime[0] || '00:00:00').split(':').map((item: string) => { + return parseInt(item) + }) + const endTime = (defaultTime[1] || '00:00:00').split(':').map((item) => { + return parseInt(item) + }) + return [startTime, endTime] + } else { + const time = (defaultTime || '00:00:00').split(':').map((item) => { + return parseInt(item) + }) + + return [time, time] + } +} + +/** + * 根据默认时间获取日期 + * @param {timestamp} date + * @param {array} defaultTime + */ +export function getDateByDefaultTime(date: number, defaultTime: number[]) { + const dateValue = new Date(date) + dateValue.setHours(defaultTime[0]) + dateValue.setMinutes(defaultTime[1]) + dateValue.setSeconds(defaultTime[2]) + + return dateValue.getTime() +} + +/** + * 获取经过 iteratee 格式化后的长度为 n 的数组 + * @param {number} n + * @param {function} iteratee + */ +const times = (n: number, iteratee: (index: number) => CalendarItem) => { + let index: number = -1 + const result: CalendarItem[] = Array(n < 0 ? 0 : n) + while (++index < n) { + result[index] = iteratee(index) + } + return result +} + +/** + * 获取时分秒 + * @param {timestamp}} date + */ +const getTime = (date: number) => { + const dateValue = new Date(date) + return [dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()] +} + +/** + * 根据最小最大日期获取时间数据,用于填入picker + * @param {*} param0 + */ +export function getTimeData({ + date, + minDate, + maxDate, + isHideSecond, + filter +}: { + date: number + minDate: number + maxDate: number + isHideSecond: boolean + filter?: CalendarTimeFilter +}) { + const compareMin = compareDate(date, minDate) + const compareMax = compareDate(date, maxDate) + + let minHour = 0 + let maxHour = 23 + let minMinute = 0 + let maxMinute = 59 + let minSecond = 0 + let maxSecond = 59 + + if (compareMin === 0) { + const minTime = getTime(minDate) + const currentTime = getTime(date) + + minHour = minTime[0] + if (minTime[0] === currentTime[0]) { + minMinute = minTime[1] + + if (minTime[1] === currentTime[1]) { + minSecond = minTime[2] + } + } + } + + if (compareMax === 0) { + const maxTime = getTime(maxDate) + const currentTime = getTime(date) + + maxHour = maxTime[0] + if (maxTime[0] === currentTime[0]) { + maxMinute = maxTime[1] + + if (maxTime[1] === currentTime[1]) { + maxSecond = maxTime[2] + } + } + } + + let columns: CalendarItem[][] = [] + let hours = times(24, (index) => { + return { + label: translate('hour', padZero(index)), + value: index, + disabled: index < minHour || index > maxHour + } + }) + let minutes = times(60, (index) => { + return { + label: translate('minute', padZero(index)), + value: index, + disabled: index < minMinute || index > maxMinute + } + }) + let seconds: CalendarItem[] = [] + if (filter && isFunction(filter)) { + hours = filter({ + type: 'hour', + values: hours + }) + minutes = filter({ + type: 'minute', + values: minutes + }) + } + + if (!isHideSecond) { + seconds = times(60, (index) => { + return { + label: translate('second', padZero(index)), + value: index, + disabled: index < minSecond || index > maxSecond + } + }) + if (filter && isFunction(filter)) { + seconds = filter({ + type: 'second', + values: seconds + }) + } + } + + columns = isHideSecond ? [hours, minutes] : [hours, minutes, seconds] + + return columns +} + +/** + * 获取当前是第几周 + * @param {timestamp} date + */ +export function getWeekNumber(date: number | Date) { + date = new Date(date) + date.setHours(0, 0, 0, 0) + // Thursday in current week decides the year. + date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7)) + // January 4 is always in week 1. + const week = new Date(date.getFullYear(), 0, 4) + // Adjust to Thursday in week 1 and count number of weeks from date to week 1. + // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours. + return 1 + Math.round(((date.getTime() - week.getTime()) / 86400000 - 3 + ((week.getDay() + 6) % 7)) / 7) +} + +export function getItemClass(monthType: CalendarDayType, value: number | (number | null)[], type: CalendarType) { + const classList = ['is-' + monthType] + + if (type.indexOf('range') > -1 && isArray(value)) { + if (!value || !value[1]) { + classList.push('is-without-end') + } + } + + return classList.join(' ') +} diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/wd-calendar-view.vue b/src/uni_modules/wot-design-uni/components/wd-calendar-view/wd-calendar-view.vue new file mode 100644 index 0000000..42512d2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/wd-calendar-view.vue @@ -0,0 +1,111 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/index.scss b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/index.scss new file mode 100644 index 0000000..81b83f0 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/index.scss @@ -0,0 +1,149 @@ +@import '../../common/abstracts/variable'; +@import '../../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(year) { + @include e(title) { + color: $-dark-color; + } + + @include e(months) { + color: $-dark-color; + } + + @include e(month) { + + @include when(disabled) { + .wd-year__month-text { + color: $-dark-color-gray; + } + } + } + } +} + +@include b(year) { + @include e(title) { + display: flex; + align-items: center; + justify-content: center; + height: 45px; + font-size: $-calendar-panel-title-fs; + color: $-calendar-panel-title-color; + } + + @include e(months) { + display: flex; + flex-wrap: wrap; + font-size: $-calendar-day-fs; + color: $-calendar-day-color; + } + + @include e(month) { + position: relative; + width: 25%; + height: $-calendar-day-height; + line-height: $-calendar-day-height; + text-align: center; + + @include when(disabled) { + .wd-year__month-text { + color: $-calendar-disabled-color; + } + } + + @include when(current) { + color: $-calendar-active-color; + } + + @include when(selected) { + color: #fff; + + .wd-year__month-text { + border-radius: $-calendar-active-border; + background: $-calendar-active-color; + } + } + + @include when(middle) { + background: $-calendar-range-color; + } + + @include when(start) { + color: #fff; + + &::after { + position: absolute; + top: 0; + right: 0; + left: 50%; + bottom: 0; + content: ''; + background: $-calendar-range-color; + } + + .wd-year__month-text { + background: $-calendar-active-color; + border-radius: $-calendar-active-border; + } + + &.is-without-end::after { + display: none; + } + } + + @include when(end) { + color: #fff; + + &::after { + position: absolute; + top: 0; + left: 0; + right: 50%; + bottom: 0; + content: ''; + background: $-calendar-range-color; + } + + .wd-year__month-text { + background: $-calendar-active-color; + border-radius: $-calendar-active-border; + } + } + + @include when(same) { + color: #fff; + + .wd-year__month-text { + background: $-calendar-active-color; + border-radius: $-calendar-active-border; + } + } + } + + @include e(month-text) { + width: $-calendar-month-width; + margin: 0 auto; + text-align: center; + } + + @include e(month-top) { + position: absolute; + top: 10px; + left: 0; + right: 0; + line-height: 1.1; + font-size: $-calendar-info-fs; + text-align: center; + } + + @include e(month-bottom) { + position: absolute; + bottom: 10px; + left: 0; + right: 0; + line-height: 1.1; + font-size: $-calendar-info-fs; + text-align: center; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/types.ts b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/types.ts new file mode 100644 index 0000000..9b04838 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/types.ts @@ -0,0 +1,19 @@ +import type { PropType } from 'vue' +import { makeBooleanProp, makeRequiredProp } from '../../common/props' +import type { CalendarFormatter, CalendarType } from '../types' + +export const yearProps = { + type: makeRequiredProp(String as PropType), + date: makeRequiredProp(Number), + value: makeRequiredProp([Number, Array] as PropType), + minDate: makeRequiredProp(Number), + maxDate: makeRequiredProp(Number), + // 日期格式化函数 + formatter: Function as PropType, + maxRange: Number, + rangePrompt: String, + allowSameDay: makeBooleanProp(false), + defaultTime: { + type: [Array] as PropType> + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/year.vue b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/year.vue new file mode 100644 index 0000000..38dd163 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/year.vue @@ -0,0 +1,197 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/index.scss b/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/index.scss new file mode 100644 index 0000000..920778a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/index.scss @@ -0,0 +1,24 @@ +@import '../../common/abstracts/variable'; +@import '../../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(year-panel) { + @include e(title) { + color: $-dark-color; + box-shadow: 0px 4px 8px 0 rgba(255, 255,255, 0.02); + } + } +} + +@include b(year-panel) { + font-size: $-calendar-fs; + padding: $-calendar-panel-padding; + + @include e(title) { + padding: 5px 0; + text-align: center; + font-size: $-calendar-panel-title-fs; + color: $-calendar-panel-title-color; + box-shadow: 0px 4px 8px 0 rgba(0, 0, 0, 0.02); + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/types.ts b/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/types.ts new file mode 100644 index 0000000..6e60b01 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/types.ts @@ -0,0 +1,38 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { makeBooleanProp, makeRequiredProp } from '../../common/props' +import type { CalendarFormatter, CalendarType } from '../types' + +/** + * 月份信息 + */ +export interface YearInfo { + date: number + height: number +} + +export const yearPanelProps = { + type: makeRequiredProp(String as PropType), + value: makeRequiredProp([Number, Array] as PropType), + minDate: makeRequiredProp(Number), + maxDate: makeRequiredProp(Number), + formatter: Function as PropType, + maxRange: Number, + rangePrompt: String, + allowSameDay: makeBooleanProp(false), + showPanelTitle: makeBooleanProp(false), + defaultTime: { + type: [Array] as PropType> + }, + panelHeight: makeRequiredProp(Number) +} + +export type YearPanelProps = ExtractPropTypes + +export type YearPanelExpose = { + /** + * 使当前日期或者选中日期滚动到可视区域 + */ + scrollIntoView: () => void +} + +export type YearPanelInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/year-panel.vue b/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/year-panel.vue new file mode 100644 index 0000000..cb5aee8 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/year-panel.vue @@ -0,0 +1,134 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar/index.scss b/src/uni_modules/wot-design-uni/components/wd-calendar/index.scss new file mode 100644 index 0000000..f6476bc --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar/index.scss @@ -0,0 +1,245 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(calendar) { + @include e(cell) { + background-color: $-dark-background2; + color: $-dark-color; + } + + @include e(label) { + color: $-dark-color; + } + + @include e(value) { + color: $-dark-color; + } + + @include e(title) { + color: $-dark-color; + } + + :deep(.wd-calendar__arrow), + :deep(.wd-calendar__close) { + color: $-dark-color; + } + + + @include when(border) { + .wd-calendar__cell { + @include halfPixelBorder('top', $-cell-padding, $-dark-border-color); + } + } + + @include e(range-label-item) { + color: $-dark-color; + + @include when(placeholder) { + color: $-dark-color-gray; + } + } + + @include e(range-sperator) { + color: $-dark-color-gray; + } + } +} + +@include b(calendar) { + @include when(border) { + .wd-calendar__cell { + @include halfPixelBorder('top', $-cell-padding); + } + } + + @include e(cell) { + position: relative; + display: flex; + padding: $-cell-wrapper-padding $-cell-padding; + align-items: flex-start; + background-color: $-color-white; + text-decoration: none; + color: $-cell-title-color; + font-size: $-cell-title-fs; + overflow: hidden; + line-height: $-cell-line-height; + } + + @include e(cell) { + @include when(disabled) { + .wd-calendar__value { + color: $-input-disabled-color; + } + } + + @include when(align-right) { + .wd-calendar__value { + text-align: right; + } + } + + @include when(error) { + .wd-calendar__value { + color: $-input-error-color; + } + + :deep(.wd-calendar__arrow) { + color: $-input-error-color; + } + } + + @include when(large) { + font-size: $-cell-title-fs-large; + + :deep(.wd-calendar__arrow) { + font-size: $-cell-icon-size-large; + } + } + + @include when(center) { + align-items: center; + + :deep(.wd-calendar__arrow) { + margin-top: 0; + } + } + } + + @include e(error-message){ + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } + + @include e(label) { + position: relative; + width: $-input-cell-label-width; + margin-right: $-cell-padding; + color: $-cell-title-color; + box-sizing: border-box; + + @include when(required) { + padding-left: 12px; + + &::after { + position: absolute; + left: 0; + top: 2px; + content: '*'; + font-size: $-cell-required-size; + line-height: 1.1; + color: $-cell-required-color; + } + } + } + + @include e(value-wraper) { + display: flex; + } + + @include e(value) { + flex: 1; + margin-right: 10px; + color: $-cell-value-color; + + @include when(ellipsis) { + @include lineEllipsis; + } + + @include m(placeholder) { + color: $-input-placeholder-color; + } + } + + @include e(body) { + flex: 1; + } + + @include edeep(arrow) { + display: block; + font-size: $-cell-icon-size; + color: $-cell-arrow-color; + line-height: $-cell-line-height; + } + + @include e(header) { + position: relative; + overflow: hidden; + } + + @include e(title) { + color: $-action-sheet-color; + height: $-action-sheet-title-height; + line-height: $-action-sheet-title-height; + text-align: center; + font-size: $-action-sheet-title-fs; + font-weight: $-action-sheet-weight; + } + + @include edeep(close) { + position: absolute; + top: $-action-sheet-close-top; + right: $-action-sheet-close-right; + color: $-action-sheet-close-color; + font-size: $-action-sheet-close-fs; + transform: rotate(-45deg); + line-height: 1.1; + } + + @include e(tabs) { + width: 222px; + margin: 10px auto 12px; + } + + @include e(shortcuts) { + padding: 20px 0; + text-align: center; + } + + @include edeep(tag) { + margin-right: 8px; + } + + @include e(view) { + @include when(show-confirm) { + height: 394px; + + @include when(range) { + height: 384px; + } + } + } + + @include e(range-label) { + display: flex; + justify-content: center; + align-items: center; + font-size: 14px; + + @include when(monthrange) { + padding-bottom: 10px; + box-shadow: 0px 4px 8px 0 rgba(0, 0, 0, 0.02); + } + } + + @include e(range-label-item) { + flex: 1; + color: rgba(0, 0, 0, 0.85); + + @include when(placeholder) { + color: rgba(0, 0, 0, 0.25); + } + } + + @include e(range-sperator) { + margin: 0 24px; + color: rgba(0, 0, 0, 0.25); + } + + @include e(confirm) { + padding: 12px 25px 14px; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar/types.ts b/src/uni_modules/wot-design-uni/components/wd-calendar/types.ts new file mode 100644 index 0000000..6049a51 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar/types.ts @@ -0,0 +1,213 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 20:40:34 + * @LastEditTime: 2024-06-09 14:38:57 + * @LastEditors: weisheng + * @Description: + * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-calendar/types.ts + * 记得注释 + */ +import type { PropType } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props' +import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../wd-calendar-view/types' +import type { FormItemRule } from '../wd-form/types' + +export const calendarProps = { + ...baseProps, + /** + * 选中值,为 13 位时间戳或时间戳数组 + */ + modelValue: makeRequiredProp([Number, Array, null] as PropType), + /** + * 日期类型,可选值:date / dates / datetime / week / month / daterange / datetimerange / weekrange / monthrange + */ + type: makeStringProp('date'), + /** + * 最小日期,为 13 位时间戳 + */ + minDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() - 6, new Date().getDate()).getTime()), + /** + * 最大日期,为 13 位时间戳 + */ + maxDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() + 6, new Date().getDate(), 23, 59, 59).getTime()), + /** + * 周起始天 + */ + firstDayOfWeek: makeNumberProp(0), + /** + * 日期格式化函数 + */ + formatter: Function as PropType, + /** + * type 为范围选择时有效,最大日期范围 + */ + maxRange: Number, + /** + * type 为范围选择时有效,选择超出最大日期范围时的错误提示文案 + */ + rangePrompt: String, + /** + * type 为范围选择时有效,是否允许选择同一天 + */ + allowSameDay: makeBooleanProp(false), + /** + * 选中日期所使用的当日内具体时刻 + */ + defaultTime: { + type: [String, Array] as PropType + }, + /** + * type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据 + */ + timeFilter: Function as PropType, + /** + * type 为 'datetime' 或 'datetimerange' 时有效,是否不展示秒修改 + */ + hideSecond: makeBooleanProp(false), + /** + * 选择器左侧文案 + */ + label: String, + /** + * 设置左侧标题宽度 + */ + labelWidth: String, + /** + * 使用 label 插槽时设置该选项 + */ + useLabelSlot: makeBooleanProp(false), + /** + * 使用默认插槽时设置该选项 + */ + useDefaultSlot: makeBooleanProp(false), + /** + * 禁用 + */ + disabled: makeBooleanProp(false), + /** + * 只读 + */ + readonly: makeBooleanProp(false), + /** + * 选择器占位符 + */ + placeholder: String, + /** + * 弹出层标题 + */ + title: String, + /** + * 选择器的值靠右展示 + */ + alignRight: makeBooleanProp(false), + /** + * 是否为错误状态,错误状态时右侧内容为红色 + */ + error: makeBooleanProp(false), + /** + * 是否必填 + */ + required: makeBooleanProp(false), + /** + * 设置选择器大小,可选值:large + */ + size: String, + /** + * 是否垂直居中 + */ + center: makeBooleanProp(false), + /** + * 点击遮罩是否关闭 + */ + closeOnClickModal: makeBooleanProp(true), + /** + * 弹框层级 + */ + zIndex: makeNumberProp(15), + /** + * 是否显示确定按钮 + */ + showConfirm: makeBooleanProp(true), + /** + * 确定按钮文字 + */ + confirmText: String, + /** + * 自定义展示文案的格式化函数,返回一个字符串 + */ + displayFormat: Function as PropType, + /** + * 自定义范围选择类型的面板内部回显,返回一个字符串 + */ + innerDisplayFormat: Function as PropType, + /** + * 是否超出隐藏 + */ + ellipsis: makeBooleanProp(false), + /** + * 是否显示类型切换功能 + */ + showTypeSwitch: makeBooleanProp(false), + /** + * 快捷选项,为对象数组,其中对象的 text 必传 + */ + shortcuts: makeArrayProp>(), + /** + * 快捷操作点击回调 + */ + onShortcutsClick: Function as PropType, + /** + * 弹出面板是否设置底部安全距离(iphone X 类型的机型) + */ + safeAreaInsetBottom: makeBooleanProp(true), + /** + * 确定前校验函数,接收 { value, resolve } 参数,通过 resolve 继续执行,resolve 接收 1 个 boolean 参数 + */ + beforeConfirm: Function as PropType, + /** + * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的 + */ + prop: String, + /** + * 表单验证规则,结合wd-form组件使用 + */ + rules: makeArrayProp(), + customViewClass: makeStringProp(''), + /** + * label 外部自定义样式 + */ + customLabelClass: makeStringProp(''), + /** + * value 外部自定义样式 + */ + customValueClass: makeStringProp(''), + /** + * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 + */ + immediateChange: makeBooleanProp(false) +} + +export type CalendarDisplayFormat = (value: number | number[], type: CalendarType) => string + +export type CalendarInnerDisplayFormat = (value: number, rangeType: 'start' | 'end', type: CalendarType) => string + +export type CalendarBeforeConfirmOption = { + value: number | number[] | null + resolve: (isPass: boolean) => void +} + +export type CalendarBeforeConfirm = (option: CalendarBeforeConfirmOption) => void + +export type CalendarOnShortcutsClickOption = { + item: Record + index: number +} + +export type CalendarOnShortcutsClick = (option: CalendarOnShortcutsClickOption) => number | number[] + +export type CalendarExpose = { + /** 关闭时间选择器弹窗 */ + close: () => void + /** 打开时间选择器弹窗 */ + open: () => void +} diff --git a/src/uni_modules/wot-design-uni/components/wd-calendar/wd-calendar.vue b/src/uni_modules/wot-design-uni/components/wd-calendar/wd-calendar.vue new file mode 100644 index 0000000..7686309 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-calendar/wd-calendar.vue @@ -0,0 +1,422 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-card/index.scss b/src/uni_modules/wot-design-uni/components/wd-card/index.scss new file mode 100644 index 0000000..ee6562c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-card/index.scss @@ -0,0 +1,71 @@ +@import "../common/abstracts/variable.scss"; +@import "../common/abstracts/_mixin.scss"; +.wot-theme-dark { + @include b(card) { + background-color: $-dark-background2; + + @include when(rectangle) { + + .wd-card__content { + @include halfPixelBorder('top', 0, $-dark-border-color); + } + .wd-card__footer { + @include halfPixelBorder('top', 0, $-dark-border-color); + } + } + + @include e(title-content) { + color: $-dark-color; + } + @include e(content) { + color: $-dark-color3; + } + } +} + +@include b(card) { + padding: $-card-padding; + background-color: $-card-bg; + line-height: $-card-line-height; + margin: $-card-margin; + border-radius: $-card-radius; + box-shadow: $-card-shadow-color; + font-size: $-card-fs; + margin-bottom: 12px; + + @include when(rectangle) { + margin-left: 0; + margin-right: 0; + border-radius: 0; + box-shadow: none; + + .wd-card__title-content { + font-size: $-card-fs; + } + .wd-card__content { + position: relative; + padding: $-card-rectangle-content-padding; + + @include halfPixelBorder('top', 0, $-card-content-border-color); + } + .wd-card__footer { + position: relative; + padding: $-card-rectangle-footer-padding; + + @include halfPixelBorder('top', 0, $-card-content-border-color); + } + } + @include e(title-content) { + padding: 16px 0; + color: $-card-title-color; + font-size: $-card-title-fs; + } + @include e(content) { + color: $-card-content-color; + line-height: $-card-content-line-height; + } + @include e(footer) { + padding: $-card-footer-padding; + text-align: right; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-card/types.ts b/src/uni_modules/wot-design-uni/components/wd-card/types.ts new file mode 100644 index 0000000..8ee91f2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-card/types.ts @@ -0,0 +1,30 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeStringProp } from '../common/props' + +export type CardType = 'rectangle' + +export const cardProps = { + ...baseProps, + /** + * 卡片类型 + */ + type: String as PropType, + /** + * 卡片标题 + */ + title: String, + /** + * 标题自定义样式 + */ + customTitleClass: makeStringProp(''), + /** + * 内容自定义样式 + */ + customContentClass: makeStringProp(''), + /** + * 底部自定义样式 + */ + customFooterClass: makeStringProp('') +} + +export type CardProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-card/wd-card.vue b/src/uni_modules/wot-design-uni/components/wd-card/wd-card.vue new file mode 100644 index 0000000..259eb42 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-card/wd-card.vue @@ -0,0 +1,37 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-cell-group/index.scss b/src/uni_modules/wot-design-uni/components/wd-cell-group/index.scss new file mode 100644 index 0000000..983f8ff --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-cell-group/index.scss @@ -0,0 +1,56 @@ +@import '../common/abstracts/variable.scss'; +@import '../common/abstracts/_mixin.scss'; + +.wot-theme-dark { + @include b(cell-group) { + background-color: $-dark-background2; + + @include when(border) { + .wd-cell-group__title { + @include halfPixelBorder('bottom', 0, $-dark-border-color); + } + } + + @include e(title) { + background: $-dark-background2; + color: $-dark-color; + } + + @include e(right) { + color: $-dark-color3; + } + + @include e(body) { + background: $-dark-background2; + } + + } +} + +@include b(cell-group) { + background-color: $-color-white; + + @include when(border) { + .wd-cell-group__title { + @include halfPixelBorder; + } + } + @include e(title) { + position: relative; + display: flex; + justify-content: space-between; + padding: $-cell-group-padding; + background: $-color-white; + font-size: $-cell-group-title-fs; + color: $-cell-group-title-color; + font-weight: $-fw-medium; + line-height: 1.43; + } + @include e(right) { + color: $-cell-group-value-color; + font-size: $-cell-group-value-fs; + } + @include e(body) { + background: $-color-white; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-cell-group/types.ts b/src/uni_modules/wot-design-uni/components/wd-cell-group/types.ts new file mode 100644 index 0000000..f24a773 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-cell-group/types.ts @@ -0,0 +1,41 @@ +/* + * @Author: weisheng + * @Date: 2023-12-14 11:21:58 + * @LastEditTime: 2024-03-18 13:57:14 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-cell-group\types.ts + * 记得注释 + */ +import { type ExtractPropTypes, type InjectionKey } from 'vue' +import { baseProps, makeBooleanProp } from '../common/props' + +export type CelllGroupProvide = { + props: { + border?: boolean + } +} + +export const CELL_GROUP_KEY: InjectionKey = Symbol('wd-cell-group') + +export const cellGroupProps = { + ...baseProps, + /** + * 分组标题 + */ + title: String, + /** + * 分组右侧内容 + */ + value: String, + /** + * 分组启用插槽 + */ + useSlot: makeBooleanProp(false), + /** + * 是否展示边框线 + */ + border: makeBooleanProp(false) +} + +export type CellGroupProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue b/src/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue new file mode 100644 index 0000000..71aa7fe --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue @@ -0,0 +1,45 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-cell/index.scss b/src/uni_modules/wot-design-uni/components/wd-cell/index.scss new file mode 100644 index 0000000..cd27f68 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-cell/index.scss @@ -0,0 +1,189 @@ +@import '../common/abstracts/variable.scss'; +@import '../common/abstracts/_mixin.scss'; + +.wot-theme-dark { + @include b(cell) { + background-color: $-dark-background2; + color: $-dark-color; + + @include e(value) { + color: $-dark-color3; + } + + @include e(label) { + color: $-dark-color3; + } + + @include when(hover) { + background-color: $-dark-background4; + } + + @include when(border) { + .wd-cell__wrapper { + @include halfPixelBorder('top', 0, $-dark-border-color); + } + } + + :deep(.wd-cell__arrow-right) { + color: $-dark-color; + } + } +} + +@include b(cell) { + position: relative; + padding-left: $-cell-padding; + background-color: $-color-white; + text-decoration: none; + color: $-cell-title-color; + line-height: $-cell-line-height; + -webkit-tap-highlight-color: transparent; + + @include when(border) { + .wd-cell__wrapper { + @include halfPixelBorder('top'); + } + } + + @include e(wrapper) { + position: relative; + display: flex; + padding: $-cell-wrapper-padding $-cell-padding $-cell-wrapper-padding 0; + justify-content: space-between; + align-items: flex-start; + + @include when(vertical) { + display: block; + + .wd-cell__right { + margin-top: $-cell-vertical-top; + } + + .wd-cell__value { + text-align: left; + } + + .wd-cell__left { + margin-right: 0; + } + } + + @include when(label) { + padding: $-cell-wrapper-padding-with-label $-cell-padding $-cell-wrapper-padding-with-label 0; + } + } + + @include e(left) { + position: relative; + flex: 1; + display: flex; + text-align: left; + font-size: $-cell-title-fs; + box-sizing: border-box; + margin-right: $-cell-padding; + + @include when(required) { + padding-left: 12px; + + &::after { + position: absolute; + content: '*'; + top: 0; + left: 0; + font-size: $-cell-required-size; + color: $-cell-required-color; + } + } + } + + @include e(right) { + position: relative; + flex: 1; + } + + @include e(title) { + flex: 1; + width: 100%; + font-size: $-cell-title-fs; + } + + @include e(label) { + margin-top: 2px; + font-size: $-cell-label-fs; + color: $-cell-label-color; + @include lineEllipsis; + } + + @include edeep(icon) { + display: block; + position: relative; + margin-right: $-cell-icon-right; + font-size: $-cell-icon-size; + height: $-cell-line-height; + line-height: $-cell-line-height; + } + + @include e(body){ + display: flex; + } + + @include e(value) { + position: relative; + flex: 1; + font-size: $-cell-value-fs; + color: $-cell-value-color; + text-align: right; + vertical-align: middle; + } + + @include edeep(arrow-right) { + display: block; + margin-left: 8px; + width: $-cell-arrow-size; + font-size: $-cell-arrow-size; + color: $-cell-arrow-color; + height: $-cell-line-height; + line-height: $-cell-line-height; + } + + @include e(error-message){ + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } + + @include when(link) { + -webkit-tap-highlight-color: $-cell-tap-bg; + } + + @include when(hover) { + background-color: $-cell-tap-bg; + } + + @include when(large) { + .wd-cell__title { + font-size: $-cell-title-fs-large; + } + + .wd-cell__wrapper { + padding-top: $-cell-wrapper-padding-large; + padding-bottom: $-cell-wrapper-padding-large; + } + + .wd-cell__label { + font-size: $-cell-label-fs-large; + } + + :deep(.wd-cell__icon) { + font-size: $-cell-icon-size-large; + } + } + + @include when(center) { + .wd-cell__wrapper { + align-items: center; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-cell/types.ts b/src/uni_modules/wot-design-uni/components/wd-cell/types.ts new file mode 100644 index 0000000..4f61d50 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-cell/types.ts @@ -0,0 +1,90 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeStringProp, makeNumericProp } from '../common/props' + +import { type FormItemRule } from '../wd-form/types' + +export const cellProps = { + ...baseProps, + /** + * 标题 + */ + title: String, + /** + * 右侧内容 + */ + value: makeNumericProp(''), + /** + * 图标类名 + */ + icon: String, + /** + * 描述信息 + */ + label: String, + /** + * 是否为跳转链接 + */ + isLink: makeBooleanProp(false), + /** + * 跳转地址 + */ + to: String, + /** + * 跳转时是否替换栈顶页面 + */ + replace: makeBooleanProp(false), + /** + * 开启点击反馈,is-link 默认开启 + */ + clickable: makeBooleanProp(false), + /** + * 设置单元格大小,可选值:large + */ + size: String, + /** + * 是否展示边框线 + */ + border: Boolean, + /** + * 设置左侧标题宽度 + */ + titleWidth: String, + /** + * 是否垂直居中,默认顶部居中 + */ + center: makeBooleanProp(false), + /** + * 是否必填 + */ + required: makeBooleanProp(false), + /** + * 表单属性,上下结构 + */ + vertical: makeBooleanProp(false), + /** + * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的 + */ + prop: String, + /** + * 表单验证规则,结合wd-form组件使用 + */ + rules: makeArrayProp(), + /** + * icon 使用 slot 时的自定义样式 + */ + customIconClass: makeStringProp(''), + /** + * label 使用 slot 时的自定义样式 + */ + customLabelClass: makeStringProp(''), + /** + * value 使用 slot 时的自定义样式 + */ + customValueClass: makeStringProp(''), + /** + * title 使用 slot 时的自定义样式 + */ + customTitleClass: makeStringProp('') +} + +export type CellProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-cell/wd-cell.vue b/src/uni_modules/wot-design-uni/components/wd-cell/wd-cell.vue new file mode 100644 index 0000000..3c5ea4e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-cell/wd-cell.vue @@ -0,0 +1,121 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-checkbox-group/index.scss b/src/uni_modules/wot-design-uni/components/wd-checkbox-group/index.scss new file mode 100644 index 0000000..09d22aa --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-checkbox-group/index.scss @@ -0,0 +1,20 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(checkbox-group) { + background-color: $-dark-background2; + } +} +@include b(checkbox-group) { + background-color: $-checkbox-bg; + + // 上下20px 左右15px 内部间隔12px + @include when(button) { + width: 100%; + padding: 8px 3px 20px 15px; + box-sizing: border-box; + overflow: hidden; + height: auto; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-checkbox-group/types.ts b/src/uni_modules/wot-design-uni/components/wd-checkbox-group/types.ts new file mode 100644 index 0000000..e1785df --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-checkbox-group/types.ts @@ -0,0 +1,59 @@ +import { type ExtractPropTypes, type InjectionKey, type PropType } from 'vue' +import type { CheckShape } from '../wd-checkbox/types' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export type RequiredModelValue = { + modelValue: Array +} + +export type checkboxGroupProvide = { + props: Partial> & RequiredModelValue + changeSelectState: (value: string | number | boolean) => void +} + +export const CHECKBOX_GROUP_KEY: InjectionKey = Symbol('wd-checkbox-group') + +export const checkboxGroupProps = { + ...baseProps, + /** + * 绑定值 + */ + modelValue: { + type: Array as PropType>, + default: () => [] + }, + /** + * 表单模式 + */ + cell: makeBooleanProp(false), + /** + * 单选框形状,可选值:circle / square / button + */ + shape: makeStringProp('circle'), + /** + * 选中的颜色 + */ + checkedColor: String, + /** + * 禁用 + */ + disabled: makeBooleanProp(false), + /** + * 最小选中的数量 + */ + min: makeNumberProp(0), + /** + * 最大选中的数量,0 为无限数量,默认为 0 + */ + max: makeNumberProp(0), + /** + * 同行展示 + */ + inline: makeBooleanProp(false), + /** + * 设置大小,可选值:large + */ + size: String +} + +export type CheckboxGroupProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-checkbox-group/wd-checkbox-group.vue b/src/uni_modules/wot-design-uni/components/wd-checkbox-group/wd-checkbox-group.vue new file mode 100644 index 0000000..c6fef2c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-checkbox-group/wd-checkbox-group.vue @@ -0,0 +1,100 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-checkbox/index.scss b/src/uni_modules/wot-design-uni/components/wd-checkbox/index.scss new file mode 100644 index 0000000..e188d32 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-checkbox/index.scss @@ -0,0 +1,285 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(checkbox) { + @include e(shape) { + background: transparent; + border-color: $-checkbox-border-color; + color: $-checkbox-check-color; + } + + @include e(label) { + color: $-dark-color; + } + + @include when(disabled) { + .wd-checkbox__shape { + border-color: $-dark-color-gray; + background: $-dark-background4; + } + + .wd-checkbox__label { + color: $-dark-color-gray; + } + + :deep(.wd-checkbox__check) { + color: $-dark-color-gray; + } + + @include when(checked) { + .wd-checkbox__shape { + color: $-dark-color-gray; + } + + .wd-checkbox__label { + color: $-dark-color-gray; + } + } + + @include when(button) { + + .wd-checkbox__label { + border-color: #c8c9cc; + background: #3a3a3c; + color: $-dark-color-gray; + } + + @include when(checked) { + .wd-checkbox__label { + border-color: #c8c9cc; + background: #3a3a3c; + color: #c8c9cc; + } + } + } + } + + @include when(button) { + .wd-checkbox__label { + background-color: $-dark-background; + } + + @include when(checked) { + .wd-checkbox__label { + background-color: $-dark-background2; + } + } + } + + } +} + +@include b(checkbox) { + display: block; + margin-bottom: $-checkbox-margin; + font-size: 0; + -webkit-tap-highlight-color: transparent; + line-height: 1.2; + + @include when(last-child) { + margin-bottom: 0; + } + + @include e(shape) { + position: relative; + display: inline-block; + width: $-checkbox-size; + height: $-checkbox-size; + border: 2px solid $-checkbox-border-color; + border-radius: 50%; + color: $-checkbox-check-color; + background: $-checkbox-bg; + vertical-align: middle; + transition: background 0.2s; + box-sizing: border-box; + + @include when(square) { + border-radius: $-checkbox-square-radius; + } + } + + @include e(input) { + position: absolute; + width: 0; + height: 0; + margin: 0; + opacity: 0; + } + + @include edeep(btn-check) { + display: inline-block; + font-size: $-checkbox-icon-size; + margin-right: 4px; + vertical-align: middle; + } + + @include e(txt) { + display: inline-block; + vertical-align: middle; + line-height: 20px; + @include lineEllipsis; + } + + @include e(label) { + position: relative; + display: inline-block; + margin-left: $-checkbox-label-margin; + vertical-align: middle; + font-size: $-checkbox-label-fs; + color: $-checkbox-label-color; + } + + @include edeep(check) { + color: $-checkbox-check-color; + font-size: $-checkbox-icon-size; + opacity: 0; + transition: opacity 0.2s; + } + + @include when(checked) { + .wd-checkbox__shape { + color: $-checkbox-checked-color; + background: currentColor; + border-color: currentColor; + } + + :deep(.wd-checkbox__check) { + opacity: 1; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + } + } + + @include when(button) { + display: inline-block; + margin-bottom: 0; + margin-right: $-checkbox-margin; + vertical-align: top; + font-size: $-checkbox-button-font-size; + + @include when(last-child) { + margin-right: 0; + } + + .wd-checkbox__shape { + width: 0; + height: 0; + overflow: hidden; + opacity: 0; + border: none; + } + + .wd-checkbox__label { + display: inline-flex; + flex-direction: row; + justify-content: center; + align-items: center; + min-width: $-checkbox-button-min-width; + height: $-checkbox-button-height; + font-size: $-checkbox-button-font-size; + margin-left: 0; + padding: 5px 15px; + border: 1px solid $-checkbox-button-border; + background-color: $-checkbox-button-bg; + border-radius: $-checkbox-button-radius; + transition: color 0.2s, border 0.2s; + box-sizing: border-box; + } + + @include when(checked) { + .wd-checkbox__label { + color: $-checkbox-checked-color; + background-color: $-checkbox-bg; + border-color: $-checkbox-checked-color; + border-color: currentColor; + } + } + } + + @include when(inline) { + display: inline-block; + margin-bottom: 0; + margin-right: $-checkbox-margin; + + @include when(last-child) { + margin-right: 0; + } + } + + @include when(disabled) { + .wd-checkbox__shape { + border-color: $-checkbox-border-color; + background: $-checkbox-disabled-check-bg; + } + + .wd-checkbox__label { + color: $-checkbox-disabled-label-color; + } + + @include when(checked) { + .wd-checkbox__shape { + color: $-checkbox-disabled-check-color; + } + + .wd-checkbox__label { + color: $-checkbox-disabled-label-color; + } + } + + @include when(button) { + .wd-checkbox__label { + background: $-checkbox-disabled-color; + border-color: $-checkbox-button-border; + color: $-checkbox-disabled-label-color; + } + + @include when(checked) { + .wd-checkbox__label { + border-color: $-checkbox-button-disabled-border; + } + } + } + } + + // 以下内容用于解决父子组件样式隔离的问题 —— START + @include when(cell-box) { + padding: 13px 15px; + margin: 0; + + @include when(large) { + padding: 14px 15px; + } + } + + @include when(button-box) { + display: inline-flex; + width: 33.3333%; + padding: 12px 12px 0 0; + box-sizing: border-box; + + .wd-checkbox__label { + width: 100%; + } + + &:last-child::after { + content: ""; + display: table; + clear: both; + } + } + + @include when(large) { + .wd-checkbox__shape { + width: $-checkbox-large-size; + height: $-checkbox-large-size; + font-size: $-checkbox-large-size; + } + + .wd-checkbox__label { + font-size: $-checkbox-large-label-fs; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-checkbox/types.ts b/src/uni_modules/wot-design-uni/components/wd-checkbox/types.ts new file mode 100644 index 0000000..6c4bced --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-checkbox/types.ts @@ -0,0 +1,66 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeStringProp } from '../common/props' + +export type CheckShape = 'circle' | 'square' | 'button' + +export const checkboxProps = { + ...baseProps, + customLabelClass: makeStringProp(''), + customShapeClass: makeStringProp(''), + /** + * 单选框选中时的值 + */ + modelValue: { + type: [String, Number, Boolean], + required: true, + default: false + }, + /** + * 单选框形状,可选值:circle / square / button + */ + shape: makeStringProp('circle'), + /** + * 选中的颜色 + */ + checkedColor: String, + /** + * 禁用 + */ + disabled: { + type: [Boolean, null] as PropType, + default: null + }, + /** + * 选中值,在 checkbox-group 中使用无效,需同 false-value 一块使用 + */ + trueValue: { + type: [String, Number, Boolean], + default: true + }, + /** + * 非选中时的值,在 checkbox-group 中使用无效,需同 true-value 一块使用 + */ + falseValue: { + type: [String, Number, Boolean], + default: false + }, + /** + * 设置大小,可选值:large + */ + size: String, + /** + * 文字位置最大宽度 + */ + maxWidth: String +} + +export type CheckboxProps = ExtractPropTypes + +export type CheckboxExpose = { + /** + * 切换当前选中状态 + */ + toggle: () => void +} + +export type CheckboxInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-checkbox/wd-checkbox.vue b/src/uni_modules/wot-design-uni/components/wd-checkbox/wd-checkbox.vue new file mode 100644 index 0000000..b463ecf --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-checkbox/wd-checkbox.vue @@ -0,0 +1,198 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-circle/index.scss b/src/uni_modules/wot-design-uni/components/wd-circle/index.scss new file mode 100644 index 0000000..dc7d13e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-circle/index.scss @@ -0,0 +1,18 @@ +@import "../common/abstracts/variable.scss"; +@import "../common/abstracts/_mixin.scss"; + +@include b(circle) { + position: relative; + display: inline-block; + text-align: center; + + @include e(text) { + position: absolute; + z-index: 1; + top: 50%; + left: 0; + width: 100%; + transform: translateY(-50%); + color: $-circle-text-color; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-circle/types.ts b/src/uni_modules/wot-design-uni/components/wd-circle/types.ts new file mode 100644 index 0000000..881ef73 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-circle/types.ts @@ -0,0 +1,54 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +// 进度条端点的形状,可选值为 "butt" | "round" | "square" +export type StrokeLinecapType = 'butt' | 'round' | 'square' + +export const circleProps = { + ...baseProps, + /** + * 当前进度 + */ + modelValue: makeNumberProp(0), + /** + * 圆环直径,默认单位为 px + */ + size: makeNumberProp(100), + /** + * 进度条颜色,传入对象格式可以定义渐变色 + */ + color: { + type: [String, Object] as PropType>, + default: '#4d80f0' + }, + /** + * 轨道颜色 + */ + layerColor: makeStringProp('#EBEEF5'), + /** + * 填充颜色 + */ + fill: String, + /** + * 动画速度(单位为 rate/s) + */ + speed: makeNumberProp(50), + /** + * 文字 + */ + text: String, + /** + * 进度条宽度 单位px + */ + strokeWidth: makeNumberProp(10), + /** + * 进度条端点的形状,可选值为 "butt" | "round" | "square" + */ + strokeLinecap: makeStringProp('round'), + /** + * 是否顺时针增加 + */ + clockwise: makeBooleanProp(true) +} + +export type CircleProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue b/src/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue new file mode 100644 index 0000000..6506f1f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-col-picker/index.scss b/src/uni_modules/wot-design-uni/components/wd-col-picker/index.scss new file mode 100644 index 0000000..9c16527 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-col-picker/index.scss @@ -0,0 +1,243 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(col-picker) { + + @include when(border) { + .wd-col-picker__cell { + @include halfPixelBorder('top', $-cell-padding, $-dark-border-color); + } + } + + @include e(label) { + color: $-dark-color; + } + + @include e(cell) { + background-color: $-dark-background2; + color: $-dark-color; + + @include when(disabled) { + .wd-col-picker__value { + color: $-dark-color3; + } + } + } + + @include e(list-item) { + + @include when(disabled) { + color: $-dark-color3; + } + } + + @include e(list-item-tip) { + color: $-dark-color-gray; + } + + @include e(value) { + color: $-dark-color; + + @include m(placeholder) { + color: $-dark-color-gray; + } + } + + :deep(.wd-col-picker__arrow) { + color: $-dark-color; + } + + @include e(list) { + color: $-dark-color; + } + + @include e(selected) { + color: $-dark-color; + } + } +} + +@include b(col-picker) { + @include when(border) { + .wd-col-picker__cell { + @include halfPixelBorder('top', $-cell-padding); + } + } + @include e(cell) { + position: relative; + display: flex; + padding: $-cell-wrapper-padding $-cell-padding; + align-items: flex-start; + background-color: $-color-white; + text-decoration: none; + color: $-cell-title-color; + font-size: $-cell-title-fs; + overflow: hidden; + line-height: $-cell-line-height; + } + @include e(cell) { + @include when(disabled) { + .wd-col-picker__value { + color: $-input-disabled-color; + } + } + @include when(align-right) { + .wd-col-picker__value { + text-align: right; + } + } + @include when(error) { + .wd-col-picker__value { + color: $-input-error-color; + } + :deep(.wd-col-picker__arrow) { + color: $-input-error-color; + } + } + @include when(large) { + font-size: $-cell-title-fs-large; + + :deep(.wd-col-picker__arrow) { + font-size: $-cell-icon-size-large; + } + } + } + @include e(error-message){ + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } + @include e(label) { + position: relative; + width: $-input-cell-label-width; + margin-right: $-cell-padding; + color: $-cell-title-color; + box-sizing: border-box; + + @include when(required) { + padding-left: 12px; + + &::after { + position: absolute; + left: 0; + top: 2px; + content: '*'; + font-size: $-cell-required-size; + line-height: 1.1; + color: $-cell-required-color; + } + } + } + @include e(value-wraper) { + display: flex; + } + @include e(value) { + flex: 1; + margin-right: 10px; + color: $-cell-value-color; + + @include when(ellipsis) { + @include lineEllipsis; + } + @include m(placeholder) { + color: $-input-placeholder-color; + } + } + @include e(body) { + flex: 1; + } + @include edeep(arrow) { + display: block; + font-size: $-cell-icon-size; + color: $-cell-arrow-color; + line-height: $-cell-line-height; + } + @include e(selected) { + height: $-col-picker-selected-height; + font-size: $-col-picker-selected-fs; + color: $-col-picker-selected-color; + overflow: hidden; + } + @include e(selected-container){ + position: relative; + display: flex; + user-select: none; + } + @include e(selected-item) { + flex: 0 0 auto; + height: $-col-picker-selected-height; + line-height: $-col-picker-selected-height; + padding: $-col-picker-selected-padding; + + @include when(selected) { + font-weight: $-col-picker-selected-fw; + } + } + @include e(selected-line) { + position: absolute; + bottom: 5px; + width: $-col-picker-line-width; + left: 0; + height: $-col-picker-line-height; + background: $-col-picker-line-color; + z-index: 1; + border-radius: calc($-col-picker-line-height / 2); + box-shadow: $-col-picker-line-box-shadow; + } + @include e(list-container){ + position: relative; + } + @include e(list) { + height: $-col-picker-list-height; + padding-bottom: $-col-picker-list-padding-bottom; + box-sizing: border-box; + overflow: auto; + color: $-col-picker-list-color; + font-size: $-col-picker-list-fs; + -webkit-overflow-scrolling: touch; + } + @include e(list-item) { + display: flex; + padding: $-col-picker-list-item-padding; + align-items: flex-start; + + @include when(selected) { + color: $-col-picker-list-color-checked; + + :deep(.wd-col-picker__checked) { + opacity: 1; + } + } + @include when(disabled) { + color: $-col-picker-list-color-disabled; + } + } + @include e(list-item-label) { + line-height: 1.285; + } + @include e(list-item-tip) { + margin-top: 2px; + font-size: $-col-picker-list-fs-tip; + color: $-col-picker-list-color-tip; + } + @include edeep(checked) { + display: block; + margin-left: 4px; + font-size: $-col-picker-list-checked-icon-size; + color: $-col-picker-list-color-checked; + opacity: 0; + } + @include e(loading) { + display: flex; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + align-items: center; + justify-content: center; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-col-picker/types.ts b/src/uni_modules/wot-design-uni/components/wd-col-picker/types.ts new file mode 100644 index 0000000..ceceda6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-col-picker/types.ts @@ -0,0 +1,158 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp, numericProp } from '../common/props' +import type { FormItemRule } from '../wd-form/types' + +export const colPickerProps = { + ...baseProps, + /** + * 选中项 + */ + modelValue: makeRequiredProp(Array as PropType>), + /** + * 选择器数据,二维数组 + */ + columns: makeArrayProp[]>(), + /** + * 选择器左侧文案 + */ + label: String, + /** + * 设置左侧标题宽度 + */ + labelWidth: makeStringProp('33%'), + /** + * 使用 label 插槽时设置该选项 + */ + useLabelSlot: makeBooleanProp(false), + /** + * 使用默认插槽时设置该选项 + */ + useDefaultSlot: makeBooleanProp(false), + /** + * 禁用 + */ + disabled: makeBooleanProp(false), + /** + * 只读 + */ + readonly: makeBooleanProp(false), + /** + * 选择器占位符 + */ + placeholder: String, + /** + * 弹出层标题 + */ + title: String, + /** + * 接收当前列的选中项 item、当前列下标、当前列选中项下标下一列数据处理函数 resolve、结束选择 finish + */ + columnChange: Function as PropType, + /** + * 自定义展示文案的格式化函数,返回一个字符串 + */ + displayFormat: Function as PropType, + /** + * 确定前校验函数,接收 (value, resolve) 参数,通过 resolve 继续执行 picker,resolve 接收 1 个 boolean 参数 + */ + beforeConfirm: Function as PropType, + /** + * 选择器的值靠右展示 + */ + alignRight: makeBooleanProp(false), + /** + * 是否为错误状态,错误状态时右侧内容为红色 + */ + error: makeBooleanProp(false), + /** + * 是否必填 + */ + required: makeBooleanProp(false), + /** + * 设置选择器大小,可选值:large + */ + size: String, + /** + * 选项对象中,value 对应的 key + */ + valueKey: makeStringProp('value'), + /** + * 选项对象中,展示的文本对应的 key + */ + labelKey: makeStringProp('label'), + /** + * 选项对象中,提示文案对应的 key + */ + tipKey: makeStringProp('tip'), + /** + * loading 图标的颜色 + */ + loadingColor: makeStringProp('#4D80F0'), + /** + * 点击遮罩是否关闭 + */ + closeOnClickModal: makeBooleanProp(true), + /** + * 自动触发 column-change 事件来补全数据,当 columns 为空数组或者 columns 数组长度小于 value 数组长度时,会自动触发 column-change + */ + autoComplete: makeBooleanProp(false), + /** + * 弹窗层级 + */ + zIndex: makeNumberProp(15), + /** + * 弹出面板是否设置底部安全距离(iphone X 类型的机型) + */ + safeAreaInsetBottom: makeBooleanProp(true), + /** + * 是否超出隐藏 + */ + ellipsis: makeBooleanProp(false), + /** + * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的 + */ + prop: String, + /** + * 表单验证规则,结合wd-form组件使用 + */ + rules: makeArrayProp(), + /** + * 底部条宽度,单位像素 + */ + lineWidth: numericProp, + /** + * 底部条高度,单位像素 + */ + lineHeight: numericProp, + /** + * label 外部自定义样式 + */ + customViewClass: makeStringProp(''), + /** + * value 外部自定义样式 + */ + customLabelClass: makeStringProp(''), + customValueClass: makeStringProp('') +} + +export type ColPickerProps = ExtractPropTypes + +export type ColPickerColumnChangeOption = { + selectedItem: Record + index: number + rowIndex: number + resolve: (nextColumn: Record[]) => void + finish: (isOk?: boolean) => void +} +export type ColPickerColumnChange = (option: ColPickerColumnChangeOption) => void +export type ColPickerDisplayFormat = (selectedItems: Record[]) => string +export type ColPickerBeforeConfirm = (value: (string | number)[], selectedItems: Record[], resolve: (isPass: boolean) => void) => void + +export type ColPickerExpose = { + // 关闭picker弹框 + close: () => void + // 打开picker弹框 + open: () => void +} + +export type ColPickerInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue b/src/uni_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue new file mode 100644 index 0000000..138a507 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue @@ -0,0 +1,500 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-col/index.scss b/src/uni_modules/wot-design-uni/components/wd-col/index.scss new file mode 100644 index 0000000..160b919 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-col/index.scss @@ -0,0 +1,19 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +$i: 1; + +@include b(col) { + float: left; + box-sizing: border-box; +} + +@while $i <= 24 { + .wd-col__#{$i} { + width: calc(100% / 24 * $i); + } + .wd-col__offset-#{$i} { + margin-left: calc(100% / 24 * $i); + } + $i: $i + 1; +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-col/types.ts b/src/uni_modules/wot-design-uni/components/wd-col/types.ts new file mode 100644 index 0000000..78c6a8a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-col/types.ts @@ -0,0 +1,15 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeNumberProp } from '../common/props' + +export const colProps = { + ...baseProps, + /** + * 列元素宽度 + */ + span: makeNumberProp(24), + /** + * 列元素偏移距离 + */ + offset: makeNumberProp(0) +} +export type ColProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-col/wd-col.vue b/src/uni_modules/wot-design-uni/components/wd-col/wd-col.vue new file mode 100644 index 0000000..c1eec23 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-col/wd-col.vue @@ -0,0 +1,79 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-collapse-item/index.scss b/src/uni_modules/wot-design-uni/components/wd-collapse-item/index.scss new file mode 100644 index 0000000..542f9a3 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-collapse-item/index.scss @@ -0,0 +1,83 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(collapse-item) { + @include halfPixelBorder('top', 0, $-dark-border-color); + + + @include e(title) { + color: $-dark-color; + } + + @include e(body) { + color: $-dark-color3; + } + + @include when(disabled) { + .wd-collapse-item__title { + color: $-dark-color-gray; + } + .wd-collapse-item__arrow { + color: $-dark-color-gray; + } + } + } +} + + +@include b(collapse-item) { + position: relative; + @include halfPixelBorder('top'); + + + @include e(header) { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + padding: $-collapse-header-padding; + overflow: hidden; + user-select: none; + } + + @include e(title) { + color: $-collapse-title-color; + font-weight: $-fw-medium; + font-size: $-collapse-title-fs; + } + + @include edeep(arrow) { + display: block; + font-size: $-collapse-arrow-size; + color: $-collapse-arrow-color; + transition: transform 0.3s; + + @include when(retract) { + transform: rotate(-180deg); + } + } + + @include e(wrapper) { + position: relative; + transition: height 0.3s ease-in-out; + overflow: hidden; + will-change: height; + } + + @include e(body) { + color: $-collapse-body-color; + font-size: $-collapse-body-fs; + padding: $-collapse-body-padding; + line-height: 1.43; + } + + @include when(disabled) { + .wd-collapse-item__title { + color: $-collapse-disabled-color; + } + .wd-collapse-item__arrow { + color: $-collapse-disabled-color; + } + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-collapse-item/types.ts b/src/uni_modules/wot-design-uni/components/wd-collapse-item/types.ts new file mode 100644 index 0000000..c796c7c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-collapse-item/types.ts @@ -0,0 +1,36 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeRequiredProp, makeStringProp } from '../common/props' + +export type CollapseItemBeforeExpand = (name: string) => void + +export const collapseItemProps = { + ...baseProps, + /** + * 折叠栏的标题, 可通过 slot 传递自定义内容 + */ + title: makeStringProp(''), + /** + * 禁用折叠栏 + */ + disabled: makeBooleanProp(false), + /** + * 折叠栏的标识符 + */ + name: makeRequiredProp(String), + /** + * 打开前的回调函数,返回 false 可以阻止打开,支持返回 Promise + */ + beforeExpend: Function as PropType +} + +export type CollapseItemProps = ExtractPropTypes + +export type CollapseItemExpose = { + /** + * 获取展开状态 + * @returns boolean + */ + getExpanded: () => boolean +} + +export type CollapseItemInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-collapse-item/wd-collapse-item.vue b/src/uni_modules/wot-design-uni/components/wd-collapse-item/wd-collapse-item.vue new file mode 100644 index 0000000..244fd2b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-collapse-item/wd-collapse-item.vue @@ -0,0 +1,156 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-collapse/index.scss b/src/uni_modules/wot-design-uni/components/wd-collapse/index.scss new file mode 100644 index 0000000..552dc97 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-collapse/index.scss @@ -0,0 +1,55 @@ +@import "../common/abstracts/variable"; +@import "../common/abstracts/mixin"; + +.wot-theme-dark { + @include b(collapse) { + background: $-dark-background2; + + @include e(content) { + color: $-dark-color3; + } + } +} + +@include b(collapse) { + background: $-color-white; + + @include when(viewmore) { + padding: $-collapse-side-padding; + } + @include e(content) { + font-size: $-collapse-body-fs; + color: $-collapse-body-color; + + @include when(retract) { + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + font-size: $-collapse-retract-fs; + } + } + @include e(more) { + display: inline-block; + font-size: $-collapse-retract-fs; + margin-top: 8px; + color: $-collapse-more-color; + user-select: none; + } + @include e(more-txt) { + display: inline-block; + vertical-align: middle; + margin-right: 4px; + } + @include e(arrow) { + display: inline-block; + vertical-align: middle; + transition: transform 0.1s; + font-size: $-collapse-arrow-size; + height: $-collapse-arrow-size; + line-height: $-collapse-arrow-size; + + @include when(retract) { + transform: rotate(-180deg); + } + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-collapse/types.ts b/src/uni_modules/wot-design-uni/components/wd-collapse/types.ts new file mode 100644 index 0000000..0aab68a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-collapse/types.ts @@ -0,0 +1,58 @@ +import { type ComponentPublicInstance, type ExtractPropTypes, type InjectionKey, type PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export type CollapseToggleAllOptions = + | boolean + | { + expanded?: boolean + skipDisabled?: boolean + } + +export type CollapseProvide = { + props: Partial + toggle: (name: string, expanded: boolean) => void +} + +export const COLLAPSE_KEY: InjectionKey = Symbol('wd-collapse') + +export const collapseProps = { + ...baseProps, + /** + * 查看更多模式下的插槽外部自定义样式 + */ + customMoreSlotClass: makeStringProp(''), + /** + * 绑定值 + */ + modelValue: { + type: [String, Array, Boolean] as PropType | boolean> + }, + /** + * 手风琴模式 + */ + accordion: makeBooleanProp(false), + /** + * 查看更多的折叠面板 + */ + viewmore: makeBooleanProp(false), + /** + * 查看更多的自定义插槽使用标志 + */ + useMoreSlot: makeBooleanProp(false), + /** + * 查看更多的折叠面板,收起时的显示行数 + */ + lineNum: makeNumberProp(2) +} + +export type CollapseProps = ExtractPropTypes + +export type CollapseExpose = { + /** + * 切换所有面板展开状态,传 true 为全部展开,false 为全部收起,不传参为全部切换 + * @param options 面板状态 + */ + toggleAll: (options?: boolean | CollapseToggleAllOptions) => void +} + +export type CollapseInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-collapse/wd-collapse.vue b/src/uni_modules/wot-design-uni/components/wd-collapse/wd-collapse.vue new file mode 100644 index 0000000..23d74af --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-collapse/wd-collapse.vue @@ -0,0 +1,153 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-config-provider/types.ts b/src/uni_modules/wot-design-uni/components/wd-config-provider/types.ts new file mode 100644 index 0000000..6a79b36 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-config-provider/types.ts @@ -0,0 +1,1022 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { makeStringProp } from '../common/props' + +export type ConfigProviderTheme = 'light' | 'dark' + +export const configProviderProps = { + /** + * 主题风格,设置为 dark 来开启深色模式,全局生效 + */ + theme: makeStringProp('light'), + /** + * 自定义主题变量 + */ + themeVars: { + type: Object as PropType, + default: () => ({}) + } +} + +export type ConfigProviderProps = ExtractPropTypes + +export type baseThemeVars = { + colorTheme?: string // 主题色 + colorWhite?: string // 用于mix的白色 + colorBlack?: string // 用于mix的黑色 + colorSuccess?: string // 成功色 + colorWarning?: string // 警告色 + colorDanger?: string // 危险出错色 + colorPurple?: string // 紫色 + colorYellow?: string // 黄色 + colorBlue?: string // 蓝色 + colorInfo?: string // 信息色 + colorGray1?: string // 灰色1 + colorGray2?: string // 灰色2 + colorGray3?: string // 灰色3 + colorGray4?: string // 灰色4 + colorGray5?: string // 灰色5 + colorGray6?: string // 灰色6 + colorGray7?: string // 灰色7 + colorGray8?: string // 灰色8 + fontGray1?: string // 字体灰色1 + fontGray2?: string // 字体灰色2 + fontGray3?: string // 字体灰色3 + fontGray4?: string // 字体灰色4 + fontWhite1?: string // 字体白色1 + fontWhite2?: string // 字体白色2 + fontWhite3?: string // 字体白色3 + fontWhite4?: string // 字体白色4 + colorTitle?: string // 模块标题/重要正文 + colorContent?: string // 普通正文 + colorSecondary?: string // 次要信息,注释/补充/正文 + colorAid?: string // 辅助文字字号,弱化信息,引导性/不可点文字 + colorTip?: string // 失效、默认提示文字 + colorBorder?: string // 控件边框线 + colorBorderLight?: string // 分割线颜色 + colorBg?: string // 背景色、禁用填充色 + darkBackground?: string // 深色背景1 + darkBackground2?: string // 深色背景2 + darkBackground3?: string // 深色背景3 + darkBackground4?: string // 深色背景4 + darkBackground5?: string // 深色背景5 + darkBackground6?: string // 深色背景6 + darkBackground7?: string // 深色背景7 + darkColor?: string // 深色字体1 + darkColor2?: string // 深色字体2 + darkColor3?: string // 深色字体3 + darkColorGray?: string // 深色灰色 + darkBorderColor?: string // 深色边框颜色 + colorIcon?: string // icon颜色 + colorIconActive?: string // icon颜色hover + colorIconDisabled?: string // icon颜色disabled + fsBig?: string // 大型标题字号 + fsImportant?: string // 重要数据字号 + fsTitle?: string // 标题字号/重要正文字号 + fsContent?: string // 普通正文字号 + fsSecondary?: string // 次要信息字号 + fsAid?: string // 辅助文字字号 + fwMedium?: string // 字重500 + fwSemibold?: string // 字重600 + sizeSidePadding?: string // 屏幕两边留白padding +} + +export type actionSheetThemeVars = { + actionSheetWeight?: string + actionSheetRadius?: string + actionSheetLoadingSize?: string + actionSheetActionHeight?: string + actionSheetColor?: string + actionSheetFs?: string + actionSheetActiveColor?: string + actionSheetSubnameFs?: string + actionSheetSubnameColor?: string + actionSheetDisabledColor?: string + actionSheetBg?: string + actionSheetTitleHeight?: string + actionSheetTitleFs?: string + actionSheetCloseFs?: string + actionSheetCloseColor?: string + actionSheetCloseTop?: string + actionSheetCloseRight?: string + actionSheetCancelColor?: string + actionSheetCancelHeight?: string + actionSheetCancelBg?: string + actionSheetCancelRadius?: string + actionSheetPanelPadding?: string + actionSheetPanelImgFs?: string + actionSheetPanelImgRadius?: string +} + +export type badgeThemeVars = { + badgeBg?: string + badgeColor?: string + badgeFs?: string + badgePadding?: string + badgeHeight?: string + badgePrimary?: string + badgeSuccess?: string + badgeWarning?: string + badgeDanger?: string + badgeInfo?: string + badgeDotSize?: string + badgeBorder?: string +} + +export type buttonThemeVars = { + buttonDisabledOpacity?: string + + buttonSmallHeight?: string + buttonSmallPadding?: string + buttonSmallFs?: string + buttonSmallRadius?: string + buttonSmallLoading?: string + + buttonMediumHeight?: string + buttonMediumPadding?: string + buttonMediumFs?: string + buttonMediumRadius?: string + buttonMediumLoading?: string + buttonMediumBoxShadowSize?: string + + buttonLargeHeight?: string + buttonLargePadding?: string + buttonLargeFs?: string + buttonLargeRadius?: string + buttonLargeLoading?: string + buttonLargeBoxShadowSize?: string + + buttonIconFs?: string + buttonIconSize?: string + buttonIconColor?: string + buttonIconDisabledColor?: string + + buttonNormalColor?: string + buttonNormalDisabledColor?: string + + buttonPlainBgColor?: string + + buttonPrimaryColor?: string + buttonPrimaryBgColor?: string + buttonPrimaryBoxShadowColor?: string + + buttonSuccessColor?: string + buttonSuccessBgColor?: string + buttonSuccessBoxShadowColor?: string + + buttonInfoColor?: string + buttonInfoBgColor?: string + buttonInfoPlainBorderColor?: string + buttonInfoPlainNormalColor?: string + + buttonWarningColor?: string + buttonWarningBgColor?: string + buttonWarningBoxShadowColor?: string + + buttonErrorColor?: string + buttonErrorBgColor?: string + buttonErrorBoxShadowColor?: string + + buttonTextHoverOpacity?: string +} + +export type cellThemeVars = { + cellPadding?: string + cellLineHeight?: string + + cellGroupTitleFs?: string + cellGroupPadding?: string + cellGroupTitleColor?: string + cellGroupValueFs?: string + cellGroupValueColor?: string + + cellWrapperPadding?: string + cellWrapperPaddingLarge?: string + + cellWrapperPaddingWithLabel?: string + cellIconRight?: string + cellIconSize?: string + cellTitleFs?: string + cellTitleColor?: string + cellLabelFs?: string + cellLabelColor?: string + cellValueFs?: string + cellValueColor?: string + cellArrowSize?: string + cellArrowColor?: string + cellTapBg?: string + + cellTitleFsLarge?: string + cellLabelFsLarge?: string + cellIconSizeLarge?: string + + cellRequiredColor?: string + cellRequiredSize?: string + cellVerticalTop?: string +} + +export type calendarThemeVars = { + calendarFs?: string + calendarPanelPadding?: string + calendarPanelTitleFs?: string + calendarPanelTitleColor?: string + calendarWeekColor?: string + calendarWeekHeight?: string + calendarWeekFs?: string + calendarDayFs?: string + calendarDayColor?: string + calendarDayFw?: string + calendarDayHeight?: string + calendarMonthWidth?: string + calendarActiveColor?: string + calendarDisabledColor?: string + calendarRangeColor?: string + calendarActiveBorder?: string + calendarInfoFs?: string +} + +export type checkboxThemeVars = { + checkboxMargin?: string + checkboxBg?: string + checkboxLabelMargin?: string + checkboxSize?: string + checkboxIconSize?: string + checkboxBorderColor?: string + checkboxCheckColor?: string + checkboxLabelFs?: string + checkboxLabelColor?: string + checkboxCheckedColor?: string + + checkboxDisabledColor?: string + checkboxDisabledLabelColor?: string + checkboxDisabledCheckColor?: string + checkboxDisabledCheckBg?: string + checkboxSquareRadius?: string + + checkboxLargeSize?: string + checkboxLargeLabelFs?: string + + checkboxButtonHeight?: string + checkboxButtonMinWidth?: string + checkboxButtonRadius?: string + checkboxButtonBg?: string + checkboxButtonFontSize?: string + checkboxButtonBorder?: string + checkboxButtonDisabledBorder?: string +} + +export type collapseThemeVars = { + collapseSidePadding?: string + collapseBodyPadding?: string + collapseHeaderPadding?: string + collapseTitleColor?: string + collapseTitleFs?: string + collapseArrowSize?: string + collapseArrowColor?: string + collapseBodyFs?: string + collapseBodyColor?: string + collapseDisabledColor?: string + collapseRetractFs?: string + collapseMoreColor?: string +} + +export type dividerThemeVars = { + dividerPadding?: string + dividerColor?: string + dividerLineColor?: string + dividerFs?: string +} + +export type dropMenuThemeVars = { + dropMenuHeight?: string + dropMenuColor?: string + dropMenuFs?: string + dropMenuArrowFs?: string + + dropMenuSidePadding?: string + dropMenuDisabledColor?: string + dropMenuItemHeight?: string + dropMenuItemColor?: string + dropMenuItemFs?: string + dropMenuItemColorActive?: string + dropMenuItemColorTip?: string + dropMenuItemFsTip?: string + dropMenuOptionCheckSize?: string + dropMenuLineColor?: string + dropMenuLineHeight?: string +} + +export type inputNumberThemeVars = { + inputNumberColor?: string + inputNumberBorderColor?: string + inputNumberDisabledColor?: string + inputNumberHeight?: string + inputNumberBtnWidth?: string + inputNumberInputWidth?: string + inputNumberRadius?: string + inputNumberFs?: string + inputNumberIconSize?: string + inputNumberIconColor?: string +} + +export type inputThemeVars = { + inputPadding?: string + inputBorderColor?: string + inputNotEmptyBorderColor?: string + inputFs?: string + inputFsLarge?: string + inputIconMargin?: string + inputColor?: string + inputPlaceholderColor?: string + inputDisabledColor?: string + inputErrorColor?: string + inputIconColor?: string + inputClearColor?: string + inputCountColor?: string + inputCountCurrentColor?: string + inputBg?: string + + inputCellBg?: string + inputCellBorderColor?: string + inputCellPadding?: string + inputCellPaddingLarge?: string + inputCellHeight?: string + inputCellLabelWidth?: string + inputInnerHeight?: string + inputInnerHeightNoBorder?: string + inputCountFs?: string + inputCountFsLarge?: string + inputIconSize?: string + inputIconSizeLarge?: string +} + +export type textareaThemeVars = { + textareaPadding?: string + textareaBorderColor?: string + textareaNotEmptyBorderColor?: string + textareaFs?: string + textareaFsLarge?: string + textareaIconMargin?: string + textareaColor?: string + textareaIconColor?: string + textareaClearColor?: string + textareaCountColor?: string + textareaCountCurrentColor?: string + textareaBg?: string + textareaCellBorderColor?: string + textareaCellPadding?: string + textareaCellPaddingLarge?: string + textareaCellHeight?: string + textareaCountFs?: string + textareaCountFsLarge?: string + textareaIconSize?: string + textareaIconSizeLarge?: string +} + +export type loadmoreThemeVars = { + loadmoreHeight?: string + loadmoreColor?: string + loadmoreFs?: string + loadmoreErrorColor?: string + loadmoreRefreshFs?: string + loadmoreLoadingSize?: string +} + +export type messageBoxThemeVars = { + messageBoxWidth?: string + messageBoxBg?: string + messageBoxRadius?: string + messageBoxPadding?: string + messageBoxTitleFs?: string + messageBoxTitleColor?: string + messageBoxContentFs?: string + messageBoxContentColor?: string + messageBoxContentMaxHeight?: string + messageBoxContentScrollbarWidth?: string + messageBoxContentScrollbarColor?: string + messageBoxInputErrorColor?: string +} + +export type noticeBarThemeVars = { + noticeBarFs?: string + noticeBarLineHeight?: string + noticeBarBorderRadius?: string + noticeBarPadding?: string + noticeBarWarningBg?: string + noticeBarInfoBg?: string + noticeBarDangerBg?: string + noticeBarWarningColor?: string + noticeBarInfoColor?: string + noticeBarDangerColor?: string + noticeBarPrefixSize?: string + noticeBarCloseBg?: string + noticeBarCloseSize?: string + noticeBarCloseColor?: string + noticeBarWrapPadding?: string +} + +export type paginationThemeVars = { + paginationContentPadding?: string + paginationMessagePadding?: string + paginationMessageFs?: string + paginationMessageColor?: string + paginationNavBorder?: string + paginationNavBorderRadius?: string + paginationNavFs?: string + paginationNavWidth?: string + paginationNavColor?: string + paginationNavContentFs?: string + paginationNavSepatatorPadding?: string + paginationNavCurrentColor?: string + paginationIconSize?: string +} + +export type pickerThemeVars = { + pickerToolbarHeight?: string + pickerActionHeight?: string + pickerToolbarFinishColor?: string + pickerToolbarCancelColor?: string + pickerToolbarFs?: string + pickerToolbarTitleColor?: string + pickerColumnFs?: string + pickerBg?: string + pickerColumnActiveFs?: string + pickerColumnColor?: string + pickerColumnHeight?: string + pickerColumnItemHeight?: string + pickerColumnSelectBg?: string + pickerLoadingButtonColor?: string + pickerColumnPadding?: string + + pickerColumnDisabledColor?: string + pickerMask?: string + pickerLoadingBg?: string + pickerRegionSeparatorColor?: string + pickerCellArrowSizeLarge?: string + + pickerRegionColor?: string + pickerRegionBgActiveColor?: string + + pickerRegionFs?: string +} + +export type colPickerThemeVars = { + colPickerSelectedHeight?: string + colPickerSelectedPadding?: string + colPickerSelectedFs?: string + colPickerSelectedColor?: string + colPickerSelectedFw?: string + colPickerLineWidth?: string + colPickerLineHeight?: string + colPickerLineColor?: string + colPickerLineBoxShadow?: string + colPickerListHeight?: string + colPickerListPaddingBottom?: string + colPickerListColor?: string + colPickerListColorDisabled?: string + colPickerListColorTip?: string + colPickerListFs?: string + colPickerListFsTip?: string + colPickerListItemPadding?: string + colPickerListCheckedIconSize?: string + colPickerListColorChecked?: string +} + +export type overlayThemeVars = { + overlayBg?: string + overlayBgDark?: string +} + +export type popupThemeVars = { + popupCloseSize?: string + popupCloseColor?: string +} + +export type progressThemeVars = { + progressPadding?: string + progressBg?: string + progressDangerColor?: string + progressSuccessColor?: string + progressColor?: string + progressLinearSuccessColor?: string + progressLinearDangerColor?: string + progressHeight?: string + progressLabelColor?: string + progressLabelFs?: string + progressIconFs?: string +} + +export type radioThemeVars = { + radioMargin?: string + radioLabelMargin?: string + radioSize?: string + radioBg?: string + radioLabelFs?: string + radioLabelColor?: string + radioCheckedColor?: string + radioDisabledColor?: string + radioDisabledLabelColor?: string + + radioLargeSize?: string + radioLargeLabelFs?: string + + radioButtonHeight?: string + radioButtonMinWidth?: string + radioButtonMaxWidth?: string + radioButtonRadius?: string + radioButtonBg?: string + radioButtonFs?: string + radioButtonBorder?: string + radioButtonDisabledBorder?: string + + radioDotSize?: string + radioDotLargeSize?: string + radioDotCheckedBg?: string + radioDotCheckedBorderColor?: string + radioDotBorderColor?: string + radioDotDisabledBorder?: string + radioDotDisabledBg?: string +} + +export type searchThemeVars = { + searchSidePadding?: string + searchPadding?: string + searchInputRadius?: string + searchInputBg?: string + searchInputHeight?: string + searchInputPadding?: string + searchInputFs?: string + searchInputColor?: string + searchIconColor?: string + searchIconSize?: string + searchClearIconSize?: string + searchPlaceholderColor?: string + searchCancelPadding?: string + searchCancelFs?: string + searchCancelColor?: string + searchLightBg?: string +} + +export type sliderThemeVars = { + sliderFs?: string + sliderHandleRadius?: string + sliderHandleBg?: string + sliderAxieHeight?: string + sliderColor?: string + sliderAxieBg?: string + sliderLineColor?: string + sliderDisabledColor?: string +} + +export type sortButtonThemeVars = { + sortButtonFs?: string + sortButtonColor?: string + sortButtonHeight?: string + sortButtonLineHeight?: string + sortButtonLineColor?: string +} + +export type stepsThemeVars = { + stepsIconSize?: string + stepsInactiveColor?: string + stepsFinishedColor?: string + stepsIconTextFs?: string + stepsErrorColor?: string + stepsTitleFs?: string + stepsTitleFw?: string + stepsLabelFs?: string + stepsDescriptionColor?: string + stepsIsIconWidth?: string + stepsLineColor?: string + stepsDotSize?: string + stepsDotActiveSize?: string +} + +export type switchThemeVars = { + switchSize?: string + switchWidth?: string + switchHeight?: string + switchCircleSize?: string + switchBorderColor?: string + switchActiveColor?: string + switchActiveShadowColor?: string + switchInactiveColor?: string + switchInactiveShadowColor?: string +} + +export type tabsThemeVars = { + tabsNavArrowFs?: string + tabsNavArrowOpenFs?: string + tabsNavWidth?: string + tabsNavHeight?: string + tabsNavFs?: string + tabsNavColor?: string + tabsNavBg?: string + tabsNavActiveColor?: string + tabsNavDisabledColor?: string + tabsNavLineHeight?: string + tabsNavLineWidth?: string + tabsNavLineBgColor?: string + tabsNavMapFs?: string + tabsNavMapColor?: string + tabsNavMapArrowColor?: string + tabsNavMapBtnBeforeBg?: string + tabsNavMapButtonBackColor?: string + tabsNavMapButtonRadius?: string + tabsNavMapModalBg?: string +} + +export type tagThemeVars = { + tagFs?: string + tagColor?: string + tagSmallFs?: string + tagInfoColor?: string + tagPrimaryColor?: string + tagDangerColor?: string + tagWarningColor?: string + tagSuccessColor?: string + tagInfoBg?: string + tagPrimaryBg?: string + tagDangerBg?: string + tagWarningBg?: string + tagSuccessBg?: string + tagRoundColor?: string + tagRoundBorderColor?: string + tagRoundRadius?: string + tagMarkRadius?: string + tagCloseSize?: string + tagCloseColor?: string + tagCloseActiveColor?: string +} + +export type toastThemeVars = { + toastPadding?: string + toastMaxWidth?: string + toastRadius?: string + toastBg?: string + toastFs?: string + toastWithIconMinWidth?: string + toastIconSize?: string + toastIconMarginRight?: string + toastLoadingPadding?: string + toastBoxShadow?: string +} + +export type loadingThemeVars = { + loadingSize?: string +} + +export type tooltipThemeVars = { + tooltipBg?: string + tooltipColor?: string + tooltipRadius?: string + tooltipArrowSize?: string + tooltipFs?: string + tooltipBlur?: string + tooltipPadding?: string + tooltipCloseSize?: string + tooltipZIndex?: string + tooltipLineHeight?: string +} + +export type popoverThemeVars = { + popoverBg?: string + popoverColor?: string + popoverBoxShadow?: string + popoverArrowBoxShadow?: string + popoverBorderColor?: string + popoverRadius?: string + popoverArrowSize?: string + popoverFs?: string + popoverPadding?: string + popoverLineHeight?: string + popoverZIndex?: string +} + +export type gridItemThemeVars = { + gridItemFs?: string + gridItemBg?: string + gridItemPadding?: string + gridItemBorderColor?: string +} + +export type statustipThemeVars = { + statustipFs?: string + statustipColor?: string + statustipLineHeight?: string + statustipPadding?: string +} + +export type cardThemeVars = { + cardBg?: string + cardFs?: string + cardPadding?: string + cardFooterPadding?: string + cardShadowColor?: string + cardRadius?: string + cardLineHeight?: string + cardMargin?: string + cardTitleColor?: string + cardTitleFs?: string + cardContentBorderColor?: string + cardRectangleTitlePadding?: string + cardRectangleContentPadding?: string + cardRectangleFooterPadding?: string + cardContentColor?: string + cardContentLineHeight?: string + cardContentMargin?: string + cardContentRectangleMargin?: string +} + +export type uploadThemeVars = { + uploadSize?: string + uploadEvokeIconSize?: string + uploadEvokeBg?: string + uploadEvokeColor?: string + uploadEvokeDisabledColor?: string + uploadCloseIconSize?: string + uploadCloseIconColor?: string + uploadProgressFs?: string + uploadFileFs?: string + uploadFileColor?: string + uploadPreviewNameFs?: string + uploadPreviewIconSize?: string + uploadPreviewNameBg?: string + uploadPreviewNameHeight?: string + uploadCoverIconSize?: string +} + +export type curtainThemeVars = { + curtainContentRadius?: string + curtainContentCloseColor?: string + curtainContentCloseFs?: string +} + +export type notifyThemeVars = { + notifyTextColor?: string + notifyPadding?: string + notifyFontSize?: string + notifyLineHeight?: string + notifyPrimaryBackground?: string + notifySuccessBackground?: string + notifyDangerBackground?: string + notifyWarningBackground?: string +} + +export type skeletonThemeVars = { + skeletonBackgroundColor?: string + skeletonAnimationGradient?: string + skeletonAnimationFlashed?: string + skeletonTextHeightDefault?: string + skeletonRectHeightDefault?: string + skeletonCircleHeightDefault?: string + skeletonRowMarginBottom?: string + skeletonBorderRadiusText?: string + skeletonBorderRadiusRect?: string + skeletonBorderRadiusCircle?: string +} + +export type circleThemeVars = { + circleTextColor?: string +} + +export type swiperThemeVars = { + swiperRadius?: string + swiperItemPadding?: string +} + +export type swiperNavThemeVars = { + // dot & dots-bar + swiperNavDotColor?: string + swiperNavDotActiveColor?: string + swiperNavDotSize?: string + swiperNavDotsBarActiveWidth?: string + // fraction + swiperNavFractionColor?: string + swiperNavFractionBgColor?: string + swiperNavFractionHeight?: string + swiperNavFractionFontSize?: string + // button + swiperNavBtnColor?: string + swiperNavBtnBgColor?: string + swiperNavBtnSize?: string +} + +export type segmentedThemeVars = { + segmentedPadding?: string + segmentedItemBgColor?: string + segmentedItemColor?: string + segmentedItemAcitveBg?: string + segmentedItemDisabledColor?: string +} + +export type tabbarThemeVars = { + tabbarHeight?: string + tabbarBoxShadow?: string +} + +export type tabbarItemThemeVars = { + tabbarItemTitleFontSize?: string + tabbarItemTitleLineHeight?: string + tabbarInactiveColor?: string + tabbarActiveColor?: string + tabbarItemIconSize?: string +} + +export type navbarThemeVars = { + navbarHeight?: string + navbarColor?: string + navbarBackground?: string + navbarArrowSize?: string + navbarDescFontSize?: string + navbarDescFontColor?: string + navbarTitleFontSize?: string + navbarTitleFontWeight?: string + navbarDisabledOpacity?: string + navbarHoverColor?: string +} + +export type navbarCapsuleThemeVars = { + navbarCapsuleBorderColor?: string + navbarCapsuleBorderRadius?: string + navbarCapsuleWidth?: string + navbarCapsuleHeight?: string + navbarCapsuleIconSize?: string +} + +export type tableThemeVars = { + tableColor?: string + tableBg?: string + tableStripeBg?: string + tableBorderColor?: string + tableFontSize?: string +} + +export type sidebarThemeVars = { + sidebarBg?: string + sidebarWidth?: string + sidebarHeight?: string +} + +export type sidebarItemThemeVars = { + sidebarColor?: string + sidebarItemHeight?: string + sidebarItemLineHeight?: string + sidebarDisabledColor?: string + sidebarActiveColor?: string + sidebarActiveBg?: string + sidebarHoverBg?: string + sidebarBorderRadius?: string + sidebarFontSize?: string + sidebarIconSize?: string + sidebarActiveBorderWidth?: string + sidebarActiveBorderHeight?: string +} + +export type fabThemeVars = { + fabTriggerHeight?: string + fabTriggerWidth?: string + fabActionsPadding?: string + fabIconFs?: string +} + +export type countDownThemeVars = { + countDownTextColor?: string + countDownFontSize?: string + countDownLineHeight?: string +} + +export type numberKeyboardThemeVars = { + numberKeyboardKeyHeight?: string + numberKeyboardKeyFontSize?: string + numberKeyboardKeyBackground?: string + numberKeyboardKeyBorderRadius?: string + numberKeyboardDeleteFontSize?: string + numberKeyboardKeyActiveColor?: string + numberKeyboardButtonTextColor?: string + numberKeyboardButtonBackground?: string + numberKeyboardButtonActiveOpacity?: string + numberKeyboardBackground?: string + numberKeyboardTitleHeight?: string + numberKeyboardTitleColor?: string + numberKeyboardTitleFontSize?: string + numberKeyboardClosePadding?: string + numberKeyboardCloseColor?: string + numberKeyboardCloseFontSize?: string + numberKeyboardIconSize?: string +} + +export type passwodInputThemeVars = { + passwordInputHeight?: string + passwordInputMargin?: string + passwordInputFontSize?: string + passwordInputRadius?: string + passwordInputBackground?: string + passwordInputInfoColor?: string + passwordInputInfoFontSize?: string + passwordInputBorderColor?: string + passwordInputErrorInfoColor?: string + passwordInputDotSize?: string + passwordInputDotColor?: string + passwordInputTextColor?: string + passwordInputCursorColor?: string + passwordInputCursorWidth?: string + passwordInputCursorHeight?: string + passwordInputCursorDuration?: string +} + +export type formItemThemeVars = { + formItemErrorMessageColor?: string + formItemErrorMessageFontSize?: string + formItemErrorMessageLineHeight?: string +} + +export type backtopThemeVars = { + backtopBg?: string + backtopIconSize?: string +} + +export type indexBarThemeVars = { + indexBarIndexFontSize?: string +} + +export type textThemeVars = { + textInfoColor?: string + textPrimaryColor?: string + textErrorColor?: string + textWarningColor?: string + textSuccessColor?: string +} + +export type videoPreviewThemeVars = { + videoPreviewBg?: string + videoPreviewCloseColor?: string + videoPreviewCloseFontSize?: string +} + +export type imgCropperThemeVars = { + imgCropperIconSize?: string + imgCropperIconColor?: string +} + +export type ConfigProviderThemeVars = baseThemeVars & + actionSheetThemeVars & + badgeThemeVars & + buttonThemeVars & + cellThemeVars & + calendarThemeVars & + checkboxThemeVars & + collapseThemeVars & + dividerThemeVars & + dropMenuThemeVars & + inputNumberThemeVars & + inputThemeVars & + textareaThemeVars & + loadmoreThemeVars & + messageBoxThemeVars & + noticeBarThemeVars & + paginationThemeVars & + pickerThemeVars & + colPickerThemeVars & + overlayThemeVars & + popupThemeVars & + progressThemeVars & + radioThemeVars & + searchThemeVars & + sliderThemeVars & + sortButtonThemeVars & + stepsThemeVars & + switchThemeVars & + tabsThemeVars & + tagThemeVars & + toastThemeVars & + loadingThemeVars & + tooltipThemeVars & + popoverThemeVars & + gridItemThemeVars & + statustipThemeVars & + cardThemeVars & + uploadThemeVars & + curtainThemeVars & + notifyThemeVars & + skeletonThemeVars & + circleThemeVars & + swiperThemeVars & + swiperNavThemeVars & + segmentedThemeVars & + tabbarThemeVars & + tabbarItemThemeVars & + navbarThemeVars & + navbarCapsuleThemeVars & + tableThemeVars & + sidebarThemeVars & + sidebarItemThemeVars & + fabThemeVars & + countDownThemeVars & + numberKeyboardThemeVars & + passwodInputThemeVars & + formItemThemeVars & + backtopThemeVars & + indexBarThemeVars & + textThemeVars & + videoPreviewThemeVars & + imgCropperThemeVars diff --git a/src/uni_modules/wot-design-uni/components/wd-config-provider/wd-config-provider.vue b/src/uni_modules/wot-design-uni/components/wd-config-provider/wd-config-provider.vue new file mode 100644 index 0000000..ae256b2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-config-provider/wd-config-provider.vue @@ -0,0 +1,80 @@ + + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-count-down/index.scss b/src/uni_modules/wot-design-uni/components/wd-count-down/index.scss new file mode 100644 index 0000000..c9b93f1 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-count-down/index.scss @@ -0,0 +1,15 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(count-down) { + color: $-dark-color; + } +} + + +@include b(count-down) { + color: $-count-down-text-color; + font-size: $-count-down-font-size; + line-height: $-count-down-line-height; +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-count-down/types.ts b/src/uni_modules/wot-design-uni/components/wd-count-down/types.ts new file mode 100644 index 0000000..7f1bdd7 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-count-down/types.ts @@ -0,0 +1,41 @@ +import type { ComponentPublicInstance, ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeRequiredProp, makeStringProp } from '../common/props' + +export const countDownProps = { + ...baseProps, + /** + * 倒计时时长,单位毫秒 + */ + time: makeRequiredProp(Number), + /** + * 是否开启毫秒 + */ + millisecond: makeBooleanProp(false), + /** + * 格式化时间 + */ + format: makeStringProp('HH:mm:ss'), + /** + * 是否自动开始 + */ + autoStart: makeBooleanProp(true) +} + +export type CountDownProps = ExtractPropTypes + +export type CountDownExpose = { + /** + * 开始倒计时 + */ + start: () => void + /** + * 暂停倒计时 + */ + pause: () => void + /** + * 重设倒计时,若 auto-start 为 true,重设后会自动开始倒计时 + */ + reset: () => void +} + +export type CountDownInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-count-down/utils.ts b/src/uni_modules/wot-design-uni/components/wd-count-down/utils.ts new file mode 100644 index 0000000..e92ae39 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-count-down/utils.ts @@ -0,0 +1,56 @@ +import { padZero } from '../common/util' + +export type TimeData = { + days: number + hours: number + minutes: number + seconds: number + milliseconds: number +} + +export function parseFormat(format: string, timeData: TimeData): string { + const { days } = timeData + let { hours, minutes, seconds, milliseconds } = timeData + + if (format.includes('DD')) { + format = format.replace('DD', padZero(days)) + } else { + hours += days * 24 + } + + if (format.includes('HH')) { + format = format.replace('HH', padZero(hours)) + } else { + minutes += hours * 60 + } + + if (format.includes('mm')) { + format = format.replace('mm', padZero(minutes)) + } else { + seconds += minutes * 60 + } + + if (format.includes('ss')) { + format = format.replace('ss', padZero(seconds)) + } else { + milliseconds += seconds * 1000 + } + + if (format.includes('S')) { + const ms = padZero(milliseconds, 3) + + if (format.includes('SSS')) { + format = format.replace('SSS', ms) + } else if (format.includes('SS')) { + format = format.replace('SS', ms.slice(0, 2)) + } else { + format = format.replace('S', ms.charAt(0)) + } + } + + return format +} + +export function isSameSecond(time1: number, time2: number): boolean { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-count-down/wd-count-down.vue b/src/uni_modules/wot-design-uni/components/wd-count-down/wd-count-down.vue new file mode 100644 index 0000000..54872c8 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-count-down/wd-count-down.vue @@ -0,0 +1,57 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-curtain/index.scss b/src/uni_modules/wot-design-uni/components/wd-curtain/index.scss new file mode 100644 index 0000000..d19f3bb --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-curtain/index.scss @@ -0,0 +1,81 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +:deep(.wd-curtain){ + display: inline-block; + border-radius: $-curtain-content-radius; + overflow-y: visible; + background: transparent; + font-size: 0; +} +@include b(curtain) { + + @include e(content) { + position: relative; + display: inline-block; + background: transparent; + border-radius: $-curtain-content-radius; + } + @include e(content-link) { + display: block; + border-radius: $-curtain-content-radius; + } + @include e(content-img) { + display: block; + width: auto; + height: auto; + border-radius: $-curtain-content-radius; + } + @include edeep(content-close) { + position: absolute; + margin: 0; + padding: 6px; + top: 10px; + right: 10px; + color: $-curtain-content-close-color; + font-size: $-curtain-content-close-fs; + -webkit-tap-highlight-color: transparent; + &.top { + margin: 0 0 0 -18px; + top: -62px; + right: unset; + left: 50%; + bottom: unset; + } + &.top-left { + margin: 0; + top: -62px; + right: unset; + left: -6px; + bottom: unset; + } + &.top-right { + margin: 0; + top: -62px; + right: -6px; + left: unset; + bottom: unset; + } + &.bottom { + margin: 0 0 0 -18px; + top: unset; + right: unset; + left: 50%; + bottom: -62px; + } + &.bottom-left { + margin: 0; + top: unset; + right: unset; + left: -6px; + bottom: -62px; + } + &.bottom-right { + margin: 0; + top: unset; + right: -6px; + left: unset; + bottom: -62px; + } + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-curtain/types.ts b/src/uni_modules/wot-design-uni/components/wd-curtain/types.ts new file mode 100644 index 0000000..2f7931f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-curtain/types.ts @@ -0,0 +1,38 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' + +export type ClosePosition = 'inset' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' + +export const curtainProps = { + ...baseProps, + /** + * 绑定值,展示/关闭幕帘 + */ + value: makeBooleanProp(false), + /** + * 关闭按钮位置,可选值:inset / top / bottom / top-left / top-right / bottom-left / bottom-right + */ + closePosition: makeStringProp('inset'), + /** + * 幕帘图片地址,必须使用网络地址 + */ + src: String, + /** + * 幕帘图片点击链接 + */ + to: String, + /** + * 幕帘图片宽度 + */ + width: Number, + /** + * 点击遮罩是否关闭 + */ + closeOnClickModal: makeBooleanProp(false), + /** + * 是否当关闭时将弹出层隐藏(display: none) + */ + hideWhenClose: makeBooleanProp(true) +} + +export type CurtainProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue b/src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue new file mode 100644 index 0000000..a8e31ea --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue @@ -0,0 +1,163 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/index.scss b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/index.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/types.ts b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/types.ts new file mode 100644 index 0000000..bac886d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/types.ts @@ -0,0 +1,123 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props' + +export type DateTimeType = 'date' | 'year-month' | 'time' | 'datetime' | 'year' + +/** + * @description 根据传入的值和类型,获取当前的选项数组,便于传入 pickerView + * @param value + * @param type picker类型 + * @return {Array} pickerValue + */ +export function getPickerValue(value: string | number, type: DateTimeType) { + const values: number[] = [] + const date = new Date(value) + if (type === 'time') { + const pair = String(value).split(':') + values.push(parseInt(pair[0]), parseInt(pair[1])) + } else { + values.push(date.getFullYear(), date.getMonth() + 1) + if (type === 'date') { + values.push(date.getDate()) + } else if (type === 'datetime') { + values.push(date.getDate(), date.getHours(), date.getMinutes()) + } + } + return values +} + +export const datetimePickerViewProps = { + ...baseProps, + /** + * 选中项,当 type 为 time 时,类型为字符串,否则为 时间戳 + */ + modelValue: makeRequiredProp([String, Number, Date]), + /** + * 加载中 + */ + loading: makeBooleanProp(false), + /** + * 加载的颜色,只能使用十六进制的色值写法,且不能使用缩写 + */ + loadingColor: makeStringProp('#4D80F0'), + /** + * picker内部滚筒高 + */ + columnsHeight: makeNumberProp(217), + valueKey: makeStringProp('value'), + labelKey: makeStringProp('label'), + /** + * 选择器类型,可选值:date / year-month / time + */ + type: makeStringProp('datetime'), + /** + * 自定义过滤选项的函数,返回列的选项数组 + */ + filter: Function as PropType, + /** + * 自定义弹出层选项文案的格式化函数,返回一个字符串 + */ + formatter: Function as PropType, + /** + * 自定义列的格式化函数 + */ + columnFormatter: Function as PropType, + /** + * 最小日期 + */ + minDate: makeNumberProp(new Date(new Date().getFullYear() - 10, 0, 1).getTime()), + /** + * 最大日期 + */ + maxDate: makeNumberProp(new Date(new Date().getFullYear() + 10, 11, 31).getTime()), + /** + * 最小小时,time类型时生效 + */ + minHour: makeNumberProp(0), + /** + * 最大小时,time类型时生效 + */ + maxHour: makeNumberProp(23), + /** + * 最小分钟,time类型时生效 + */ + minMinute: makeNumberProp(0), + /** + * 最大分钟,time类型时生效 + */ + maxMinute: makeNumberProp(59), + /** + * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 + */ + immediateChange: makeBooleanProp(false), + startSymbol: makeBooleanProp(false) +} + +export type DatetimePickerViewColumnType = 'year' | 'month' | 'date' | 'hour' | 'minute' + +export type DatetimePickerViewOption = { + label: string + value: number +} + +export type DatetimePickerViewFilter = (type: DatetimePickerViewColumnType, values: number[]) => number[] + +export type DatetimePickerViewFormatter = (type: string, value: string) => string + +export type DatetimePickerViewColumnFormatter = (picker: DatetimePickerViewInstance) => DatetimePickerViewOption[][] + +export type DatetimePickerViewProps = ExtractPropTypes + +export type DatetimePickerViewExpose = { + updateColumns: () => DatetimePickerViewOption[][] + setColumns: (columnList: DatetimePickerViewOption[][]) => void + getSelects: () => Record | Record[] | undefined + correctValue: (value: string | number) => string | number + getPickerValue: (value: string | number, type: DateTimeType) => number[] + getOriginColumns: () => { + type: DatetimePickerViewColumnType + values: number[] + }[] +} + +export type DatetimePickerViewInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/wd-datetime-picker-view.vue b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/wd-datetime-picker-view.vue new file mode 100644 index 0000000..72f2931 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/wd-datetime-picker-view.vue @@ -0,0 +1,503 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-datetime-picker/index.scss b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/index.scss new file mode 100644 index 0000000..1597a30 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/index.scss @@ -0,0 +1,245 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(picker) { + @include e(cell) { + background-color: $-dark-background2; + color: $-dark-color; + } + + @include e(title) { + color: $-dark-color; + } + + @include e(label) { + color: $-dark-color; + } + @include e(value) { + color: $-dark-color; + } + + @include e(placeholder) { + color: $-dark-color-gray; + } + + + @include when(border) { + .wd-picker__cell { + @include halfPixelBorder('top', $-cell-padding, $-dark-border-color); + } + } + + :deep(.wd-picker__arrow){ + color: $-dark-color; + } + + @include e(action) { + @include m(cancel) { + color: $-dark-color; + } + } + + @include e(region) { + color: $-dark-color; + + @include when(active) { + background: $-picker-region-bg-active-color; + color: $-dark-color; + } + } + + } +} + +@include b(picker) { + @include edeep(popup) { + border-radius: 16px 16px 0px 0px; + } + + @include e(wraper) { + padding-bottom: var(--window-bottom); + } + + @include when(border) { + .wd-picker__cell { + @include halfPixelBorder("top", $-cell-padding); + } + } + @include when(large) { + .wd-picker__cell { + font-size: $-cell-title-fs-large; + } + :deep(.wd-picker__arrow) { + font-size: $-cell-icon-size-large; + } + } + @include when(error) { + .wd-picker__value, + .wd-picker__placeholder { + color: $-input-error-color; + } + + :deep(.wd-picker__arrow){ + color: $-input-error-color; + } + } + @include when(align-right) { + .wd-picker__value { + text-align: right; + } + } + @include e(cell) { + position: relative; + display: flex; + padding: $-cell-wrapper-padding $-cell-padding; + align-items: flex-start; + background-color: $-color-white; + text-decoration: none; + color: $-cell-title-color; + font-size: $-cell-title-fs; + overflow: hidden; + line-height: $-cell-line-height; + + @include when(disabled) { + .wd-picker__value { + color: $-input-disabled-color; + } + } + } + + @include when(disabled) { + .wd-picker__value { + color: $-picker-column-disabled-color; + } + } + + @include e(error-message){ + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } + + @include e(label) { + position: relative; + width: $-input-cell-label-width; + margin-right: $-cell-padding; + color: $-cell-title-color; + box-sizing: border-box; + + @include when(required) { + padding-left: 12px; + + &::after { + position: absolute; + left: 0; + top: 2px; + content: "*"; + font-size: $-cell-required-size; + line-height: 1.1; + color: $-cell-required-color; + } + } + } + + @include e(value-wraper) { + display: flex; + } + + @include e(value) { + flex: 1; + margin-right: 10px; + color: $-cell-value-color; + + @include when(ellipsis) { + @include lineEllipsis; + } + } + + @include e(body) { + flex: 1; + } + + @include e(placeholder) { + color: $-input-placeholder-color; + } + + @include edeep(arrow) { + display: block; + font-size: $-cell-icon-size; + color: $-cell-arrow-color; + line-height: $-cell-line-height; + } + + @include e(toolbar) { + position: relative; + display: flex; + font-size: $-picker-toolbar-fs; + height: $-picker-toolbar-height; + line-height: $-picker-action-height; + justify-content: space-between; + align-items: center; + box-sizing: border-box; + } + + @include e(action) { + display: block; + border: none; + outline: none; + font-size: $-picker-toolbar-fs; + color: $-picker-toolbar-finish-color; + background: transparent; + padding: 24px 15px 14px 15px; + + @include m(cancel) { + color: $-picker-toolbar-cancel-color; + } + + @include when(loading) { + color: $-picker-loading-button-color; + } + } + @include e(title) { + display: block; + float: 1; + color: $-picker-toolbar-title-color; + } + + @include e(region-tabs) { + display: flex; + } + + @include e(region) { + width: 50%; + display: inline-block; + color: $-picker-region-color; + text-align: center; + padding: 14px 0; + font-size: $-picker-region-fs; + line-height: 16px; + transition: all 0.15s ease-out; + + @include when(active) { + background: $-picker-region-bg-active-color; + color: $-color-white; + } + } + + @include e(region-time) { + font-size: 16px; + margin-top: 2px; + } + + @include e(hidden) { + visibility: hidden; + overflow: hidden; + height: 0; + } + + @include e(show) { + visibility: visible; + height: auto; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-datetime-picker/types.ts b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/types.ts new file mode 100644 index 0000000..7c4ba84 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/types.ts @@ -0,0 +1,205 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props' +import type { DateTimeType, DatetimePickerViewFilter, DatetimePickerViewFormatter } from '../wd-datetime-picker-view/types' +import type { FormItemRule } from '../wd-form/types' + +export const datetimePickerProps = { + ...baseProps, + /** + * 选择器左侧文案,label可以不传 + */ + label: String, + /** + * 选择器占位符 + */ + placeholder: String, + /** + * 禁用 + */ + disabled: makeBooleanProp(false), + /** + * 只读 + */ + readonly: makeBooleanProp(false), + /** + * 加载中 + */ + loading: makeBooleanProp(false), + /** + * 加载的颜色,只能使用十六进制的色值写法,且不能使用缩写 + */ + loadingColor: makeStringProp('#4D80F0'), + /** + * 弹出层标题 + */ + title: String, + /** + * 取消按钮文案 + */ + cancelButtonText: String, + /** + * 确认按钮文案 + */ + confirmButtonText: String, + /** + * 是否必填 + */ + required: makeBooleanProp(false), + /** + * 设置选择器大小,可选值:large + */ + size: String, + /** + * 设置左侧标题宽度 + */ + labelWidth: makeStringProp('33%'), + /** + * 使用默认插槽 + */ + useDefaultSlot: makeBooleanProp(false), + /** + * label 使用插槽 + */ + useLabelSlot: makeBooleanProp(false), + /** + * 是否为错误状态,错误状态时右侧内容为红色 + */ + error: makeBooleanProp(false), + /** + * 选择器的值靠右展示 + */ + alignRight: makeBooleanProp(false), + /** + * 点击遮罩是否关闭 + */ + closeOnClickModal: makeBooleanProp(true), + /** + * 弹出面板是否设置底部安全距离(iphone X 类型的机型) + */ + safeAreaInsetBottom: makeBooleanProp(true), + /** + * 是否超出隐藏 + */ + ellipsis: makeBooleanProp(false), + /** + * picker内部滚筒高 + */ + columnsHeight: makeNumberProp(217), + valueKey: makeStringProp('value'), + labelKey: makeStringProp('label'), + /** + * 选中项,当 type 为 time 时,类型为字符串;当 type 为 Array 时,类型为范围选择;否则为 时间戳 + */ + modelValue: makeRequiredProp([String, Number, Date, Array] as PropType>), + /** + * 选择器类型,可选值为:date / year-month / time + */ + type: makeStringProp('datetime'), + /** + * 最小日期 + */ + minDate: makeNumberProp(new Date(new Date().getFullYear() - 10, 0, 1).getTime()), + /** + * 最大日期 + */ + maxDate: makeNumberProp(new Date(new Date().getFullYear() + 10, 11, 31).getTime()), + /** + * 最小小时,time类型时生效 + */ + minHour: makeNumberProp(0), + /** + * 最大小时,time类型时生效 + */ + maxHour: makeNumberProp(23), + /** + * 最小分钟,time类型时生效 + */ + minMinute: makeNumberProp(0), + /** + * 最大分钟,time类型时生效 + */ + maxMinute: makeNumberProp(59), + /** + * 自定义过滤选项的函数,返回列的选项数组 + */ + filter: Function as PropType, + /** + * 自定义弹出层选项文案的格式化函数,返回一个字符串 + */ + formatter: Function as PropType, + /** + * 自定义展示文案的格式化函数,返回一个字符串 + */ + displayFormat: Function as PropType, + /** + * 确定前校验函数,接收 (value, resolve, picker) 参数,通过 resolve 继续执行 picker,resolve 接收1个boolean参数 + */ + beforeConfirm: Function as PropType, + /** + * 在区域选择模式下,自定义展示tab标签文案的格式化函数,返回一个字符串 + */ + displayFormatTabLabel: Function as PropType, + /** + * 默认日期,类型保持与 value 一致,打开面板时面板自动选到默认日期 + */ + defaultValue: [String, Number, Array] as PropType>, + /** + * 弹窗层级 + */ + zIndex: makeNumberProp(15), + /** + * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的 + */ + prop: String, + /** + * 表单验证规则,结合wd-form组件使用 + */ + rules: makeArrayProp(), + /** + * pickerView 外部自定义样式 + */ + customViewClass: makeStringProp(''), + /** + * label 外部自定义样式 + */ + customLabelClass: makeStringProp(''), + /** + * value 外部自定义样式 + */ + customValueClass: makeStringProp(''), + /** + * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 + */ + immediateChange: makeBooleanProp(false) +} + +export type DatetimePickerDisplayFormat = (items: Record[]) => string + +export type DatetimePickerBeforeConfirm = ( + value: number | string | (number | string)[], + resolve: (isPass: boolean) => void, + picker: DatetimePickerInstance +) => void + +export type DatetimePickerDisplayFormatTabLabel = (items: Record[]) => string + +export type DatetimePickerExpose = { + /** + * 打开picker弹框 + */ + open: () => void + /** + * 关闭picker弹框 + */ + close: () => void + /** + * 设置加载状态 + * @param loading 加载状态 + * @returns + */ + setLoading: (loading: boolean) => void +} + +export type DatetimePickerProps = ExtractPropTypes + +export type DatetimePickerInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-datetime-picker/wd-datetime-picker.vue b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/wd-datetime-picker.vue new file mode 100644 index 0000000..8d6eac2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/wd-datetime-picker.vue @@ -0,0 +1,764 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-divider/index.scss b/src/uni_modules/wot-design-uni/components/wd-divider/index.scss new file mode 100644 index 0000000..3bb29c9 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-divider/index.scss @@ -0,0 +1,32 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(divider) { + color: $-dark-color3; + + @include e(line) { + background: $-dark-color-gray; + } + } +} + +@include b(divider) { + position: relative; + display: flex; + padding: $-divider-padding; + align-items: center; + color: $-divider-color; + font-size: $-divider-fs; + + @include e(line) { + display: block; + flex: 1; + height: 1px; + transform: scaleY(0.5); + background: $-divider-line-color; + } + @include e(content) { + padding: 0 12px; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-divider/types.ts b/src/uni_modules/wot-design-uni/components/wd-divider/types.ts new file mode 100644 index 0000000..80a114b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-divider/types.ts @@ -0,0 +1,12 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeStringProp } from '../common/props' + +export const dividerProps = { + ...baseProps, + /** + * 自定义颜色,所有颜色的写法 + */ + color: makeStringProp('') +} + +export type DividerProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-divider/wd-divider.vue b/src/uni_modules/wot-design-uni/components/wd-divider/wd-divider.vue new file mode 100644 index 0000000..4e47bad --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-divider/wd-divider.vue @@ -0,0 +1,29 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/index.scss b/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/index.scss new file mode 100644 index 0000000..13546eb --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/index.scss @@ -0,0 +1,66 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(drop-item) { + color: $-dark-color; + + @include e(tip) { + color: $-dark-color3; + } + } +} + +@include b(drop-item) { + position: fixed; + right: 0; + left: 0; + overflow: hidden; + font-size: $-drop-menu-item-fs; + color: $-drop-menu-item-color; + width: 100%; + z-index: 101; + + .wd-drop-item__popup { + position: absolute; + max-height: 80%; + } + + @include e(option) { + display: flex; + height: $-drop-menu-item-height; + line-height: $-drop-menu-item-height; + padding: 0 $-drop-menu-side-padding; + justify-content: space-between; + align-items: center; + transition: color .2s; + + @include when(active) { + color: $-drop-menu-item-color-active; + } + } + + @include e(title){ + display: block; + } + + @include e(tip) { + display: inline-block; + color: $-drop-menu-item-color-tip; + font-size: $-drop-menu-item-fs-tip; + margin-left: 2px; + } + + @include edeep(icon){ + display: block; + font-size: $-drop-menu-option-check-size; + } + + @include e(modal) { + position: fixed; + left: 0; + right: 0; + background: rgba(0, 0, 0, 0.7); + height: 100%; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/types.ts b/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/types.ts new file mode 100644 index 0000000..43f6b01 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/types.ts @@ -0,0 +1,78 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeStringProp } from '../common/props' + +export type DropMenuItemBeforeToggleOption = { + // 操作状态:true 打开下拉菜单,false 关闭下拉菜单 + status: boolean + // 回调函数,用于控制是否允许打开或关闭下拉菜单,true 允许打开或关闭,false 不允许打开或关闭 + resolve: (isPass: boolean) => void +} + +export type DropMenuItemBeforeToggle = (option: DropMenuItemBeforeToggleOption) => void + +export const dorpMenuItemProps = { + ...baseProps, + /** + * DropMenuItem 左侧文字样式 + */ + customTitle: makeStringProp(''), + /** + * DropMenuItem 右侧 icon 样式 + */ + customIcon: makeStringProp(''), + /** + * 当前选中项对应选中的 value + */ + modelValue: [String, Number], + /** + * 列表数据,对应数据结构 [{text: '标题', value: '0', tip: '提示文字'}] + */ + options: makeArrayProp>(), + /** + * 禁用菜单 + */ + disabled: makeBooleanProp(false), + /** + * 选中的图标名称(可选名称在 wd-icon 组件中) + */ + iconName: makeStringProp('check'), + /** + * 菜单标题 + */ + title: String, + /** + * 菜单图标 + */ + icon: makeStringProp('arrow-down'), + /** + * 菜单图标大小 + */ + iconSize: makeStringProp('14px'), + /** + * 自定义点击事件 + */ + beforeToggle: Function as PropType, + /** + * 选项对象中,value 对应的 key + */ + valueKey: makeStringProp('value'), + /** + * 选项对象中,展示的文本对应的 key + */ + labelKey: makeStringProp('label'), + /** + * 选项对象中,选项说明对应的 key + */ + tipKey: makeStringProp('tip') +} + +export type DropMenuItemProps = ExtractPropTypes + +export type DropMenuItemExpose = { + getShowPop: () => boolean + open: () => void + close: () => void + toggle: () => void +} + +export type DropMenuItemInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/wd-drop-menu-item.vue b/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/wd-drop-menu-item.vue new file mode 100644 index 0000000..ed41345 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-drop-menu-item/wd-drop-menu-item.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-drop-menu/index.scss b/src/uni_modules/wot-design-uni/components/wd-drop-menu/index.scss new file mode 100644 index 0000000..eb78d6e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-drop-menu/index.scss @@ -0,0 +1,89 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(drop-menu) { + color: $-dark-color; + @include e(list) { + background-color: $-dark-background2; + } + + @include e(item) { + @include when(disabled) { + color: $-dark-color-gray; + } + } + } +} + +@include b(drop-menu) { + box-sizing: border-box; + color: $-drop-menu-color; + font-size: $-drop-menu-fs; + position: relative; + + @include e(list) { + display: flex; + text-align: center; + background-color: #fff; + } + @include e(item) { + flex: 1; + min-width: 0; + height: $-drop-menu-height; + line-height: $-drop-menu-height; + text-align: center; + + @include when(active) { + font-weight: $-fw-medium; + + .wd-drop-menu__item-title::after { + opacity: 1; + } + :deep(.wd-drop-menu__arrow) { + transform: scale(0.6) rotate(-180deg); + transform-origin: center center; + } + } + @include when(disabled) { + color: $-drop-menu-disabled-color; + } + } + + @include e(item-title) { + position: relative; + display: inline-block; + max-width: 100%; + padding: 0 $-drop-menu-side-padding; + box-sizing: border-box; + + &::after { + position: absolute; + content: ''; + width: 19px; + height: $-drop-menu-line-height; + bottom: 6px; + left: 50%; + transform: translate(-50%, 0); + background: $-drop-menu-line-color; + border-radius: $-drop-menu-line-height; + transition: opacity .15s; + opacity: 0; + } + } + + @include e(item-title-text) { + position: relative; + @include lineEllipsis; + } + + @include edeep(arrow) { + position: absolute; + display: inline-block; + top: 0; + right: -4px; + transition: transform 0.3s; + transform: scale(0.6); + font-size: $-drop-menu-arrow-fs; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-drop-menu/types.ts b/src/uni_modules/wot-design-uni/components/wd-drop-menu/types.ts new file mode 100644 index 0000000..339e7bb --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-drop-menu/types.ts @@ -0,0 +1,38 @@ +import { type ExtractPropTypes, type InjectionKey, type Ref } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export type DropDirction = 'up' | 'down' + +export type DropMenuProvide = { + props: Partial + fold: (child?: any) => void + offset: Ref +} + +export const DROP_MENU_KEY: InjectionKey = Symbol('wd-drop-menu') + +export const dropMenuProps = { + ...baseProps, + /** + * 弹框层级 + */ + zIndex: makeNumberProp(12), + /** + * 菜单展开方向,可选值为up 或 down + */ + direction: makeStringProp('down'), + /** + * 是否展示蒙层 + */ + modal: makeBooleanProp(true), + /** + * 是否点击蒙层时关闭 + */ + closeOnClickModal: makeBooleanProp(true), + /** + * 菜单展开收起动画时间,单位 ms + */ + duration: makeNumberProp(200) +} + +export type DropMenuProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-drop-menu/wd-drop-menu.vue b/src/uni_modules/wot-design-uni/components/wd-drop-menu/wd-drop-menu.vue new file mode 100644 index 0000000..5fe51a4 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-drop-menu/wd-drop-menu.vue @@ -0,0 +1,121 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-fab/index.scss b/src/uni_modules/wot-design-uni/components/wd-fab/index.scss new file mode 100644 index 0000000..16addbf --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-fab/index.scss @@ -0,0 +1,116 @@ +@import "../common/abstracts/variable"; +@import "../common/abstracts/mixin"; + +.wot-theme-dark { + @include b(fab) {} +} + +@include b(fab) { + position: fixed; + z-index: 99; + + @include edeep(trigger) { + min-width: auto !important; + box-sizing: border-box; + width: $-fab-trigger-width !important; + height: $-fab-trigger-height !important; + border-radius: calc($-fab-trigger-height / 2) !important; + } + + :deep() { + @include e(actions) { + position: absolute; + z-index: 0; + display: flex; + justify-content: center; + align-items: center; + padding: $-fab-actions-padding 0; + + @include m(left, right) { + height: 100%; + top: 0; + padding: 0 $-fab-actions-padding; + } + + @include m(left) { + flex-direction: row-reverse; + right: 100%; + } + + @include m(right) { + flex-direction: row; + left: 100%; + } + + @include m(top, bottom) { + width: 100%; + left: 0; + } + + @include m(top) { + flex-direction: column-reverse; + bottom: 100%; + } + + @include m(bottom) { + flex-direction: column; + top: 100%; + } + } + + // 动画 + @include e(transition-enter-active, transition-leave-active) { + transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important; + } + + + @include e(transition-enter) { + @include m(top) { + opacity: 0; + transform: translateY(40px); + } + + @include m(bottom) { + opacity: 0; + transform: translateY(-40px); + } + + @include m(left) { + opacity: 0; + transform: translateX(40px); + } + + @include m(right) { + opacity: 0; + transform: translateX(-40px); + } + } + + @include e(transition-leave-to) { + @include m(top) { + opacity: 0; + transform: translateY(40px); + } + + @include m(bottom) { + opacity: 0; + transform: translateY(-40px); + } + + @include m(left) { + opacity: 0; + transform: translateX(40px); + } + + @include m(right) { + opacity: 0; + transform: translateX(-40px); + } + } + + } + + @include edeep(icon) { + font-size: $-fab-icon-fs; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-fab/types.ts b/src/uni_modules/wot-design-uni/components/wd-fab/types.ts new file mode 100644 index 0000000..6ac4eb7 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-fab/types.ts @@ -0,0 +1,62 @@ +import type { ComponentPublicInstance, ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' +import type { PropType } from 'vue' + +export type FabType = 'primary' | 'success' | 'info' | 'warning' | 'error' | 'default' +export type FabPosition = 'left-top' | 'right-top' | 'left-bottom' | 'right-bottom' +export type FabDirection = 'top' | 'right' | 'bottom' | 'left' +export type FabGap = Partial> +export const fabProps = { + ...baseProps, + /** + * 是否激活 + */ + active: makeBooleanProp(false), + /** + * 类型,可选值为 default primary info success warning error + */ + type: makeStringProp('primary'), + /** + * 悬浮按钮位置,可选值为 left-top right-top left-bottom right-bottom + */ + position: makeStringProp('right-bottom'), + /** + * 悬浮按钮菜单弹出方向,可选值为 top bottom left right + */ + direction: makeStringProp('top'), + /** + * 是否禁用 + */ + disabled: makeBooleanProp(false), + /** + * 悬浮按钮未展开时的图标 + */ + inactiveIcon: makeStringProp('add'), + /** + * 悬浮按钮展开时的图标 + */ + activeIcon: makeStringProp('close'), + /** + * 自定义悬浮按钮层级 + */ + zIndex: makeNumberProp(99), + /** + * 是否可拖动 + */ + draggable: makeBooleanProp(false), + gap: { + type: Object as PropType, + default: () => ({}) + } +} + +export type FabProps = ExtractPropTypes + +export type FabExpose = { + // 展开菜单 + open: () => void + // 收起菜单 + close: () => void +} + +export type FabInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-fab/wd-fab.vue b/src/uni_modules/wot-design-uni/components/wd-fab/wd-fab.vue new file mode 100644 index 0000000..87b3077 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-fab/wd-fab.vue @@ -0,0 +1,241 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-form-item/index.scss b/src/uni_modules/wot-design-uni/components/wd-form-item/index.scss new file mode 100644 index 0000000..9bf9400 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-form-item/index.scss @@ -0,0 +1,18 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(form-item) { + } +} + + +@include b(form-item) { + @include e(error-message){ + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-form-item/types.ts b/src/uni_modules/wot-design-uni/components/wd-form-item/types.ts new file mode 100644 index 0000000..ed1a4e2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-form-item/types.ts @@ -0,0 +1,16 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeRequiredProp, makeStringProp } from '../common/props' +import type { FormItemRule } from '../wd-form/types' + +export const formItemProps = { + ...baseProps, + prop: makeRequiredProp(String), + rules: makeArrayProp(), + required: Boolean, + center: makeBooleanProp(false), + label: String, + labelWidth: makeStringProp('100px'), + isLink: Boolean +} + +export type FormItemProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-form-item/wd-form-item.vue b/src/uni_modules/wot-design-uni/components/wd-form-item/wd-form-item.vue new file mode 100644 index 0000000..c3a36d3 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-form-item/wd-form-item.vue @@ -0,0 +1,65 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-form/index.scss b/src/uni_modules/wot-design-uni/components/wd-form/index.scss new file mode 100644 index 0000000..44acaeb --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-form/index.scss @@ -0,0 +1,10 @@ +@import "../common/abstracts/variable"; +@import "../common/abstracts/mixin"; + +.wot-theme-dark { + @include b(form) { + } +} + +@include b(form) { +} diff --git a/src/uni_modules/wot-design-uni/components/wd-form/types.ts b/src/uni_modules/wot-design-uni/components/wd-form/types.ts new file mode 100644 index 0000000..3aa0093 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-form/types.ts @@ -0,0 +1,78 @@ +/* + * @Author: weisheng + * @Date: 2023-12-14 11:21:58 + * @LastEditTime: 2024-03-18 12:50:41 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-form\types.ts + * 记得注释 + */ +import { type ComponentPublicInstance, type ExtractPropTypes, type InjectionKey, type PropType } from 'vue' +import { baseProps, makeBooleanProp, makeRequiredProp } from '../common/props' + +export type FormProvide = { + props: { + model: Record + rules?: FormRules + border?: boolean + } + errorMessages?: Record +} + +export const FORM_KEY: InjectionKey = Symbol('wd-form') + +export type FormRules = { + [key: string]: FormItemRule[] +} + +export type ErrorMessage = { + prop: string + message: string +} + +export interface FormItemRule { + [key: string]: any + required: boolean + message: string + pattern?: RegExp + validator?: (value: any, rule: FormItemRuleWithoutValidator) => boolean | Promise | Promise | Promise | Promise +} + +export type FormItemRuleWithoutValidator = Omit + +export const formProps = { + ...baseProps, + /** + * 表单数据对象 + */ + model: makeRequiredProp(Object as PropType>), + /** + * 表单验证规则 + */ + rules: { + type: Object as PropType, + default: () => ({}) + }, + /** + * 是否在输入时重置表单校验信息 + */ + resetOnChange: makeBooleanProp(true) +} +export type FormProps = ExtractPropTypes + +export type FormExpose = { + /** + * 表单校验 + * @param prop 指定校验字段 + */ + validate: (prop?: string) => Promise<{ + valid: boolean + errors: ErrorMessage[] + }> + /** + * 重置表单项的验证提示 + */ + reset: () => void +} + +export type FormInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-form/wd-form.vue b/src/uni_modules/wot-design-uni/components/wd-form/wd-form.vue new file mode 100644 index 0000000..c710567 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-form/wd-form.vue @@ -0,0 +1,178 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-gap/index.scss b/src/uni_modules/wot-design-uni/components/wd-gap/index.scss new file mode 100644 index 0000000..3a44d47 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-gap/index.scss @@ -0,0 +1,9 @@ +@import "../common/abstracts/variable"; +@import "../common/abstracts/mixin"; + +@include b(gap) { + @include m(safe) { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-gap/types.ts b/src/uni_modules/wot-design-uni/components/wd-gap/types.ts new file mode 100644 index 0000000..c53522e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-gap/types.ts @@ -0,0 +1,17 @@ +import { baseProps, makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp } from '../common/props' + +export const gapProps = { + ...baseProps, + /** + * 背景颜色 + */ + bgColor: makeStringProp('transparent'), + /** + * 是否开启底部安全区 + */ + safeAreaBottom: makeBooleanProp(false), + /** + * 高度 + */ + height: makeNumericProp(15) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-gap/wd-gap.vue b/src/uni_modules/wot-design-uni/components/wd-gap/wd-gap.vue new file mode 100644 index 0000000..f01555f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-gap/wd-gap.vue @@ -0,0 +1,36 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-grid-item/index.scss b/src/uni_modules/wot-design-uni/components/wd-grid-item/index.scss new file mode 100644 index 0000000..c63ed83 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-grid-item/index.scss @@ -0,0 +1,140 @@ +@import "../common/abstracts/variable"; +@import "../common/abstracts/mixin"; + +.wot-theme-dark { + @include b(grid-item) { + + @include when(border) { + &::before { + background-color: $-dark-border-color; + } + &::after { + background-color: $-dark-border-color; + } + } + + // 第一行元素 + @include when(first) { + &::after { + background-color: $-dark-border-color; + } + } + + + @include e(content) { + background-color: $-dark-background2; + } + } +} + +@include b(grid-item) { + height: 100%; + font-size: $-grid-item-fs; + box-sizing: border-box; + + position: relative; + float: left; + + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; + overflow: hidden; + + @include when(border) { + &::before { + content: ""; + position: absolute; + width: 100%; + height: 1px; + transform: scaleY(0.5); + background-color: $-grid-item-border-color; + top: 0; + left: 0; + z-index: 1; + } + &::after { + content: ""; + position: absolute; + width: 1px; + transform: scaleX(0.5); + height: 100%; + background-color: $-grid-item-border-color; + bottom: 0; + right: 0; + } + } + + // 第一行元素 + @include when(first) { + &::after { + content: ""; + position: absolute; + width: 1px; + transform: scaleX(0.5); + height: 100%; + background-color: $-grid-item-border-color; + bottom: 0; + right: 0; + } + } + + // 每行右侧的元素 + @include when(right) { + &::after { + display: none; + } + } + + @include when(last) { + &::after { + display: none; + } + } + @include e(wrapper) { + display: inline-block; + margin: 0 auto; + } + + @include e(content) { + height: 100%; + padding: $-grid-item-padding; + background-color: $-grid-item-bg; + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + + @include when(square) { + box-sizing: border-box; + position: absolute; + top: 0; + right: 0; + left: 0; + padding: 0; + height: 100%; + } + + @include when(round) { + &::after { + content: " "; + position: absolute; + top: 0; + left: 0; + width: 200%; + height: 200%; + border: 1px solid $-grid-item-border-color; + transform-origin: top left; + transform: scale(0.5); + box-sizing: border-box; + } + } + } + + @include e(text) { + margin-top: 8px; + font-size: $-grid-item-fs; + line-height: $-grid-item-fs; + @include lineEllipsis; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-grid-item/types.ts b/src/uni_modules/wot-design-uni/components/wd-grid-item/types.ts new file mode 100644 index 0000000..ee403b0 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-grid-item/types.ts @@ -0,0 +1,74 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' +import type { BadgeProps, BadgeType } from '../wd-badge/types' + +export type LinkType = 'navigateTo' | 'switchTab' | 'reLaunch' | 'redirectTo' + +export const gridItemProps = { + ...baseProps, + /** + * GridItem 下方文字样式 + */ + customText: makeStringProp(''), + /** + * GridItem 上方 icon 样式 + */ + customIcon: makeStringProp(''), + /** + * 图标名称,可选值见 wd-icon 组件 + */ + icon: makeStringProp(''), + /** + * 图标大小 + */ + iconSize: makeStringProp('26px'), + /** + * 文字 + */ + text: String, + /** + * 点击后跳转的链接地址 + */ + url: String, + /** + * 页面跳转方式, 参考微信小程序路由文档,可选值:navigateTo / switchTab / reLaunch + */ + linkType: makeStringProp('navigateTo'), + /** + * 是否开启 GridItem 内容插槽 + */ + useSlot: makeBooleanProp(false), + /** + * 是否开启 GridItem icon 插槽 + */ + useIconSlot: makeBooleanProp(false), + /** + * 是否开启 GridItem text 内容插槽 + */ + useTextSlot: makeBooleanProp(false), + /** + * 是否显示图标右上角小红点 + */ + isDot: { + type: Boolean, + default: undefined + }, + /** + * 图标右上角显示的 badge 类型,可选值:primary / success / warning / danger / info + */ + type: String as PropType, + /** + * 图标右上角 badge 显示值 + */ + value: Number, + /** + * 图标右上角 badge 最大值,超过最大值会显示 '{max}+',要求 value 是 Number 类型 + */ + max: Number, + /** + * 徽标属性,透传给 Badge 组件 + */ + badgeProps: Object as PropType> +} + +export type GridItemProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-grid-item/wd-grid-item.vue b/src/uni_modules/wot-design-uni/components/wd-grid-item/wd-grid-item.vue new file mode 100644 index 0000000..88fb103 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-grid-item/wd-grid-item.vue @@ -0,0 +1,164 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-grid/index.scss b/src/uni_modules/wot-design-uni/components/wd-grid/index.scss new file mode 100644 index 0000000..6996022 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-grid/index.scss @@ -0,0 +1,9 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(grid) { + position: relative; + box-sizing: border-box; + overflow: hidden; + height: auto; +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-grid/types.ts b/src/uni_modules/wot-design-uni/components/wd-grid/types.ts new file mode 100644 index 0000000..600570b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-grid/types.ts @@ -0,0 +1,47 @@ +/* + * @Author: weisheng + * @Date: 2023-12-14 11:21:58 + * @LastEditTime: 2024-03-18 14:38:35 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-grid\types.ts + * 记得注释 + */ +import { type ExtractPropTypes, type InjectionKey } from 'vue' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' + +export type GridProvide = { + props: { clickable?: boolean; square?: boolean; column?: number; border?: boolean; bgColor?: string; gutter?: number } +} + +export const GRID_KEY: InjectionKey = Symbol('wd-grid') + +export const gridProps = { + ...baseProps, + /** + * 是否开启格子点击反馈 + */ + clickable: makeBooleanProp(false), + /** + * 是否将格子固定为正方形 + */ + square: makeBooleanProp(false), + /** + * 列数 + */ + column: Number, + /** + * 是否显示边框 + */ + border: makeBooleanProp(false), + /** + * 背景颜色 + */ + bgColor: makeStringProp(''), + /** + * 格子之间的间距,默认单位为px + */ + gutter: Number +} + +export type GridProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-grid/wd-grid.vue b/src/uni_modules/wot-design-uni/components/wd-grid/wd-grid.vue new file mode 100644 index 0000000..a4e11f7 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-grid/wd-grid.vue @@ -0,0 +1,106 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-icon/index.scss b/src/uni_modules/wot-design-uni/components/wd-icon/index.scss new file mode 100644 index 0000000..bdf495f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-icon/index.scss @@ -0,0 +1,1226 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@font-face { + font-family: 'wd-icons'; + src: url('https://at.alicdn.com/t/c/font_4245058_s5cpwl25n7o.woff2?t=1696817709651') format('woff2'), + url('https://at.alicdn.com/t/c/font_4245058_s5cpwl25n7o.woff?t=1696817709651') format('woff'), + url('https://at.alicdn.com/t/c/font_4245058_s5cpwl25n7o.ttf?t=1696817709651') format('truetype'); + font-weight: normal; + font-style: normal; +} + +/* #ifdef APP-PLUS */ +@font-face { + font-family: 'wd-icons'; + src: + url('./wd-icons.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +/* #endif */ + +@include b(icon) { + display: inline-block; + font-family: 'wd-icons' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + @include m(image) { + width: 1em; + height: 1em; + } + + @include e(image) { + width: 100%; + height: 100%; + } +} + + + +.wd-icon-usergroup-clear:before { + content: "\e739"; +} + +.wd-icon-user-circle:before { + content: "\e73a"; +} + +.wd-icon-user-talk:before { + content: "\e73b"; +} + +.wd-icon-user-clear:before { + content: "\e73c"; +} + +.wd-icon-user:before { + content: "\e73d"; +} + +.wd-icon-usergroup-add:before { + content: "\e73e"; +} + +.wd-icon-usergroup:before { + content: "\e73f"; +} + +.wd-icon-user-add:before { + content: "\e740"; +} + +.wd-icon-user-avatar:before { + content: "\e741"; +} + +.wd-icon-pointing-hand:before { + content: "\e742"; +} + +.wd-icon-cursor:before { + content: "\e743"; +} + +.wd-icon-fullsreen:before { + content: "\e72c"; +} + +.wd-icon-cloud-download:before { + content: "\e72d"; +} + +.wd-icon-chevron-down-rectangle:before { + content: "\e72e"; +} + +.wd-icon-edit:before { + content: "\e72f"; +} + +.wd-icon-fullscreen-exit:before { + content: "\e730"; +} + +.wd-icon-circle1:before { + content: "\e731"; +} + +.wd-icon-close-normal:before { + content: "\e732"; +} + +.wd-icon-browse:before { + content: "\e733"; +} + +.wd-icon-browse-off:before { + content: "\e734"; +} + +.wd-icon-chevron-up-rectangle:before { + content: "\e735"; +} + +.wd-icon-add-rectangle:before { + content: "\e736"; +} + +.wd-icon-add1:before { + content: "\e737"; +} + +.wd-icon-add-circle1:before { + content: "\e738"; +} + +.wd-icon-download1:before { + content: "\e71c"; +} + +.wd-icon-link:before { + content: "\e71d"; +} + +.wd-icon-edit-1:before { + content: "\e71e"; +} + +.wd-icon-jump:before { + content: "\e71f"; +} + +.wd-icon-chevron-down-circle:before { + content: "\e720"; +} + +.wd-icon-delete1:before { + content: "\e721"; +} + +.wd-icon-filter-clear:before { + content: "\e722"; +} + +.wd-icon-check-rectangle-filled:before { + content: "\e723"; +} + +.wd-icon-minus-circle-filled:before { + content: "\e724"; +} + +.wd-icon-play:before { + content: "\e725"; +} + +.wd-icon-pause-circle-filled:before { + content: "\e726"; +} + +.wd-icon-filter1:before { + content: "\e727"; +} + +.wd-icon-move:before { + content: "\e728"; +} + +.wd-icon-login:before { + content: "\e729"; +} + +.wd-icon-minus-circle:before { + content: "\e72a"; +} + +.wd-icon-close-circle:before { + content: "\e72b"; +} + +.wd-icon-logout:before { + content: "\e70b"; +} + +.wd-icon-search1:before { + content: "\e70c"; +} + +.wd-icon-pause-circle:before { + content: "\e70d"; +} + +.wd-icon-play-circle:before { + content: "\e70e"; +} + +.wd-icon-more1:before { + content: "\e70f"; +} + +.wd-icon-minus-rectangle:before { + content: "\e710"; +} + +.wd-icon-stop:before { + content: "\e711"; +} + +.wd-icon-scan1:before { + content: "\e712"; +} + +.wd-icon-close-rectangle:before { + content: "\e713"; +} + +.wd-icon-rollback:before { + content: "\e714"; +} + +.wd-icon-a-order-adjustmentcolumn:before { + content: "\e715"; +} + +.wd-icon-pause:before { + content: "\e716"; +} + +.wd-icon-ellipsis:before { + content: "\e717"; +} + +.wd-icon-cloud-upload:before { + content: "\e718"; +} + +.wd-icon-stop-circle-filled:before { + content: "\e719"; +} + +.wd-icon-clear:before { + content: "\e71a"; +} + +.wd-icon-remove:before { + content: "\e71b"; +} + +.wd-icon-zoom-out:before { + content: "\e6fb"; +} + +.wd-icon-thumb-down:before { + content: "\e6fc"; +} + +.wd-icon-setting1:before { + content: "\e6fd"; +} + +.wd-icon-save:before { + content: "\e6fe"; +} + +.wd-icon-unfold-more:before { + content: "\e6ff"; +} + +.wd-icon-zoom-in:before { + content: "\e700"; +} + +.wd-icon-thumb-up:before { + content: "\e701"; +} + +.wd-icon-unfold-less:before { + content: "\e702"; +} + +.wd-icon-play-circle-filled:before { + content: "\e703"; +} + +.wd-icon-poweroff:before { + content: "\e704"; +} + +.wd-icon-share:before { + content: "\e705"; +} + +.wd-icon-refresh1:before { + content: "\e706"; +} + +.wd-icon-link-unlink:before { + content: "\e707"; +} + +.wd-icon-upload:before { + content: "\e708"; +} + +.wd-icon-rectangle:before { + content: "\e709"; +} + +.wd-icon-stop-circle:before { + content: "\e70a"; +} + +.wd-icon-backtop-rectangle:before { + content: "\e6ea"; +} + +.wd-icon-caret-down:before { + content: "\e6eb"; +} + +.wd-icon-arrow-left1:before { + content: "\e6ec"; +} + +.wd-icon-help-circle:before { + content: "\e6ed"; +} + +.wd-icon-help-circle-filled:before { + content: "\e6ee"; +} + +.wd-icon-time-filled:before { + content: "\e6ef"; +} + +.wd-icon-close-circle-filled:before { + content: "\e6f0"; +} + +.wd-icon-info-circle:before { + content: "\e6f1"; +} + +.wd-icon-info-circle-filled:before { + content: "\e6f2"; +} + +.wd-icon-check1:before { + content: "\e6f3"; +} + +.wd-icon-help:before { + content: "\e6f4"; +} + +.wd-icon-error:before { + content: "\e6f5"; +} + +.wd-icon-check-circle:before { + content: "\e6f6"; +} + +.wd-icon-error-circle-filled:before { + content: "\e6f7"; +} + +.wd-icon-error-circle:before { + content: "\e6f8"; +} + +.wd-icon-check-rectangle:before { + content: "\e6f9"; +} + +.wd-icon-check-circle-filled:before { + content: "\e6fa"; +} + +.wd-icon-chevron-up:before { + content: "\e6da"; +} + +.wd-icon-chevron-up-circle:before { + content: "\e6db"; +} + +.wd-icon-chevron-right:before { + content: "\e6dc"; +} + +.wd-icon-arrow-down-rectangle:before { + content: "\e6dd"; +} + +.wd-icon-caret-up-small:before { + content: "\e6de"; +} + +.wd-icon-chevron-right-rectangle:before { + content: "\e6df"; +} + +.wd-icon-caret-right-small:before { + content: "\e6e0"; +} + +.wd-icon-arrow-right1:before { + content: "\e6e1"; +} + +.wd-icon-backtop:before { + content: "\e6e2"; +} + +.wd-icon-arrow-up1:before { + content: "\e6e3"; +} + +.wd-icon-caret-up:before { + content: "\e6e4"; +} + +.wd-icon-backward:before { + content: "\e6e5"; +} + +.wd-icon-arrow-down1:before { + content: "\e6e6"; +} + +.wd-icon-chevron-left:before { + content: "\e6e7"; +} + +.wd-icon-caret-right:before { + content: "\e6e8"; +} + +.wd-icon-caret-left:before { + content: "\e6e9"; +} + +.wd-icon-page-last:before { + content: "\e6c9"; +} + +.wd-icon-next:before { + content: "\e6ca"; +} + +.wd-icon-swap:before { + content: "\e6cb"; +} + +.wd-icon-round:before { + content: "\e6cc"; +} + +.wd-icon-previous:before { + content: "\e6cd"; +} + +.wd-icon-enter:before { + content: "\e6ce"; +} + +.wd-icon-chevron-down:before { + content: "\e6cf"; +} + +.wd-icon-caret-down-small:before { + content: "\e6d0"; +} + +.wd-icon-swap-right:before { + content: "\e6d1"; +} + +.wd-icon-chevron-left-circle:before { + content: "\e6d2"; +} + +.wd-icon-caret-left-small:before { + content: "\e6d3"; +} + +.wd-icon-chevron-right-circle:before { + content: "\e6d4"; +} + +.wd-icon-a-chevron-leftdouble:before { + content: "\e6d5"; +} + +.wd-icon-chevron-left-rectangle:before { + content: "\e6d6"; +} + +.wd-icon-a-chevron-rightdouble:before { + content: "\e6d7"; +} + +.wd-icon-page-first:before { + content: "\e6d8"; +} + +.wd-icon-forward:before { + content: "\e6d9"; +} + +.wd-icon-view-column:before { + content: "\e6b9"; +} + +.wd-icon-view-module:before { + content: "\e6ba"; +} + +.wd-icon-format-vertical-align-right:before { + content: "\e6bb"; +} + +.wd-icon-view-list:before { + content: "\e6bc"; +} + +.wd-icon-order-descending:before { + content: "\e6bd"; +} + +.wd-icon-format-horizontal-align-bottom:before { + content: "\e6be"; +} + +.wd-icon-queue:before { + content: "\e6bf"; +} + +.wd-icon-menu-fold:before { + content: "\e6c0"; +} + +.wd-icon-menu-unfold:before { + content: "\e6c1"; +} + +.wd-icon-format-horizontal-align-top:before { + content: "\e6c2"; +} + +.wd-icon-a-rootlist:before { + content: "\e6c3"; +} + +.wd-icon-order-ascending:before { + content: "\e6c4"; +} + +.wd-icon-format-vertical-align-left:before { + content: "\e6c5"; +} + +.wd-icon-format-horizontal-align-center:before { + content: "\e6c6"; +} + +.wd-icon-format-vertical-align-center:before { + content: "\e6c7"; +} + +.wd-icon-swap-left:before { + content: "\e6c8"; +} + +.wd-icon-flag:before { + content: "\e6aa"; +} + +.wd-icon-code:before { + content: "\e6ab"; +} + +.wd-icon-cart:before { + content: "\e6ac"; +} + +.wd-icon-attach:before { + content: "\e6ad"; +} + +.wd-icon-chart:before { + content: "\e6ae"; +} + +.wd-icon-creditcard:before { + content: "\e6af"; +} + +.wd-icon-calendar:before { + content: "\e6b0"; +} + +.wd-icon-app:before { + content: "\e6b1"; +} + +.wd-icon-books:before { + content: "\e6b2"; +} + +.wd-icon-barcode:before { + content: "\e6b3"; +} + +.wd-icon-chart-pie:before { + content: "\e6b4"; +} + +.wd-icon-chart-bar:before { + content: "\e6b5"; +} + +.wd-icon-chart-bubble:before { + content: "\e6b6"; +} + +.wd-icon-bulletpoint:before { + content: "\e6b7"; +} + +.wd-icon-bianjiliebiao:before { + content: "\e6b8"; +} + +.wd-icon-image:before { + content: "\e69a"; +} + +.wd-icon-laptop:before { + content: "\e69b"; +} + +.wd-icon-hourglass:before { + content: "\e69c"; +} + +.wd-icon-call:before { + content: "\e69d"; +} + +.wd-icon-mobile-vibrate:before { + content: "\e69e"; +} + +.wd-icon-mail:before { + content: "\e69f"; +} + +.wd-icon-notification-filled:before { + content: "\e6a0"; +} + +.wd-icon-desktop:before { + content: "\e6a1"; +} + +.wd-icon-history:before { + content: "\e6a2"; +} + +.wd-icon-discount-filled:before { + content: "\e6a3"; +} + +.wd-icon-dashboard:before { + content: "\e6a4"; +} + +.wd-icon-discount:before { + content: "\e6a5"; +} + +.wd-icon-heart-filled:before { + content: "\e6a6"; +} + +.wd-icon-chat1:before { + content: "\e6a7"; +} + +.wd-icon-a-controlplatform:before { + content: "\e6a8"; +} + +.wd-icon-gift:before { + content: "\e6a9"; +} + +.wd-icon-photo:before { + content: "\e692"; +} + +.wd-icon-play-circle-stroke:before { + content: "\e693"; +} + +.wd-icon-notification:before { + content: "\e694"; +} + +.wd-icon-cloud:before { + content: "\e695"; +} + +.wd-icon-gender-female:before { + content: "\e696"; +} + +.wd-icon-fork:before { + content: "\e697"; +} + +.wd-icon-layers:before { + content: "\e698"; +} + +.wd-icon-lock-off:before { + content: "\e699"; +} + +.wd-icon-location:before { + content: "\e68a"; +} + +.wd-icon-mobile:before { + content: "\e68b"; +} + +.wd-icon-qrcode:before { + content: "\e68c"; +} + +.wd-icon-home1:before { + content: "\e68d"; +} + +.wd-icon-time:before { + content: "\e68e"; +} + +.wd-icon-heart:before { + content: "\e68f"; +} + +.wd-icon-lock-on:before { + content: "\e690"; +} + +.wd-icon-print:before { + content: "\e691"; +} + +.wd-icon-slash:before { + content: "\e67a"; +} + +.wd-icon-usb:before { + content: "\e67b"; +} + +.wd-icon-tools:before { + content: "\e67c"; +} + +.wd-icon-wifi:before { + content: "\e67d"; +} + +.wd-icon-star-filled:before { + content: "\e67e"; +} + +.wd-icon-server:before { + content: "\e67f"; +} + +.wd-icon-sound:before { + content: "\e680"; +} + +.wd-icon-a-precisemonitor:before { + content: "\e681"; +} + +.wd-icon-service:before { + content: "\e682"; +} + +.wd-icon-tips:before { + content: "\e683"; +} + +.wd-icon-pin:before { + content: "\e684"; +} + +.wd-icon-secured:before { + content: "\e685"; +} + +.wd-icon-star:before { + content: "\e686"; +} + +.wd-icon-gender-male:before { + content: "\e687"; +} + +.wd-icon-shop:before { + content: "\e688"; +} + +.wd-icon-money-circle:before { + content: "\e689"; +} + +.wd-icon-file-word:before { + content: "\e66a"; +} + +.wd-icon-file-unknown:before { + content: "\e66b"; +} + +.wd-icon-folder-open:before { + content: "\e66c"; +} + +.wd-icon-file-pdf:before { + content: "\e66d"; +} + +.wd-icon-folder:before { + content: "\e66e"; +} + +.wd-icon-folder-add:before { + content: "\e66f"; +} + +.wd-icon-file:before { + content: "\e670"; +} + +.wd-icon-file-image:before { + content: "\e671"; +} + +.wd-icon-file-powerpoint:before { + content: "\e672"; +} + +.wd-icon-file-add:before { + content: "\e673"; +} + +.wd-icon-file-icon:before { + content: "\e674"; +} + +.wd-icon-file-paste:before { + content: "\e675"; +} + +.wd-icon-file-excel:before { + content: "\e676"; +} + +.wd-icon-file-copy:before { + content: "\e677"; +} + +.wd-icon-video1:before { + content: "\e678"; +} + +.wd-icon-wallet:before { + content: "\e679"; +} + +.wd-icon-ie:before { + content: "\e65d"; +} + +.wd-icon-logo-codepen:before { + content: "\e65e"; +} + +.wd-icon-github-filled:before { + content: "\e65f"; +} + +.wd-icon-ie-filled:before { + content: "\e660"; +} + +.wd-icon-apple:before { + content: "\e661"; +} + +.wd-icon-windows-filled:before { + content: "\e662"; +} + +.wd-icon-internet:before { + content: "\e663"; +} + +.wd-icon-github:before { + content: "\e664"; +} + +.wd-icon-windows:before { + content: "\e665"; +} + +.wd-icon-apple-filled:before { + content: "\e666"; +} + +.wd-icon-chrome-filled:before { + content: "\e667"; +} + +.wd-icon-chrome:before { + content: "\e668"; +} + +.wd-icon-android:before { + content: "\e669"; +} + +.wd-icon-edit-outline:before { + content: "\e64a"; +} + +.wd-icon-detection:before { + content: "\e64b"; +} + +.wd-icon-check-outline:before { + content: "\e64c"; +} + +.wd-icon-close:before { + content: "\e64d"; +} + +.wd-icon-check:before { + content: "\e64e"; +} + +.wd-icon-arrow-left:before { + content: "\e64f"; +} + +.wd-icon-computer:before { + content: "\e650"; +} + +.wd-icon-clock:before { + content: "\e651"; +} + +.wd-icon-check-bold:before { + content: "\e652"; +} + +.wd-icon-bags:before { + content: "\e653"; +} + +.wd-icon-arrow-down:before { + content: "\e654"; +} + +.wd-icon-arrow-right:before { + content: "\e655"; +} + +.wd-icon-circle:before { + content: "\e656"; +} + +.wd-icon-arrow-thin-down:before { + content: "\e657"; +} + +.wd-icon-camera:before { + content: "\e658"; +} + +.wd-icon-close-bold:before { + content: "\e659"; +} + +.wd-icon-add-circle:before { + content: "\e65a"; +} + +.wd-icon-arrow-thin-up:before { + content: "\e65b"; +} + +.wd-icon-add:before { + content: "\e65c"; +} + +.wd-icon-keyboard-delete:before { + content: "\e634"; +} + +.wd-icon-transfer:before { + content: "\e635"; +} + +.wd-icon-eye-close:before { + content: "\e61f"; +} + +.wd-icon-delete:before { + content: "\e61e"; +} + +.wd-icon-download:before { + content: "\e636"; +} + +.wd-icon-picture:before { + content: "\e637"; +} + +.wd-icon-refresh:before { + content: "\e638"; +} + +.wd-icon-read:before { + content: "\e639"; +} + +.wd-icon-note:before { + content: "\e63a"; +} + +.wd-icon-phone:before { + content: "\e63b"; +} + +.wd-icon-lenovo:before { + content: "\e63c"; +} + +.wd-icon-home:before { + content: "\e63d"; +} + +.wd-icon-search:before { + content: "\e63e"; +} + +.wd-icon-fill-camera:before { + content: "\e63f"; +} + +.wd-icon-fill-arrow-down:before { + content: "\e640"; +} + +.wd-icon-arrow-up:before { + content: "\e61d"; +} + +.wd-icon-delete-thin:before { + content: "\e641"; +} + +.wd-icon-filter:before { + content: "\e642"; +} + +.wd-icon-evaluation:before { + content: "\e643"; +} + +.wd-icon-close-outline:before { + content: "\e644"; +} + +.wd-icon-dong:before { + content: "\e645"; +} + +.wd-icon-error-fill:before { + content: "\e646"; +} + +.wd-icon-chat:before { + content: "\e647"; +} + +.wd-icon-decrease:before { + content: "\e648"; +} + +.wd-icon-copy:before { + content: "\e649"; +} + +.wd-icon-setting:before { + content: "\e621"; +} + +.wd-icon-subscribe:before { + content: "\e622"; +} + +.wd-icon-jdm:before { + content: "\e620"; +} + +.wd-icon-spool:before { + content: "\e623"; +} + +.wd-icon-warning:before { + content: "\e624"; +} + +.wd-icon-wifi-error:before { + content: "\e625"; +} + +.wd-icon-star-on:before { + content: "\e626"; +} + +.wd-icon-rotate:before { + content: "\e627"; +} + +.wd-icon-translate-bold:before { + content: "\e628"; +} + +.wd-icon-keyboard-collapse:before { + content: "\e629"; +} + +.wd-icon-keywords:before { + content: "\e62a"; +} + +.wd-icon-scan:before { + content: "\e62b"; +} + +.wd-icon-view:before { + content: "\e62c"; +} + +.wd-icon-phone-compute:before { + content: "\e62d"; +} + +.wd-icon-video:before { + content: "\e62e"; +} + +.wd-icon-thin-arrow-left:before { + content: "\e62f"; +} + +.wd-icon-goods:before { + content: "\e630"; +} + +.wd-icon-list:before { + content: "\e631"; +} + +.wd-icon-warn-bold:before { + content: "\e632"; +} + +.wd-icon-more:before { + content: "\e633"; +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-icon/types.ts b/src/uni_modules/wot-design-uni/components/wd-icon/types.ts new file mode 100644 index 0000000..20511d7 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-icon/types.ts @@ -0,0 +1,21 @@ +import { baseProps, makeRequiredProp, makeStringProp } from '../common/props' + +export const iconProps = { + ...baseProps, + /** + * 使用的图标名字,可以使用链接图片 + */ + name: makeRequiredProp(String), + /** + * 图标的颜色 + */ + color: String, + /** + * 图标的字体大小 + */ + size: String, + /** + * 类名前缀,用于使用自定义图标 + */ + classPrefix: makeStringProp('wd-icon') +} diff --git a/src/uni_modules/wot-design-uni/components/wd-icon/wd-icon.vue b/src/uni_modules/wot-design-uni/components/wd-icon/wd-icon.vue new file mode 100644 index 0000000..fdd2775 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-icon/wd-icon.vue @@ -0,0 +1,53 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-icon/wd-icons.ttf b/src/uni_modules/wot-design-uni/components/wd-icon/wd-icons.ttf new file mode 100644 index 0000000..7abffe1 Binary files /dev/null and b/src/uni_modules/wot-design-uni/components/wd-icon/wd-icons.ttf differ diff --git a/src/uni_modules/wot-design-uni/components/wd-img-cropper/index.scss b/src/uni_modules/wot-design-uni/components/wd-img-cropper/index.scss new file mode 100644 index 0000000..7f55853 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-img-cropper/index.scss @@ -0,0 +1,231 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +@include b(img-cropper) { + background: rgba(0, 0, 0, 1); + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + z-index: 1; + + // 裁剪框包裹器 + @include e(wrapper) { + position: relative; + background: rgba(0, 0, 0, 0.45); + } + + @include e(cut) { + z-index: 9; + position: absolute; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + pointer-events: none; + + .wd-img-cropper__cut--top, + .wd-img-cropper__cut--bottom, + .wd-img-cropper__cut--left, + .wd-img-cropper__cut--right { + // 拖动中背景蒙层为0 拖动结束为0.85 + background-color: rgba(0, 0, 0, 0.85); + transition: background 0.2s; + + @include when(hightlight) { + background-color: rgba(0, 0, 0, 0); + } + } + + .wd-img-cropper__cut--bottom, + .wd-img-cropper__cut--right { + flex: auto; + } + + @include m(middle) { + display: flex; + } + + @include m(body) { + // 若需要变化窗体大小,支持控制窗体的大小来控制下方所有对应的展示 + background-color: transparent; + position: relative; + + // 节选框的窗体最外部边缘线 + &::before { + content: ""; + border: 1px solid #fff; + width: calc(200% - 1px); + height: calc(200% - 1px); + position: absolute; + transform: scale(0.5) translate(-1px, -1px); + top: -50%; + left: -50%; + } + + // 结算框对角尺寸 + $border-size: 2px; + + // 节选框的四个角 + .is-left-top, + .is-left-bottom, + .is-right-top, + .is-right-bottom { + &::before { + content: ""; + position: absolute; + width: $border-size; + height: 20px; + background-color: #fff; + } + + &::after { + content: ""; + position: absolute; + width: 20px; + height: $border-size; + background-color: #fff; + } + } + + .is-left-top { + + &::before, + &::after { + left: -$border-size; + top: -$border-size; + } + } + + .is-left-bottom { + + &::before, + &::after { + left: -$border-size; + bottom: -$border-size; + } + } + + .is-right-top { + + &::before, + &::after { + right: -$border-size; + top: -$border-size; + } + } + + .is-right-bottom { + + &::before, + &::after { + right: -$border-size; + bottom: -$border-size; + } + } + + // 内部网格线 + .is-gridlines-x, + .is-gridlines-y { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + display: flex; + } + + .is-gridlines-x { + justify-content: center; + + &::before { + content: ""; + display: inline-block; + width: 66.66%; + height: 200%; + border: 1px solid #fff; + border-top: none; + border-bottom: none; + transform: scale(0.5) translate(0, -50%); + } + } + + // 内部网格线 - y轴 + .is-gridlines-y { + align-items: center; + + &::after { + content: ""; + flex-shrink: 0; + display: inline-block; + width: 200%; + height: 66.66%; + border: 1px solid #fff; + border-left: none; + border-right: none; + transform: scale(0.5) translate(-50%, 0); + } + } + } + } + + @include e(img) { + z-index: 2; + top: 0; + left: 0; + position: absolute; + border: none; + width: 100%; + backface-visibility: hidden; + transform-origin: center; + } + + @include e(canvas) { + position: fixed; + background: white; + width: 150px; + height: 150px; + z-index: 10; + top: -200%; + pointer-events: none; + } + + @include e(footer) { + position: fixed; + z-index: 10; + bottom: 10px; + width: 100%; + height: 15vh; + text-align: center; + + @include m(button) { + position: relative; + text-align: left; + margin: 0 20px; + padding-top: 4vh; + // line-height: 32px; + box-sizing: border-box; + + .is-cancel { + display: inline-block; + color: #fff; + font-size: 16px; + } + + .is-confirm { + position: absolute; + right: 0; + // height: 32px; + width: 56px; + border-radius: 16px; + font-size: 16px; + } + } + } + + @include edeep(rotate) { + font-size: $-img-cropper-icon-size; + color: $-img-cropper-icon-color; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-img-cropper/types.ts b/src/uni_modules/wot-design-uni/components/wd-img-cropper/types.ts new file mode 100644 index 0000000..0926e49 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-img-cropper/types.ts @@ -0,0 +1,81 @@ +/* + * @Author: weisheng + * @Date: 2024-06-03 23:43:43 + * @LastEditTime: 2024-06-06 21:40:53 + * @LastEditors: weisheng + * @Description: + * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-img-cropper/types.ts + * 记得注释 + */ +import type { ComponentPublicInstance, ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp } from '../common/props' + +export const imgCropperProps = { + ...baseProps, + /** + * 打开图片裁剪组件 + */ + modelValue: makeBooleanProp(false), + /** + * 取消按钮文案 + */ + cancelButtonText: String, + /** + * 确认按钮文案 + */ + confirmButtonText: String, + /** + * 是否禁用旋转 + */ + disabledRotate: makeBooleanProp(false), + /** canvas绘图参数 start **/ + /** + * 目标文件的类型,wx.canvasToTempFilePath属性介绍 + */ + fileType: makeStringProp('png'), + /** + * 生成的图片质量 wx.canvasToTempFilePath属性介绍 + */ + quality: makeNumberProp(1), + /** + * 设置导出图片尺寸 + */ + exportScale: makeNumberProp(2), + /** canvas绘图参数 end **/ + /** + * 图片源路径 + */ + imgSrc: makeStringProp(''), + /** + * 图片宽 + */ + imgWidth: makeNumericProp(''), + /** + * 图片高 + */ + imgHeight: makeNumericProp(''), + /** + * 最大缩放 + */ + maxScale: makeNumberProp(3) +} + +export type ImgCropperProps = ExtractPropTypes + +export type ImgCropperExpose = { + /** + * 逆转是否使用动画 + */ + revertIsAnimation: (animation: boolean) => void + /** + * 初始化图片的大小和角度以及距离 + */ + resetImg: () => void + /** + * 控制旋转角度 + * @param angle 角度 + */ + setRoate: (angle: number) => void +} + +export type ImgCropperInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-img-cropper/wd-img-cropper.vue b/src/uni_modules/wot-design-uni/components/wd-img-cropper/wd-img-cropper.vue new file mode 100644 index 0000000..2cebfa7 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-img-cropper/wd-img-cropper.vue @@ -0,0 +1,633 @@ + + + + + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-img/index.scss b/src/uni_modules/wot-design-uni/components/wd-img/index.scss new file mode 100644 index 0000000..9d3eba2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-img/index.scss @@ -0,0 +1,19 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +@include b(img) { + position: relative; + display: inline-block; + + @include e(image) { + display: block; + width: 100%; + height: 100%; + box-sizing: border-box; + } + + @include when(round) { + overflow: hidden; + border-radius: 50%; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-img/types.ts b/src/uni_modules/wot-design-uni/components/wd-img/types.ts new file mode 100644 index 0000000..74d780e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-img/types.ts @@ -0,0 +1,53 @@ +import { baseProps, makeBooleanProp, makeStringProp, numericProp } from '../common/props' +export type ImageMode = + | 'scaleToFill' + | 'aspectFit' + | 'aspectFill' + | 'widthFix' + | 'heightFix' + | 'top' + | 'bottom' + | 'center' + | 'left' + | 'right' + | 'top left' + | 'top right' + | 'bottom left' + | 'bottom right' + +export const imgProps = { + ...baseProps, + customImage: makeStringProp(''), + /** + * 图片链接 + */ + src: String, + /** + * 是否显示为圆形 + */ + round: makeBooleanProp(false), + /** + * 填充模式:'top left' / 'top right' / 'bottom left' / 'bottom right' / 'right' / 'left' / 'center' / 'bottom' / 'top' / 'heightFix' / 'widthFix' / 'aspectFill' / 'aspectFit' / 'scaleToFill' + */ + mode: makeStringProp('scaleToFill'), + /** + * 是否懒加载 + */ + lazyLoad: makeBooleanProp(false), + /** + * 宽度,默认单位为px + */ + width: numericProp, + /** + * 高度,默认单位为px + */ + height: numericProp, + /** + * 圆角大小,默认单位为px + */ + radius: numericProp, + /** + * 是否允许预览 + */ + enablePreview: makeBooleanProp(false) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-img/wd-img.vue b/src/uni_modules/wot-design-uni/components/wd-img/wd-img.vue new file mode 100644 index 0000000..73c95b6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-img/wd-img.vue @@ -0,0 +1,76 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-index-anchor/index.scss b/src/uni_modules/wot-design-uni/components/wd-index-anchor/index.scss new file mode 100644 index 0000000..f0a1ac6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-index-anchor/index.scss @@ -0,0 +1,35 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(index-anchor) { + background-color: $-color-gray-8; + color: $-color-white; + } +} + +// #ifdef MP-DINGTALK +@include b(index-anchor-ding) { + + @include when(sticky){ + position: sticky; + top: 0; + left: 0; + z-index: 1; + } +} +// #endif + +@include b(index-anchor) { + background-color: $-color-gray-2; + padding: 10px; + font-size: 14px; + color: $-color-title; + + @include when(sticky){ + position: sticky; + top: 0; + left: 0; + z-index: 1; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-index-anchor/type.ts b/src/uni_modules/wot-design-uni/components/wd-index-anchor/type.ts new file mode 100644 index 0000000..8a683fc --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-index-anchor/type.ts @@ -0,0 +1,9 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeRequiredProp } from '../common/props' + +export const indexAnchorProps = { + ...baseProps, + index: makeRequiredProp([String, Number]) +} + +export type IndexAnchorProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-index-anchor/wd-index-anchor.vue b/src/uni_modules/wot-design-uni/components/wd-index-anchor/wd-index-anchor.vue new file mode 100644 index 0000000..67a808a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-index-anchor/wd-index-anchor.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-index-bar/index.scss b/src/uni_modules/wot-design-uni/components/wd-index-bar/index.scss new file mode 100644 index 0000000..a0cf250 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-index-bar/index.scss @@ -0,0 +1,39 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(index-bar) { + @include e(index) { + color: $-color-white; + } + } +} + +@include b(index-bar) { + position: relative; + width: 100%; + height: 100%; + + @include e(content) { + width: 100%; + height: 100%; + } + + @include e(sidebar) { + position: absolute; + top: 50%; + right: 4px; + transform: translateY(-50%); + } + + @include e(index) { + font-size: 12px; + font-weight: $-fw-medium; + color: $-color-title; + padding: 4px 6px; + + @include when(active) { + color: $-color-theme; + } + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-index-bar/type.ts b/src/uni_modules/wot-design-uni/components/wd-index-bar/type.ts new file mode 100644 index 0000000..c75f2f1 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-index-bar/type.ts @@ -0,0 +1,30 @@ +import type { Ref } from 'vue' +import type { InjectionKey } from 'vue' +import type { ExtractPropTypes } from 'vue' +import { makeBooleanProp } from '../common/props' + +export type AnchorIndex = number | string + +export interface AnchorItem { + top: number + index: AnchorIndex +} + +export const indexBarProps = { + /** + * @description 索引是否吸顶 + */ + sticky: makeBooleanProp(false) +} + +export type IndexBarProps = ExtractPropTypes + +export type InderBarProvide = { + props: { sticky?: boolean } + anchorState: { + anchorList: AnchorItem[] // 锚点列表 + activeIndex: AnchorIndex | null // 当前激活的索引 + } +} + +export const indexBarInjectionKey: InjectionKey = Symbol('wd-index-bar') diff --git a/src/uni_modules/wot-design-uni/components/wd-index-bar/wd-index-bar.vue b/src/uni_modules/wot-design-uni/components/wd-index-bar/wd-index-bar.vue new file mode 100644 index 0000000..94663c5 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-index-bar/wd-index-bar.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-input-number/index.scss b/src/uni_modules/wot-design-uni/components/wd-input-number/index.scss new file mode 100644 index 0000000..32879c2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-input-number/index.scss @@ -0,0 +1,132 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(input-number) { + @include e(action) { + color: $-dark-color; + @include when(disabled) { + color: $-dark-color-gray; + } + } + + @include e(input) { + color: $-dark-color; + } + + @include when(disabled) { + .wd-input-number__input { + color: $-dark-color-gray; + } + .wd-input-number__sub, + .wd-input-number__add { + color: $-dark-color-gray; + } + } + } +} + +@include b(input-number) { + display: inline-block; + user-select: none; + line-height: 1.15; + + @include e(action) { + position: relative; + display: inline-block; + width: $-input-number-btn-width; + height: $-input-number-height; + vertical-align: middle; + color: $-input-number-icon-color; + -webkit-tap-highlight-color: transparent; + box-sizing: border-box; + + // 左右加减号的边框 + &::after { + position: absolute; + content: ""; + width: calc(200% - 2px); + height: calc(200% - 2px); + left: 0; + top: 0; + border: 1px solid $-input-number-border-color; + border-top-left-radius: calc($-input-number-radius * 2); + border-bottom-left-radius: calc($-input-number-radius * 2); + transform: scale(0.5); + transform-origin: left top; + } + &:last-child::after { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: calc($-input-number-radius * 2); + border-bottom-right-radius: calc($-input-number-radius * 2); + } + @include when(disabled) { + color: $-input-number-disabled-color; + } + } + + @include e(inner) { + position: relative; + display: inline-block; + vertical-align: middle; + } + + @include e(input) { + position: relative; + display: block; + width: $-input-number-input-width; + height: $-input-number-height; + padding: 0 2px; + box-sizing: border-box; + z-index: 1; + background: transparent; + border: none; + outline: none; + text-align: center; + color: $-input-number-color; + font-size: $-input-number-fs; + -webkit-appearance: none; + -webkit-tap-highlight-color: transparent; + } + + @include e(input-border) { + position: absolute; + width: 100%; + height: calc(200% - 2px); + left: 0; + top: 0; + border-top: 1px solid $-input-number-border-color; + border-bottom: 1px solid $-input-number-border-color; + transform: scaleY(0.5); + transform-origin: left top; + z-index: 0; + } + + @include edeep(action-icon) { + position: absolute; + display: inline-block; + font-size: $-input-number-icon-size; + width: $-input-number-icon-size; + height: $-input-number-icon-size; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + } + + @include when(disabled) { + .wd-input-number__input { + color: $-input-number-disabled-color; + z-index: inherit; + } + .wd-input-number__sub, + .wd-input-number__add { + color: $-input-number-disabled-color; + } + } + @include when(without-input) { + .wd-input-number__action:last-child::after { + border-left: none; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-input-number/types.ts b/src/uni_modules/wot-design-uni/components/wd-input-number/types.ts new file mode 100644 index 0000000..e4ef66e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-input-number/types.ts @@ -0,0 +1,70 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 20:40:34 + * @LastEditTime: 2024-03-18 14:58:47 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-input-number\types.ts + * 记得注释 + */ +import { baseProps, makeBooleanProp, makeNumberProp, makeNumericProp, makeRequiredProp, makeStringProp, numericProp } from '../common/props' + +export const inputNumberProps = { + ...baseProps, + /** + * 绑定值 + */ + modelValue: makeRequiredProp(numericProp), + /** + * 最小值 + */ + min: makeNumberProp(1), + /** + * 最大值 + */ + max: makeNumberProp(Number.MAX_SAFE_INTEGER), + /** + * 步进值 + */ + step: makeNumberProp(1), + /** + * 是否严格按照步进值递增或递减 + */ + stepStrictly: makeBooleanProp(false), + /** + * 数值精度 + */ + precision: makeNumberProp(0), + /** + * 是否禁用 + */ + disabled: makeBooleanProp(false), + /** + * 是否禁用输入框 + */ + disableInput: makeBooleanProp(false), + /** + * 是否禁用减号按钮 + */ + disableMinus: makeBooleanProp(false), + /** + * 是否禁用加号按钮 + */ + disablePlus: makeBooleanProp(false), + /** + * 是否不显示输入框 + */ + withoutInput: makeBooleanProp(false), + /** + * 输入框宽度 + */ + inputWidth: makeNumericProp(36), + /** + * 是否允许为空 + */ + allowNull: makeBooleanProp(false), + /** + * 输入框占位符 + */ + placeholder: makeStringProp('') +} diff --git a/src/uni_modules/wot-design-uni/components/wd-input-number/wd-input-number.vue b/src/uni_modules/wot-design-uni/components/wd-input-number/wd-input-number.vue new file mode 100644 index 0000000..1cef68a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-input-number/wd-input-number.vue @@ -0,0 +1,208 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-input/index.scss b/src/uni_modules/wot-design-uni/components/wd-input/index.scss new file mode 100644 index 0000000..be8acc8 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-input/index.scss @@ -0,0 +1,338 @@ +@import "../common/abstracts/variable"; +@import "../common/abstracts/mixin"; + +.wot-theme-dark { + @include b(input) { + background: $-dark-background2; + + &::after { + background: $-dark-color-gray; + } + + @include when(not-empty) { + &:not(.is-disabled) { + &::after { + background-color: $-dark-color; + } + } + } + + + @include e(inner) { + color: $-dark-color; + + &::-webkit-input-placeholder { + color: $-dark-color3; + } + } + + @include e(placeholder) { + color: $-dark-color3; + } + + @include e(count) { + color: $-dark-color3; + background: transparent; + } + + @include e(count-current) { + color: $-dark-color; + } + + :deep(.wd-input__icon), + :deep(.wd-input__clear) { + color: $-dark-color; + background: transparent; + } + + @include when(cell) { + background-color: $-dark-background2; + line-height: $-cell-line-height; + + @include when(border) { + @include halfPixelBorder("top", $-input-cell-padding, $-dark-border-color); + } + } + + @include when(disabled) { + + .wd-input__inner { + color: $-dark-color-gray; + background: transparent; + } + } + + + @include e(label) { + color: $-dark-color; + } + } +} + +@include b(input) { + position: relative; + -webkit-tap-highlight-color: transparent; + text-align: left; + background: $-input-bg; + + &::after { + position: absolute; + content: ""; + bottom: 0; + left: 0; + right: 0; + height: 1px; + background: $-input-border-color; + transform: scaleY(0.5); + transition: background-color 0.2s ease-in-out; + } + + @include when(not-empty) { + &:not(.is-disabled) { + &::after { + background-color: $-input-not-empty-border-color; + } + } + } + + @include e(label) { + position: relative; + display: flex; + width: $-input-cell-label-width; + color: $-cell-title-color; + margin-right: $-cell-padding; + box-sizing: border-box; + font-size: $-input-fs; + flex-shrink: 0; + + @include when(required) { + padding-left: 12px; + + &::after { + position: absolute; + left: 0; + top: 2px; + content: "*"; + font-size: $-cell-required-size; + line-height: 1.1; + color: $-cell-required-color; + } + } + } + + @include e(label-inner) { + display: inline-block; + font-size: $-input-fs; + line-height: $-cell-line-height; + } + + @include e(body) { + flex: 1; + } + + @include e(value) { + position: relative; + display: flex; + flex-direction: row; + align-items: center; + } + + + @include e(prefix) { + margin-right: $-input-icon-margin; + font-size: $-input-fs; + line-height: initial; + + :deep(.wd-input__icon), + :deep(.wd-input__clear) { + margin-left: 0; + } + } + + @include e(suffix) { + flex-shrink: 0; + margin-left: $-input-icon-margin; + line-height: initial; + } + + @include e(error-message){ + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } + + @include when(disabled) { + + .wd-input__inner { + color: $-input-disabled-color; + background: transparent; + } + } + + @include when(error) { + + .wd-input__inner { + color: $-input-error-color; + background: transparent; + } + } + + @include when(no-border) { + &::after { + display: none; + } + + .wd-input__inner { + height: $-input-inner-height-no-border; + padding-top: 0; + padding-bottom: 0; + } + } + + @include when(cell) { + display: flex; + align-items: flex-start; + padding: $-input-cell-padding $-input-padding; + background-color: $-input-cell-bg; + + &.is-error::after { + background: $-input-cell-border-color; + } + + :deep(.wd-input__icon), + :deep(.wd-input__clear) { + display: inline-flex; + align-items: center; + height: $-input-cell-height; + line-height: $-input-cell-height; + } + + .wd-input__prefix { + display: inline-block; + margin-right: $-cell-icon-right; + } + + .wd-input__inner { + height: $-input-cell-height; + } + + &.wd-input::after { + display: none; + } + + + @include when(center) { + align-items: center; + } + + @include when(border) { + @include halfPixelBorder("top", $-input-cell-padding); + } + } + + @include when(large) { + padding: $-input-cell-padding-large; + + .wd-input__prefix { + font-size: $-input-fs-large; + } + + .wd-input__label-inner { + font-size: $-input-fs-large; + } + + .wd-input__inner { + font-size: $-input-fs-large; + } + + + .wd-input__count { + font-size: $-input-count-fs-large; + } + + :deep(.wd-input__icon), + :deep(.wd-input__clear) { + font-size: $-input-icon-size-large; + } + + } + + + @include e(inner) { + flex: 1; + height: $-input-inner-height; + font-size: $-input-fs; + color: $-input-color; + outline: none; + border: none; + background: none; + padding: 0; + box-sizing: border-box; + + &::-webkit-input-placeholder { + color: $-input-placeholder-color; + } + + @include when(align-right) { + text-align: right; + } + } + + @include e(readonly-mask) { + position: absolute; + top: 0; + left: 0; + z-index: 2; + width: 100%; + height: 100%; + } + + + @include edeep(icon) { + margin-left: $-input-icon-margin; + font-size: $-input-icon-size; + color: $-input-icon-color; + vertical-align: middle; + background: $-input-bg; + } + + @include edeep(clear) { + margin-left: $-input-icon-margin; + font-size: $-input-icon-size; + color: $-input-clear-color; + vertical-align: middle; + background: $-input-bg; + } + + @include e(count) { + margin-left: 15px; + font-size: $-input-count-fs; + color: $-input-count-color; + vertical-align: middle; + background: $-input-bg; + } + + @include e(count-current) { + color: $-input-count-current-color; + + @include when(error) { + color: $-input-error-color; + } + } + + + @include e(placeholder) { + color: $-input-placeholder-color; + + &.is-error { + color: $-input-error-color; + } + } + + .wd-input__count, + .wd-input__count-current { + display: inline-flex; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-input/types.ts b/src/uni_modules/wot-design-uni/components/wd-input/types.ts new file mode 100644 index 0000000..a966a08 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-input/types.ts @@ -0,0 +1,175 @@ +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp } from '../common/props' +import type { FormItemRule } from '../wd-form/types' + +export type InputClearTrigger = 'focus' | 'always' + +export const inputProps = { + ...baseProps, + customInputClass: makeStringProp(''), + customLabelClass: makeStringProp(''), + // 原生属性 + /** + * 占位文本 + */ + placeholder: String, + /** + * 原生属性,指定 placeholder 的样式,目前仅支持color,font-size和font-weight + */ + placeholderStyle: String, + /** + * 原生属性,指定 placeholder 的样式类 + */ + placeholderClass: makeStringProp(''), + /** + * 原生属性,指定光标与键盘的距离。取 input 距离底部的距离和cursor-spacing指定的距离的最小值作为光标与键盘的距离 + */ + cursorSpacing: makeNumberProp(0), + /** + * 原生属性,指定focus时的光标位置 + */ + cursor: makeNumberProp(-1), + /** + * 原生属性,光标起始位置,自动聚集时有效,需与selection-end搭配使用 + */ + selectionStart: makeNumberProp(-1), + /** + * 原生属性,光标结束位置,自动聚集时有效,需与selection-start搭配使用 + */ + selectionEnd: makeNumberProp(-1), + /** + * 原生属性,键盘弹起时,是否自动上推页面 + */ + adjustPosition: makeBooleanProp(true), + /** + * focus时,点击页面的时候不收起键盘 + */ + holdKeyboard: makeBooleanProp(false), + /** + * 设置键盘右下角按钮的文字,仅在type='text'时生效,可选值:done / go / next / search / send + */ + confirmType: makeStringProp('done'), + /** + * 点击键盘右下角按钮时是否保持键盘不收起 + */ + confirmHold: makeBooleanProp(false), + /** + * 原生属性,获取焦点 + */ + focus: makeBooleanProp(false), + /** + * 类型,可选值:text / number / digit / idcard + */ + type: makeStringProp('text'), + /** + * 原生属性,最大长度 + */ + maxlength: { + type: Number, + // #ifndef MP-ALIPAY + default: -1 + // #endif + }, + /** + * 原生属性,禁用 + */ + disabled: makeBooleanProp(false), + /** + * 微信小程序原生属性,强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效) + */ + alwaysEmbed: makeBooleanProp(false), + // 原生属性结束 + /** + * 输入框的值靠右展示 + */ + alignRight: makeBooleanProp(false), + /** + * 绑定值 + */ + modelValue: makeNumericProp(''), + /** + * 显示为密码框 + */ + showPassword: makeBooleanProp(false), + /** + * 显示清空按钮 + */ + clearable: makeBooleanProp(false), + /** + * 只读 + */ + readonly: makeBooleanProp(false), + /** + * 使用 后置图标 插槽 + */ + useSuffixSlot: makeBooleanProp(false), + /** + * 使用 前置图标 插槽 + */ + usePrefixSlot: makeBooleanProp(false), + /** + * 前置图标,icon组件中的图标类名 + */ + prefixIcon: String, + /** + * 后置图标,icon组件中的图标类名 + */ + suffixIcon: String, + /** + * 显示字数限制,需要同时设置 maxlength + */ + showWordLimit: makeBooleanProp(false), + /** + * 设置左侧标题 + */ + label: String, + /** + * 设置左侧标题宽度 + */ + labelWidth: makeStringProp('33%'), + /** + * 使用 label 插槽 + */ + useLabelSlot: makeBooleanProp(false), + /** + * 设置输入框大小,可选值:large + */ + size: String, + /** + * 设置输入框错误状态,错误状态时为红色 + */ + error: makeBooleanProp(false), + /** + * 当有label属性时,设置标题和输入框垂直居中,默认为顶部居中 + */ + center: makeBooleanProp(false), + /** + * 非 cell 类型下是否隐藏下划线 + */ + noBorder: makeBooleanProp(false), + /** + * 是否必填 + */ + required: makeBooleanProp(false), + /** + * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的 + */ + prop: String, + /** + * 表单验证规则,结合wd-form组件使用 + */ + rules: makeArrayProp(), + /** + * 显示清除图标的时机,always 表示输入框不为空时展示,focus 表示输入框聚焦且不为空时展示 + * 类型: "focus" | "always" + * 默认值: "always" + * 最低版本: $LOWEST_VERSION$ + */ + clearTrigger: makeStringProp('always'), + /** + * 是否在点击清除按钮时聚焦输入框 + * 类型: boolean + * 默认值: true + * 最低版本: $LOWEST_VERSION$ + */ + focusWhenClear: makeBooleanProp(true) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-input/wd-input.vue b/src/uni_modules/wot-design-uni/components/wd-input/wd-input.vue new file mode 100644 index 0000000..a845913 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-input/wd-input.vue @@ -0,0 +1,289 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-loading/index.scss b/src/uni_modules/wot-design-uni/components/wd-loading/index.scss new file mode 100644 index 0000000..bc995a7 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-loading/index.scss @@ -0,0 +1,37 @@ +@import "../common/abstracts/_mixin.scss"; +@import "../common/abstracts/variable.scss"; + +@include b(loading) { + font-size: 0; + line-height: 0; + vertical-align: middle; + display: inline-block; + width: $-loading-size; + height: $-loading-size; + + @include e(body) { + width: 100%; + height: 100%; + animation: wd-rotate 0.8s linear infinite; + animation-duration: 2s; + + } + @include e(svg) { + width: 100%; + height: 100%; + background-size: cover; + background-repeat: no-repeat; + } +} + +@keyframes wd-rotate { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} + + diff --git a/src/uni_modules/wot-design-uni/components/wd-loading/types.ts b/src/uni_modules/wot-design-uni/components/wd-loading/types.ts new file mode 100644 index 0000000..c997f2a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-loading/types.ts @@ -0,0 +1,31 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 20:40:34 + * @LastEditTime: 2024-07-18 22:09:12 + * @LastEditors: weisheng + * @Description: + * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-loading/types.ts + * 记得注释 + */ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeNumericProp, makeStringProp } from '../common/props' + +export type LoadingType = 'outline' | 'ring' // 提示信息加载状态类型 + +export const loadingProps = { + ...baseProps, + /** + * 加载指示器类型,可选值:'outline' | 'ring' + */ + type: makeStringProp('ring'), + /** + * 设置加载指示器颜色 + */ + color: makeStringProp('#4D80F0'), + /** + * 设置加载指示器大小 + */ + size: makeNumericProp('') +} + +export type LoadingProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-loading/wd-loading.vue b/src/uni_modules/wot-design-uni/components/wd-loading/wd-loading.vue new file mode 100644 index 0000000..eb2de8f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-loading/wd-loading.vue @@ -0,0 +1,90 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-loadmore/index.scss b/src/uni_modules/wot-design-uni/components/wd-loadmore/index.scss new file mode 100644 index 0000000..78974f6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-loadmore/index.scss @@ -0,0 +1,39 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; +.wot-theme-dark { + @include b(loadmore) { + color: $-dark-color; + } +} + +@include b(loadmore) { + width: 100%; + height: $-loadmore-height; + line-height: $-loadmore-height; + text-align: center; + color: $-loadmore-color; + + @include edeep(loading) { + display: inline-block; + margin-right: 8px; + vertical-align: middle; + width: $-loadmore-loading-size; + height: $-loadmore-loading-size; + } + @include e(text) { + display: inline-block; + font-size: $-loadmore-fs; + vertical-align: middle; + + @include when(light) { + margin: 0 6px; + color: $-loadmore-error-color; + } + } + @include edeep(refresh) { + display: inline-block; + color: $-loadmore-error-color; + vertical-align: middle; + font-size: $-loadmore-refresh-fs; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-loadmore/types.ts b/src/uni_modules/wot-design-uni/components/wd-loadmore/types.ts new file mode 100644 index 0000000..558e8ac --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-loadmore/types.ts @@ -0,0 +1,24 @@ +import type { PropType } from 'vue' +import { baseProps, makeStringProp } from '../common/props' + +export type LoadMoreState = 'loading' | 'error' | 'finished' + +export const loadmoreProps = { + ...baseProps, + /** + * 加载状态,可选值:'loading' | 'error' | 'finished' + */ + state: String as PropType, + /** + * 加载提示文案 + */ + loadingText: String, + /** + * 全部加载完的提示文案 + */ + finishedText: String, + /** + * 加载失败的提示文案 + */ + errorText: makeStringProp('加载失败,点击重试') +} diff --git a/src/uni_modules/wot-design-uni/components/wd-loadmore/wd-loadmore.vue b/src/uni_modules/wot-design-uni/components/wd-loadmore/wd-loadmore.vue new file mode 100644 index 0000000..bb6b3a1 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-loadmore/wd-loadmore.vue @@ -0,0 +1,53 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-message-box/index.scss b/src/uni_modules/wot-design-uni/components/wd-message-box/index.scss new file mode 100644 index 0000000..e24a35a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-message-box/index.scss @@ -0,0 +1,121 @@ +@import "../common/abstracts/variable.scss"; +@import "../common/abstracts/_mixin.scss"; + +.wot-theme-dark { + @include b(message-box) { + @include e(body) { + background-color: $-dark-background2; + } + + @include e(title) { + color: $-dark-color; + } + + @include e(content) { + color: $-dark-color3; + + &::-webkit-scrollbar-thumb { + background: $-dark-border-color; + } + } + } +} + +:deep(.wd-message-box){ + border-radius: $-message-box-radius; + overflow: hidden; +} + +@include b(message-box) { + border-radius: $-message-box-radius; + overflow: hidden; + + @include e(container) { + width: $-message-box-width; + box-sizing: border-box; + } + + @include e(body) { + background-color: $-message-box-bg; + padding: $-message-box-padding; + + @include when(no-title) { + padding: 25px 24px 0px; + } + } + + @include e(title) { + text-align: center; + font-size: $-message-box-title-fs; + color: $-message-box-title-color; + line-height: 20px; + font-weight: 500; + padding-top: 5px; + padding-bottom: 10px; + } + + @include e(content) { + max-height: $-message-box-content-max-height; + color: $-message-box-content-color; + font-size: $-message-box-content-fs; + text-align: center; + overflow: auto; + line-height: 20px; + + &::-webkit-scrollbar { + width: $-message-box-content-scrollbar-width; + } + + &::-webkit-scrollbar-thumb { + width: $-message-box-content-scrollbar-width; + background: $-message-box-content-scrollbar-color; + border-radius: calc($-message-box-content-scrollbar-width / 2); + } + } + + @include e(input-error) { + min-height: 18px; + margin-top: 2px; + color: $-message-box-input-error-color; + text-align: left; + + @include when(hidden) { + visibility: hidden; + } + } + + @include e(actions) { + padding: 24px; + } + + @include e(flex) { + display: flex; + } + + @include e(block) { + display: block; + } + + @include e(cancel) { + margin-right: 16px; + } +} + +.zoomIn-enter-active, +.zoomIn-leave-active { + opacity: 1; + transform: translate3d(-50%, -50%, 0) scale(1); + transition: all .2s; +} + +.zoomIn-enter { + opacity: 0; + transform: translate3d(-50%, -50%, 0) scale(0.7); + transition: all .2s ease-out; +} + +.zoomIn-leave-to { + opacity: 0; + transform: translate3d(-50%, -50%, 0) scale(0.9); + transition: all .2s ease-out; +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-message-box/index.ts b/src/uni_modules/wot-design-uni/components/wd-message-box/index.ts new file mode 100644 index 0000000..4e82e8c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-message-box/index.ts @@ -0,0 +1,89 @@ +/* + * @Author: weisheng + * @Date: 2022-12-14 17:33:21 + * @LastEditTime: 2024-04-01 12:30:51 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-message-box\index.ts + * 记得注释 + */ +import { provide, ref } from 'vue' +import type { Message, MessageOptions, MessageResult, MessageType } from './types' +import { deepMerge } from '../common/util' + +/** + * useMessage 用到的key + * + * @internal + */ +export const messageDefaultOptionKey = '__MESSAGE_OPTION__' + +// 默认模板 +export const defaultOptions: MessageOptions = { + title: '', + showCancelButton: false, + show: false, + closeOnClickModal: true, + msg: '', + type: 'alert', + inputType: 'text', + inputValue: '', + inputValidate: null, + showErr: false, + zIndex: 99, + lazyRender: true, + inputError: '' +} + +export function useMessage(selector: string = ''): Message { + const messageOption = ref(defaultOptions) // Message选项 + const messageOptionKey = selector ? messageDefaultOptionKey + selector : messageDefaultOptionKey + provide(messageOptionKey, messageOption) + + const createMethod = (type: MessageType) => { + // 优先级:options->MessageOptions->defaultOptions + return (options: MessageOptions | string) => { + const messageOptions = deepMerge({ type: type }, typeof options === 'string' ? { title: options } : options) as MessageOptions + if (messageOptions.type === 'confirm' || messageOptions.type === 'prompt') { + messageOptions.showCancelButton = true + } else { + messageOptions.showCancelButton = false + } + return show(messageOptions) + } + } + + const show = (option: MessageOptions | string) => { + // 返回一个promise + return new Promise((resolve, reject) => { + const options = deepMerge(defaultOptions, typeof option === 'string' ? { title: option } : option) as MessageOptions + messageOption.value = deepMerge(options, { + show: true, + onConfirm: (res: MessageResult) => { + resolve(res) + }, + onCancel: (res: MessageResult) => { + reject(res) + } + }) as MessageOptions + }) + } + + // 打开Alert 弹框 + const alert = createMethod('alert') + // 打开Confirm 弹框 + const confirm = createMethod('confirm') + // 打开Prompt 弹框 + const prompt = createMethod('prompt') + + const close = () => { + messageOption.value = { ...defaultOptions } + } + return { + show, + alert, + confirm, + prompt, + close + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-message-box/types.ts b/src/uni_modules/wot-design-uni/components/wd-message-box/types.ts new file mode 100644 index 0000000..719bc7a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-message-box/types.ts @@ -0,0 +1,116 @@ +/* + * @Author: weisheng + * @Date: 2024-04-08 22:34:01 + * @LastEditTime: 2024-04-10 12:58:10 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-message-box\types.ts + * 记得注释 + */ +import { baseProps } from '../common/props' + +export type MessageType = 'alert' | 'confirm' | 'prompt' + +export type MessageBeforeConfirmOption = { + resolve: (isPass: boolean) => void +} + +export type MessageOptions = { + /** + * 标题 + */ + title?: string + /** + * 是否展示取消按钮 + */ + showCancelButton?: boolean + + show?: boolean + /** + * 是否支持点击蒙层进行关闭,点击蒙层回调传入的action为'modal' + */ + closeOnClickModal?: boolean + /** + * 确定按钮文案 + */ + confirmButtonText?: string + /** + * 取消按钮文案 + */ + cancelButtonText?: string + /** + * 消息文案 + */ + msg?: string + /** + * 弹框类型 + */ + type?: MessageType + /** + * 当type为prompt时,输入框类型 + */ + inputType?: string + /** + * 当type为prompt时,输入框初始值 + */ + inputValue?: string | number + /** + * 当type为prompt时,输入框placeholder + */ + inputPlaceholder?: string + /** + * 当type为prompt时,输入框正则校验,点击确定按钮时进行校验 + */ + inputPattern?: RegExp + /** + * 当type为prompt时,输入框校验函数,点击确定按钮时进行校验 + */ + inputValidate?: InputValidate | null + /** + * 当type为prompt时,输入框检验不通过时的错误提示文案 + */ + inputError?: string + /** + * 是否展示错误信息 + */ + showErr?: boolean + /** + * 弹窗层级 + */ + zIndex?: number + /** + * 弹层内容懒渲染,触发展示时才渲染内容 + */ + lazyRender?: boolean + /** + * 确认前钩子 + */ + beforeConfirm?: (options: MessageBeforeConfirmOption) => void +} + +export type ActionType = 'confirm' | 'cancel' | 'modal' + +export type InputValidate = (inputValue: string | number) => boolean + +export interface MessageResult { + action: ActionType + value?: string | number +} + +export interface Message { + // 打开Message + show(toastOptions: MessageOptions | string): Promise + // 打开Alert 弹框 + alert(toastOptions: MessageOptions | string): Promise + // 打开Confirm 弹框 + confirm(toastOptions: MessageOptions | string): Promise + // 打开Prompt 弹框 + prompt(toastOptions: MessageOptions | string): Promise + // 关闭Message + close(): void +} + +export const messageBoxProps = { + ...baseProps, + selector: String +} diff --git a/src/uni_modules/wot-design-uni/components/wd-message-box/wd-message-box.vue b/src/uni_modules/wot-design-uni/components/wd-message-box/wd-message-box.vue new file mode 100644 index 0000000..a493b53 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-message-box/wd-message-box.vue @@ -0,0 +1,310 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-navbar-capsule/index.scss b/src/uni_modules/wot-design-uni/components/wd-navbar-capsule/index.scss new file mode 100644 index 0000000..b41d43d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-navbar-capsule/index.scss @@ -0,0 +1,66 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(navbar-capsule) { + &::before { + border: 2rpx solid $-dark-border-color; + } + + &::after { + background: $-dark-border-color; + } + + :deep(.wd-navbar-capsule__icon) { + color: $-dark-color; + } + } +} + + +@include b(navbar-capsule) { + position: relative; + box-sizing: border-box; + width: $-navbar-capsule-width; + height: $-navbar-capsule-height; + display: flex; + align-items: center; + justify-content: center; + + &::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 200%; + height: 200%; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: calc($-navbar-capsule-border-radius * 2); + border: 2rpx solid $-navbar-capsule-border-color; + } + + &::after { + content: ''; + display: block; + position: absolute; + left: 50%; + top: 50%; + transform: translateY(-50%); + width: 1px; + height: 36rpx; + background: $-navbar-capsule-border-color; + } + + &:empty { + display: none; + } + + @include edeep(icon) { + flex: 1; + position: relative; + color: $-navbar-desc-font-color; + font-size: $-navbar-capsule-icon-size; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-navbar-capsule/types.ts b/src/uni_modules/wot-design-uni/components/wd-navbar-capsule/types.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/uni_modules/wot-design-uni/components/wd-navbar-capsule/wd-navbar-capsule.vue b/src/uni_modules/wot-design-uni/components/wd-navbar-capsule/wd-navbar-capsule.vue new file mode 100644 index 0000000..da19abe --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-navbar-capsule/wd-navbar-capsule.vue @@ -0,0 +1,31 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-navbar/index.scss b/src/uni_modules/wot-design-uni/components/wd-navbar/index.scss new file mode 100644 index 0000000..b002e91 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-navbar/index.scss @@ -0,0 +1,105 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(navbar) { + background-color: $-dark-background; + + @include e(title) { + color: $-dark-color; + } + + @include e(text) { + color: $-dark-color; + @include m(hover){ + background-color: $-dark-background3; + } + } + + :deep(.wd-navbar__arrow) { + color: $-dark-color; + } + } +} + + +@include b(navbar) { + position: relative; + text-align: center; + user-select: none; + height: $-navbar-height; + line-height: $-navbar-height; + background-color: $-navbar-background; + box-sizing: content-box; + + @include e(content) { + position: relative; + height: 100%; + width: 100%; + } + + @include e(title) { + max-width: 60%; + height: 100%; + margin: 0 auto; + color: $-navbar-color; + font-weight: $-navbar-title-font-weight; + font-size: $-navbar-title-font-size; + @include lineEllipsis(); + } + + @include e(text) { + display: inline-block; + vertical-align: middle; + color: $-navbar-desc-font-color; + } + + @include e(left, right, capsule) { + position: absolute; + top: 0; + bottom: 0; + font-size: $-navbar-desc-font-size; + display: flex; + align-items: center; + padding: 0 12px; + + @include when(disabled) { + opacity: $-navbar-disabled-opacity; + } + } + + @include e(left, capsule) { + left: 0; + } + + @include e(left) { + @include m(hover){ + background-color: $-navbar-hover-color; + } + } + + @include e(right) { + right: 0; + @include m(hover){ + background-color: $-navbar-hover-color; + } + } + + @include edeep(arrow) { + font-size: $-navbar-arrow-size; + color: $-navbar-color; + } + + + @include when(border) { + @include halfPixelBorder('bottom'); + } + + @include when(fixed) { + position: fixed; + top: 0; + left: 0; + width: 100%; + z-index: 500; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-navbar/types.ts b/src/uni_modules/wot-design-uni/components/wd-navbar/types.ts new file mode 100644 index 0000000..1879865 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-navbar/types.ts @@ -0,0 +1,52 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp } from '../common/props' + +export const navbarProps = { + ...baseProps, + /** + * 标题文字 + */ + title: String, + /** + * 左侧文案 + */ + leftText: String, + /** + * 右侧文案 + */ + rightText: String, + /** + * 是否显示左侧箭头 + */ + leftArrow: makeBooleanProp(false), + /** + * 是否显示下边框 + */ + bordered: makeBooleanProp(true), + /** + * 是否固定到顶部 + */ + fixed: makeBooleanProp(false), + /** + * 固定在顶部时,是否在标签位置生成一个等高的占位元素 + */ + placeholder: makeBooleanProp(false), + /** + * 导航栏 z-index + */ + zIndex: makeNumberProp(500), + /** + * 是否开启顶部安全区适配 + */ + safeAreaInsetTop: makeBooleanProp(false), + /** + * 是否禁用左侧按钮,禁用时透明度降低,且无法点击 + */ + leftDisabled: makeBooleanProp(false), + /** + * 是否禁用右侧按钮,禁用时透明度降低,且无法点击 + */ + rightDisabled: makeBooleanProp(false) +} + +export type NavbarProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-navbar/wd-navbar.vue b/src/uni_modules/wot-design-uni/components/wd-navbar/wd-navbar.vue new file mode 100644 index 0000000..da8a24b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-navbar/wd-navbar.vue @@ -0,0 +1,122 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-notice-bar/index.scss b/src/uni_modules/wot-design-uni/components/wd-notice-bar/index.scss new file mode 100644 index 0000000..c04519b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-notice-bar/index.scss @@ -0,0 +1,87 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(notice-bar) { + display: flex; + padding: $-notice-bar-padding; + align-items: center; + font-size: $-notice-bar-fs; + border-radius: $-notice-bar-border-radius; + position: relative; + box-sizing: border-box; + @include when(warning) { + background: $-notice-bar-warning-bg; + color: $-notice-bar-warning-color; + } + @include when(info) { + background: $-notice-bar-info-bg; + color: $-notice-bar-info-color; + } + @include when(danger) { + background: $-notice-bar-danger-bg; + color: $-notice-bar-danger-color; + } + @include edeep(prefix) { + padding-right: 4px; + font-size: $-notice-bar-prefix-size; + } + + @include edeep(suffix) { + text-align: center; + font-size: $-notice-bar-close-size; + display: inline-block; + background-color: $-notice-bar-close-bg; + color: $-notice-bar-close-color; + padding: 0; + border-radius: 0px 8px 0px 4px; + position: absolute; + right: 0; + top: 0; + } + @include e(wrap) { + position: relative; + flex: 1; + height: $-notice-bar-line-height; + overflow: hidden; + line-height: $-notice-bar-line-height; + } + @include e(content) { + position: absolute; + white-space: nowrap; + + @include m(play) { + animation: notice-bar-play linear both; + } + @include m(play-infinite) { + animation: notice-bar-play-infinite linear infinite both; + } + } + @include m(ellipse) { + .wd-notice-bar__content { + position: static; + @include lineEllipsis; + } + } + @include m(wrap) { + + .wd-notice-bar__wrap { + height: auto; + } + .wd-notice-bar__content { + position: static; + white-space: normal; + } + } +} + +@keyframes notice-bar-play { + 100% { + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes notice-bar-play-infinite { + 100% { + transform: translate3d(-100%, 0, 0); + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-notice-bar/types.ts b/src/uni_modules/wot-design-uni/components/wd-notice-bar/types.ts new file mode 100644 index 0000000..92fa43a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-notice-bar/types.ts @@ -0,0 +1,56 @@ +import type { PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export type NoticeBarType = 'warning' | 'info' | 'danger' | '' +export type NoticeBarScrollDirection = 'horizontal' | 'vertical' + +export const noticeBarProps = { + ...baseProps, + /** + * 设置通知栏文案 + */ + text: { + type: [String, Array] as PropType, + default: '' + }, + /** + * 设置通知栏类型,可选值为:'warning' | 'info' | 'danger' + */ + type: makeStringProp('warning'), + /** + * 是否可滚动 + */ + scrollable: makeBooleanProp(true), + /** + * 滚动延迟时间(秒) + */ + delay: makeNumberProp(1), + /** + * 滚动速度(px/s) + */ + speed: makeNumberProp(50), + /** + * 是否可关闭 + */ + closable: makeBooleanProp(false), + /** + * 是否换行显示 + */ + wrapable: makeBooleanProp(false), + /** + * 设置左侧图标,使用 icon 章节中的图标名 + */ + prefix: String, + /** + * 文字、图标颜色 + */ + color: String, + /** + * 背景颜色 + */ + backgroundColor: String, + /** + * 滚动方向 + */ + direction: makeStringProp('horizontal') +} diff --git a/src/uni_modules/wot-design-uni/components/wd-notice-bar/wd-notice-bar.vue b/src/uni_modules/wot-design-uni/components/wd-notice-bar/wd-notice-bar.vue new file mode 100644 index 0000000..d2cefe5 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-notice-bar/wd-notice-bar.vue @@ -0,0 +1,205 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-notify/index.scss b/src/uni_modules/wot-design-uni/components/wd-notify/index.scss new file mode 100644 index 0000000..5df8f4d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-notify/index.scss @@ -0,0 +1,34 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(notify) { + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: $-notify-padding; + font-size: $-notify-font-size; + line-height: $-notify-line-height; + color: $-notify-text-color; + + // allow newline character + white-space: pre-wrap; + text-align: center; + word-wrap: break-word; + + @include m(primary) { + background: $-notify-primary-background; + } + + @include m(success) { + background: $-notify-success-background; + } + + @include m(danger) { + background: $-notify-danger-background; + } + + @include m(warning) { + background: $-notify-warning-background; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-notify/index.ts b/src/uni_modules/wot-design-uni/components/wd-notify/index.ts new file mode 100644 index 0000000..3e457e1 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-notify/index.ts @@ -0,0 +1,56 @@ +import { provide, reactive } from 'vue' +import type { NotifyProps } from './types' +import { deepMerge, isString } from '../common/util' + +let timer: ReturnType +let currentOptions = getDefaultOptions() +const notifyDefaultOptionKey = '__NOTIFY_OPTION__' +export const setNotifyDefaultOptions = (options: NotifyProps) => { + currentOptions = deepMerge(currentOptions, options) as NotifyProps +} +export const resetNotifyDefaultOptions = () => { + currentOptions = getDefaultOptions() +} +export const useNotify = (selector: string = '') => { + const notifyOption = reactive(currentOptions) + const showNotify = (option: NotifyProps | string) => { + const options = deepMerge(currentOptions, isString(option) ? { message: option } : option) as NotifyProps + + Object.assign(notifyOption, options, { visible: true }) + if (notifyOption.duration && notifyOption.duration > 0) { + timer && clearTimeout(timer) + timer = setTimeout(() => closeNotify(), options.duration) + } + } + const closeNotify = () => { + timer && clearTimeout(timer) + notifyOption.visible = false + } + + // provide + provide(getNotifyOptionKey(selector), notifyOption) + + return { + showNotify, + closeNotify + } +} +export const getNotifyOptionKey = (selector: string) => { + return selector ? `${notifyDefaultOptionKey}${selector}` : notifyDefaultOptionKey +} + +function getDefaultOptions(): NotifyProps { + return { + type: 'danger', + color: undefined, + zIndex: 99, + message: '', + duration: 3000, + position: 'top', + safeHeight: undefined, + background: undefined, + onClick: undefined, + onClosed: undefined, + onOpened: undefined + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-notify/types.ts b/src/uni_modules/wot-design-uni/components/wd-notify/types.ts new file mode 100644 index 0000000..b22440d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-notify/types.ts @@ -0,0 +1,62 @@ +import type { PropType, ExtractPropTypes } from 'vue' +import { makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp } from '../common/props' + +export type NotifyType = 'primary' | 'success' | 'danger' | 'warning' +export type NotifyPosition = 'top' | 'bottom' +export type NotifyProps = Omit>, 'selector'> & { + onClick?: (event: MouseEvent) => void + onClosed?: () => void + onOpened?: () => void +} +export type NotifyThemeVars = { + notifyPadding?: string + notifyFontSize?: string + notifyTextColor?: string + notifyLineHeight?: number | string + notifyDangerBackground?: string + notifyPrimaryBackground?: string + notifySuccessBackground?: string + notifyWarningBackground?: string +} +export const notifyProps = { + /** + * 类型,可选值为 primary success danger warning + */ + type: makeStringProp('danger'), + /** + * 字体颜色 + */ + color: makeStringProp(''), + /** + * 将组件的 z-index 层级设置为一个固定值 + */ + zIndex: makeNumberProp(99), + /** + * 显示 + */ + visible: makeBooleanProp(false), + /** + * 展示文案,支持通过\n换行 + */ + message: makeNumericProp(''), + /** + * 指定唯一标识 + */ + selector: makeStringProp(''), + /** + * 展示时长(ms),值为 0 时,notify 不会消失 + */ + duration: makeNumberProp(3000), + /** + * 弹出位置,可选值为 top bottom + */ + position: makeStringProp('top'), + /** + * 顶部安全高度( + */ + safeHeight: Number, + /** + * 背景颜色 + */ + background: makeStringProp('') +} diff --git a/src/uni_modules/wot-design-uni/components/wd-notify/wd-notify.vue b/src/uni_modules/wot-design-uni/components/wd-notify/wd-notify.vue new file mode 100644 index 0000000..d6aa40d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-notify/wd-notify.vue @@ -0,0 +1,78 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-number-keyboard/index.scss b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/index.scss new file mode 100644 index 0000000..09a903a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/index.scss @@ -0,0 +1,78 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(number-keyboard) { + background: $-dark-background5; + + @include e(header){ + color: $-dark-color; + } + } +} + +@include b(number-keyboard) { + width: 100%; + background: $-number-keyboard-background; + color: $-color-black; + user-select: none; + + @include m(with-title) { + border-radius: 20px 20px 0 0; + } + + @include e(header) { + position: relative; + display: flex; + align-items: center; + justify-content: center; + box-sizing: content-box; + height: $-number-keyboard-title-height; + padding-top: 6px; + color: $-number-keyboard-title-color; + font-size: $-number-keyboard-title-font-size; + } + + @include e(title) { + display: inline-block; + font-weight: normal; + + &-left { + position: absolute; + left: 0; + } + } + + @include e(body) { + display: flex; + padding: 6px 0 0 6px; + } + + @include e(keys) { + display: flex; + flex: 3; + flex-wrap: wrap; + } + + @include e(close) { + position: absolute; + display: flex; + align-items: center; + right: 0; + height: 100%; + padding: $-number-keyboard-close-padding; + color: $-number-keyboard-close-color; + font-size: $-number-keyboard-close-font-size; + background-color: transparent; + border: none; + @include m(hover){ + opacity: 0.6; + } + } + + @include e(sidebar) { + display: flex; + flex: 1; + flex-direction: column; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/index.scss b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/index.scss new file mode 100644 index 0000000..e2f9692 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/index.scss @@ -0,0 +1,81 @@ +@import "./../../common/abstracts/_mixin.scss"; +@import "./../../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(key) { + background: $-dark-background2; + color: $-dark-color; + + &:active { + background-color: $-dark-background4; + } + + @include m(active) { + background-color: $-dark-background4; + } + + } +} + +.wd-key-wrapper { + position: relative; + flex: 1; + flex-basis: 33%; + box-sizing: border-box; + padding: 0 6px 6px 0; + + @include m(wider) { + flex-basis: 66%; + } +} + +@include b(key) { + display: flex; + align-items: center; + justify-content: center; + height: $-number-keyboard-key-height; + font-size: $-number-keyboard-key-font-size; + line-height: 1.5; + background: $-number-keyboard-key-background; + border-radius: $-number-keyboard-key-border-radius; + + &:active { + background-color: $-number-keyboard-key-active-color; + } + + @include m(large) { + position: absolute; + top: 0; + right: 6px; + bottom: 6px; + left: 0; + height: auto; + } + + @include m(delete, close) { + font-size: $-number-keyboard-delete-font-size; + } + + @include m(active) { + background-color: $-number-keyboard-key-active-color; + } + + @include m(close) { + color: $-number-keyboard-button-text-color; + background: $-number-keyboard-button-background; + + &:active { + background: $-number-keyboard-button-background; + opacity: $-number-keyboard-button-active-opacity; + } + } + + @include edeep(loading-icon) { + color: $-number-keyboard-button-text-color; + } + + @include edeep(icon) { + font-size: $-number-keyboard-icon-size; + } + +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/index.vue b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/index.vue new file mode 100644 index 0000000..b1a9a7c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/index.vue @@ -0,0 +1,71 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/types.ts b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/types.ts new file mode 100644 index 0000000..efa497a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/key/types.ts @@ -0,0 +1,11 @@ +import { makeBooleanProp, makeNumericProp, makeStringProp } from '../../common/props' + +export type NumberKeyType = '' | 'delete' | 'extra' | 'close' + +export const keyProps = { + type: makeStringProp(''), + text: makeNumericProp(''), + wider: makeBooleanProp(false), + large: makeBooleanProp(false), + loading: makeBooleanProp(false) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-number-keyboard/types.ts b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/types.ts new file mode 100644 index 0000000..e0f016e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/types.ts @@ -0,0 +1,79 @@ +import type { PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export type KeyboardMode = 'default' | 'custom' +export type KeyType = '' | 'delete' | 'extra' | 'close' + +export interface Key { + text?: number | string // key文本 + type?: KeyType // key的类型 + wider?: boolean // 是否占2个key的宽度 +} + +export const numberKeyboardProps = { + ...baseProps, + /** + * 是否可见 + */ + visible: makeBooleanProp(false), + /** + * 绑定的值 + */ + modelValue: makeStringProp(''), + /** + * 标题 + */ + title: String, + /** + * 键盘模式 + */ + mode: makeStringProp('default'), + /** + * 层级 + */ + zIndex: makeNumberProp(100), + /** + * 最大长度 + */ + maxlength: makeNumberProp(Infinity), + /** + * 是否显示删除键 + */ + showDeleteKey: makeBooleanProp(true), + /** + * 是否随机键盘按键顺序 + */ + randomKeyOrder: makeBooleanProp(false), + /** + * 确认按钮文本 + */ + closeText: String, + /** + * 删除按钮文本 + */ + deleteText: String, + /** + * 关闭按钮是否显示加载状态 + */ + closeButtonLoading: makeBooleanProp(false), + /** + * 是否显示蒙层 + */ + modal: makeBooleanProp(false), + /** + * 是否在点击外部时收起键盘 + */ + hideOnClickOutside: makeBooleanProp(true), + /** + * 是否锁定滚动 + */ + lockScroll: makeBooleanProp(true), + /** + * 是否在底部安全区域内 + */ + safeAreaInsetBottom: makeBooleanProp(true), + /** + * 额外按键 + */ + extraKey: [String, Array] as PropType> +} diff --git a/src/uni_modules/wot-design-uni/components/wd-number-keyboard/wd-number-keyboard.vue b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/wd-number-keyboard.vue new file mode 100644 index 0000000..2ba6a42 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-number-keyboard/wd-number-keyboard.vue @@ -0,0 +1,145 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-overlay/index.scss b/src/uni_modules/wot-design-uni/components/wd-overlay/index.scss new file mode 100644 index 0000000..4cb37fa --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-overlay/index.scss @@ -0,0 +1,17 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(overlay) { + background: $-overlay-bg-dark; + } +} + +@include b(overlay) { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + background: $-overlay-bg; +} diff --git a/src/uni_modules/wot-design-uni/components/wd-overlay/types.ts b/src/uni_modules/wot-design-uni/components/wd-overlay/types.ts new file mode 100644 index 0000000..fd15be2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-overlay/types.ts @@ -0,0 +1,25 @@ +import type { PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp } from '../common/props' + +export const overlayProps = { + ...baseProps, + /** + * 是否展示遮罩层 + */ + show: makeBooleanProp(false), + /** + * 动画时长,单位毫秒 + */ + duration: { + type: [Object, Number, Boolean] as PropType | number | boolean>, + default: 300 + }, + /** + * 是否锁定滚动 + */ + lockScroll: makeBooleanProp(true), + /** + * 层级 + */ + zIndex: makeNumberProp(10) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-overlay/wd-overlay.vue b/src/uni_modules/wot-design-uni/components/wd-overlay/wd-overlay.vue new file mode 100644 index 0000000..16c5cae --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-overlay/wd-overlay.vue @@ -0,0 +1,46 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-pagination/index.scss b/src/uni_modules/wot-design-uni/components/wd-pagination/index.scss new file mode 100644 index 0000000..c464c50 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-pagination/index.scss @@ -0,0 +1,57 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(pager) { + background-color: $-dark-background; + @include e(message) { + color: $-dark-color3; + } + } +} + +@include b(pager) { + user-select: none; + background-color: #fff; + + @include edeep(icon) { + font-size: $-pagination-icon-size; + } + + @include e(content) { + display: flex; + justify-content: flex-start; + align-items: center; + padding: $-pagination-content-padding; + } + @include e(message) { + text-align: center; + color:$-pagination-message-color; + font-size: $-pagination-message-fs; + padding: $-pagination-message-padding; + } + @include edeep(nav) { + min-width: $-pagination-nav-width; + @include m(active){ + color: rgba(0,0,0,0.65) + } + @include m(disabled){ + color: rgba(0,0,0,0.15) + } + } + @include e(size){ + flex: 1; + text-align: center; + font-size: $-pagination-nav-content-fs; + } + @include e(separator){ + padding: $-pagination-nav-sepatator-padding; + } + @include edeep(left){ + transform: rotate(180deg) translateY(1px); + display: inline-block; + } + @include e(current){ + color: $-pagination-nav-current-color; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-pagination/types.ts b/src/uni_modules/wot-design-uni/components/wd-pagination/types.ts new file mode 100644 index 0000000..a40c687 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-pagination/types.ts @@ -0,0 +1,41 @@ +import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp } from '../common/props' + +export const paginationProps = { + ...baseProps, + /** + * 当前页 + */ + modelValue: makeRequiredProp(Number), + /** + * 总页数,如果有total,则优先使用total计算页数 + */ + totalPage: makeNumberProp(1), + /** + * 是否展示分页为Icon图标 + */ + showIcon: makeBooleanProp(false), + /** + * 是否展示总条数 + */ + showMessage: makeBooleanProp(false), + /** + * 总条数 + */ + total: makeNumberProp(0), + /** + * 每页条数 + */ + pageSize: makeNumberProp(10), + /** + * 上一页文本 + */ + prevText: String, + /** + * 下一页文本 + */ + nextText: String, + /** + * 总页数只有一页时是否隐藏 + */ + hideIfOnePage: makeBooleanProp(true) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-pagination/wd-pagination.vue b/src/uni_modules/wot-design-uni/components/wd-pagination/wd-pagination.vue new file mode 100644 index 0000000..2e5dc58 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-pagination/wd-pagination.vue @@ -0,0 +1,110 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-password-input/index.scss b/src/uni_modules/wot-design-uni/components/wd-password-input/index.scss new file mode 100644 index 0000000..347bb00 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-password-input/index.scss @@ -0,0 +1,124 @@ +@import "../common/abstracts/variable"; +@import "../common/abstracts/mixin"; + +.wot-theme-dark { + @include b(password-input) { + @include e(item) { + color: $-dark-color; + background: $-dark-background2; + + @include when(border) { + border-color: $-dark-border-color; + } + } + + @include e(mask) { + background-color: $-dark-color; + } + + @include e(cursor) { + background-color: $-dark-color; + } + + @include e(info) { + color: $-dark-color; + + @include when(border) { + color: $-dark-color2; + } + } + } +} + +@include b(password-input) { + position: relative; + margin: 0 $-password-input-margin; + user-select: none; + + @include e(security) { + display: flex; + width: 100%; + height: $-password-input-height; + cursor: pointer; + } + + @include e(item) { + position: relative; + display: flex; + flex: 1; + align-items: center; + justify-content: center; + height: 100%; + color: $-password-input-text-color; + font-size: $-password-input-font-size; + line-height: 1.2; + background: $-password-input-background; + + @include when(border) { + border: 1px solid $-password-input-border-color; + + &:not(:last-child) { + border-right: none; + } + + &:first-child { + border-top-left-radius: $-password-input-radius; + border-bottom-left-radius: $-password-input-radius; + } + + &:last-child { + border-top-right-radius: $-password-input-radius; + border-bottom-right-radius: $-password-input-radius; + } + } + } + + @include e(mask) { + position: absolute; + top: 50%; + left: 50%; + width: $-password-input-dot-size; + height: $-password-input-dot-size; + background: $-password-input-dot-color; + border-radius: 100%; + transform: translate(-50%, -50%); + visibility: hidden; + } + + @include e(cursor) { + position: absolute; + top: 50%; + left: 50%; + width: $-password-input-cursor-width; + height: $-password-input-cursor-height; + background: $-password-input-cursor-color; + transform: translate(-50%, -50%); + animation: $-password-input-cursor-duration cursor-flicker infinite; + } + + @include e(info) { + margin-top: $-password-input-margin; + font-size: $-password-input-info-font-size; + text-align: center; + color: $-password-input-info-color; + + @include when(error) { + color: $-password-input-error-info-color; + } + + } +} + +@keyframes cursor-flicker { + from { + opacity: 0; + } + + 50% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-password-input/types.ts b/src/uni_modules/wot-design-uni/components/wd-password-input/types.ts new file mode 100644 index 0000000..550788c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-password-input/types.ts @@ -0,0 +1,42 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 20:40:34 + * @LastEditTime: 2024-03-18 15:12:17 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-password-input\types.ts + * 记得注释 + */ +import { baseProps, makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp } from '../common/props' + +export const passwordInputProps = { + ...baseProps, + /** + * 绑定的值 + */ + modelValue: makeStringProp(''), + /** + * 是否隐藏密码内容 + */ + mask: makeBooleanProp(true), + /** + * 输入框下方文字提示 + */ + info: makeStringProp(''), + /** + * 输入框下方错误提示 + */ + errorInfo: makeStringProp(''), + /** + * 输入框格子之间的间距,如 20px 2em,默认单位为 px + */ + gutter: makeNumericProp(0), + /** + * 密码最大长度 + */ + length: makeNumberProp(6), + /** + * 是否已聚焦,聚焦时会显示光标 + */ + focused: makeBooleanProp(true) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-password-input/wd-password-input.vue b/src/uni_modules/wot-design-uni/components/wd-password-input/wd-password-input.vue new file mode 100644 index 0000000..1bad247 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-password-input/wd-password-input.vue @@ -0,0 +1,49 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-picker-view/index.scss b/src/uni_modules/wot-design-uni/components/wd-picker-view/index.scss new file mode 100644 index 0000000..83d4aaf --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-picker-view/index.scss @@ -0,0 +1,92 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(picker-view) { + @include e(columns) { + background: $-dark-background2; + } + + :deep(.wd-picker-view__roller) { + background: $-dark-background4; + } + } + + @include b(picker-view-column) { + color: $-dark-color; + + @include e(item) { + @include m(disabled) { + color: $-dark-color-gray; + } + } + } +} + + +@include b(picker-view) { + position: relative; + padding: 10px 0; + + @include e(columns) { + position: relative; + display: flex; + background: $-picker-bg; + overflow: hidden; + align-items: center; + } + + @include edeep(mask) { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: $-picker-mask; + background-position: top, bottom; + background-repeat: no-repeat; + z-index: 2; + pointer-events: none; + filter: blur(4px); + } + + @include e(loading) { + position: absolute; + display: flex; + top: 0; + right: 0; + bottom: 0; + left: 0; + align-items: center; + justify-content: center; + z-index: 3; + background: $-picker-loading-bg; + } + + @include edeep(roller) { + background: rgba(245, 245, 245, 1); + z-index: 0; + + &::before, + &::after { + display: none; + } + } +} + +@include b(picker-view-column) { + flex: 1; + font-size: $-picker-column-fs; + color: $-picker-column-color; + text-align: center; + transition-timing-function: cubic-bezier(0.28, 0.8, 0.63, 1); + + @include e(item) { + padding: $-picker-column-padding; + @include lineEllipsis; + + @include m(disabled) { + color: $-picker-column-disabled-color; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-picker-view/types.ts b/src/uni_modules/wot-design-uni/components/wd-picker-view/types.ts new file mode 100644 index 0000000..defd933 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-picker-view/types.ts @@ -0,0 +1,147 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType, Ref } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' +import { getType, isArray, isObj } from '../common/util' + +export type ColumnItem = { + [key: string]: any + value?: string | number | boolean + label?: string + disabled?: boolean +} + +export type PickerViewColumnChange = ( + pickerView: PickerViewInstance, + selects: Record | Record[], + index: number, + reslove: () => void +) => void + +export const pickerViewProps = { + ...baseProps, + /** + * 加载状态 + */ + loading: makeBooleanProp(false), + /** + * 加载的颜色,只能使用十六进制的色值写法,且不能使用缩写 + */ + loadingColor: makeStringProp('#4D80F0'), + /** + * picker内部滚筒高 + */ + columnsHeight: makeNumberProp(217), + /** + * 选项对象中,value对应的 key + */ + valueKey: makeStringProp('value'), + /** + * 选项对象中,展示的文本对应的 key + */ + labelKey: makeStringProp('label'), + /** + * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 + */ + immediateChange: makeBooleanProp(false), + /** + * 选中项,如果为多列选择器,则其类型应为数组 + */ + modelValue: { + type: [String, Number, Boolean, Array, Array, Array] as PropType< + string | number | boolean | Array | Array | Array + >, + default: '', + required: true + }, + /** + * 选择器数据,可以为字符串数组,也可以为对象数组,如果为二维数组,则为多列选择器 + */ + columns: makeArrayProp | Array | Array>(), + /** + * 接收 pickerView 实例、选中项、当前修改列的下标、resolve 作为入参,根据选中项和列下标进行判断,通过 pickerView 实例暴露出来的 setColumnData 方法修改其他列的数据源。 + */ + columnChange: Function as PropType +} + +export type PickerViewExpose = { + getSelects: () => Record | Record[] + getValues: () => string | string[] + setColumnData: (columnIndex: number, data: Array>, rowIndex?: number) => void + getColumnsData: () => Record[][] + getColumnData: (columnIndex: number) => Record[] + getColumnIndex: (columnIndex: number) => number + getLabels: () => string[] + getSelectedIndex: () => number[] +} + +export type PickerViewProps = ExtractPropTypes + +export type PickerViewInstance = ComponentPublicInstance + +/** + * 格式化传入的列数据 + * 列数据统一格式化为二维数组 + * @param array 列数据 + * @param valueKey + * @param labelKey + * @returns + */ +export function formatArray( + array: Array>, + valueKey: string, + labelKey: string +): ColumnItem[][] { + let tempArray: Array> = isArray(array) ? array : [array] + // 判断数组第一层的数据类型,如果存在多种类型,则抛错 + const firstLevelTypeList = new Set(array.map(getType)) + /** + * 存在三种类型的合法数据 + * 1.数组是一维元素,所有元素都是原始值 + * 2.数组是一维元素,所有元素都是object + * 3.数组是二维元素,二维元素可以是任意内容 + */ + if (firstLevelTypeList.size !== 1 && firstLevelTypeList.has('object')) { + // 原始值和引用类型不用混用 + throw Error('The columns are correct') + } + /** + * 简单处理,如果数组第一项不是数组则认为它是一个一维数组 + * 所以需要把一维的转成二维,这样方便统一处理 + */ + if (!isArray(array[0])) { + tempArray = [tempArray as Array] + } + // 转化为二维数组后需要将每一项包装成ColumnItem + const result: Array> = (tempArray as Array>).map((col) => { + return col.map((row) => { + // 非对象类型直接将值作为label和value + if (!isObj(row)) { + return { + [valueKey]: row, + [labelKey]: row + } + } + /** + * 针对已经是object的,修补成{valueKey,labelKey} + * 如果没有labelKey,用valueKey代替 + * 如果没有valueKey,用labelKey代替 + * valueKey,labelKey都没有,直接抛错 + */ + // eslint-disable-next-line no-prototype-builtins + if (!row.hasOwnProperty(valueKey) && !row.hasOwnProperty(labelKey)) { + // eslint-disable-next-line prettier/prettier + throw Error('Can\'t find valueKey and labelKey in columns') + } + // eslint-disable-next-line no-prototype-builtins + if (!row.hasOwnProperty(labelKey)) { + row[labelKey] = row[valueKey] + } + // eslint-disable-next-line no-prototype-builtins + if (!row.hasOwnProperty(valueKey)) { + row[valueKey] = row[labelKey] + } + return row + }) + }) + + return result +} diff --git a/src/uni_modules/wot-design-uni/components/wd-picker-view/wd-picker-view.vue b/src/uni_modules/wot-design-uni/components/wd-picker-view/wd-picker-view.vue new file mode 100644 index 0000000..94fd09f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-picker-view/wd-picker-view.vue @@ -0,0 +1,351 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-picker/index.scss b/src/uni_modules/wot-design-uni/components/wd-picker/index.scss new file mode 100644 index 0000000..eb66c18 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-picker/index.scss @@ -0,0 +1,218 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + + +.wot-theme-dark { + @include b(picker) { + @include when(border) { + .wd-picker__cell { + @include halfPixelBorder('top', $-cell-padding, $-dark-border-color); + } + } + + @include e(title) { + color: $-dark-color; + } + + @include e(label) { + color: $-dark-color; + } + @include e(value) { + color: $-dark-color; + } + + @include e(placeholder) { + color: $-dark-color-gray; + } + + :deep(.wd-picker__arrow){ + color: $-dark-color; + } + + @include e(cell) { + background-color: $-dark-background2; + color: $-dark-color; + @include when(disabled) { + .wd-picker__value { + color: $-dark-color3; + } + .wd-picker__placeholder { + color: $-dark-color-gray; + } + } + } + + @include when(disabled) { + .wd-picker__value { + color: $-dark-color3; + } + + .wd-picker__placeholder { + color: $-dark-color-gray; + } + } + + @include e(action) { + @include m(cancel) { + color: $-dark-color; + } + @include when(loading) { + color: $-dark-color3; + } + } + } +} + + +@include b(picker) { + @include edeep(popup) { + border-radius: 16px 16px 0px 0px; + } + + @include when(border) { + .wd-picker__cell { + @include halfPixelBorder('top', $-cell-padding); + } + } + @include when(large) { + .wd-picker__cell { + font-size: $-cell-title-fs-large; + } + :deep(.wd-picker__arrow) { + font-size: $-cell-icon-size-large; + } + } + @include when(error) { + .wd-picker__value, + :deep(.wd-picker__arrow) { + color: $-input-error-color; + } + } + @include when(align-right) { + .wd-picker__value { + text-align: right; + } + } + @include e(cell) { + position: relative; + display: flex; + padding: $-cell-wrapper-padding $-cell-padding; + align-items: flex-start; + background-color: $-color-white; + text-decoration: none; + color: $-cell-title-color; + font-size: $-cell-title-fs; + overflow: hidden; + line-height: $-cell-line-height; + + @include when(disabled) { + .wd-picker__value { + color: $-input-disabled-color; + } + } + } + + @include when(disabled) { + .wd-picker__value { + color: $-picker-column-disabled-color; + } + } + + @include e(error-message){ + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } + + @include e(label) { + position: relative; + width: $-input-cell-label-width; + margin-right: $-cell-padding; + color: $-cell-title-color; + box-sizing: border-box; + + @include when(required) { + padding-left: 12px; + + &::after { + position: absolute; + left: 0; + top: 2px; + content: '*'; + font-size: $-cell-required-size; + line-height: 1.1; + color: $-cell-required-color; + } + } + } + + @include e(value-wraper) { + display: flex; + } + + @include e(value) { + flex: 1; + margin-right: 10px; + color: $-cell-value-color; + + @include when(ellipsis) { + @include lineEllipsis; + } + } + + @include e(body) { + flex: 1; + } + + @include e(placeholder) { + color: $-input-placeholder-color; + } + + @include edeep(arrow) { + display: block; + font-size: $-cell-icon-size; + color: $-cell-arrow-color; + line-height: $-cell-line-height; + } + + @include e(wraper) { + padding-bottom: var(--window-bottom); + } + + @include e(toolbar) { + position: relative; + display: flex; + font-size: $-picker-toolbar-fs; + height: $-picker-toolbar-height; + line-height: $-picker-action-height; + justify-content: space-between; + align-items: center; + box-sizing: border-box; + } + + @include e(action) { + display: block; + border: none; + outline: none; + font-size: $-picker-toolbar-fs; + color: $-picker-toolbar-finish-color; + background: transparent; + padding: 24px 15px 14px 15px; + + @include m(cancel) { + color: $-picker-toolbar-cancel-color; + } + + @include when(loading) { + color: $-picker-loading-button-color; + } + } + @include e(title) { + display: block; + padding-top: 10px; + color: $-picker-toolbar-title-color; + font-weight: $-action-sheet-weight; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-picker/types.ts b/src/uni_modules/wot-design-uni/components/wd-picker/types.ts new file mode 100644 index 0000000..b55ca8b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-picker/types.ts @@ -0,0 +1,175 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' +import type { ColumnItem, PickerViewColumnChange } from '../wd-picker-view/types' +import type { FormItemRule } from '../wd-form/types' + +export const pickerProps = { + ...baseProps, + /** + * label 外部自定义样式 + */ + customLabelClass: makeStringProp(''), + /** + * value 外部自定义样式 + */ + customValueClass: makeStringProp(''), + /** + * pickerView 外部自定义样式 + */ + customViewClass: makeStringProp(''), + /** + * 选择器左侧文案 + */ + label: String, + /** + * 选择器占位符 + */ + placeholder: String, + /** + * 是否禁用 + */ + disabled: makeBooleanProp(false), + /** + * 是否只读 + */ + readonly: makeBooleanProp(false), + /** + * 加载中 + */ + loading: makeBooleanProp(false), + /** + * 加载中颜色 + */ + loadingColor: makeStringProp('#4D80F0'), + /* popup */ + /** + * 弹出层标题 + */ + title: String, + /** + * 取消按钮文案 + */ + cancelButtonText: String, + /** + * 确认按钮文案 + */ + confirmButtonText: String, + /** + * 是否必填 + */ + required: makeBooleanProp(false), + /** + * 尺寸 + */ + size: String, + /** + * 标签宽度 + */ + labelWidth: String, + /** + * 使用默认插槽 + */ + useDefaultSlot: makeBooleanProp(false), + /** + * 使用标签插槽 + */ + useLabelSlot: makeBooleanProp(false), + /** + * 错误状态 + */ + error: makeBooleanProp(false), + /** + * 右对齐 + */ + alignRight: makeBooleanProp(false), + /** + * 确定前校验函数,接收 (value, resolve, picker) 参数,通过 resolve 继续执行 picker,resolve 接收1个boolean参数 + */ + beforeConfirm: Function as PropType, + /** + * 点击蒙层关闭 + */ + closeOnClickModal: makeBooleanProp(true), + /** + * 底部安全区域内 + */ + safeAreaInsetBottom: makeBooleanProp(true), + /** + * 文本溢出显示省略号 + */ + ellipsis: makeBooleanProp(false), + /** + * 选项总高度 + */ + columnsHeight: makeNumberProp(217), + /** + * 选项值对应的键名 + */ + valueKey: makeStringProp('value'), + /** + * 选项文本对应的键名 + */ + labelKey: makeStringProp('label'), + /** + * 选中项,如果为多列选择器,则其类型应为数组 + */ + modelValue: { + type: [String, Number, Array] as PropType | Array>, + default: '' + }, + /** + * 选择器数据,可以为字符串数组,也可以为对象数组,如果为二维数组,则为多列选择器 + */ + columns: { + type: Array as PropType>>, + default: () => [] + }, + /** + * 接收 pickerView 实例、选中项、当前修改列的下标、resolve 作为入参,根据选中项和列下标进行判断,通过 pickerView 实例暴露出来的 setColumnData 方法修改其他列的数据源。 + */ + columnChange: Function as PropType, + /** + * 自定义展示文案的格式化函数,返回一个字符串 + */ + displayFormat: Function as PropType, + /** + * 自定义层级 + */ + zIndex: makeNumberProp(15), + /** + * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的 + */ + prop: String, + /** + * 表单验证规则,结合wd-form组件使用 + */ + rules: makeArrayProp(), + /** + * 是否在手指松开时立即触发 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 + */ + immediateChange: makeBooleanProp(false) +} + +export type PickerProps = ExtractPropTypes + +export type PickerDisplayFormat = (item: ColumnItem | ColumnItem[], vl: { valueKey: string; labelKey: string }) => string + +export type PickerBeforeConfirm = ( + value: string | number | boolean | string[] | number[] | boolean[], + resolve: (isPass: boolean) => void, + picker: any +) => void + +export type PickerExpose = { + // 打开picker弹框 + open: () => void + // 关闭picker弹框 + close: () => void + /** + * 设置加载状态 + * @param loading 加载状态 + */ + setLoading: (loading: boolean) => void +} + +export type PickerInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-picker/wd-picker.vue b/src/uni_modules/wot-design-uni/components/wd-picker/wd-picker.vue new file mode 100644 index 0000000..56a01b5 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-picker/wd-picker.vue @@ -0,0 +1,388 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-popover/index.scss b/src/uni_modules/wot-design-uni/components/wd-popover/index.scss new file mode 100644 index 0000000..6d6e1f7 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-popover/index.scss @@ -0,0 +1,116 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(popover) { + + @include e(pos) { + background: rgb(75, 76, 77); + color: $-dark-color; + box-shadow: 0px 2px 10px 0px rgba(75, 76, 77, 0.1); + } + + @include e(menu) { + background: rgb(75, 76, 77); + } + + @include e(inner) { + background-color: rgb(75, 76, 77); + } + + @include e(menu-inner) { + + @include halfPixelBorder("top", 0, $-dark-border-color); + } + + @include squareArrow($-popover-arrow-size, rgb(75, 76, 77), $-popover-z-index - 1, $-popover-arrow-box-shadow); + + } +} + +@include b(popover) { + position: relative; + display: inline-block; + + @include edeep(icon) { + vertical-align: middle; + font-size: 18px; + margin-right: 5px; + } + + @include e(menu-inner) { + position: relative; + padding: $-popover-padding 0; + display: flex; + align-items: center; + + @include halfPixelBorder("top", 0, $-popover-border-color); + + &:first-child::after { + display: none; + } + } + + @include e(menu) { + display: inline-block; + padding: 0 $-popover-padding; + white-space: nowrap; + z-index: $-popover-z-index; + position: relative; + background: $-popover-bg; + border-radius: $-popover-radius; + } + + @include edeep(pos) { + position: absolute; + box-sizing: border-box; + background-clip: padding-box; + text-align: center; + min-height: 36px; + z-index: $-popover-z-index; + line-height: $-popover-line-height; + font-size: $-popover-fs; + border-radius: $-popover-radius; + transition: opacity 0.2s; + background: $-popover-bg; + box-shadow: $-popover-box-shadow; + color: $-popover-color; + } + + // @include edeep(transition) { + // position: relative; + // z-index: $-popover-z-index; + // } + + @include e(hidden) { + left: -100vw; + visibility: hidden; + } + + @include e(container) { + position: relative; + line-height: $-tooltip-line-height; + font-size: $-tooltip-fs; + } + + @include e(inner) { + position: relative; + white-space: nowrap; + padding: $-popover-padding; + line-height: $-popover-line-height; + z-index: $-popover-z-index; + background-color: $-popover-bg; + border-radius: $-popover-radius; + } + + @include edeep(close-icon) { + font-size: 12px; + position: absolute; + right: -8px; + top: -10px; + transform: scale(0.5); + padding: 10px; + } + + @include squareArrow($-popover-arrow-size, $-popover-bg, $-popover-z-index - 1, $-popover-arrow-box-shadow); +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-popover/types.ts b/src/uni_modules/wot-design-uni/components/wd-popover/types.ts new file mode 100644 index 0000000..8faa789 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-popover/types.ts @@ -0,0 +1,69 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export type PlacementType = + | 'top' + | 'top-start' + | 'top-end' + | 'bottom' + | 'bottom-start' + | 'bottom-end' + | 'left' + | 'left-start' + | 'left-end' + | 'right' + | 'right-start' + | 'right-end' + +export type PopoverMode = 'menu' | 'normal' + +export const popoverProps = { + ...baseProps, + customArrow: makeStringProp(''), + customPop: makeStringProp(''), + /** + * 是否显示 popover 箭头 + */ + visibleArrow: makeBooleanProp(true), + /** + * 显示的内容,也可以通过 slot#content 传入 + */ + content: [String, Object] as PropType[]>, + /** + * 指定 popover 的放置位置:top / top-start / top-end / bottom / bottom-start / bottom-end / left / left-start / left-end / right / right-start / right-end + */ + placement: makeStringProp('bottom'), + /** + * 偏移量 + */ + offset: makeNumberProp(0), + /** + * 是否使用内容插槽 + */ + useContentSlot: makeBooleanProp(false), + /** + * 是否禁用 popover + */ + disabled: makeBooleanProp(false), + /** + * 是否显示关闭按钮 + */ + showClose: makeBooleanProp(false), + /** + * 控制 popover 的显示状态 + */ + modelValue: makeBooleanProp(false), + /** + * 当前显示的模式,决定内容的展现形式,可选值:normal(普通模式)/ menu(菜单模式) + */ + mode: makeStringProp('normal') +} + +export type PopoverProps = ExtractPropTypes + +export type PopoverExpose = { + // 打开popover + open: () => void + // 关闭popover + close: () => void +} diff --git a/src/uni_modules/wot-design-uni/components/wd-popover/wd-popover.vue b/src/uni_modules/wot-design-uni/components/wd-popover/wd-popover.vue new file mode 100644 index 0000000..d8cdef3 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-popover/wd-popover.vue @@ -0,0 +1,178 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-popup/index.scss b/src/uni_modules/wot-design-uni/components/wd-popup/index.scss new file mode 100644 index 0000000..72f7229 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-popup/index.scss @@ -0,0 +1,112 @@ +@import './../common/abstracts/_mixin.scss'; +@import './../common/abstracts/variable.scss'; +@import '../wd-overlay/index.scss'; + +.wot-theme-dark { + @include b(popup) { + background: $-dark-background2; + + @include e(close) { + color: $-dark-color; + } + } +} + +@include b(popup) { + position: fixed; + max-height: 100%; + overflow-y: auto; + background: #fff; + + @include edeep(close) { + position: absolute; + top: 10px; + right: 10px; + color: $-popup-close-color; + font-size: $-popup-close-size; + transform: rotate(-45deg); + } + + @include m(center) { + left: 50%; + top: 50%; + transform: translate3d(-50%, -50%, 0); + } + + @include m(left) { + top: 0; + bottom: 0; + left: 0; + } + + @include m(right) { + top: 0; + right: 0; + bottom: 0; + } + + @include m(top) { + top: 0; + left: 0; + right: 0; + } + + @include m(bottom) { + right: 0; + bottom: 0; + left: 0; + } +} + +.wd-center-enter-active, +.wd-center-leave-active { + transition-property: opacity; +} + +.wd-center-enter, +.wd-center-leave-to { + opacity: 0; +} + +.wd-top-enter-active, +.wd-top-leave-active, +.wd-bottom-enter-active, +.wd-bottom-leave-active, +.wd-left-enter-active, +.wd-left-leave-active, +.wd-right-enter-active, +.wd-right-enter-active { + transition-property: transform; +} + +.wd-top-enter, +.wd-top-leave-to { + transform: translate3d(0, -100%, 0); +} + +.wd-bottom-enter, +.wd-bottom-leave-to { + transform: translate3d(0, 100%, 0); +} + +.wd-left-enter, +.wd-left-leave-to { + transform: translate3d(-100%, 0, 0); +} + +.wd-right-enter, +.wd-right-leave-to { + transform: translate3d(100%, 0, 0); +} + +.wd-zoom-in-enter-active, +.wd-zoom-in-leave-active { + transition-property: opacity, transform; + transform-origin: center center; +} + +.wd-zoom-in-enter, +.wd-zoom-in-leave-to { + opacity: 0; + transform: translate3d(-50%, -50%, 0) scale(0.7); +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-popup/types.ts b/src/uni_modules/wot-design-uni/components/wd-popup/types.ts new file mode 100644 index 0000000..b15e9ee --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-popup/types.ts @@ -0,0 +1,68 @@ +/* + * @Author: weisheng + * @Date: 2024-03-18 11:22:03 + * @LastEditTime: 2024-03-18 15:29:43 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-popup\types.ts + * 记得注释 + */ +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export type PopupType = 'center' | 'top' | 'right' | 'bottom' | 'left' + +export const popupProps = { + ...baseProps, + transition: String, + /** + * 关闭按钮 + */ + closable: makeBooleanProp(false), + /** + * 弹出框的位置 + */ + position: makeStringProp('center'), + /** + * 点击遮罩是否关闭 + */ + closeOnClickModal: makeBooleanProp(true), + /** + * 动画持续时间 + */ + duration: { + type: [Number, Boolean], + default: 300 + }, + /** + * 是否显示遮罩 + */ + modal: makeBooleanProp(true), + /** + * 设置层级 + */ + zIndex: makeNumberProp(10), + /** + * 是否当关闭时将弹出层隐藏(display: none) + */ + hideWhenClose: makeBooleanProp(true), + /** + * 遮罩样式 + */ + modalStyle: makeStringProp(''), + /** + * 弹出面板是否设置底部安全距离(iphone X 类型的机型) + */ + safeAreaInsetBottom: makeBooleanProp(false), + /** + * 弹出层是否显示 + */ + modelValue: makeBooleanProp(false), + /** + * 弹层内容懒渲染,触发展示时才渲染内容 + */ + lazyRender: makeBooleanProp(true), + /** + * 是否锁定滚动 + */ + lockScroll: makeBooleanProp(true) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-popup/wd-popup.vue b/src/uni_modules/wot-design-uni/components/wd-popup/wd-popup.vue new file mode 100644 index 0000000..67ef1fc --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-popup/wd-popup.vue @@ -0,0 +1,212 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-progress/index.scss b/src/uni_modules/wot-design-uni/components/wd-progress/index.scss new file mode 100644 index 0000000..1229227 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-progress/index.scss @@ -0,0 +1,62 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(progress) { + @include e(label) { + color: $-dark-color3; + } + } +} + +@include b(progress) { + width: 100%; + height: $-progress-height; + display: flex; + align-items: center; + padding: $-progress-padding; + + @include e(outer) { + display: block; + position: relative; + flex: 1; + height: $-progress-height; + border-radius: calc($-progress-height / 2); + background: $-progress-bg; + } + @include e(inner) { + display: block; + position: absolute; + top: 0; + left: 0; + height: 100%; + border-radius: calc($-progress-height / 2); + background: $-progress-color; + transition-property: width; + transition-timing-function: linear; + font-size: $-progress-icon-fs; + + @include when(danger) { + background: $-progress-linear-danger-color; + } + @include when(success) { + background: $-progress-linear-success-color; + } + } + @include edeep(label) { + width: 30px; + margin-left: 9px; + color: $-progress-label-color; + font-size: $-progress-label-fs; + } + @include edeep(icon) { + font-size: $-progress-icon-fs; + + @include when(danger) { + color: $-progress-danger-color; + } + @include when(success) { + color: $-progress-success-color; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-progress/types.ts b/src/uni_modules/wot-design-uni/components/wd-progress/types.ts new file mode 100644 index 0000000..ac2c7b5 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-progress/types.ts @@ -0,0 +1,40 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 20:40:34 + * @LastEditTime: 2024-03-18 15:32:11 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-progress\types.ts + * 记得注释 + */ +import type { PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp } from '../common/props' + +export type ProgressStatus = 'success' | 'danger' // 状态类型 + +export const progressProps = { + ...baseProps, + /** + * 进度数值,最大值100 + */ + percentage: makeNumberProp(0), + /** + * 是否隐藏进度条上的文字,默认值为false + */ + hideText: makeBooleanProp(false), + /** + * 进度条颜色 + */ + color: { + type: [String, Array, Object] as PropType[]>, + default: 'linear-gradient(315deg, rgba(81,124,240,1) 0%,rgba(118,158,245,1) 100%)' + }, + /** + * 进度增加1%所需毫秒数 + */ + duration: makeNumberProp(30), + /** + * 进度条状态 + */ + status: String as PropType +} diff --git a/src/uni_modules/wot-design-uni/components/wd-progress/wd-progress.vue b/src/uni_modules/wot-design-uni/components/wd-progress/wd-progress.vue new file mode 100644 index 0000000..032e22b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-progress/wd-progress.vue @@ -0,0 +1,190 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-radio-group/index.scss b/src/uni_modules/wot-design-uni/components/wd-radio-group/index.scss new file mode 100644 index 0000000..b21629c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-radio-group/index.scss @@ -0,0 +1,23 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(radio-group) { + background-color: $-dark-background2; + } +} + +@include b(radio-group) { + background-color: $-radio-bg; + font-size: 0; + + // 上下20px 左右15px 内部间隔12px + @include when(button) { + width: 100%; + height: 100%; + padding: 8px 3px 20px 15px; + box-sizing: border-box; + overflow: hidden; + height: auto; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-radio-group/types.ts b/src/uni_modules/wot-design-uni/components/wd-radio-group/types.ts new file mode 100644 index 0000000..493b334 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-radio-group/types.ts @@ -0,0 +1,36 @@ +import { type InjectionKey } from 'vue' +import type { RadioShape } from '../wd-radio/types' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' + +export type RadioGroupProvide = { + props: { + modelValue?: string | number | boolean + shape?: RadioShape + checkedColor?: string + disabled?: boolean + cell?: boolean + size?: string + inline?: boolean + } + updateValue: (value: string | number | boolean) => void +} + +export const RADIO_GROUP_KEY: InjectionKey = Symbol('wd-radio-group') + +export const radioGroupProps = { + ...baseProps, + /** 会自动选中value对应的单选框 */ + modelValue: [String, Number, Boolean], + /** 单选框形状,可选值为 dot / button / check,默认为 check */ + shape: makeStringProp('check'), + /** 选中的颜色,默认为 #4D80F0 */ + checkedColor: String, + /** 是否禁用,默认为 false */ + disabled: makeBooleanProp(false), + /** 表单模式,默认为 false */ + cell: makeBooleanProp(false), + /** 设置大小,默认为空 */ + size: makeStringProp(''), + /** 同行展示,默认为 false */ + inline: makeBooleanProp(false) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-radio-group/wd-radio-group.vue b/src/uni_modules/wot-design-uni/components/wd-radio-group/wd-radio-group.vue new file mode 100644 index 0000000..321613b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-radio-group/wd-radio-group.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-radio/index.scss b/src/uni_modules/wot-design-uni/components/wd-radio/index.scss new file mode 100644 index 0000000..2ceaacd --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-radio/index.scss @@ -0,0 +1,301 @@ +@import "./../common/abstracts/_mixin.scss"; +@import "./../common/abstracts/variable.scss"; + +.wot-theme-dark { + @include b(radio) { + @include e(shape) { + background: transparent; + } + @include e(label) { + color: $-dark-color; + } + @include when(button) { + .wd-radio__label { + background-color: $-dark-background; + } + @include when(checked) { + .wd-radio__label { + background-color: $-dark-background2; + } + } + } + + @include when(dot) { + .wd-radio__shape { + + &::before { + background-color: $-radio-dot-checked-bg; + } + } + @include when(checked) { + .wd-radio__shape { + background-color: transparent; + } + } + } + + @include when(disabled) { + .wd-radio__label { + color: $-dark-color-gray; + } + @include when(checked) { + .wd-radio__label { + color: $-dark-color-gray; + } + } + + @include when(button) { + .wd-radio__label { + border-color: #c8c9cc; + background: #3a3a3c; + color: $-dark-color-gray; + } + @include when(checked) { + .wd-radio__label { + border-color: #c8c9cc; + background: #3a3a3c; + color: #c8c9cc; + } + } + } + + @include when(dot) { + .wd-radio__shape { + border-color: #c8c9cc; + background: #3a3a3c; + &::before { + background-color: #c8c9cc; + } + } + } + } + } +} + +@include b(radio) { + display: flex; + margin-top: $-radio-margin; + justify-content: space-between; + align-items: center; + text-align: center; + line-height: 1.2; + + @include when(first) { + margin-top: 0; + } + @include e(shape) { + position: relative; + display: inline-block; + width: $-radio-size; + height: $-radio-size; + font-size: $-radio-size; + color: transparent; + display: none; + background: $-radio-bg; + vertical-align: middle; + transition: background 0.2s; + } + @include e(input) { + position: absolute; + width: 0; + height: 0; + margin: 0; + opacity: 0; + } + @include e(label) { + display: inline-block; + vertical-align: top; + font-size: $-radio-label-fs; + color: $-radio-label-color; + line-height: 20px; + } + @include when(checked) { + .wd-radio__shape { + color: $-radio-checked-color; + border-color: currentColor; + display: inline-block; + } + .wd-radio__check { + color: $-radio-checked-color; + opacity: 1; + } + } + + @include when(dot) { + .wd-radio__shape { + border: 2px solid $-radio-dot-border-color; + border-radius: 50%; + position: relative; + display: inline-block; + box-sizing: border-box; + transition: none; + + &::before { + content: ""; + position: absolute; + width: $-radio-dot-size; + height: $-radio-dot-size; + left: calc(50% - #{$-radio-dot-size / 2}); + top: calc(50% - #{$-radio-dot-size / 2}); + border-radius: 50%; + background-color: #fff; + transform: scale(0); + transition: transform .2s ease-in; + } + } + @include when(checked) { + .wd-radio__shape { + background-color: $-radio-dot-checked-bg; + border-color: $-radio-dot-checked-border-color; + &::before { + transform: scale(1); + } + } + } + } + + @include when(button) { + display: inline-block; + margin-top: 0; + margin-right: 10px; + + .wd-radio__shape { + display: none; + } + .wd-radio__label { + height: $-radio-button-height; + min-width: $-radio-button-min-width; + max-width: $-radio-button-max-width; + padding: 5px 15px; + margin-right: 0; + border-radius: $-radio-button-radius; + background-color: $-radio-button-bg; + font-size: $-radio-button-fs; + box-sizing: border-box; + border: 1px solid $-radio-button-border; + transition: all 0.2s; + @include lineEllipsis; + } + @include when(checked) { + .wd-radio__label { + color: $-radio-checked-color; + border-color: currentColor; + background-color: $-radio-bg; + } + } + } + + @include when(inline) { + display: inline-block; + margin-top: 0; + margin-right: $-radio-margin; + + @include when(first) { + margin-left: 0; + } + .wd-radio__shape { + display: block; + margin-right: 4px; + float: left; + &::after { + content: ""; + display: table; + clear: both; + } + } + + @include when(dot) { + .wd-radio__shape { + margin-top: 2px; + } + @include when(large) { + .wd-radio__shape { + margin-top: 0; + } + } + } + } + + @include when(disabled) { + .wd-radio__label { + color: $-radio-disabled-label-color; + } + @include when(checked) { + .wd-radio__shape { + color: $-radio-disabled-label-color; + } + .wd-radio__check { + color: $-radio-disabled-label-color; + } + .wd-radio__label { + color: $-radio-disabled-label-color; + } + } + + @include when(button) { + .wd-radio__label { + border-color: $-radio-disabled-color; + background: $-radio-disabled-color; + border-color: $-radio-button-border; + color: $-radio-disabled-label-color; + } + @include when(checked) { + .wd-radio__label { + border-color: $-radio-button-disabled-border; + background: $-radio-disabled-color; + } + } + } + + @include when(dot) { + .wd-radio__shape { + background: $-radio-dot-disabled-bg; + border-color: $-radio-dot-disabled-border; + } + } + } + + // 以下内容用于解决父子组件样式隔离的问题 —— START + @include when(cell-radio) { + padding: 13px 15px; + margin: 0; + + @include when(large) { + padding: 14px 15px; + } + } + + @include when(button-radio) { + display: inline-flex; + width: 33.3333%; + padding: 12px 12px 0px 0px; + box-sizing: border-box; + + .wd-radio__label { + width: 100%; + max-width: inherit; + } + } + @include when(large) { + .wd-radio__shape { + width: $-radio-large-size; + height: $-radio-large-size; + font-size: $-radio-large-size; + } + .wd-radio__label { + font-size: $-radio-large-label-fs; + } + + @include when(dot) { + .wd-radio__shape { + &::before { + width: $-radio-dot-large-size; + height: $-radio-dot-large-size; + left: calc(50% - #{$-radio-dot-large-size / 2}); + top: calc(50% - #{$-radio-dot-large-size / 2}); + } + } + } + } + // 以下内容用于解决父子组件样式隔离的问题 —— END +} diff --git a/src/uni_modules/wot-design-uni/components/wd-radio/types.ts b/src/uni_modules/wot-design-uni/components/wd-radio/types.ts new file mode 100644 index 0000000..ab4b817 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-radio/types.ts @@ -0,0 +1,42 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 20:40:34 + * @LastEditTime: 2024-03-18 16:01:19 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-radio\types.ts + * 记得注释 + */ +import type { PropType } from 'vue' +import { baseProps, makeRequiredProp } from '../common/props' + +export type RadioShape = 'dot' | 'button' | 'check' + +export const radioProps = { + ...baseProps, + /** 选中时的值 */ + value: makeRequiredProp([String, Number, Boolean]), + /** 单选框的形状 */ + shape: String as PropType, + /** 选中的颜色 */ + checkedColor: String, + /** 禁用 */ + disabled: { + type: [Boolean, null] as PropType, + default: null + }, + /** 单元格 */ + cell: { + type: [Boolean, null] as PropType, + default: null + }, + /** 大小 */ + size: String, + /** 内联 */ + inline: { + type: [Boolean, null] as PropType, + default: null + }, + /** 最大宽度 */ + maxWidth: String +} diff --git a/src/uni_modules/wot-design-uni/components/wd-radio/wd-radio.vue b/src/uni_modules/wot-design-uni/components/wd-radio/wd-radio.vue new file mode 100644 index 0000000..d56c3f8 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-radio/wd-radio.vue @@ -0,0 +1,120 @@ + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-rate/index.scss b/src/uni_modules/wot-design-uni/components/wd-rate/index.scss new file mode 100644 index 0000000..c40fb18 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-rate/index.scss @@ -0,0 +1,24 @@ +@import './../common/abstracts/_mixin.scss'; +@import './../common/abstracts/variable.scss'; + +@include b(rate) { + display: inline-block; + vertical-align: middle; + line-height: 1; + + @include e(item) { + position: relative; + display: inline-block; + } + @include e(item-star) { + display: inline-block; + vertical-align: top; + + @include m(active) { + position: absolute; + left: 0; + top: 0; + overflow: hidden; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-rate/types.ts b/src/uni_modules/wot-design-uni/components/wd-rate/types.ts new file mode 100644 index 0000000..4652e3a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-rate/types.ts @@ -0,0 +1,89 @@ +import type { PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export const rateProps = { + ...baseProps, + + /** + * 评分最大值 + * 类型: number + * 默认值: 5 + */ + num: makeNumberProp(5), + + /** + * 当前分数,使用v-model进行双向绑定 + * 类型: string | number | null + * 默认值: null + */ + modelValue: { + type: [String, Number, null] as PropType, + default: null + }, + + /** + * 是否只读 + * 类型: boolean + * 默认值: false + */ + readonly: makeBooleanProp(false), + + /** + * 图标大小 + * 类型: string + * 默认值: '16px' + */ + size: makeStringProp('16px'), + + /** + * 图标间距 + * 类型: string + * 默认值: '4px' + */ + space: makeStringProp('4px'), + + /** + * 未选中的图标颜色 + * 类型: string + * 默认值: '#E8E8E8' + */ + color: makeStringProp('#E8E8E8'), + + /** + * 选中的图标颜色,支持传颜色数组(用于分段颜色) + * 类型: string | Array + * 默认值: 'linear-gradient(180deg, rgba(255,238,0,1) 0%,rgba(250,176,21,1) 100%)' + */ + activeColor: { + type: [String, Array] as PropType>, + default: 'linear-gradient(180deg, rgba(255,238,0,1) 0%,rgba(250,176,21,1) 100%)' + }, + + /** + * 未选中的图标类名 + * 类型: string + * 默认值: 'star-on' + */ + icon: makeStringProp('star-on'), + + /** + * 选中的图标类名 + * 类型: string + * 默认值: 'star-on' + */ + activeIcon: makeStringProp('star-on'), + + /** + * 是否禁用 + * 类型: boolean + * 默认值: false + */ + disabled: makeBooleanProp(false), + + /** + * 禁用的图标颜色 + * 类型: string + * 默认值: 'linear-gradient(315deg, rgba(177,177,177,1) 0%,rgba(199,199,199,1) 100%)' + */ + disabledColor: makeStringProp('linear-gradient(315deg, rgba(177,177,177,1) 0%,rgba(199,199,199,1) 100%)') +} diff --git a/src/uni_modules/wot-design-uni/components/wd-rate/wd-rate.vue b/src/uni_modules/wot-design-uni/components/wd-rate/wd-rate.vue new file mode 100644 index 0000000..4d540d9 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-rate/wd-rate.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-resize/index.scss b/src/uni_modules/wot-design-uni/components/wd-resize/index.scss new file mode 100644 index 0000000..cb0a039 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-resize/index.scss @@ -0,0 +1,27 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(resize) { + + @include e(container) { + position: absolute; + min-width: 1px; + min-height: 1px; + } + + @include e(wrapper) { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: -9999; + overflow: hidden; + visibility: hidden; + + @include m(placeholder) { + transition: 0s; + animation: none; + } + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-resize/types.ts b/src/uni_modules/wot-design-uni/components/wd-resize/types.ts new file mode 100644 index 0000000..094de17 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-resize/types.ts @@ -0,0 +1,6 @@ +import { baseProps, makeStringProp } from '../common/props' + +export const resizeProps = { + ...baseProps, + customContainerClass: makeStringProp('') +} diff --git a/src/uni_modules/wot-design-uni/components/wd-resize/wd-resize.vue b/src/uni_modules/wot-design-uni/components/wd-resize/wd-resize.vue new file mode 100644 index 0000000..c93b709 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-resize/wd-resize.vue @@ -0,0 +1,144 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-row/index.scss b/src/uni_modules/wot-design-uni/components/wd-row/index.scss new file mode 100644 index 0000000..26ffdbd --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-row/index.scss @@ -0,0 +1,10 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(row) { + &::after { + display: table; + clear: both; + content: ""; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-row/types.ts b/src/uni_modules/wot-design-uni/components/wd-row/types.ts new file mode 100644 index 0000000..f03f970 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-row/types.ts @@ -0,0 +1,16 @@ +import { type InjectionKey } from 'vue' +import { baseProps, makeNumberProp } from '../common/props' + +export type RowProvide = { + props: { gutter?: number } +} + +export const ROW_KEY: InjectionKey = Symbol('wd-row') + +export const rowProps = { + ...baseProps, + /** + * 列元素之间的间距(单位为px) + */ + gutter: makeNumberProp(0) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-row/wd-row.vue b/src/uni_modules/wot-design-uni/components/wd-row/wd-row.vue new file mode 100644 index 0000000..221c7da --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-row/wd-row.vue @@ -0,0 +1,61 @@ + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-search/index.scss b/src/uni_modules/wot-design-uni/components/wd-search/index.scss new file mode 100644 index 0000000..c57330c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-search/index.scss @@ -0,0 +1,148 @@ +@import '../common/abstracts/_mixin.scss'; +@import '../common/abstracts/variable.scss'; + +.wot-theme-dark { + @include b(search) { + background: $-dark-background4; + + @include e(block) { + background-color: $-dark-background; + } + + @include e(input) { + color: $-dark-color; + } + + @include e(cover) { + background-color: $-dark-background; + } + + @include e(search-icon) { + color: $-dark-color; + } + @include e(search-left-icon) { + color: $-dark-color; + } + @include e(clear) { + color: $-dark-color; + } + @include e(cancel) { + color: $-dark-color; + } + + @include when(light) { + background: $-dark-background4; + + .wd-search__block { + background: $-dark-background7; + } + + .wd-search__cover { + background: $-dark-background7; + } + } + } +} + +@include b(search) { + display: flex; + padding: $-search-padding; + align-items: center; + background: #fff; + + @include e(block) { + flex: 1; + background-color: $-search-input-bg; + border-radius: $-search-input-radius; + display: flex; + flex-direction: row; + align-items: center; + position: relative; + } + @include e(field) { + flex: 1; + display: flex; + flex-direction: row; + align-items: center; + position: relative; + } + @include e(input) { + flex: 1; + height: $-search-input-height; + box-sizing: border-box; + padding: $-search-input-padding; + border: none; + background: transparent; + font-size: $-search-input-fs; + -webkit-appearance: none; + outline: none; + color: $-search-input-color; + z-index: 0; + + @include lineEllipsis; + + &::-webkit-search-cancel-button { + -webkit-appearance: none; + } + } + @include e(cover) { + width: 100%; + height: $-search-input-height; + background-color: $-search-input-bg; + line-height: $-search-input-height; + font-size: $-search-input-fs; + border-radius: $-search-input-radius; + flex-direction: row; + justify-content: center; + align-items: center; + } + @include edeep(search-icon) { + margin-right: 8px; + color: $-search-icon-color; + font-size: $-search-icon-size; + } + @include edeep(search-left-icon) { + position: absolute; + font-size: $-search-icon-size; + top: 50%; + left: 16px; + transform: translateY(-50%); + color: $-search-icon-color; + } + @include e(placeholder-txt) { + color: $-search-placeholder-color; + font-size: $-search-input-fs; + } + @include edeep(clear) { + position: absolute; + right: 0; + padding: 6px 9px 6px 7px; + color: $-search-cancel-color; + } + @include edeep(clear-icon) { + vertical-align: middle; + font-size: $-search-clear-icon-size; + } + @include e(cancel) { + padding: $-search-cancel-padding; + height: $-search-input-height; + line-height: $-search-input-height; + font-size: $-search-cancel-fs; + color: $-search-cancel-color; + -webkit-tap-highlight-color: transparent; + } + @include when(light) { + background: $-search-light-bg; + + .wd-search__block { + background: #fff; + } + + .wd-search__cover { + background: #fff; + } + } + @include when(without-cancel) { + padding-right: $-search-side-padding; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-search/types.ts b/src/uni_modules/wot-design-uni/components/wd-search/types.ts new file mode 100644 index 0000000..c2e7de6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-search/types.ts @@ -0,0 +1,83 @@ +import { baseProps, makeBooleanProp, makeNumericProp, makeStringProp } from '../common/props' + +export const searchProps = { + ...baseProps, + + /** + * 输入框内容,双向绑定 + * 类型: string + * 默认值: '' + */ + modelValue: makeStringProp(''), + + /** + * 是否使用输入框右侧插槽 + * 类型: boolean + * 默认值: false + * @deprecated 该属性已废弃,将在下一个minor版本被移除,直接使用插槽即可 + */ + useSuffixSlot: makeBooleanProp(false), + + /** + * 搜索框占位文本 + * 类型: string + */ + placeholder: String, + + /** + * 搜索框右侧文本 + * 类型: string + */ + cancelTxt: String, + + /** + * 搜索框亮色(白色) + * 类型: boolean + * 默认值: false + */ + light: makeBooleanProp(false), + + /** + * 是否隐藏右侧文本 + * 类型: boolean + * 默认值: false + */ + hideCancel: makeBooleanProp(false), + + /** + * 是否禁用搜索框 + * 类型: boolean + * 默认值: false + */ + disabled: makeBooleanProp(false), + + /** + * 原生属性,设置最大长度。-1 表示无限制 + * 类型: string / number + * 默认值: -1 + */ + maxlength: makeNumericProp(-1), + + /** + * placeholder 居左边 + * 类型: boolean + * 默认值: false + */ + placeholderLeft: makeBooleanProp(false), + + /** + * 是否自动聚焦 + * 类型: boolean + * 默认值: false + * 最低版本: 0.1.63 + */ + focus: makeBooleanProp(false), + + /** + * 是否在点击清除按钮时聚焦输入框 + * 类型: boolean + * 默认值: false + * 最低版本: 0.1.63 + */ + focusWhenClear: makeBooleanProp(false) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-search/wd-search.vue b/src/uni_modules/wot-design-uni/components/wd-search/wd-search.vue new file mode 100644 index 0000000..d75ef5b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-search/wd-search.vue @@ -0,0 +1,215 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-segmented/index.scss b/src/uni_modules/wot-design-uni/components/wd-segmented/index.scss new file mode 100644 index 0000000..f79061e --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-segmented/index.scss @@ -0,0 +1,101 @@ +@import './../common/abstracts/_mixin.scss'; +@import './../common/abstracts/variable.scss'; + +.wot-theme-dark { + @include b(segmented) { + background: $-dark-background2; + + @include e(item) { + color: $-dark-color3; + + @include when(active) { + color: $-dark-color; + + @include when(disabled) { + color: $-dark-color3; + } + } + + @include when(disabled) { + color: $-dark-color-gray; + } + + @include m(active) { + background-color: $-color-theme; + + @include when(disabled) { + opacity: 0.6; + } + } + } + + } +} + +@include b(segmented) { + position: relative; + display: flex; + align-items: stretch; + justify-items: flex-start; + width: 100%; + background-color: $-segmented-item-bg-color; + padding: $-segmented-padding; + border-radius: 4px; + box-sizing: border-box; + + + @include e(item) { + position: relative; + text-align: center; + border-radius: 4px; + flex: 1; + min-width: 0; + z-index: 1; + min-height: 28px; + line-height: 28px; + padding: 0 12px; + font-size: 14px; + color: $-segmented-item-color; + font-weight: 400; + + @include when(active) { + font-weight: 550; + } + + @include when(large) { + min-height: 32px; + line-height: 32px; + padding: 0 12px; + font-size: 16px; + } + + + @include when(small) { + min-height: 24px; + line-height: 24px; + padding: 0 7px; + font-size: 12px; + } + + @include when(disabled) { + cursor: no-drop; + color: $-segmented-item-disabled-color; + } + + @include m(active) { + background-color: $-segmented-item-acitve-bg; + border-radius: 4px; + height: calc(100% - $-segmented-padding * 2); + @include when(disabled) { + opacity: 0.8; + } + } + } + + @include e(item-label) { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-segmented/types.ts b/src/uni_modules/wot-design-uni/components/wd-segmented/types.ts new file mode 100644 index 0000000..f473d31 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-segmented/types.ts @@ -0,0 +1,68 @@ +/* + * @Author: weisheng + * @Date: 2024-03-18 11:22:03 + * @LastEditTime: 2024-07-25 22:17:56 + * @LastEditors: weisheng + * @Description: + * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-segmented/types.ts + * 记得注释 + */ +import type { PropType } from 'vue' +import { baseProps, makeBooleanProp, makeRequiredProp, makeStringProp } from '../common/props' + +export type SegmentedType = 'large' | 'middle' | 'small' + +export interface SegmentedOption { + value: string | number // 选中值 + disabled?: boolean // 是否禁用 + payload?: any // 更多数据 +} + +export const segmentedProps = { + ...baseProps, + + /** + * 当前选中的值 + * 类型: string | number + * 最低版本: 0.1.23 + */ + value: makeRequiredProp([String, Number]), + + /** + * 是否禁用分段器 + * 类型: boolean + * 默认值: false + * 最低版本: 0.1.23 + */ + disabled: makeBooleanProp(false), + + /** + * 控件尺寸 + * 类型: string + * 可选值: 'large' | 'middle' | 'small' + * 默认值: 'middle' + * 最低版本: 0.1.23 + */ + size: makeStringProp('middle'), + + /** + * 数据集合 + * 类型: string[] | number[] | SegmentedOption[] + * 必需: 是 + * 默认值: [] + * 最低版本: 0.1.23 + */ + options: { + type: Array as PropType, + required: true, + default: () => [] + }, + + /** + * 切换选项时是否振动 + * 类型: boolean + * 默认值: false + * 最低版本: 0.1.23 + */ + vibrateShort: makeBooleanProp(false) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-segmented/wd-segmented.vue b/src/uni_modules/wot-design-uni/components/wd-segmented/wd-segmented.vue new file mode 100644 index 0000000..87b4a3c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-segmented/wd-segmented.vue @@ -0,0 +1,131 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-select-picker/index.scss b/src/uni_modules/wot-design-uni/components/wd-select-picker/index.scss new file mode 100644 index 0000000..c649503 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-select-picker/index.scss @@ -0,0 +1,179 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(select-picker) { + @include when(border) { + .wd-select-picker__cell { + @include halfPixelBorder('top', $-cell-padding, $-dark-border-color); + } + } + + @include e(cell) { + background-color: $-dark-background2; + color: $-dark-color; + @include when(disabled) { + .wd-select-picker__value { + color: $-dark-color3; + } + } + } + + @include e(label) { + color: $-dark-color; + } + @include e(value) { + color: $-dark-color; + @include m(placeholder) { + color: $-dark-color-gray; + } + } + + :deep(.wd-select-picker__arrow), + :deep(.wd-select-picker__close) { + color: $-dark-color; + } + + } + +} + +@include b(select-picker) { + @include when(border) { + .wd-select-picker__cell { + @include halfPixelBorder('top', $-cell-padding); + } + } + @include e(cell) { + position: relative; + display: flex; + padding: $-cell-wrapper-padding $-cell-padding; + align-items: flex-start; + background-color: $-color-white; + text-decoration: none; + color: $-cell-title-color; + font-size: $-cell-title-fs; + overflow: hidden; + line-height: $-cell-line-height; + } + @include e(cell) { + @include when(disabled) { + .wd-select-picker__value { + color: $-input-disabled-color; + } + } + @include when(align-right) { + .wd-select-picker__value { + text-align: right; + } + } + @include when(error) { + .wd-select-picker__value { + color: $-input-error-color; + } + :deep(.wd-select-picker__arrow) { + color: $-input-error-color; + } + } + @include when(large) { + font-size: $-cell-title-fs-large; + + :deep(.wd-select-picker__arrow ){ + font-size: $-cell-icon-size-large; + } + } + } + @include e(error-message){ + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } + @include e(label) { + position: relative; + width: $-input-cell-label-width; + color: $-cell-title-color; + margin-right: $-cell-padding; + box-sizing: border-box; + + @include when(required) { + padding-left: 12px; + + &::after { + position: absolute; + left: 0; + top: 2px; + content: '*'; + font-size: $-cell-required-size; + line-height: 1.1; + color: $-cell-required-color; + } + } + } + @include e(value-wraper) { + display: flex; + } + @include e(value) { + flex: 1; + margin-right: 10px; + color: $-cell-value-color; + + @include when(ellipsis) { + @include lineEllipsis; + } + @include m(placeholder) { + color: $-input-placeholder-color; + } + } + @include e(body) { + flex: 1; + } + @include edeep(arrow) { + display: block; + font-size: $-cell-icon-size; + color: $-cell-arrow-color; + line-height: $-cell-line-height; + } + + @include e(loading) { + position: absolute; + display: flex; + top: 0; + right: 0; + bottom: 0; + left: 0; + align-items: center; + justify-content: center; + z-index: 3; + background: $-picker-loading-bg; + } + // selectPiceker多出的样式 + @include edeep(header) { + height: 72px; + line-height: 72px; + } + @include e(wrapper) { + padding: 0 10px; + position: relative; + max-height: 356px; + box-sizing: border-box; + overflow: auto; + + @include when(filterable) { + height: 314px; + max-height: 314px; + } + + @include when(loading) { + overflow: hidden; + } + } + @include e(text-active) { + color: $-color-theme; + } + + @include e(footer) { + padding: 24px 15px; + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-select-picker/types.ts b/src/uni_modules/wot-design-uni/components/wd-select-picker/types.ts new file mode 100644 index 0000000..3e07030 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-select-picker/types.ts @@ -0,0 +1,101 @@ +import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props' +import type { FormItemRule } from '../wd-form/types' + +export type SelectPickerType = 'checkbox' | 'radio' + +export const selectPickerProps = { + ...baseProps, + /** 选择器左侧文案 */ + label: String, + /** 设置左侧标题宽度 */ + labelWidth: makeStringProp('33%'), + /** 禁用 */ + disabled: makeBooleanProp(false), + /** 只读 */ + readonly: Boolean, + /** 选择器占位符 */ + placeholder: String, + /** 弹出层标题 */ + title: String, + /** 选择器的值靠右展示 */ + alignRight: makeBooleanProp(false), + /** 是否为错误状态,错误状态时右侧内容为红色 */ + error: makeBooleanProp(false), + /** 必填样式 */ + required: makeBooleanProp(false), + /** 使用 label 插槽时设置该选项 */ + useLabelSlot: makeBooleanProp(false), + /** 使用默认插槽时设置该选项 */ + useDefaultSlot: makeBooleanProp(false), + /** 设置选择器大小 */ + size: String, + /** 选中的颜色(单/复选框) */ + checkedColor: String, + /** 最小选中的数量(仅在复选框类型下生效,`type`类型为`checkbox`) */ + min: makeNumberProp(0), + /** 最大选中的数量,0 为无限数量,默认为 0(仅在复选框类型下生效,`type`类型为`checkbox`) */ + max: makeNumberProp(0), + /** 设置 picker 内部的选项组尺寸大小 (单/复选框) */ + selectSize: String, + /** 加载中 */ + loading: makeBooleanProp(false), + /** 加载的颜色,只能使用十六进制的色值写法,且不能使用缩写 */ + loadingColor: makeStringProp('#4D80F0'), + /** 点击遮罩是否关闭 */ + closeOnClickModal: makeBooleanProp(true), + /** 选中项,`type`类型为`checkbox`时,类型为 array;`type`为`radio` 时 ,类型为 number / boolean / string */ + modelValue: makeRequiredProp([String, Number, Boolean, Array] as PropType), + /** 选择器数据,一维数组 */ + columns: makeArrayProp>(), + /** 单复选选择器类型 */ + type: makeStringProp('checkbox'), + /** 选项对象中,value 对应的 key */ + valueKey: makeStringProp('value'), + /** 选项对象中,展示的文本对应的 key */ + labelKey: makeStringProp('label'), + /** 确认按钮文案 */ + confirmButtonText: String, + /** 自定义展示文案的格式化函数,返回一个字符串 */ + displayFormat: Function as PropType, + /** 确定前校验函数,接收 (value, resolve) 参数,通过 resolve 继续执行 picker,resolve 接收 1 个 boolean 参数 */ + beforeConfirm: Function as PropType, + /** 弹窗层级 */ + zIndex: makeNumberProp(15), + /** 弹出面板是否设置底部安全距离(iphone X 类型的机型) */ + safeAreaInsetBottom: makeBooleanProp(true), + /** 可搜索(目前只支持本地搜索) */ + filterable: makeBooleanProp(false), + /** 搜索框占位符 */ + filterPlaceholder: String, + /** 是否超出隐藏 */ + ellipsis: makeBooleanProp(false), + /** 重新打开是否滚动到选中项 */ + scrollIntoView: makeBooleanProp(true), + /** 表单域 `model` 字段名,在使用表单校验功能的情况下,该属性是必填的 */ + prop: String, + /** 表单验证规则,结合`wd-form`组件使用 */ + rules: makeArrayProp(), + /** 自定义内容样式类 */ + customContentClass: makeStringProp(''), + /** 自定义标签样式类 */ + customLabelClass: makeStringProp(''), + /** 自定义值样式类 */ + customValueClass: makeStringProp(''), + /** 是否显示确认按钮(radio类型生效),默认值为:true */ + showConfirm: makeBooleanProp(true) +} +export type SelectPickerProps = ExtractPropTypes + +export type SelectPickerDisplayFormat = (items: string | number | boolean | (string | number | boolean)[], columns: Record[]) => string + +export type SelectPickerBeforeConfirm = (value: string | number | boolean | (string | number | boolean)[], resolve: (isPass: boolean) => void) => void + +export type SelectPickerExpose = { + // 打开picker弹框 + open: () => void + // 关闭picker弹框 + close: () => void +} + +export type SelectPickerInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-select-picker/wd-select-picker.vue b/src/uni_modules/wot-design-uni/components/wd-select-picker/wd-select-picker.vue new file mode 100644 index 0000000..21e30b4 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-select-picker/wd-select-picker.vue @@ -0,0 +1,432 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-sidebar-item/index.scss b/src/uni_modules/wot-design-uni/components/wd-sidebar-item/index.scss new file mode 100644 index 0000000..02fae7a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sidebar-item/index.scss @@ -0,0 +1,96 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(sidebar-item) { + background: $-dark-background2; + color: $-dark-color; + + &:active { + background-color: $-dark-background4; + } + + @include m(active) { + background: $-dark-background; + color: $-sidebar-active-color; + } + + @include m(disabled) { + color: $-dark-color-gray; + + &:active { + background-color: $-dark-background2; + } + } + } + +} + +@include b(sidebar-item) { + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 32rpx; + font-size: $-sidebar-font-size; + color: $-sidebar-color; + background: $-sidebar-bg; + min-height: $-sidebar-item-height; + box-sizing: border-box; + white-space: wrap; + line-height: $-sidebar-item-line-height; + + &:active { + background-color: $-sidebar-hover-bg; + } + + @include m(active) { + font-weight: 600; + background: $-sidebar-active-bg; + color: $-sidebar-active-color; + + &::before { + position: absolute; + top: 50%; + left: 0; + width: $-sidebar-active-border-width; + height: $-sidebar-active-border-height; + background: $-sidebar-active-color; + transform: translateY(-50%); + content: ''; + border-radius: $-sidebar-active-border-width; + } + + &:active { + background-color: transparent; + } + } + + @include m(prefix) { + border-bottom-right-radius: $-sidebar-border-radius; + } + + @include m(suffix) { + border-top-right-radius: $-sidebar-border-radius; + } + + + @include m(disabled) { + color: $-sidebar-disabled-color; + cursor: not-allowed; + + &:active { + background-color: $-sidebar-bg; + } + } + + @include edeep(badge) { + z-index: 2; + } + + @include edeep(icon) { + font-size: $-sidebar-icon-size; + margin-right: 2px; + } + +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-sidebar-item/types.ts b/src/uni_modules/wot-design-uni/components/wd-sidebar-item/types.ts new file mode 100644 index 0000000..a51419f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sidebar-item/types.ts @@ -0,0 +1,31 @@ +import type { ExtractPropTypes, Prop, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp } from '../common/props' +import type { BadgeProps } from '../wd-badge/types' + +export const sidebarItemProps = { + ...baseProps, + /** 当前选项标题 */ + label: makeRequiredProp(String), + /** 当前选项的值,唯一标识 */ + value: makeRequiredProp([Number, String]), + /** 徽标显示值 */ + badge: { + type: [String, Number, null] as PropType, + default: null + }, + /** 徽标属性,透传给 Badge 组件 */ + badgeProps: Object as PropType>, + /** 图标 */ + icon: String, + /** 是否点状徽标 */ + isDot: { + type: Boolean, + default: undefined + }, + /** 徽标最大值 */ + max: Number, + /** 是否禁用 */ + disabled: makeBooleanProp(false) +} + +export type SidebarItemProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-sidebar-item/wd-sidebar-item.vue b/src/uni_modules/wot-design-uni/components/wd-sidebar-item/wd-sidebar-item.vue new file mode 100644 index 0000000..f6553f3 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sidebar-item/wd-sidebar-item.vue @@ -0,0 +1,114 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-sidebar/index.scss b/src/uni_modules/wot-design-uni/components/wd-sidebar/index.scss new file mode 100644 index 0000000..2e268fa --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sidebar/index.scss @@ -0,0 +1,25 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(sidebar) { + background: $-dark-background; + @include e(padding){ + background: $-dark-background2; + } + } +} + +@include b(sidebar) { + display: flex; + flex-direction: column; + overflow-y: auto; + width: $-sidebar-width; + height: $-sidebar-height; + background: $-color-white; + + @include e(padding){ + flex: 1 1 auto; + background: $-sidebar-bg; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-sidebar/types.ts b/src/uni_modules/wot-design-uni/components/wd-sidebar/types.ts new file mode 100644 index 0000000..2d047ea --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sidebar/types.ts @@ -0,0 +1,28 @@ +/* + * @Author: weisheng + * @Date: 2024-01-05 18:03:27 + * @LastEditTime: 2024-03-18 15:52:37 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-sidebar\types.ts + * 记得注释 + */ +import { type ExtractPropTypes, type InjectionKey } from 'vue' +import { baseProps, makeNumericProp } from '../common/props' + +export type SidebarProvide = { + props: Partial + setChange: (value: number | string, label: string) => void +} + +export const SIDEBAR_KEY: InjectionKey = Symbol('wd-sidebar') + +export const sidebarProps = { + ...baseProps, + /** + * 当前导航项的索引 + */ + modelValue: makeNumericProp(0) +} + +export type SidebarProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-sidebar/wd-sidebar.vue b/src/uni_modules/wot-design-uni/components/wd-sidebar/wd-sidebar.vue new file mode 100644 index 0000000..76fb338 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sidebar/wd-sidebar.vue @@ -0,0 +1,41 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-skeleton/index.scss b/src/uni_modules/wot-design-uni/components/wd-skeleton/index.scss new file mode 100644 index 0000000..6c0f25c --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-skeleton/index.scss @@ -0,0 +1,96 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(skeleton) { + @include e(col) { + background-color: $-dark-background4; + } + } +} +@include b(skeleton) { + box-sizing: border-box; + + @include e(row) { + justify-content: space-between; + margin-bottom: $-skeleton-row-margin-bottom; + display: flex; + align-items: center; + + &:only-child, + &:last-child { + margin-bottom: 0; + } + } + @include e(col) { + border-radius: $-skeleton-border-radius-text; + background-color: $-skeleton-background-color; + display: flex; + align-items: center; + justify-content: center; + + &:first-child:last-child, + &:last-child { + margin-right: 0; + } + } + @include m(type) { + &-text { + width: 100%; + height: $-skeleton-text-height-default; + border-radius: $-skeleton-border-radius-text; + } + + &-rect { + width: 100%; + height: $-skeleton-rect-height-default; + border-radius: $-skeleton-border-radius-rect; + } + + &-circle { + flex-shrink: 0; + width: $-skeleton-circle-height-default; + height: $-skeleton-circle-height-default; + border-radius: $-skeleton-border-radius-circle; + } + } + @include m(animation) { + &-gradient { + position: relative; + overflow-x: hidden; + + &::after { + content: ' '; + position: absolute; + animation: wd-skeleton-gradient 1.5s linear 2s infinite; + background: linear-gradient(90deg, rgba(255, 255, 255, 0), $-skeleton-animation-gradient, rgba(255, 255, 255, 0)); + inset: 0; + } + } + + &-flashed { + animation: wd-skeleton-flashed 2s linear 2s infinite; + } + } + + @keyframes wd-skeleton-gradient { + 0% { + transform: translateX(-100%) skewX(-15deg); + } + 100% { + transform: translateX(100%) skewX(-15deg); + } + } + @keyframes wd-skeleton-flashed { + 0% { + opacity: 1; + } + 50% { + opacity: 0.3; + background-color: $-skeleton-animation-flashed; + } + 100% { + opacity: 1; + } + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-skeleton/index.ts b/src/uni_modules/wot-design-uni/components/wd-skeleton/index.ts new file mode 100644 index 0000000..43e0049 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-skeleton/index.ts @@ -0,0 +1 @@ +export type { SkeletonThemeVars } from './types' diff --git a/src/uni_modules/wot-design-uni/components/wd-skeleton/types.ts b/src/uni_modules/wot-design-uni/components/wd-skeleton/types.ts new file mode 100644 index 0000000..d9d6f0b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-skeleton/types.ts @@ -0,0 +1,69 @@ +import type { PropType, ExtractPropTypes, CSSProperties } from 'vue' +import { makeArrayProp, makeBooleanProp, makeStringProp } from '../common/props' + +type SkeletonTheme = 'text' | 'avatar' | 'paragraph' | 'image' +type SkeletonAnimation = 'gradient' | 'flashed' +export type SkeletonRowColObj = { + [key: string]: any + type?: 'rect' | 'circle' | 'text' + size?: string | number + width?: string | number + height?: string | number + margin?: string | number + background?: string + marginLeft?: string | number + marginRight?: string | number + borderRadius?: string | number + backgroundColor?: string +} +export type SkeletonRowCol = number | SkeletonRowColObj | Array +export type SkeletonThemeVars = { + notifyPadding?: string + notifyFontSize?: string + notifyTextColor?: string + notifyLineHeight?: number | string + notifyDangerBackground?: string + notifyPrimaryBackground?: string + notifySuccessBackground?: string + notifyWarningBackground?: string +} +export const skeletonProps = { + /** + * 骨架图风格,有基础、头像组合等两大类 + */ + theme: makeStringProp('text'), + /** + * 用于设置行列数量、宽度高度、间距等。 + * @example + * 【示例一】,`[1, 1, 2]` 表示输出三行骨架图,第一行一列,第二行一列,第三行两列。 + * 【示例二】,`[1, 1, { width: '100px' }]` 表示自定义第三行的宽度为 `100px`。 + * 【示例三】,`[1, 2, [{ width, height }, { width, height, marginLeft }]]` 表示第三行有两列,且自定义宽度、高度和间距 + */ + rowCol: makeArrayProp(), + /** + * 是否为加载状态,如果是则显示骨架图,如果不是则显示加载完成的内容 + * @default true + */ + loading: makeBooleanProp(true), + /** + * 动画效果,有「渐变加载动画」和「闪烁加载动画」两种。值为空则表示没有动画 + */ + animation: { + type: String as PropType, + default: '' + }, + // 自定义类名 + customClass: { + type: [String, Array, Object], + default: '' + }, + // 自定义样式 + customStyle: { + type: Object as PropType, + default() { + return {} + } + } +} + +export type SkeletonProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-skeleton/wd-skeleton.vue b/src/uni_modules/wot-design-uni/components/wd-skeleton/wd-skeleton.vue new file mode 100644 index 0000000..68ec6cc --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-skeleton/wd-skeleton.vue @@ -0,0 +1,119 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-slider/index.scss b/src/uni_modules/wot-design-uni/components/wd-slider/index.scss new file mode 100644 index 0000000..72d6cfd --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-slider/index.scss @@ -0,0 +1,92 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(slider) { + @include e(label-min, label-max) { + color: $-dark-color; + } + + @include e(label) { + color: $-dark-color; + background-color: rgba($color: $-dark-background2, $alpha: 0.5); + } + + @include m(disabled) { + @include me(label-min, label-max) { + color: $-dark-color-gray; + } + } + } +} + + +@include b(slider) { + display: flex; + flex-flow: row nowrap; + align-items: center; + height: calc($-slider-handle-radius * 3); + + @include e(label-min, label-max) { + font-size: $-slider-fs; + color: $-slider-color; + } + @include e(label) { + text-align: center; + width: calc($-slider-handle-radius * 2); + line-height: calc($-slider-handle-radius * 2); + font-size: $-slider-fs; + line-height: 1.2; + color: $-slider-color; + background-color: rgba($color: #fff, $alpha: 0.5); + border-radius: 100%; + position: absolute; + bottom: calc($-slider-handle-radius * 2 + 8px); + } + @include e(bar-wrapper) { + flex: 1; + position: relative; + border-radius: calc($-slider-axie-height / 2); + background-color: #e5e5e5; + margin: calc($-slider-handle-radius - $-slider-axie-height / 2) 0; + } + @include e(bar) { + position: relative; + border-radius: inherit; + height: $-slider-axie-height; + background: $-slider-line-color; + } + @include e(button-wrapper) { + width: calc($-slider-handle-radius * 2); + position: absolute; + right: 0; + top: 0; + transform: translate3d(-50%, -50%, 0); + } + @include e(has-label) { + padding-top: calc($-slider-fs * 1.2 + 8px); + } + @include e(button) { + height: calc($-slider-handle-radius * 2); + width: calc($-slider-handle-radius * 2); + background: $-slider-handle-bg; + border-radius: 100%; + border: 1px solid $-slider-axie-bg; + box-sizing: border-box; + box-shadow: 0 2px 4px 0 rgba($color: #9b9b9b, $alpha: 0.5); + } + @include e(label-min) { + margin-right: $-slider-handle-radius + 11px; + } + @include e(label-max) { + margin-left: $-slider-handle-radius + 11px; + } + @include m(disabled) { + @include me(bar) { + opacity: 0.25; + } + @include me(label-min, label-max) { + color: $-slider-disabled-color; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-slider/types.ts b/src/uni_modules/wot-design-uni/components/wd-slider/types.ts new file mode 100644 index 0000000..61c9faf --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-slider/types.ts @@ -0,0 +1,104 @@ +/* + * @Author: weisheng + * @Date: 2024-06-03 23:43:43 + * @LastEditTime: 2024-06-06 22:03:57 + * @LastEditors: weisheng + * @Description: + * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-slider/types.ts + * 记得注释 + */ +import type { ComponentPublicInstance, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export const sliderProps = { + ...baseProps, + + /** + * 自定义最小值的样式类名 + * 类型: string + * 默认值: '' + */ + customMinClass: makeStringProp(''), + + /** + * 自定义最大值的样式类名 + * 类型: string + * 默认值: '' + */ + customMaxClass: makeStringProp(''), + + /** + * 是否隐藏左右的最大最小值 + * 类型: boolean + * 默认值: false + */ + hideMinMax: makeBooleanProp(false), + + /** + * 是否隐藏当前滑块值 + * 类型: boolean + * 默认值: false + */ + hideLabel: makeBooleanProp(false), + + /** + * 是否禁用滑块 + * 类型: boolean + * 默认值: false + */ + disabled: makeBooleanProp(false), + + /** + * 进度条未激活的背景颜色 + * 类型: string + * 默认值: '#e5e5e5' + */ + inactiveColor: makeStringProp('#e5e5e5'), + + /** + * 进度条激活的背景颜色 + * 类型: string + * 默认值: '' + */ + activeColor: makeStringProp(''), + + /** + * 滑块的最大值 + * 类型: number + * 默认值: 100 + */ + max: makeNumberProp(100), + + /** + * 滑块的最小值 + * 类型: number + * 默认值: 0 + */ + min: makeNumberProp(0), + + /** + * 滑块的步进值 + * 类型: number + * 默认值: 1 + */ + step: makeNumberProp(1), + + /** + * 滑块的值,如果为数组,则为双向滑块 + * 类型: number | number[] + * 默认值: 0 + */ + modelValue: { + type: [Number, Array] as PropType, + default: 0 + } +} + +export type SliderExpose = { + /** + * 初始化slider宽度 + */ + initSlider: () => void +} + +export type SliderInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-slider/wd-slider.vue b/src/uni_modules/wot-design-uni/components/wd-slider/wd-slider.vue new file mode 100644 index 0000000..4e11ffc --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-slider/wd-slider.vue @@ -0,0 +1,358 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-sort-button/index.scss b/src/uni_modules/wot-design-uni/components/wd-sort-button/index.scss new file mode 100644 index 0000000..bbc9af2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sort-button/index.scss @@ -0,0 +1,89 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(sort-button) { + @include e(wrapper) { + color: $-dark-color; + } + } + +} + +@include b(sort-button) { + display: inline-block; + height: $-sort-button-height; + line-height: $-sort-button-height; + + @include m(line) { + .wd-sort-button__left { + &::after { + position: absolute; + content: ''; + width: 19px; + height: 3px; + bottom: 6px; + left: 50%; + transform: translate(-50%, 0); + background: $-sort-button-line-color; + border-radius: calc($-sort-button-line-height / 2); + transition: opacity .15s; + opacity: 0; + } + + &.is-active::after { + opacity: 1; + } + } + } + + @include e(wrapper) { + font-size: $-sort-button-fs; + color: $-sort-button-color; + word-break: break-all; + white-space: nowrap; + } + + @include e(left) { + position: relative; + display: inline-block; + vertical-align: middle; + + @include when(active) { + font-weight: $-fw-medium; + + .wd-sort-button__right { + justify-content: center; + } + + } + } + + @include e(right) { + display: inline-block; + min-width: 14px; + margin-left: 2px; + vertical-align: middle; + line-height: 1.1; + + @include when(active) { + + :deep(.wd-sort-button__icon-up), + :deep(.wd-sort-button__icon-down) { + transform: scale(calc((10 / 14))); + } + } + } + + @include edeep(icon-up) { + display: block !important; + line-height: 1.1; + transform: scale(calc((10 / 14))) translate(0, 7px); + } + + @include edeep(icon-down) { + display: block !important; + line-height: 1.1; + transform: scale(calc((10 / 14))) translate(0, -7px); + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-sort-button/types.ts b/src/uni_modules/wot-design-uni/components/wd-sort-button/types.ts new file mode 100644 index 0000000..1d94f4f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sort-button/types.ts @@ -0,0 +1,43 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' + +export const sortButtonProps = { + ...baseProps, + /** + * 选中的箭头方向,1表示升序,0表示重置状态,-1表示降序。 + * 类型: number + * 可选值: -1, 0, 1 + * 默认值: 0或-1(根据具体实现可能有所不同) + */ + modelValue: makeNumberProp(0), + + /** + * 排序按钮展示的文案。 + * 类型: string + * 默认值: '' + */ + title: makeStringProp(''), + + /** + * 当展示双箭头时,是否允许手动重置按钮。 + * 类型: boolean + * 默认值: false + */ + allowReset: makeBooleanProp(false), + + /** + * 是否优先切换为降序,如果不开启则默认优先切换为升序。 + * 类型: boolean + * 默认值: false + */ + descFirst: makeBooleanProp(false), + + /** + * 是否展示下划线,当只有一个排序按钮时,通常不展示下划线。 + * 类型: boolean + * 默认值: true + */ + line: makeBooleanProp(true) +} + +export type SortButtonProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-sort-button/wd-sort-button.vue b/src/uni_modules/wot-design-uni/components/wd-sort-button/wd-sort-button.vue new file mode 100644 index 0000000..20f2908 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sort-button/wd-sort-button.vue @@ -0,0 +1,68 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-status-tip/index.scss b/src/uni_modules/wot-design-uni/components/wd-status-tip/index.scss new file mode 100644 index 0000000..d2a36b2 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-status-tip/index.scss @@ -0,0 +1,37 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + background-color: $-dark-background2; + @include b(status-tip) { + @include e(text) { + color: $-dark-color3; + } + } +} + +@include b(status-tip) { + padding: $-statustip-padding; + width: 100%; + margin: 0 auto; + color: $-statustip-color; + font-size: $-statustip-fs; + box-sizing: border-box; + display: flex; + flex-direction: column; + align-items: center; + + @include edeep(image) { + margin: 0 auto; + width: 160px; + height: 160px; + } + @include e(text) { + margin: 20px auto 0; + font-size: $-statustip-fs; + line-height: $-statustip-line-height; + color: $-statustip-color; + text-align: center; + word-break: break-all; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-status-tip/types.ts b/src/uni_modules/wot-design-uni/components/wd-status-tip/types.ts new file mode 100644 index 0000000..74703a4 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-status-tip/types.ts @@ -0,0 +1,59 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 13:49:00 + * @LastEditTime: 2024-04-07 13:32:22 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-status-tip\types.ts + * 记得注释 + */ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeStringProp } from '../common/props' +import type { ImageMode } from '../wd-img/types' + +export type ImageSize = { + /** + * 宽度 + */ + width: number | string + /** + * 高度 + */ + height: number | string +} + +export const statusTipProps = { + ...baseProps, + + /** + * 缺省图片类型,支持传入图片 URL。 + * 类型: string + * 可选值: search, network, content, collect, comment, halo, message + * 默认值: network + */ + image: makeStringProp('network'), + + /** + * 图片大小,默认单位为 `px`。 + * 类型: string 或 number 或 ImageSize + * 默认值: 空字符串 + */ + imageSize: { + type: [String, Number, Object] as PropType, + default: '' + }, + /** + * 提示文案。 + * 类型: string + * 默认值: 空字符串 + */ + tip: makeStringProp(''), + /** + * 图片裁剪、缩放的模式 + * 类型:string + * 默认值:'aspectFill' + */ + imageMode: makeStringProp('aspectFill') +} + +export type StatusTipProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-status-tip/wd-status-tip.vue b/src/uni_modules/wot-design-uni/components/wd-status-tip/wd-status-tip.vue new file mode 100644 index 0000000..28bc2f4 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-status-tip/wd-status-tip.vue @@ -0,0 +1,88 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-step/index.scss b/src/uni_modules/wot-design-uni/components/wd-step/index.scss new file mode 100644 index 0000000..5feb063 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-step/index.scss @@ -0,0 +1,235 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(step) { + @include e(icon) { + background: $-dark-background2; + } + + @include e(content){ + color: $-dark-color3; + } + + @include e(line) { + background: $-dark-color-gray; + } + + @include e(dot) { + background: $-dark-color-gray; + } + + @include e(description) { + color: $-dark-color3; + } + + @include when(wait) { + .wd-step__description { + color: $-dark-color-gray; + } + } + + :deep(.wd-step__icon-outer),:deep(.wd-step__icon-inner){ + color: $-dark-color3; + border-color: $-dark-color-gray; + } + } +} + + +@include b(step) { + position: relative; + display: inline-block; + vertical-align: top; + + @include e(header) { + position: relative; + font-size: 0; + + @include when(dot) { + .wd-step__line { + margin-top: -1px; + } + } + } + @include e(icon) { + display: inline-block; + position: relative; + width: $-steps-icon-size; + height: $-steps-icon-size; + background: #fff; + z-index: 1; + + @include when(icon) { + width: $-steps-is-icon-width; + text-align: center; + } + @include when(dot) { + width: $-steps-dot-size; + height: $-steps-dot-size; + border: 1px solid transparent; + margin-left: -1px; + border-radius: 50%; + background: transparent; + } + } + @include edeep(icon-inner) { + font-size: $-steps-icon-size; + color: $-steps-inactive-color; + } + @include e(icon-outer) { + width: calc($-steps-icon-size - 2px); + height: calc($-steps-icon-size - 2px); + border: 1px solid $-steps-inactive-color; + color: $-steps-inactive-color; + text-align: center; + line-height: calc($-steps-icon-size - 2px); + border-radius: 50%; + font-size: $-steps-icon-text-fs; + } + @include e(line) { + position: absolute; + width: 100%; + height: 1px; + background: $-steps-line-color; + transform: scaleY(0.5); + top: 50%; + left: 0; + } + @include e(dot) { + position: relative; + display: block; + width: 100%; + height: 100%; + border-radius: 50%; + background: $-steps-line-color; + } + @include e(content){ + margin-top: 7px; + color: $-steps-inactive-color; + font-size: $-steps-label-fs; + } + @include e(title) { + font-weight: $-steps-title-fw; + line-height: 1.43; + + @include when(description) { + font-size: $-steps-title-fs; + } + } + @include e(description) { + margin-top: 5px; + padding: 0 2px; + color: $-steps-description-color; + } + @include when(wait) { + .wd-step__description { + color: $-steps-inactive-color; + } + } + @include when(finished) { + :deep(.wd-step__icon-inner) { + color: $-steps-finished-color; + } + .wd-step__icon-outer { + color: $-steps-finished-color; + border-color: $-steps-finished-color; + } + .wd-step__title { + color: $-steps-finished-color; + } + .wd-step__dot { + background: $-steps-finished-color; + } + } + @include when(process) { + .wd-step__icon.is-icon { + :deep(.wd-step__icon-inner) { + color: $-steps-finished-color; + } + } + .wd-step__icon-outer { + color: #fff; + background: $-steps-finished-color; + border-color: $-steps-finished-color; + } + .wd-step__title { + color: $-steps-finished-color; + } + .wd-step__icon { + border-color: $-steps-finished-color; + + &.is-dot { + &::after { + position: absolute; + content: ''; + width: $-steps-dot-size + 10px; + height: $-steps-dot-size + 10px; + left: -5px; + top: -5px; + border-radius: 50%; + background: $-steps-finished-color; + opacity: 0.2; + } + } + } + .wd-step__dot { + background: $-steps-finished-color; + } + } + @include when(error) { + :deep(.wd-step__icon-inner), .wd-step__title { + color: $-steps-error-color; + } + .wd-step__icon-outer { + color: $-steps-error-color; + border-color: $-steps-error-color; + } + .wd-step__dot { + background: $-steps-error-color; + } + } + @include when(center) { + text-align: center; + + .wd-step__line { + left: 50%; + right: -50%; + } + } + @include when(vertical) { + display: block; + + .wd-step__header { + position: absolute; + left: 0; + top: 0; + height: 100%; + + &.is-dot { + top: 6px; + + .wd-step__line { + margin-left: -1px; + margin-top: 0; + } + } + } + .wd-step__content { + margin-left: 30px; + margin-top: 0; + padding-bottom: 20px; + } + .wd-step__line { + top: 0; + left: 50%; + width: 1px; + height: 100%; + transform: scaleX(0.5); + } + .wd-step__icon.is-dot { + margin-left: 0; + margin-top: -1px; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-step/types.ts b/src/uni_modules/wot-design-uni/components/wd-step/types.ts new file mode 100644 index 0000000..3d24ff6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-step/types.ts @@ -0,0 +1,33 @@ +import type { PropType } from 'vue' +import { baseProps, makeBooleanProp } from '../common/props' + +export type StepStatus = 'finished' | 'process' | 'error' + +export const stepProps = { + ...baseProps, + + /** + * 步骤标题,如果没有则使用默认文案。 + * 当只有标题而没有描述时,标题的字号会小2号。 + * 类型: string + */ + title: String, + + /** + * 步骤描述。 + * 类型: string + */ + description: String, + + /** + * 步骤图标。 + * 类型: string + */ + icon: String, + + /** + * 步骤状态,可选值为 'finished'(已完成)、'process'(进行中)、'error'(出错)。 + * 类型: string + */ + status: String as PropType +} diff --git a/src/uni_modules/wot-design-uni/components/wd-step/wd-step.vue b/src/uni_modules/wot-design-uni/components/wd-step/wd-step.vue new file mode 100644 index 0000000..24a5ddc --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-step/wd-step.vue @@ -0,0 +1,149 @@ + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-steps/index.scss b/src/uni_modules/wot-design-uni/components/wd-steps/index.scss new file mode 100644 index 0000000..e436a2d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-steps/index.scss @@ -0,0 +1,10 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(steps) { + font-size: 0; + + @include when(vertical) { + display: block; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-steps/types.ts b/src/uni_modules/wot-design-uni/components/wd-steps/types.ts new file mode 100644 index 0000000..13382c0 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-steps/types.ts @@ -0,0 +1,59 @@ +/* + * @Author: weisheng + * @Date: 2024-01-09 11:46:46 + * @LastEditTime: 2024-03-18 17:23:06 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-steps\types.ts + * 记得注释 + */ +import { type ExtractPropTypes, type InjectionKey } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp } from '../common/props' + +export const stepsProps = { + ...baseProps, + + /** + * 当前激活的步骤进度,以数字表示。 + * 类型: number + * 默认值: 0 + */ + active: makeNumberProp(0), + + /** + * 是否为垂直方向的步骤条。 + * 类型: boolean + * 默认值: false + */ + vertical: makeBooleanProp(false), + + /** + * 是否为点状步骤条样式。 + * 类型: boolean + * 默认值: false + */ + dot: makeBooleanProp(false), + + /** + * 步骤条之间的间距,默认为自动计算。 + * 如果指定,则使用此值作为间距。 + * 类型: string + * 默认值: 自动计算 + */ + space: String, + + /** + * 是否将步骤条水平居中显示,只对横向步骤条有效。 + * 类型: boolean + * 默认值: false + */ + alignCenter: makeBooleanProp(false) +} + +export type StepsProps = ExtractPropTypes + +export type StepsProvide = { + props: Partial +} + +export const STEPS_KEY: InjectionKey = Symbol('wd-steps') diff --git a/src/uni_modules/wot-design-uni/components/wd-steps/wd-steps.vue b/src/uni_modules/wot-design-uni/components/wd-steps/wd-steps.vue new file mode 100644 index 0000000..b453e79 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-steps/wd-steps.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-sticky-box/index.scss b/src/uni_modules/wot-design-uni/components/wd-sticky-box/index.scss new file mode 100644 index 0000000..9456c8b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sticky-box/index.scss @@ -0,0 +1,6 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(sticky-box) { + position: relative; +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-sticky-box/types.ts b/src/uni_modules/wot-design-uni/components/wd-sticky-box/types.ts new file mode 100644 index 0000000..cb0e125 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sticky-box/types.ts @@ -0,0 +1,20 @@ +/* + * @Author: weisheng + * @Date: 2024-04-08 22:34:01 + * @LastEditTime: 2024-06-01 16:04:56 + * @LastEditors: weisheng + * @Description: + * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-sticky-box/types.ts + * 记得注释 + */ +import type { ComponentInternalInstance, InjectionKey } from 'vue' + +export type stickyBoxProvide = { + boxStyle: { + height: number // 高度 + width: number // 宽度 + } + observerForChild: (child: ComponentInternalInstance) => void // 监听子组件 +} + +export const STICKY_BOX_KEY: InjectionKey = Symbol('wd-sticky-box') diff --git a/src/uni_modules/wot-design-uni/components/wd-sticky-box/wd-sticky-box.vue b/src/uni_modules/wot-design-uni/components/wd-sticky-box/wd-sticky-box.vue new file mode 100644 index 0000000..7f17606 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sticky-box/wd-sticky-box.vue @@ -0,0 +1,154 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-sticky/index.scss b/src/uni_modules/wot-design-uni/components/wd-sticky/index.scss new file mode 100644 index 0000000..36392a0 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sticky/index.scss @@ -0,0 +1,9 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(sticky) { + display: inline-block; + @include e(container) { + display: inline-block; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-sticky/types.ts b/src/uni_modules/wot-design-uni/components/wd-sticky/types.ts new file mode 100644 index 0000000..1b14dcf --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sticky/types.ts @@ -0,0 +1,13 @@ +import { baseProps, makeNumberProp } from '../common/props' + +export const stickyProps = { + ...baseProps, + /** + * 层级 + */ + zIndex: makeNumberProp(1), + /** + * 吸顶距离 + */ + offsetTop: makeNumberProp(0) +} diff --git a/src/uni_modules/wot-design-uni/components/wd-sticky/wd-sticky.vue b/src/uni_modules/wot-design-uni/components/wd-sticky/wd-sticky.vue new file mode 100644 index 0000000..b940950 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-sticky/wd-sticky.vue @@ -0,0 +1,190 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-swipe-action/index.scss b/src/uni_modules/wot-design-uni/components/wd-swipe-action/index.scss new file mode 100644 index 0000000..5310e70 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swipe-action/index.scss @@ -0,0 +1,22 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(swipe-action) { + position: relative; + overflow: hidden; + @include e(left) { + left: 0; + transform: translate3d(-100%, 0, 0); + } + @include e(right) { + right: 0; + transform: translate3d(100%, 0, 0); + } +} + +.wd-swipe-action__left, +.wd-swipe-action__right { + position: absolute; + top: 0; + height: 100%; +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-swipe-action/types.ts b/src/uni_modules/wot-design-uni/components/wd-swipe-action/types.ts new file mode 100644 index 0000000..dc828f1 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swipe-action/types.ts @@ -0,0 +1,40 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' + +export type SwipeActionStatus = 'left' | 'close' | 'right' + +// 点击关闭按钮、滑动关闭按钮、通过控制value关闭按钮 +export type SwipeActionReason = 'click' | 'swipe' | 'value' + +export type SwipeActionPosition = SwipeActionStatus | 'inside' + +export type SwipeActionBeforeClose = (reason: SwipeActionReason, position: SwipeActionPosition) => void + +export const swipeActionProps = { + ...baseProps, + + /** + * 滑动按钮的状态,使用v-model进行双向绑定。 + * 可选值为:'left'(左滑)、'close'(关闭状态)、'right'(右滑)。 + * 类型:string + * 默认值:'close' + */ + modelValue: makeStringProp('close'), + + /** + * 是否禁用滑动操作。 + * 类型:boolean + * 默认值:false + */ + disabled: makeBooleanProp(false), + + /** + * 在关闭滑动按钮前调用的钩子函数。 + * 可以在此函数中执行一些关闭前的操作,如确认提示等。 + * 类型:function + * 默认值:无 + */ + beforeClose: Function as PropType +} + +export type SwipeActionProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-swipe-action/wd-swipe-action.vue b/src/uni_modules/wot-design-uni/components/wd-swipe-action/wd-swipe-action.vue new file mode 100644 index 0000000..dcffd6a --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swipe-action/wd-swipe-action.vue @@ -0,0 +1,294 @@ + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-swiper-nav/index.scss b/src/uni_modules/wot-design-uni/components/wd-swiper-nav/index.scss new file mode 100644 index 0000000..f7207ca --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swiper-nav/index.scss @@ -0,0 +1,159 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(swiper-nav) { + + @include e(btn) { + @include m(prev, next) { + position: absolute; + top: 50%; + transform: translateY(-50%); + width: $-swiper-nav-btn-size; + height: $-swiper-nav-btn-size; + border-radius: 50%; + background: $-swiper-nav-btn-bg-color; + + &::after { + position: absolute; + left: 50%; + top: 50%; + display: block; + content: ''; + width: 12rpx; + height: 12rpx; + border-color: $-swiper-nav-btn-color; + border-style: solid; + } + } + + @include m(prev) { + left: 30rpx; + + &::after { + margin-left: 4rpx; + border-width: 2rpx 0 0 2rpx; + transform: translate(-50%, -50%) rotateZ(-45deg); + } + } + + @include m(next) { + right: 30rpx; + + &::after { + margin-left: -4rpx; + border-width: 2rpx 2rpx 0 0; + transform: translate(-50%, -50%) rotateZ(45deg); + } + } + } + + @include m(dots, dots-bar) { + display: flex; + flex-direction: row; + } + + @include m(fraction) { + padding: 0 16rpx; + height: $-swiper-nav-fraction-height; + line-height: $-swiper-nav-fraction-height; + border-radius: calc($-swiper-nav-fraction-height / 2); + background: $-swiper-nav-fraction-bg-color; + color: $-swiper-nav-fraction-color; + font-size: $-swiper-nav-fraction-font-size; + } + + + @include e(item) { + @include m(dots, dots-bar) { + width: $-swiper-nav-dot-size; + height: $-swiper-nav-dot-size; + background: $-swiper-nav-dot-color; + border-radius: 50%; + margin: 0 10rpx; + transition: all 0.4s ease-in; + + @include when(vertical) { + margin: 10rpx 0; + } + + @include when(active) { + background-color: $-swiper-nav-dot-active-color; + } + } + + @include m(dots-bar) { + + @include when(vertical) { + @include when(active) { + width: $-swiper-nav-dot-size; + height: $-swiper-nav-dots-bar-active-width; + } + } + + @include when(active) { + width: $-swiper-nav-dots-bar-active-width; + border-radius: calc($-swiper-nav-dot-size / 2); + background-color: $-swiper-nav-dot-active-color; + } + } + + } + + + @include m(left) { + position: absolute; + left: 24rpx; + top: 50%; + transform: translateY(-50%); + } + + @include m(right) { + position: absolute; + right: 24rpx; + top: 50%; + transform: translateY(-50%); + } + + @include m(top-left) { + position: absolute; + top: 24rpx; + left: 24rpx; + } + + @include m(top) { + position: absolute; + left: 50%; + top: 24rpx; + transform: translateX(-50%); + } + + @include m(top-right) { + position: absolute; + top: 24rpx; + right: 24rpx; + } + + @include m(bottom-left) { + position: absolute; + left: 24rpx; + bottom: 24rpx; + } + + @include m(bottom) { + position: absolute; + left: 50%; + bottom: 24rpx; + transform: translateX(-50%); + } + + @include m(bottom-right) { + position: absolute; + right: 24rpx; + bottom: 24rpx; + } + + @include m(vertical) { + flex-direction: column; + } + +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-swiper-nav/types.ts b/src/uni_modules/wot-design-uni/components/wd-swiper-nav/types.ts new file mode 100644 index 0000000..9ed1909 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swiper-nav/types.ts @@ -0,0 +1,42 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props' +import type { DirectionType, IndicatorPositionType } from '../wd-swiper/types' + +/** + * 指示器类型,点状(dots)、点条状(dots-bar)、分式(fraction)等 + */ +export type SwiperIndicatorType = 'dots' | 'dots-bar' | 'fraction' + +export const swiperNavprops = { + ...baseProps, + /** + * 当前轮播在哪一项(下标) + */ + current: makeNumberProp(0), + /** + * 轮播滑动方向,包括横向滑动和纵向滑动两个方向 + */ + direction: makeStringProp('horizontal'), + /** + * 小于这个数字不会显示导航器 + */ + minShowNum: makeNumberProp(2), + /** + * 指示器位置 + */ + indicatorPosition: makeStringProp('bottom'), + /** + * 是否显示两侧的控制按钮 + */ + showControls: makeBooleanProp(false), + /** + * 总共的项数 + */ + total: makeNumberProp(0), + /** + * 指示器类型,点状(dots)、点条状(dots-bar)、分式(fraction)等 + */ + type: makeStringProp('dots') +} + +export type SwiperNavProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-swiper-nav/wd-swiper-nav.vue b/src/uni_modules/wot-design-uni/components/wd-swiper-nav/wd-swiper-nav.vue new file mode 100644 index 0000000..df49e6f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swiper-nav/wd-swiper-nav.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-swiper/index.scss b/src/uni_modules/wot-design-uni/components/wd-swiper/index.scss new file mode 100644 index 0000000..76fd34d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swiper/index.scss @@ -0,0 +1,23 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(swiper) { + position: relative; + @include e(track){ + border-radius: $-swiper-radius; + overflow: hidden; + transform: translateY(0); + } + + @include e(item){ + display: flex; + align-items: center; + box-sizing: border-box; + padding: $-swiper-item-padding; + } + + @include e(image){ + width: 100%; + transition: all 0.3s ease; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-swiper/types.ts b/src/uni_modules/wot-design-uni/components/wd-swiper/types.ts new file mode 100644 index 0000000..9277fd5 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swiper/types.ts @@ -0,0 +1,175 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp } from '../common/props' +import type { SwiperNavProps } from '../wd-swiper-nav/types' +import type { ImageMode } from '../wd-img/types' + +/** + * 轮播滑动方向 + */ +export type DirectionType = 'horizontal' | 'vertical' + +/** + * 切换动画 + */ +export type EasingType = 'default' | 'linear' | 'easeInCubic' | 'easeOutCubic' | 'easeInOutCubic' + +/** + * 指示器位置 + */ +export type IndicatorPositionType = 'left' | 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right' | 'right' + +export interface SwiperList { + [key: string]: any + value?: string +} + +export const swiperProps = { + ...baseProps, + + /** + * 是否自动播放轮播图 + * 类型:boolean + * 默认值:true + */ + autoplay: makeBooleanProp(true), + + /** + * 当前轮播在哪一项(下标) + * 类型:number + * 默认值:0 + */ + current: makeNumberProp(0), + + /** + * 轮播滑动方向,可选值:'horizontal'(水平)或'vertical'(垂直) + * 类型:string + * 默认值:'horizontal' + */ + direction: makeStringProp('horizontal'), + + /** + * 同时显示的滑块数量 + * 类型:number + * 默认值:1 + */ + displayMultipleItems: makeNumberProp(1), + + /** + * 滑动动画时长,单位为毫秒 + * 类型:number + * 默认值:300 + */ + duration: makeNumberProp(300), + + /** + * 指定 swiper 切换缓动动画类型 + * 类型:string + * 默认值:'default' + */ + easingFunction: makeStringProp('default'), + + /** + * 轮播的高度 + * 类型:number 或 string(数字或可转换为数字的字符串) + * 默认值:'192' + */ + height: makeNumericProp('192'), + + /** + * 轮播间隔时间,单位为毫秒 + * 类型:number + * 默认值:5000 + */ + interval: makeNumberProp(5000), + + /** + * 图片列表,可以是一个图片对象数组或字符串数组 + * 类型:array + * 默认值:空数组 + */ + list: { + type: Array as PropType, + default: () => [] + }, + + /** + * 是否循环播放轮播图 + * 类型:boolean + * 默认值:true + */ + loop: makeBooleanProp(true), + + /** + * 后边距 + * 类型:number 或 string(数字或可转换为数字的字符串) + * 默认值:'0' + */ + nextMargin: makeNumericProp('0'), + + /** + * 页码信息展示位置,可选值:'bottom'(底部)等 + * 类型:string + * 默认值:'bottom' + */ + indicatorPosition: makeStringProp('bottom'), + + /** + * 前边距 + * 类型:number 或 string(数字或可转换为数字的字符串) + * 默认值:'0' + */ + previousMargin: makeNumericProp('0'), + + /** + * 是否应用边距到第一个、最后一个元素 + * 类型:boolean + * 默认值:false + */ + snapToEdge: makeBooleanProp(false), + + /** + * 指示器全部配置,可以是布尔值或指示器配置对象 + * 类型:boolean 或 object + * 默认值:true + */ + indicator: { + type: [Boolean, Object] as PropType>, + default: true + }, + + /** + * 图片裁剪、缩放的模式 + * 类型:string + * 默认值:'aspectFill' + */ + imageMode: makeStringProp('aspectFill'), + /** + * 选项对象中,value 对应的 key + */ + valueKey: makeStringProp('value'), + /** + * 自定义指示器类名 + * 类型:string + */ + customIndicatorClass: makeStringProp(''), + + /** + * 自定义图片类名 + * 类型:string + */ + customImageClass: makeStringProp(''), + + /** + * 自定义上一个图片类名 + * 类型:string + */ + customPrevImageClass: makeStringProp(''), + + /** + * 自定义下一个图片类名 + * 类型:string + */ + customNextImageClass: makeStringProp('') +} + +export type SwiperProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-swiper/wd-swiper.vue b/src/uni_modules/wot-design-uni/components/wd-swiper/wd-swiper.vue new file mode 100644 index 0000000..e611c83 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-swiper/wd-swiper.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-switch/index.scss b/src/uni_modules/wot-design-uni/components/wd-switch/index.scss new file mode 100644 index 0000000..6facd99 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-switch/index.scss @@ -0,0 +1,58 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@include b(switch) { + display: inline-block; + position: relative; + width: $-switch-width; + height: $-switch-height; + border-radius: $-switch-circle-size; + background: $-switch-inactive-color; + font-size: $-switch-size; + transition: all .3s; + + @include e(checkbox) { + position: absolute; + width: 0; + height: 0; + opacity: 0; + margin: 0; + } + @include e(circle) { + box-sizing: border-box; + position: absolute; + display: inline-block; + width: $-switch-circle-size; + height: $-switch-circle-size; + top: 2px; + left: 2px; + background: #fff; + border-radius: 50%; + transition: left .3s ease-out; + box-shadow: 0 2px 4px 0 $-switch-inactive-shadow-color; + + &::after { + position: absolute; + content: ''; + width: calc(200% - 2px); + height: calc(200% - 2px); + top: 50%; + left: 50%; + transform: translate(-50%, -50%) scale(0.5); + border: 1px solid $-switch-border-color; + border-radius: 50%; + } + } + @include when(checked) { + background: $-switch-active-color; + border-color: $-switch-active-color; + + .wd-switch__circle { + left: calc($-switch-width - $-switch-circle-size - 2px); + box-shadow: 0 2px 4px 0 $-switch-active-shadow-color + } + } + @include when(disabled) { + opacity: 0.5; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-switch/types.ts b/src/uni_modules/wot-design-uni/components/wd-switch/types.ts new file mode 100644 index 0000000..5e45248 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-switch/types.ts @@ -0,0 +1,56 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeNumericProp } from '../common/props' + +export type SwitchBeforeChangeOption = { + value: number | string | boolean + resolve: (pass: boolean) => void +} + +export type SwitchBeforeChange = (option: SwitchBeforeChangeOption) => void + +export const switchProps = { + ...baseProps, + /** + * 绑定值 + */ + modelValue: { + type: [Boolean, String, Number], + required: true, + default: false + }, + /** + * 是否禁用 + */ + disabled: makeBooleanProp(false), + /** + * 激活值 + */ + activeValue: { + type: [Boolean, String, Number], + default: true + }, + /** + * 非激活值 + */ + inactiveValue: { + type: [Boolean, String, Number], + default: false + }, + /** + * 激活颜色 + */ + activeColor: String, + /** + * 非激活颜色 + */ + inactiveColor: String, + /** + * 大小 + */ + size: makeNumericProp(28), + /** + * 在改变前执行的函数 + */ + beforeChange: Function as PropType +} +export type SwitchProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-switch/wd-switch.vue b/src/uni_modules/wot-design-uni/components/wd-switch/wd-switch.vue new file mode 100644 index 0000000..2732f40 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-switch/wd-switch.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-tab/index.scss b/src/uni_modules/wot-design-uni/components/wd-tab/index.scss new file mode 100644 index 0000000..04ade60 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tab/index.scss @@ -0,0 +1,9 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + + +@include b(tab) { + width: 100%; + flex-shrink: 0; + box-sizing: border-box; +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-tab/types.ts b/src/uni_modules/wot-design-uni/components/wd-tab/types.ts new file mode 100644 index 0000000..cdc329b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tab/types.ts @@ -0,0 +1,20 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, numericProp } from '../common/props' + +export const tabProps = { + ...baseProps, + /** + * 唯一标识符 + */ + name: numericProp, + /** + * tab的标题 + */ + title: String, + /** + * 是否禁用,无法点击 + */ + disabled: makeBooleanProp(false) +} + +export type TabProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-tab/wd-tab.vue b/src/uni_modules/wot-design-uni/components/wd-tab/wd-tab.vue new file mode 100644 index 0000000..1f9b45b --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tab/wd-tab.vue @@ -0,0 +1,101 @@ + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-tabbar-item/index.scss b/src/uni_modules/wot-design-uni/components/wd-tabbar-item/index.scss new file mode 100644 index 0000000..f4958b9 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabbar-item/index.scss @@ -0,0 +1,55 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(tabbar-item) { + @include e(body) { + :deep(){ + @include when(inactive) { + color: $-dark-color-gray; + } + } + } + } +} + + +@include b(tabbar-item) { + flex: 1; + text-align: center; + text-decoration: none; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + + @include e(body) { + display: flex; + align-items: center; + flex-direction: column; + line-height: 1; + padding: 0; + position: relative; + + :deep(){ + @include when(active) { + color: $-tabbar-active-color; + } + + @include when(inactive) { + color: $-tabbar-inactive-color; + } + } + } + + + @include e(body-title) { + font-size: $-tabbar-item-title-font-size; + line-height: $-tabbar-item-title-line-height; + } + + @include edeep(body-icon) { + font-size: $-tabbar-item-icon-size; + } + +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-tabbar-item/types.ts b/src/uni_modules/wot-design-uni/components/wd-tabbar-item/types.ts new file mode 100644 index 0000000..f620eda --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabbar-item/types.ts @@ -0,0 +1,51 @@ +import type { ExtractPropTypes, PropType } from 'vue' +import { baseProps, makeNumberProp, numericProp } from '../common/props' +import type { BadgeProps } from '../wd-badge/types' + +/** + * 折叠面板子项 + */ +export interface TabbarItem { + // 唯一标识 + name: string | number +} + +export const tabbarItemProps = { + ...baseProps, + /** + * 标签页的标题 + */ + title: String, + /** + * 唯一标识符 + */ + name: numericProp, + /** + * 图标 + */ + icon: String, + /** + * 徽标显示值 + */ + value: { + type: [Number, String, null] as PropType, + default: null + }, + /** + * 是否点状徽标 + */ + isDot: { + type: Boolean, + default: undefined + }, + /** + * 徽标最大值 + */ + max: Number, + /** + * 徽标属性,透传给 Badge 组件 + */ + badgeProps: Object as PropType +} + +export type TabbarItemProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-tabbar-item/wd-tabbar-item.vue b/src/uni_modules/wot-design-uni/components/wd-tabbar-item/wd-tabbar-item.vue new file mode 100644 index 0000000..6d6dbd8 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabbar-item/wd-tabbar-item.vue @@ -0,0 +1,97 @@ + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-tabbar/index.scss b/src/uni_modules/wot-design-uni/components/wd-tabbar/index.scss new file mode 100644 index 0000000..164548f --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabbar/index.scss @@ -0,0 +1,60 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(tabbar) { + background: $-dark-background; + } +} + +@include b(tabbar) { + display: flex; + align-items: center; + flex-wrap: nowrap; + position: relative; + background: $-color-white; + height: $-tabbar-height; + + @include e(placeholder) { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + } + + @include m(round) { + margin-left: 32rpx; + margin-right: 32rpx; + border-radius: 999px; + box-shadow: $-tabbar-box-shadow; + + @include when(fixed) { + @include when(safe) { + bottom: constant(safe-area-inset-bottom); + bottom: env(safe-area-inset-bottom); + } + } + + } + + @include m(default) { + + @include when(fixed) { + @include when(safe) { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + } + } + + + @include when(border) { + @include halfPixelBorder('top'); + } + } + + @include when(fixed) { + position: fixed; + left: 0; + bottom: 0; + right: 0; + z-index: 500; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-tabbar/types.ts b/src/uni_modules/wot-design-uni/components/wd-tabbar/types.ts new file mode 100644 index 0000000..bb7eae4 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabbar/types.ts @@ -0,0 +1,82 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 20:40:34 + * @LastEditTime: 2024-03-18 15:38:37 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-tabbar\types.ts + * 记得注释 + */ +import { type ExtractPropTypes, type InjectionKey } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp } from '../common/props' +import type { TabbarItem } from '../wd-tabbar-item/types' + +type TabbarShape = 'default' | 'round' + +export type TabbarProvide = { + props: { + // 选中标签的索引值或者名称 + modelValue?: number | string + // 是否固定在底部 + fixed?: boolean + // 是否设置底部安全距离(iphone X 类型的机型) + safeAreaInsetBottom?: boolean + // 是否显示顶部边框 + bordered?: boolean + // 标签栏的形状。可选项:default/round + shape?: TabbarShape + // 激活标签的颜色 + activeColor?: string + // 未激活标签的颜色 + inactiveColor?: string + // 固定在底部时,是否在标签位置生成一个等高的占位元素 + placeholder?: boolean + // 自定义组件的层级 + zIndex?: number + } + setChange: (child: TabbarItem) => void +} + +export const TABBAR_KEY: InjectionKey = Symbol('wd-tabbar') + +export const tabbarProps = { + ...baseProps, + /** + * 选中标签的索引值或者名称 + */ + modelValue: makeNumericProp(0), + /** + * 是否固定在底部 + */ + fixed: makeBooleanProp(false), + /** + * 是否显示顶部边框 + */ + bordered: makeBooleanProp(true), + /** + * 是否设置底部安全距禿(iPhone X 类型的机型) + */ + safeAreaInsetBottom: makeBooleanProp(false), + /** + * 标签栏的形状。可选项:default/round + */ + shape: makeStringProp('default'), + /** + * 激活标签的颜色 + */ + activeColor: String, + /** + * 未激活标签的颜色 + */ + inactiveColor: String, + /** + * 固定在底部时,是否在标签位置生成一个等高的占位元素 + */ + placeholder: makeBooleanProp(false), + /** + * 自定义组件的层级 + */ + zIndex: makeNumberProp(99) +} + +export type TabbarProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-tabbar/wd-tabbar.vue b/src/uni_modules/wot-design-uni/components/wd-tabbar/wd-tabbar.vue new file mode 100644 index 0000000..1b82fac --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabbar/wd-tabbar.vue @@ -0,0 +1,91 @@ + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-table-col/index.scss b/src/uni_modules/wot-design-uni/components/wd-table-col/index.scss new file mode 100644 index 0000000..d1d1f35 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-table-col/index.scss @@ -0,0 +1,46 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@import '../wd-table/index'; + +.wot-theme-dark { + @include b(table-col) { + @include when(shadow) { + &::after { + background: linear-gradient(270deg, rgba(17, 17, 17, 0.2) 0%, rgba(0, 0, 0, 0) 100%); + } + } + } +} + + +@include b(table-col) { + .wd-table__cell { + width: 100%; + } + + @include m(fixed) { + position: sticky; + z-index: 1; + left: 0; + } + + @include when(shadow) { + &::after { + content: ' '; + position: absolute; + height: 100%; + right: -30rpx; + top: 0; + width: 30rpx; + height: 100%; + background: linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, rgba(0, 0, 0, 0.04) 100%); + } + } + + .wd-table__cell:last-child { + @include when(border) { + border-bottom: none; + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-table-col/types.ts b/src/uni_modules/wot-design-uni/components/wd-table-col/types.ts new file mode 100644 index 0000000..4f067aa --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-table-col/types.ts @@ -0,0 +1,54 @@ +import type { ComponentPublicInstance, ExtractPropTypes } from 'vue' +import { makeBooleanProp, makeNumericProp, makeRequiredProp, makeStringProp } from '../common/props' + +export type AlignType = 'left' | 'center' | 'right' // 列的对齐方式 + +export type SortDirection = 0 | 1 | -1 // 列的排序方向 + +export interface TableColumn { + // 列对应字段 + prop: string + // 列对应字段标题 + label: string + // 列宽度 + width: string | number + // 是否开启列排序 + sortable?: boolean + // 列的对齐方式,可选值left,center,right + align?: AlignType + // 列的排序方向 + sortDirection: SortDirection + // 是否i固定列 + fixed?: boolean +} + +export const tableColumnProps = { + /** + * 列对应字段 + */ + prop: makeRequiredProp(String), + /** + * 列对应字段标题 + */ + label: makeRequiredProp(String), + /** + * 列宽度,单位px + */ + width: makeNumericProp(100), + /** + * 是否开启列排序 + */ + sortable: makeBooleanProp(false), + /** + * 是否固定本列 + */ + fixed: makeBooleanProp(false), + /** + * 列的对齐方式,可选值left,center,right + */ + align: makeStringProp('left') +} + +export type TableColumnProps = ExtractPropTypes + +export type TableColumnInstance = ComponentPublicInstance diff --git a/src/uni_modules/wot-design-uni/components/wd-table-col/wd-table-col.vue b/src/uni_modules/wot-design-uni/components/wd-table-col/wd-table-col.vue new file mode 100644 index 0000000..d55af22 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-table-col/wd-table-col.vue @@ -0,0 +1,149 @@ + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-table/index.scss b/src/uni_modules/wot-design-uni/components/wd-table/index.scss new file mode 100644 index 0000000..ff7d957 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-table/index.scss @@ -0,0 +1,137 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +.wot-theme-dark { + @include b(table) { + background: $-dark-background; + + @include when(border) { + border: 1px solid $-dark-border-color; + } + + @include e(cell) { + color: $-dark-color; + background: $-dark-background2; + + @include when(stripe) { + background: $-dark-background4; + } + + @include when(border) { + border-right: 1px solid $-dark-border-color; + border-bottom: 1px solid $-dark-border-color; + } + + @include when(shadow) { + &::after { + background: linear-gradient(270deg, rgba(17, 17, 17, 0.2) 0%, rgba(0, 0, 0, 0) 100%); + } + } + } + } +} + + + +@include b(table) { + position: relative; + width: 100%; + overflow: auto; + background: $-table-bg; + + @include when(border) { + border: 1px solid $-table-border-color; + } + + + :deep() { + .wd-table-col:last-child { + .wd-table__cell { + @include when(border) { + border-right: none; + } + } + } + } + + @include e(header) { + width: 100%; + height: 50px; + position: sticky; + top: 0; + z-index: 2; + display: flex; + overflow-x: auto; + white-space: nowrap; + } + + @include e(body) { + width: 100%; + box-sizing: border-box; + } + + @include e(content) { + display: flex; + } + + @include e(cell) { + display: flex; + align-items: center; + box-sizing: border-box; + background: $-table-bg; + width: 100px; + min-height: 50px; + padding: 8px 10px; + font-size: $-table-font-size; + color: $-table-color; + --wot-sort-button-height: 30px; + + @include when(border) { + border-right: 1px solid $-table-border-color; + border-bottom: 1px solid $-table-border-color; + } + + @include when(stripe) { + background: $-table-stripe-bg; + } + + @include when(fixed) { + position: sticky; + z-index: 1; + left: 0; + } + + @include when(shadow) { + &::after { + content: ' '; + position: absolute; + height: 100%; + right: -30rpx; + top: 0; + width: 30rpx; + height: 100%; + background: linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, rgba(0, 0, 0, 0.04) 100%); + } + } + + @include when(left) { + justify-content: flex-start; + } + + @include when(center) { + justify-content: center; + } + + @include when(right) { + justify-content: flex-end; + } + } + + + @include e(value) { + @include when(ellipsis) { + word-break: break-all; + @include multiEllipsis(2); + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-table/types.ts b/src/uni_modules/wot-design-uni/components/wd-table/types.ts new file mode 100644 index 0000000..8531ec8 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-table/types.ts @@ -0,0 +1,64 @@ +/* + * @Author: weisheng + * @Date: 2024-03-15 11:36:12 + * @LastEditTime: 2024-07-18 19:02:32 + * @LastEditors: weisheng + * @Description: + * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-table\types.ts + * 记得注释 + */ +import type { CSSProperties, ExtractPropTypes, InjectionKey } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props' +import type { TableColumnProps } from '../wd-table-col/types' +import type { PropType } from 'vue' + +export const tableProps = { + ...baseProps, + /** + * 显示的数据 + */ + data: makeRequiredProp(Array>), + /** + * 是否带有边框 + */ + border: makeBooleanProp(true), + /** + * 是否为斑马纹 table + */ + stripe: makeBooleanProp(true), + /** + * Table 的高度 + */ + height: makeStringProp('80vh'), + /** + * 行高 + */ + rowHeight: makeNumberProp(50), + /** + * 是否显示表头 + */ + showHeader: makeBooleanProp(true), + /** + * 是否超出2行隐藏 + */ + ellipsis: makeBooleanProp(true), + /** + * 是否显示索引列 + */ + index: { + type: [Object, Boolean] as PropType, 'prop'>>, + default: false + } +} + +export type TableProps = ExtractPropTypes + +export type TableProvide = { + props: Omit + scrollLeft: number + rowClick: (index: number) => void + getIsLastFixed: (column: { fixed: boolean; prop: string }) => boolean + getFixedStyle: (index: number, style: CSSProperties) => CSSProperties +} + +export const TABLE_KEY: InjectionKey = Symbol('wd-table') diff --git a/src/uni_modules/wot-design-uni/components/wd-table/wd-table.vue b/src/uni_modules/wot-design-uni/components/wd-table/wd-table.vue new file mode 100644 index 0000000..f21e6d9 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-table/wd-table.vue @@ -0,0 +1,241 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-tabs/index.scss b/src/uni_modules/wot-design-uni/components/wd-tabs/index.scss new file mode 100644 index 0000000..5879c23 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabs/index.scss @@ -0,0 +1,280 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + + +.wot-theme-dark { + @include b(tabs) { + background: $-dark-background2; + + @include e(nav) { + background: $-dark-background2; + } + + @include e(nav-item) { + color: $-dark-color3; + + @include when(active) { + font-weight: 600; + color: $-dark-color; + } + + @include when(disabled) { + color: $-dark-color-gray; + } + + } + + @include e(map-nav-btn) { + background-color: $-dark-background4; + color: $-dark-color3; + + @include when(active) { + color: $-dark-color; + border: 1px solid $-tabs-nav-active-color; + background-color: $-dark-background; + } + + @include when(disabled) { + color: $-dark-color-gray; + border-color: #f4f4f4; + } + } + + @include e(map-btn) { + background: $-dark-background2; + color: $-dark-color3; + } + + @include e(map-header) { + background: $-dark-background2; + color: $-dark-color; + + &::after { + background: $-dark-background4; + } + } + + @include e(map-body) { + background: $-dark-background2; + } + + } +} + +@include b(tabs) { + position: relative; + background: #fff; + width: 100%; + + @include e(nav) { + left: 0; + right: 0; + height: $-tabs-nav-height; + background-color: #fff; + width: 100%; + position: relative; + + @include m(wrap) { + height: 100%; + overflow: hidden; + } + + @include m(sticky) { + width: 100vw; + } + } + + @include e(nav-container) { + position: relative; + display: flex; + user-select: none; + } + + @include e(nav-item) { + flex: 1; + min-width: 0; + text-align: center; + height: $-tabs-nav-height; + line-height: $-tabs-nav-height; + font-size: $-tabs-nav-fs; + color: $-tabs-nav-color; + transition: color .3s; + + @include when(active) { + font-weight: 600; + } + + @include when(disabled) { + color: $-tabs-nav-disabled-color; + } + } + + @include e(line) { + position: absolute; + bottom: 4px; + left: 0; + z-index: 1; + height: $-tabs-nav-line-height; + width: $-tabs-nav-line-width; + background: $-tabs-nav-line-bg-color; + border-radius: calc($-tabs-nav-line-height / 2); + } + + @include e(container) { + overflow: hidden; + } + + @include e(body) { + position: relative; + width: 100%; + height: 100%; + + @include when(animated) { + display: flex; + transition-property: left; + } + } + + @include e(map) { + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: 1; + } + + @include e(map-btn) { + position: absolute; + right: 0; + top: 0; + width: $-tabs-nav-height; + height: $-tabs-nav-height; + line-height: $-tabs-nav-height; + text-align: center; + color: $-tabs-nav-map-arrow-color; + z-index: 1; + background: $-tabs-nav-bg; + -webkit-tap-highlight-color: transparent; + + &::before { + position: absolute; + content: ''; + top: 0; + left: -24px; + width: 24px; + height: $-tabs-nav-height - 1; + background: $-tabs-nav-map-btn-before-bg; + } + } + + @include e(map-arrow) { + display: block; + transition: transform .3s; + + @include when(open) { + transform: rotate(180deg); + } + } + + @include e(map-header) { + position: relative; + padding-left: 17px; + height: $-tabs-nav-height; + line-height: $-tabs-nav-height; + font-size: $-tabs-nav-map-fs; + color: $-tabs-nav-map-color; + transition: opacity .3s; + background: #fff; + opacity: 0; + + @include halfPixelBorder; + + &::after { + z-index: 3; + } + } + + @include e(map-body) { + display: flex; + flex-wrap: wrap; + padding: 20px 15px 10px; + background: #fff; + transition: transform .3s; + transform: scaleY(0); + transform-origin: center top; + + @include when(open) { + transform: scaleY(1); + } + } + + @include e(map-nav-item) { + flex-basis: 33%; + + &:nth-child(3n + 2) { + text-align: center; + } + + &:nth-child(3n + 3) { + text-align: right; + } + } + + @include e(map-nav-btn) { + @include buttonClear; + @include lineEllipsis; + display: inline-block; + width: 107px; + height: 32px; + line-height: 32px; + background-color: $-tabs-nav-map-button-back-color; + border-color: transparent; + margin-bottom: 10px; + border-radius: $-tabs-nav-map-button-radius; + color: $-tabs-nav-map-color; + font-size: $-tabs-nav-map-fs; + text-align: center; + transition: color .3s, border-color .3s; + + @include when(active) { + color: $-tabs-nav-active-color; + border: 1px solid $-tabs-nav-active-color; + background-color: $-tabs-nav-bg + } + + @include when(disabled) { + color: $-tabs-nav-disabled-color; + border-color: #f4f4f4; + } + } + + @include e(mask) { + position: absolute; + top: $-tabs-nav-height; + left: 0; + right: 0; + bottom: 0; + background: $-tabs-nav-map-modal-bg; + opacity: 0; + transition: opacity .3s; + } + + @include when(slide) { + .wd-tabs__nav-item { + flex: 0 0 auto; + padding: 0 17px; + } + } + + @include when(map) { + .wd-tabs__nav--wrap { + padding-right: 40px; + } + } +} + +@media screen and (max-width: 330px) { + .wd-tabs__map-nav-btn { + width: 90px; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-tabs/types.ts b/src/uni_modules/wot-design-uni/components/wd-tabs/types.ts new file mode 100644 index 0000000..959ba13 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabs/types.ts @@ -0,0 +1,64 @@ +import { type ExtractPropTypes, type InjectionKey } from 'vue' +import { baseProps, makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp, numericProp } from '../common/props' + +export type TabsProvide = { + state: { + activeIndex: number + } +} + +export const TABS_KEY: InjectionKey = Symbol('wd-tabs') + +export const tabsProps = { + ...baseProps, + /** + * 绑定值 + */ + modelValue: makeNumericProp(0), + /** + * 标签数超过阈值可滑动 + */ + slidableNum: makeNumberProp(6), + /** + * 标签数超过阈值显示导航地图 + */ + mapNum: makeNumberProp(10), + /** + * 粘性布局 + */ + sticky: makeBooleanProp(false), + /** + * 粘性布局吸顶位置 + */ + offsetTop: makeNumberProp(0), + /** + * 开启手势滑动 + */ + swipeable: makeBooleanProp(false), + /** + * 底部条宽度,单位像素 + */ + lineWidth: numericProp, + /** + * 底部条高度,单位像素 + */ + lineHeight: numericProp, + /** + * 颜色 + */ + color: makeStringProp(''), + /** + * 非活动状态颜色 + */ + inactiveColor: makeStringProp(''), + /** + * 是否开启切换标签内容时的过渡动画 + */ + animated: makeBooleanProp(false), + /** + * 切换动画过渡时间,单位毫秒 + */ + duration: makeNumberProp(300) +} + +export type TabsProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-tabs/wd-tabs.vue b/src/uni_modules/wot-design-uni/components/wd-tabs/wd-tabs.vue new file mode 100644 index 0000000..cda7d3d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tabs/wd-tabs.vue @@ -0,0 +1,431 @@ + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-tag/index.scss b/src/uni_modules/wot-design-uni/components/wd-tag/index.scss new file mode 100644 index 0000000..3285d58 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tag/index.scss @@ -0,0 +1,115 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + +@mixin tag-type-style ($normalColor, $normalBg) { + background: $normalBg; + + @include when(plain) { + background: transparent; + color: $normalColor; + border: 1px solid $normalColor; + padding: 0 4px; + } + @include when(round) { + line-height: 1.2; + font-size: $-tag-fs; + padding: 4px 11px; + background: transparent; + color: if($normalColor != $-tag-info-color, $normalColor, $-tag-round-color); + border: 1px solid if($normalColor != $-tag-info-color, $normalColor, $-tag-round-border-color); + border-radius: $-tag-round-radius; + } + @include when(mark) { + padding: 1px 6px; + border-radius: $-tag-mark-radius; + + @include when(plain) { + padding: 0 6px; + } + } + @include when(active) { + color: $-tag-primary-color; + border-color: $-tag-primary-color; + } +} +@include b(tag) { + font-size: $-tag-small-fs; + display: inline-block; + color: $-tag-color; + padding: 0 3px; + border-radius: 2px; + transition: opacity .3s; + vertical-align: middle; + line-height: initial; + + @include when(default) { + @include tag-type-style($-tag-info-color, $-tag-info-bg); + } + @include when(primary) { + @include tag-type-style($-tag-primary-color, $-tag-primary-bg); + } + @include when(danger) { + @include tag-type-style($-tag-danger-color, $-tag-danger-bg); + } + @include when(warning) { + @include tag-type-style($-tag-warning-color, $-tag-warning-bg); + } + @include when(success) { + @include tag-type-style($-tag-success-color, $-tag-success-bg); + } + @include when(icon) { + font-size: $-tag-fs; + line-height: 1.2; + padding: 2px 5px; + } + @include when(dynamic) { + box-sizing: border-box; + width: 88px; + transition: .3s; + + &:active { + color: $-tag-primary-color; + border-color: $-tag-primary-color; + } + } + @include when(dynamic-input) { + border-color: $-tag-primary-color; + } + @include edeep(icon) { + display: inline-block; + margin-right: 4px; + font-size: $-tag-fs; + line-height: 1.2; + vertical-align: baseline; + } + @include e(text) { + display: inline-block; + vertical-align: text-top; + } + @include e(add-text) { + width: 60px; + height: 14px; + min-height: 14px; + display: inline-block; + font-size: $-tag-fs; + vertical-align: middle; + padding: 0; + } + @include e(close) { + display: inline-block; + margin-left: 24px; + margin-right: -4px; + font-size: $-tag-close-size; + height: 14px; + line-height: 1.1; + vertical-align: text-bottom; + color: $-tag-close-color; + + &:active { + color: $-tag-close-active-color; + } + } + @include edeep(add) { + vertical-align: bottom; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-tag/types.ts b/src/uni_modules/wot-design-uni/components/wd-tag/types.ts new file mode 100644 index 0000000..39cc0e9 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tag/types.ts @@ -0,0 +1,81 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' + +export type TagType = 'default' | 'primary' | 'success' | 'warning' | 'danger' + +export const tagProps = { + ...baseProps, + + /** + * 是否开启图标插槽 + * 类型:boolean + * 默认值:false + */ + useIconSlot: makeBooleanProp(false), + + /** + * 标签类型 + * 类型:string + * 可选值:'default' / 'primary' / 'danger' / 'warning' / 'success' + * 默认值:'default' + */ + type: makeStringProp('default'), + + /** + * 左侧图标 + * 类型:string + * 默认值:空字符串 + */ + icon: makeStringProp(''), + + /** + * 是否可关闭(只对圆角类型支持) + * 类型:boolean + * 默认值:false + */ + closable: makeBooleanProp(false), + + /** + * 幽灵类型 + * 类型:boolean + * 默认值:false + */ + plain: makeBooleanProp(false), + + /** + * 是否为新增标签 + * 类型:boolean + * 默认值:false + */ + dynamic: makeBooleanProp(false), + + /** + * 文字颜色 + * 类型:string + * 默认值:空字符串 + */ + color: makeStringProp(''), + + /** + * 背景色和边框色 + * 类型:string + * 默认值:空字符串 + */ + bgColor: makeStringProp(''), + + /** + * 圆角类型 + * 类型:boolean + * 默认值:false + */ + round: makeBooleanProp(false), + + /** + * 标记类型 + * 类型:boolean + * 默认值:false + */ + mark: makeBooleanProp(false) +} + +export type TagProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-tag/wd-tag.vue b/src/uni_modules/wot-design-uni/components/wd-tag/wd-tag.vue new file mode 100644 index 0000000..73cbf28 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-tag/wd-tag.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-text/index.scss b/src/uni_modules/wot-design-uni/components/wd-text/index.scss new file mode 100644 index 0000000..888649d --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-text/index.scss @@ -0,0 +1,37 @@ +@import '../common/abstracts/variable'; +@import '../common/abstracts/mixin'; + + + +@include b(text) { + + @include when(bold) { + font-weight: bold; + } + + @for $i from 1 through 5 { + &.is-lines-#{$i} { + @include multiEllipsis($i); + } + } + + @include when(default) { + color: $-text-info-color; + } + + @include when(primary) { + color: $-text-primary-color; + } + + @include when(error) { + color: $-text-error-color; + } + + @include when(warning) { + color: $-text-warning-color; + } + + @include when(success) { + color: $-text-success-color; + } +} \ No newline at end of file diff --git a/src/uni_modules/wot-design-uni/components/wd-text/types.ts b/src/uni_modules/wot-design-uni/components/wd-text/types.ts new file mode 100644 index 0000000..c06a9a6 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-text/types.ts @@ -0,0 +1,98 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeBooleanProp, makeStringProp } from '../common/props' + +export type TextType = 'default' | 'primary' | 'success' | 'warning' | 'error' + +export const textProps = { + ...baseProps, + /** + * 主题类型 + * 类型:string + * 可选值:'default' /'primary' / 'error' / 'warning' / 'success' + * 默认值:'default' + */ + type: makeStringProp('default'), + /** + * 文字 + * 类型:string + * 默认值:'空字符串' + */ + text: makeStringProp(''), + /** + * 字体大小 + * 类型:string + * 默认值:'空字符串' + */ + size: makeStringProp(''), + /** + * 文本处理的匹配模式 + * 可选值:'text-普通文本' / 'date - 日期' / 'phone - 手机号' / 'name - 姓名' / 'price - 金额' + * 类型:string + * 默认值:'text' + */ + mode: makeStringProp('text'), + /** + * 文字装饰,下划线,中划线等 + * 可选值:'underline/line-through/overline' + * 类型:string + * 默认值:'none' + */ + decoration: makeStringProp('none'), + + /** + * mode=phone时,点击文本是否拨打电话 + * 类型:boolean + * 默认值:false + */ + call: makeBooleanProp(false), + /** + * 是否粗体,默认normal + * 类型:boolean + * 默认值:false + */ + bold: makeBooleanProp(false), + /** + * 是否脱敏,当mode为phone和name时生效 + * 类型:boolean + * 默认值:false + */ + format: makeBooleanProp(false), + /** + * 文本颜色 + * 类型:string + * 默认值:'' + */ + color: makeStringProp(''), + /** + * 前置插槽 + * 类型:string + * 默认值:'' + */ + prefix: String, + /** + * 后置插槽 + * 类型:string + * 默认值:'' + */ + suffix: String, + /** + * 文本显示的行数,如果设置,超出此行数,将会显示省略号。最大值为5。 + */ + lines: Number, + /** + * 文本行高 + * 类型:string + * 默认值:'' + */ + lineHeight: makeStringProp(''), + /** + * 自定义根节点样式 + */ + customStyle: makeStringProp(''), + /** + * 自定义根节点样式类 + */ + customClass: makeStringProp('') +} + +export type TextProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-text/wd-text.vue b/src/uni_modules/wot-design-uni/components/wd-text/wd-text.vue new file mode 100644 index 0000000..49631ac --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-text/wd-text.vue @@ -0,0 +1,138 @@ + + + + + + + diff --git a/src/uni_modules/wot-design-uni/components/wd-textarea/index.scss b/src/uni_modules/wot-design-uni/components/wd-textarea/index.scss new file mode 100644 index 0000000..6c72029 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-textarea/index.scss @@ -0,0 +1,351 @@ +@import "../common/abstracts/variable"; +@import "../common/abstracts/mixin"; + +.wot-theme-dark { + @include b(textarea) { + background: $-dark-background2; + + &::after { + background: $-dark-color-gray; + } + + @include when(not-empty) { + &:not(.is-disabled) { + &::after { + background-color: $-dark-color; + } + } + } + + @include e(value) { + background: $-dark-background2; + } + + @include e(inner) { + color: $-dark-color; + + &::-webkit-input-placeholder { + color: $-dark-color3; + } + } + + @include e(placeholder) { + color: $-dark-color3; + } + + @include e(count) { + color: $-dark-color3; + background: transparent; + } + + @include e(count-current) { + color: $-dark-color; + } + + :deep(.wd-textarea__icon) { + color: $-dark-color; + background: transparent; + } + + @include when(cell) { + background-color: $-dark-background2; + + @include when(border) { + @include halfPixelBorder("top", $-textarea-cell-padding, $-dark-border-color); + } + } + + @include when(disabled) { + + .wd-textarea__inner { + color: $-dark-color-gray; + background: transparent; + } + } + + + @include e(label) { + color: $-dark-color; + } + } +} + +@include b(textarea) { + position: relative; + -webkit-tap-highlight-color: transparent; + text-align: left; + background: $-textarea-bg; + padding: $-textarea-cell-padding $-textarea-padding; + + &::after { + position: absolute; + display: none; + content: ""; + bottom: 0; + left: 0; + right: 0; + height: 1px; + background: $-textarea-border-color; + transform: scaleY(0.5); + transition: background-color 0.2s ease-in-out; + } + + + + @include e(label) { + position: relative; + display: flex; + width: $-input-cell-label-width; + color: $-cell-title-color; + margin-right: $-cell-padding; + box-sizing: border-box; + font-size: $-textarea-fs; + flex-shrink: 0; + + @include when(required) { + padding-left: 12px; + + &::after { + position: absolute; + left: 0; + top: 2px; + content: "*"; + font-size: $-cell-required-size; + line-height: 1.1; + color: $-cell-required-color; + } + } + } + + @include e(label-inner) { + display: inline-block; + line-height: $-cell-line-height; + font-size: $-textarea-fs; + } + + @include e(prefix) { + margin-right: $-textarea-icon-margin; + font-size: $-textarea-fs; + line-height: initial; + + :deep(.wd-textarea__icon) { + margin-left: 0; + } + } + + @include e(suffix) { + flex-shrink: 0; + line-height: initial; + } + + @include e(value) { + position: relative; + padding: 0; + font-size: 0; + background: $-textarea-bg; + box-sizing: border-box; + + @include when(show-limit) { + padding-bottom: 36px; + } + + @include when(suffix) { + padding-right: calc($-textarea-icon-size + 8px); + } + } + + + @include e(inner) { + padding: 0; + width: 100%; + font-size: $-textarea-fs; + line-height: $-cell-line-height; + color: $-textarea-color; + outline: none; + background: none; + border: none; + box-sizing: border-box; + word-break: break-word; + min-height: 24px; + + &::-webkit-input-placeholder { + color: $-input-placeholder-color; + } + } + + @include e(suffix) { + position: absolute; + z-index: 1; + right: 0; + top: 0; + bottom: 0; + } + + @include edeep(icon) { + margin-left: $-textarea-icon-margin; + font-size: $-textarea-icon-size; + color: $-textarea-icon-color; + background: $-textarea-bg; + } + + @include edeep(clear) { + margin-left: $-textarea-icon-margin; + font-size: $-textarea-icon-size; + color: $-textarea-clear-color; + vertical-align: middle; + background: $-textarea-bg; + line-height: $-cell-line-height; + } + + + @include e(count) { + position: absolute; + bottom: 8px; + right: 0; + font-size: $-textarea-count-fs; + color: $-textarea-count-color; + background: $-textarea-bg; + line-height: 20px; + display: inline-flex; + } + + @include e(count-current) { + color: $-textarea-count-current-color; + + @include when(error) { + color: $-input-error-color; + } + } + + @include e(placeholder) { + color: $-input-placeholder-color; + + &.is-error { + color: $-input-error-color; + } + } + + + @include e(readonly-mask) { + position: absolute; + top: 0; + left: 0; + z-index: 2; + width: 100%; + height: 100%; + } + + @include e(error-message) { + color: $-form-item-error-message-color; + font-size: $-form-item-error-message-font-size; + line-height: $-form-item-error-message-line-height; + text-align: left; + vertical-align: middle; + } + + @include when(not-empty) { + &:not(.is-disabled) { + &::after { + background-color: $-textarea-not-empty-border-color; + } + } + } + + @include when(disabled) { + + .wd-textarea__inner { + color: $-input-disabled-color; + background: transparent; + } + } + + @include when(error) { + + .wd-textarea__inner { + color: $-input-error-color; + background: transparent; + } + } + + @include when(auto-height) { + &:not(.is-cell) { + padding: 5px 0; + } + + &::after { + display: block; + } + } + + @include when(no-border) { + &::after { + display: none; + } + } + + @include when(cell) { + display: flex; + line-height: $-cell-line-height; + + &.is-error::after { + background: $-textarea-cell-border-color; + } + + .wd-textarea__value { + flex: 1; + } + + :deep(.wd-textarea__icon) { + display: inline-flex; + align-items: center; + height: $-textarea-cell-height; + line-height: $-textarea-cell-height; + } + + .wd-textarea__prefix { + display: inline-block; + margin-right: $-cell-icon-right; + } + + &.wd-textarea::after { + display: none; + } + + .wd-textarea__suffix { + right: 0; + } + + @include when(center) { + align-items: center; + } + + @include when(border) { + @include halfPixelBorder("top", $-textarea-cell-padding); + } + } + + @include when(large) { + padding: $-textarea-cell-padding-large; + + .wd-textarea__prefix { + font-size: $-textarea-fs-large; + } + + .wd-textarea__label-inner { + font-size: $-textarea-fs-large; + } + + .wd-textarea__inner { + font-size: $-textarea-fs-large; + } + + .wd-textarea__count { + font-size: $-textarea-count-fs-large; + } + + :deep(.wd-textarea__icon), + :deep(.wd-textarea__clear) { + font-size: $-textarea-icon-size-large; + } + } +} diff --git a/src/uni_modules/wot-design-uni/components/wd-textarea/types.ts b/src/uni_modules/wot-design-uni/components/wd-textarea/types.ts new file mode 100644 index 0000000..90ad838 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-textarea/types.ts @@ -0,0 +1,291 @@ +import type { ExtractPropTypes } from 'vue' +import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeNumericProp, makeStringProp } from '../common/props' +import type { FormItemRule } from '../wd-form/types' +import type { InputClearTrigger } from '../wd-input/types' + +export type ConfirmType = 'send' | 'search' | 'next' | 'go' | 'done' + +export const textareaProps = { + ...baseProps, + /** + * * 自定义文本域容器class名称。 + * 类型:string + */ + customTextareaContainerClass: makeStringProp(''), + + /** + * * 自定义文本域class名称。 + * 类型:string + */ + customTextareaClass: makeStringProp(''), + + /** + * * 自定义标签class名称。 + * 类型:string + */ + customLabelClass: makeStringProp(''), + // 原生属性 + /** + * * 绑定值。 + * 类型:string | number + */ + modelValue: makeNumericProp(''), + + /** + * * 占位文本。 + * 类型:string + * 默认值:'请输入...' + */ + placeholder: String, + + /** + * 指定placeholder的样式。 + * 类型:string + */ + placeholderStyle: String, + + /** + * * 指定placeholder的样式类。 + * 类型:string + * 默认值:空字符串 + */ + placeholderClass: makeStringProp(''), + + /** + * * 禁用输入框。 + * 类型:boolean + * 默认值:false + */ + disabled: makeBooleanProp(false), + + /** + * * 最大输入长度,设置为-1表示不限制最大长度。 + * 类型:string + * 默认值:-1 + */ + maxlength: makeNumberProp(-1), + + /** + * * 自动聚焦并拉起键盘。 + * 类型:boolean + * 默认值:false + */ + autoFocus: makeBooleanProp(false), + + /** + * * 获取焦点。 + * 类型:boolean + * 默认值:false + */ + focus: makeBooleanProp(false), + + /** + * * 是否自动增高输入框高度,style.height属性在auto-height生效时不生效。 + * 类型:boolean + * 默认值:false + */ + autoHeight: makeBooleanProp(false), + + /** + * * 如果textarea处于position:fixed区域,需要设置此属性为true。 + * 类型:boolean + * 默认值:false + */ + fixed: makeBooleanProp(false), + + /** + * * 指定光标与键盘的距离,取textarea距离底部的距离和cursor-spacing指定的距离的最小值作为实际距离。 + * 类型:number + * 默认值:0 + */ + cursorSpacing: makeNumberProp(0), + + /** + * * 指定focus时的光标位置。 + * 类型:number + * 默认值:-1 + */ + cursor: makeNumberProp(-1), + + /** + * * 设置键盘右下角按钮的文字。 + * 类型:string + * 默认值:'done' + * 可选值有'done', 'go', 'next', 'search', 'send' + */ + confirmType: makeStringProp(null), + + /** + * * 点击键盘右下角按钮时是否保持键盘不收起。 + * 类型:boolean + * 默认值:false + */ + confirmHold: makeBooleanProp(false), + + /** + * * 是否显示键盘上方带有“完成”按钮那一栏。 + * 类型:boolean + * 默认值:true + */ + showConfirmBar: makeBooleanProp(true), + + /** + * * 光标起始位置,自动聚集时有效,需与selection-end搭配使用。 + * 类型:number + * 默认值:-1 + */ + selectionStart: makeNumberProp(-1), + + /** + * * 光标结束位置,自动聚集时有效,需与selection-start搭配使用。 + * 类型:number + * 默认值:-1 + */ + selectionEnd: makeNumberProp(-1), + + /** + * * 键盘弹起时是否自动上推页面。 + * 类型:boolean + * 默认值:true + */ + adjustPosition: makeBooleanProp(true), + + /** + * * 是否去掉iOS下的默认内边距。 + * 类型:boolean + * 默认值:false + */ + disableDefaultPadding: makeBooleanProp(false), + + /** + * * focus状态下点击页面时是否不收起键盘。 + * 类型:boolean + * 默认值:false + */ + holdKeyboard: makeBooleanProp(false), + + // 非原生属性 + /** + * * 显示为密码框。 + * 类型:boolean + * 默认值:false + */ + showPassword: makeBooleanProp(false), + + /** + * * 是否显示清空按钮。 + * 类型:boolean + * 默认值:false + */ + clearable: makeBooleanProp(false), + + /** + * * 输入框只读状态。 + * 类型:boolean + * 默认值:false + */ + readonly: makeBooleanProp(false), + + /** + * * 前置图标,icon组件中的图标类名。 + * 类型:string + */ + prefixIcon: String, + + /** + * * 是否使用前置图标插槽。 + * 类型:boolean + * 默认值:false + */ + usePrefixSlot: makeBooleanProp(false), + + /** + * * 是否显示字数限制,需要同时设置maxlength。 + * 类型:boolean + * 默认值:false + */ + showWordLimit: makeBooleanProp(false), + + /** + * * 设置左侧标题。 + * 类型:string + */ + label: String, + + /** + * * 设置左侧标题宽度。 + * 类型:string + * 默认值:'33%' + */ + labelWidth: makeStringProp('33%'), + + /** + * * 是否使用label插槽。 + * 类型:boolean + * 默认值:false + */ + useLabelSlot: makeBooleanProp(false), + + /** + * * 设置输入框大小。 + * 类型:string + */ + size: String, + + /** + * * 设置输入框错误状态(红色)。 + * 类型:boolean + * 默认值:false + */ + error: makeBooleanProp(false), + + /** + * * 当存在label属性时,设置标题和输入框垂直居中,默认为顶部居中。 + * 类型:boolean + * 默认值:false + */ + center: makeBooleanProp(false), + + /** + * * 非cell类型下是否隐藏下划线。 + * 类型:boolean + * 默认值:false + */ + noBorder: makeBooleanProp(false), + + /** + * * cell类型下必填样式。 + * 类型:boolean + * 默认值:false + */ + required: makeBooleanProp(false), + + /** + * * 表单域model字段名,在使用表单校验功能的情况下,该属性是必填的。 + * 类型:string + */ + prop: makeStringProp(''), + + /** + * * 表单验证规则。 + * 类型:FormItemRule[] + * 默认值:[] + */ + rules: makeArrayProp(), + /** + * 显示清除图标的时机,always 表示输入框不为空时展示,focus 表示输入框聚焦且不为空时展示 + * 类型: "focus" | "always" + * 默认值: "always" + * 最低版本: $LOWEST_VERSION$ + */ + clearTrigger: makeStringProp('always'), + /** + * 是否在点击清除按钮时聚焦输入框 + * 类型: boolean + * 默认值: true + * 最低版本: $LOWEST_VERSION$ + */ + focusWhenClear: makeBooleanProp(true) +} + +export type TextareaProps = ExtractPropTypes diff --git a/src/uni_modules/wot-design-uni/components/wd-textarea/wd-textarea.vue b/src/uni_modules/wot-design-uni/components/wd-textarea/wd-textarea.vue new file mode 100644 index 0000000..2dfe374 --- /dev/null +++ b/src/uni_modules/wot-design-uni/components/wd-textarea/wd-textarea.vue @@ -0,0 +1,281 @@ +