commit 3679c9b8ef8842a4a3e1e51e6769899a5c04311f
Author: SnhAenIgseAl <11845079+snhaenigseal@user.noreply.gitee.com>
Date: Tue Mar 31 16:10:12 2026 +0800
first commit
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..38adffa
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..dd4ad0b
--- /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/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000..7489970
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,38 @@
+module.exports = {
+ // 一行最多 80 字符
+ printWidth: 80,
+ // 使用 4 个空格缩进
+ tabWidth: 2,
+ // 不使用 tab 缩进,而使用空格
+ useTabs: false,
+ // 行尾需要有分号
+ semi: false,
+ // 使用单引号代替双引号
+ singleQuote: true,
+ // 对象的 key 仅在必要时用引号
+ quoteProps: 'as-needed',
+ // jsx 不使用单引号,而使用双引号
+ jsxSingleQuote: false,
+ // 末尾使用逗号
+ trailingComma: 'all',
+ // 大括号内的首尾需要空格 { foo: bar }
+ bracketSpacing: true,
+ // jsx 标签的反尖括号需要换行
+ jsxBracketSameLine: false,
+ // 箭头函数,只有一个参数的时候,也需要括号
+ arrowParens: 'always',
+ // 每个文件格式化的范围是文件的全部内容
+ rangeStart: 0,
+ rangeEnd: Infinity,
+ // 不需要写文件开头的 @prettier
+ requirePragma: false,
+ // 不需要自动在文件开头插入 @prettier
+ insertPragma: false,
+ // 使用默认的折行标准
+ proseWrap: 'preserve',
+ // 根据显示样式决定 html 要不要折行
+ htmlWhitespaceSensitivity: 'css',
+ // 换行符使用 lf
+ endOfLine: 'auto'
+ }
+
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..22ceabf
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 恋轩
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2478098
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# Uniapp 白板模板
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..60d0627
--- /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..3c869d3
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,7967 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-app-plus": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-components": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-h5": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-lark": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-qq": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3050320220729001",
+ "@types/uni-app": "^1.4.8",
+ "js-calendar-converter": "^0.0.7",
+ "lunisolar": "^2.6.0",
+ "miniprogram-api-typings": "^4.1.0",
+ "pinia": "^2.0.36",
+ "pinia-plugin-persistedstate": "^2.3.0",
+ "text-encoding-shim": "^1.0.5",
+ "vue": "^3.5.1",
+ "wot-design-uni": "^1.13.0"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.0.13",
+ "@dcloudio/uni-automator": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-stacktracey": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-alpha-3050320220729001",
+ "@types/node": "^18.11.9",
+ "sass": "^1.54.9",
+ "typescript": "^4.7.4",
+ "unplugin-auto-import": "^0.11.2",
+ "vite": "^2.9.14"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.5.2.tgz",
+ "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "dependencies": {
+ "@babel/highlight": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz",
+ "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.0.tgz",
+ "integrity": "sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.19.0",
+ "@babel/helper-compilation-targets": "^7.19.0",
+ "@babel/helper-module-transforms": "^7.19.0",
+ "@babel/helpers": "^7.19.0",
+ "@babel/parser": "^7.19.0",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.19.0",
+ "@babel/types": "^7.19.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz",
+ "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==",
+ "dependencies": {
+ "@babel/types": "^7.19.0",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz",
+ "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==",
+ "dependencies": {
+ "@babel/compat-data": "^7.19.0",
+ "@babel/helper-validator-option": "^7.18.6",
+ "browserslist": "^4.20.2",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz",
+ "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-member-expression-to-functions": "^7.18.9",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.18.9",
+ "@babel/helper-split-export-declaration": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
+ "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
+ "dependencies": {
+ "@babel/template": "^7.18.10",
+ "@babel/types": "^7.19.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
+ "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz",
+ "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-simple-access": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.19.0",
+ "@babel/types": "^7.19.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+ "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz",
+ "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz",
+ "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-member-expression-to-functions": "^7.18.9",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
+ "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz",
+ "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==",
+ "dependencies": {
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.19.0",
+ "@babel/types": "^7.19.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.5"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
+ "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz",
+ "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.0.tgz",
+ "integrity": "sha512-DOOIywxPpkQHXijXv+s9MDAyZcLp12oYRl3CMWZ6u7TjSoCBq/KqHR/nNFR3+i2xqheZxoF0H2XyL7B6xeSRuA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.19.0",
+ "@babel/helper-plugin-utils": "^7.19.0",
+ "@babel/plugin-syntax-typescript": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/standalone": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.19.0.tgz",
+ "integrity": "sha512-P8lYynBl10MYpgkhGEV1fOsGDE/6lQSYp+e2YvqUPMWHT4JaQrOkM49FizjswrRzJ6KZTgG6ZY90/1GYvAR3/Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.18.10",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
+ "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/parser": "^7.18.10",
+ "@babel/types": "^7.18.10"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz",
+ "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.19.0",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.19.0",
+ "@babel/types": "^7.19.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@dcloudio/types": {
+ "version": "3.0.14",
+ "resolved": "https://registry.npmjs.org/@dcloudio/types/-/types-3.0.14.tgz",
+ "integrity": "sha512-WNVBTL4yn8a2cDp2YkVDhvBHIsw505HgY4lLILvzmUO9nFxidwJawXYAgE05lYidE4c62SRZSh9/gYF3eRtg1A==",
+ "dev": true
+ },
+ "node_modules/@dcloudio/uni-app": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app/-/uni-app-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-QmL7TwB5oTu4/NaLVl2nYsMeg9CqE+ssw88TFk2m/beNckax0+8PDzEWgJ+fTa1JU/hffM0wVtelYuSfii6bnQ==",
+ "dependencies": {
+ "@dcloudio/uni-cloud": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-components": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-push": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-stat": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-plus": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-Cd9LnWaXLlT0e9QoUe1k7o+83hiddA2XKaOZPFtv2vq8vL6IbYrVHG9QjaOT4UVX0KP6XRMjKk8NR2lL/bt5RA==",
+ "dependencies": {
+ "@dcloudio/uni-app-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-app-vue": "3.0.0-alpha-3050320220729001"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-vite": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-gevUPtUxphXaqlErl+rkEcVD4daQopU8aX+Jw9BBnLz5omdGGe0dcn5kbLsMtDftjbB/sG5Q/nKM0uAL7XdOeQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uts": "3.0.0-alpha-3050320220729001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-vue": "^2.3.3",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0",
+ "rollup": "^2.59.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-vue": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-489zXrr1xB4noQhyAcJK38u3FnWQmKDkHdSLW3WvtMmqwDXQQgGYz9V4U7XDKXLGbP7LpQzHAqKd47+b54UMtA=="
+ },
+ "node_modules/@dcloudio/uni-automator": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-automator/-/uni-automator-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-NoLWdz3qtj3ZwimD3oyIWW+H5TZkOMiIKdldN5NWOBKmBaceNT/KLfx6bDmmUIm+ceSHl/796IZgZTsOtHu+oA==",
+ "dev": true,
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "address": "^1.1.2",
+ "cross-env": "^7.0.3",
+ "debug": "^4.3.3",
+ "default-gateway": "^6.0.3",
+ "fs-extra": "^10.0.0",
+ "licia": "^1.29.0",
+ "postcss-selector-parser": "^6.0.6",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-HhCQqPN1tvFam1J6Og3ZTyAa4VVoVV+VcvKDRQ6xoMsR3xPyiHhrW3yPp8kcPCKnIfB8vxVtX9f4NMGOauXI7A==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.2",
+ "@babel/core": "^7.17.9",
+ "@babel/parser": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@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.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "autoprefixer": "^10.4.7",
+ "base64url": "^3.0.1",
+ "chokidar": "^3.5.3",
+ "compare-versions": "^3.6.0",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^0.9.3",
+ "esbuild": "^0.14.27",
+ "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.26.1",
+ "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.0",
+ "tapable": "^2.2.0",
+ "xregexp": "3.1.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/reactivity": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/runtime-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/runtime-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/server-renderer": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/shared": "3.2.37"
+ },
+ "peerDependencies": {
+ "vue": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/vue": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/runtime-dom": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-cloud": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-dkZBop9yOsdoFf9fS8VMGewJ0DQzdZPYiI5sy/YJxi+3HJU17znNVKpP1ittvDd6PUV8YVIC/qJ+O7nnvzcoLQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37",
+ "fast-glob": "^3.2.11"
+ }
+ },
+ "node_modules/@dcloudio/uni-components": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-components/-/uni-components-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-xz6boCIrcdO7+ZoNHf+LlEdInNjI06bibDjcaDRRG+noAXkctvCh1k17h/pvz9ZLHxcvrs/SAR7bacuBF2y9Ow=="
+ },
+ "node_modules/@dcloudio/uni-h5": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5/-/uni-h5-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-rauQlZDFEn6D/HxCJQgCvSG2cPxmJ5eirdhKXvW3T5/8i0Eo6jqxljGMmmIfttcSDkPEdrXYKUyGQQHREw8oIg==",
+ "dependencies": {
+ "@dcloudio/uni-h5-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-h5-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "localstorage-polyfill": "^1.0.1",
+ "safe-area-insets": "^1.4.1",
+ "vue-router": "^4.1.2",
+ "xmlhttprequest": "^1.8.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-GW/VEp6UkqbKBlcuPdqf2O5GbyjU7E2RzY5Reh7gcoQBt5SPcwQsOlh++HflkOTEOuY2uAM6V15FzrhHi415QA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "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/@vue/reactivity": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/runtime-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/runtime-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/server-renderer": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/shared": "3.2.37"
+ },
+ "peerDependencies": {
+ "vue": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/vue": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/runtime-dom": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-AZ3O/7JuMPFIcjAMKLL3c0L2E2pjcf1CKZQ64Jf/g8IptAJJxGzb0+usFT72sElzRsmelcKpFgAfO1LTJfOq8Q==",
+ "dependencies": {
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/@vue/reactivity": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/@vue/runtime-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/@vue/runtime-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/@vue/server-renderer": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/shared": "3.2.37"
+ },
+ "peerDependencies": {
+ "vue": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/vue": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/runtime-dom": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-i18n": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-xlrc0nkbsR2hB6Puhu6/z+Zgm2Ze246DzGjz0ulIAWI/W1uyVgx7cE8UrV2ppAUIKlE47ZX+GSu689j0GDo8wg=="
+ },
+ "node_modules/@dcloudio/uni-mp-alipay": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-+XJTJScIi7Osz5agpCg+e+fYSxXqm0UMuxhQMhPe4cqmBreFkgKmq5Fio3aMJc8hK/JXtazAbf+x25LnnyqnHQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-baidu": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-IoPw6E/eIn41dBl55HQBOs98LyOx9KWhCR8u3G/I6GV8qAZ6fjpWLdebJlEGlFbQ00kqZxy0+9RtJKGtXS1f1A==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-compiler": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-AsOuHKM8oc9XIXG5NxLcGI995v8H3XXFTvPQJYj5zlwlwc6dTC6K2RuBgaDlmge83V5JdYq4E7CTnsT2nMfu/g==",
+ "dependencies": {
+ "@babel/generator": "^7.17.9",
+ "@babel/parser": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-kuaishou": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-b2am+5J+aQacWJhpm+01SyU55/dFOcl7A4CfAMLRhVeXjWUGCkooq4YbZ55xvMXbo6/iqEtQCLNc24jtj2pfFg==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-lark": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-iD8j2YYez7jY3oF3TVtODW1tflDnwr5zHDg9nOoCRrmTI/O9C0mIu1/y7C2un0LYjR2XVSj5yJQLdBsxqwCaDQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-qq": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-Kg2J9yJyWIx5VibqnRDNUYP5kTmEJ2ZFOv/VgObeQ6m55muAZuWNXoeoQwHN4NwGUMkm6FpotGCQZkONrelieg==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37",
+ "fs-extra": "^10.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-toutiao": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-wHSJ8vrLvjW4Uor+oH65dQ1zb4mg2jwl4EZuT6B0SozTd0bawuysEheSP5wjND6I8uzL5hDy2wVOdO+LX4Drww==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-vite": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-P51UW1IHQVrEVqU5KsEQ+9x4M1jiafdpgtAHSa5JW/xLnesziisMiBtfIj5KtQP8/hds94y5Dy/dxLqONgKyRQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "debug": "^4.3.3",
+ "magic-string": "^0.26.1"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-vue": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-KroRZfvWjCLf4dSvOUxXTwWTXZxHnHBYDCigH9TdCJT+qkxvjSk09oMlc6f/M9VwBru6mLBw7+lVWEFobrFwFQ==",
+ "dependencies": {
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-weixin": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-NRHxl8/ZGtkfEOJMTjD5H4goadzfgmZtJDf52wYypYepImg8Q34InW7oIrwAozF+SNlY3DjTE34bl4obd1M76w==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-nvue-styler": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-+qksnZhaGbPC9+5wxKeMakOrpbO/InPuORn2PbfdZYIFm9YJGvRXbMncH46+dIl7Vf4hkwLpXbUkC+z0CSuIsg==",
+ "dependencies": {
+ "@vue/shared": "3.2.37",
+ "parse-css-font": "^4.0.0",
+ "postcss": "^8.4.13"
+ }
+ },
+ "node_modules/@dcloudio/uni-push": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-push/-/uni-push-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-lxpLu4Q2YvaYL17qbapNxOYzjJrRH4nKnHLHVxry/DmxEANVTP30AAcdfe+j5bKKG/RGqIa8clFezpxccAkNfA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001"
+ }
+ },
+ "node_modules/@dcloudio/uni-quickapp-webview": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-RdmVtlIMx+4Mw7Ut7IMS52iALgbKHSDufsVrU91hkvr2xCWtVDp9X4wV58UXD32a3QecRz62CTEfQ0kqKgT+3g==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-shared": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-shared/-/uni-shared-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-sDSR4HFm+uQu0fnouL91LwvMgw1E2Gd608Lk7+7j7n809CHWFXlpKXX8uJ84cIQRFh1N0NMAcCoNg3976MecJg==",
+ "dependencies": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@dcloudio/uni-stacktracey": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-achRH2PTQxaaRH/WBkmWLvGqUbFHKQ13nOLQXz4uU7o8CIvVrnYwJVmnFRizxK/9PMGO612B127hNc4TM+kwqA==",
+ "dev": true
+ },
+ "node_modules/@dcloudio/uni-stat": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stat/-/uni-stat-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-X+83ScyAHNFXpBFI81sM1ytz6+fX+NnUUzKGLS4kBzmYgiQ21toXN5FYr8cvBXx7L4Cb1K6ADr0hYdKghOW5Gw==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "debug": "^4.3.3"
+ }
+ },
+ "node_modules/@dcloudio/uts": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts/-/uts-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-3b46dL23LTNqUCR53uQlESsVVMDiQN32dN6xNvHSCtQdBCnMs+3DwdWN2uSR+Gl9mwiH3hPkLO76pjzJeKa68g==",
+ "dependencies": {
+ "cac": "6.7.9",
+ "chokidar": "^3.5.3",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "uts": "bin/uts.js"
+ },
+ "optionalDependencies": {
+ "@dcloudio/uts-darwin-arm64": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uts-darwin-x64": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uts-win32-ia32-msvc": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uts-win32-x64-msvc": "3.0.0-alpha-3050320220729001"
+ }
+ },
+ "node_modules/@dcloudio/uts-darwin-arm64": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts-darwin-arm64/-/uts-darwin-arm64-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-MeCR4/qs4N95Stkial2cxEzE+3J8oIGW+TU6fP67ez/wBMMBBP+qM1r3BKCdNx9HksphhguNu1+yivHsCfzc0g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@dcloudio/uts-darwin-x64": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts-darwin-x64/-/uts-darwin-x64-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-V/6GYijIrzNCGHpYWJ9nklaTKzWkft49GX3uaIH36LCoSyVYDV7lb0pd0OYcFPaqOgZf5pip+2AlNgRKhFppJw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@dcloudio/uts-win32-ia32-msvc": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts-win32-ia32-msvc/-/uts-win32-ia32-msvc-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-ZvEmaQ8Am89FfLuoSaZQFEPZUEj1QQcdMQhAxn9oo9wuKvlYTglNi1AmMJ00rBEc8eI4zNCGFq8snEsnviZ+Rg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@dcloudio/uts-win32-x64-msvc": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts-win32-x64-msvc/-/uts-win32-x64-msvc-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-Jv9Wst0GQrcXBr11rWH1C+vend+44ff6O9pbicWVlXEKFyQaG+Peq0tp0iu0ejhwEZnnusDneKVltzQBLME6TA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@dcloudio/vite-plugin-uni": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-g2fU7M635Y2eoLPjtGBNkBih+3jErQp2ywi3Sz/lHv31EjM6XTZi4BpxwnGk4wuKhSyCz+cDQm/RtR7L2yDCkw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.17.9",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.16.8",
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-legacy": "^1.8.2",
+ "@vitejs/plugin-vue": "^2.3.3",
+ "@vitejs/plugin-vue-jsx": "^1.3.10",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "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",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "uni": "bin/uni.js"
+ },
+ "peerDependencies": {
+ "vite": "2.9.14"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
+ "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@intlify/core-base": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.9.tgz",
+ "integrity": "sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==",
+ "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.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.9.tgz",
+ "integrity": "sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==",
+ "dependencies": {
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/message-compiler": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.9.tgz",
+ "integrity": "sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==",
+ "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.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.9.tgz",
+ "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/runtime": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.9.tgz",
+ "integrity": "sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==",
+ "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.npmjs.org/@intlify/shared/-/shared-9.1.9.tgz",
+ "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/vue-devtools": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz",
+ "integrity": "sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==",
+ "dependencies": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "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.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "18.19.130",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.19.130.tgz",
+ "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/uni-app": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmmirror.com/@types/uni-app/-/uni-app-1.4.8.tgz",
+ "integrity": "sha512-plxwi9MvGDrekCsDKuNlCN3ZXIv9zkqHsKZJOsc8FQqLSHveDBOm11qOaswe4QyNWVHpvwZMViii/Ni1/d40LA==",
+ "license": "MIT",
+ "dependencies": {
+ "vue": "^2.6.8"
+ }
+ },
+ "node_modules/@types/uni-app/node_modules/@vue/compiler-sfc": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
+ "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
+ "dependencies": {
+ "@babel/parser": "^7.23.5",
+ "postcss": "^8.4.14",
+ "source-map": "^0.6.1"
+ },
+ "optionalDependencies": {
+ "prettier": "^1.18.2 || ^2.0.0"
+ }
+ },
+ "node_modules/@types/uni-app/node_modules/vue": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz",
+ "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
+ "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-sfc": "2.7.16",
+ "csstype": "^3.1.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-legacy": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.8.2.tgz",
+ "integrity": "sha512-NCOKU+pU+cxLMR9P9RTolEuOK+h+zYBXlknj+zGcKSj/NXBZYgA1GAH1FnO4zijoWRiTaiOm2ha9LQrELE7XHg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/standalone": "^7.17.11",
+ "core-js": "^3.22.3",
+ "magic-string": "^0.26.1",
+ "regenerator-runtime": "^0.13.9",
+ "systemjs": "^6.12.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^2.8.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz",
+ "integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^2.5.10",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "1.3.10",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.3.10.tgz",
+ "integrity": "sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.17.9",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.16.8",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/babel-plugin-jsx": "^1.1.1",
+ "hash-sum": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
+ "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
+ "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "@vue/babel-helper-vue-transform-on": "^1.0.2",
+ "camelcase": "^6.0.0",
+ "html-tags": "^3.1.0",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
+ "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
+ "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
+ "dependencies": {
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
+ "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/reactivity-transform": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "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.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
+ "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "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/reactivity": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.22.tgz",
+ "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
+ "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "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.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@vue/reactivity/node_modules/@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==",
+ "license": "MIT"
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.22.tgz",
+ "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/runtime-core/node_modules/@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==",
+ "license": "MIT"
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz",
+ "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.22",
+ "@vue/runtime-core": "3.5.22",
+ "@vue/shared": "3.5.22",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/runtime-dom/node_modules/@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==",
+ "license": "MIT"
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.22.tgz",
+ "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.22",
+ "@vue/shared": "3.5.22"
+ },
+ "peerDependencies": {
+ "vue": "3.5.22"
+ }
+ },
+ "node_modules/@vue/server-renderer/node_modules/@vue/compiler-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.22.tgz",
+ "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.4",
+ "@vue/shared": "3.5.22",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/server-renderer/node_modules/@vue/compiler-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz",
+ "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/server-renderer/node_modules/@vue/compiler-ssr": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz",
+ "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/@vue/server-renderer/node_modules/@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==",
+ "license": "MIT"
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
+ "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
+ "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/address": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz",
+ "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.8",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz",
+ "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.21.3",
+ "caniuse-lite": "^1.0.30001373",
+ "fraction.js": "^4.2.0",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/base64url": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
+ "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
+ "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.10.3",
+ "raw-body": "2.5.1",
+ "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.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
+ "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001370",
+ "electron-to-chromium": "^1.4.202",
+ "node-releases": "^2.0.6",
+ "update-browserslist-db": "^1.0.5"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cac": {
+ "version": "6.7.9",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.9.tgz",
+ "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001393",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001393.tgz",
+ "integrity": "sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "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"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/compare-versions": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-disposition/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ ]
+ },
+ "node_modules/content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
+ "dependencies": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "node_modules/core-js": {
+ "version": "3.25.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.1.tgz",
+ "integrity": "sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "dev": true,
+ "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.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "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.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz",
+ "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q=="
+ },
+ "node_modules/css-font-stretch-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz",
+ "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg=="
+ },
+ "node_modules/css-font-style-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz",
+ "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg=="
+ },
+ "node_modules/css-font-weight-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+ "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA=="
+ },
+ "node_modules/css-list-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/css-list-helpers/-/css-list-helpers-2.0.0.tgz",
+ "integrity": "sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ=="
+ },
+ "node_modules/css-system-font-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
+ "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA=="
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "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/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.245",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.245.tgz",
+ "integrity": "sha512-kUN8QXmqHAN8phxjF3QpHeX7CbXGXadSngx9r1O/S9jt+uC0O/vjPi/9+8/Mk3sKewLLMrjpBJZMfVpPCdkG3g=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "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/es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
+ },
+ "node_modules/esbuild": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
+ "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/linux-loong64": "0.14.54",
+ "esbuild-android-64": "0.14.54",
+ "esbuild-android-arm64": "0.14.54",
+ "esbuild-darwin-64": "0.14.54",
+ "esbuild-darwin-arm64": "0.14.54",
+ "esbuild-freebsd-64": "0.14.54",
+ "esbuild-freebsd-arm64": "0.14.54",
+ "esbuild-linux-32": "0.14.54",
+ "esbuild-linux-64": "0.14.54",
+ "esbuild-linux-arm": "0.14.54",
+ "esbuild-linux-arm64": "0.14.54",
+ "esbuild-linux-mips64le": "0.14.54",
+ "esbuild-linux-ppc64le": "0.14.54",
+ "esbuild-linux-riscv64": "0.14.54",
+ "esbuild-linux-s390x": "0.14.54",
+ "esbuild-netbsd-64": "0.14.54",
+ "esbuild-openbsd-64": "0.14.54",
+ "esbuild-sunos-64": "0.14.54",
+ "esbuild-windows-32": "0.14.54",
+ "esbuild-windows-64": "0.14.54",
+ "esbuild-windows-arm64": "0.14.54"
+ }
+ },
+ "node_modules/esbuild-android-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
+ "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-android-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
+ "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
+ "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
+ "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
+ "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
+ "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-32": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
+ "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
+ "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
+ "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
+ "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-mips64le": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
+ "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-ppc64le": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
+ "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-riscv64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
+ "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-s390x": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
+ "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-netbsd-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
+ "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-openbsd-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
+ "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-sunos-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
+ "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-32": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
+ "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
+ "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
+ "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "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/express": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
+ "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.0",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.10.3",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/express/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ ]
+ },
+ "node_modules/fast-glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+ "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/fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://www.patreon.com/infusion"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/generic-names": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz",
+ "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==",
+ "dependencies": {
+ "loader-utils": "^3.2.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
+ "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
+ },
+ "node_modules/html-tags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
+ "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "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.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg=="
+ },
+ "node_modules/icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
+ "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==",
+ "devOptional": true
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/invert-kv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz",
+ "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/invert-kv?sponsor=1"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
+ "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/js-calendar-converter": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmmirror.com/js-calendar-converter/-/js-calendar-converter-0.0.7.tgz",
+ "integrity": "sha512-w4QSGDwWaxBAxmWdfOC2CHVxEFxu48WUm9191uomUPabDyx/pVKSapZebBBVBv/H5GQc5hzDPOPmOLVA31bqjQ==",
+ "license": "GPL-3.0-or-later"
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/lcid": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz",
+ "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+ "dependencies": {
+ "invert-kv": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/licia": {
+ "version": "1.37.0",
+ "resolved": "https://registry.npmjs.org/licia/-/licia-1.37.0.tgz",
+ "integrity": "sha512-jX49+WmzikOPGNrcy/giS23HCI8Pb7RF585Ei5d7oWF4WMelaZWv4odqQNdT0jtHkoUxqSvPz67Jvyq06xamUA==",
+ "dev": true
+ },
+ "node_modules/lilconfig": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
+ "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz",
+ "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/local-pkg": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz",
+ "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/localstorage-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz",
+ "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "node_modules/lunisolar": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/lunisolar/-/lunisolar-2.6.0.tgz",
+ "integrity": "sha512-Q2Ph0MtYDovbX5lvvo2FvM+bFzZVZaIb70q+FyQLheZ4xuL5tvCBP/uEU5KwG+vfo0ztzGPrlIitOcGhltfwvQ==",
+ "license": "GPL-3.0"
+ },
+ "node_modules/magic-string": {
+ "version": "0.26.3",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.3.tgz",
+ "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
+ "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/miniprogram-api-typings": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/miniprogram-api-typings/-/miniprogram-api-typings-4.1.0.tgz",
+ "integrity": "sha512-4RBsz27nBKyRkVGoNkRaPx24/KeJBw3zaaIlXDR8s/WBh2PbcUAc+q7wLLbp7Qsmb3bLzzUu7tqAti+B06kmjg==",
+ "license": "MIT"
+ },
+ "node_modules/mlly": {
+ "version": "0.5.14",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.14.tgz",
+ "integrity": "sha512-DgRgNUSX9NIxxCxygX4Xeg9C7GX7OUx1wuQ8cXx9o9LE0e9wrH+OZ9fcnrlEedsC/rtqry3ZhUddC759XD/L0w==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.0",
+ "pathe": "^0.3.5",
+ "pkg-types": "^0.3.4",
+ "ufo": "^0.8.5"
+ }
+ },
+ "node_modules/module-alias": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz",
+ "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q=="
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "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/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
+ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/os-locale-s-fix": {
+ "version": "1.0.8-fix-1",
+ "resolved": "https://registry.npmjs.org/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz",
+ "integrity": "sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==",
+ "dependencies": {
+ "lcid": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "yarn": "^1.22.4"
+ }
+ },
+ "node_modules/parse-css-font": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-css-font/-/parse-css-font-4.0.0.tgz",
+ "integrity": "sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==",
+ "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/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
+ "node_modules/pathe": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.7.tgz",
+ "integrity": "sha512-yz7GK+kSsS27x727jtXpd5VT4dDfP/JDIQmaowfxyWCnFjOWtE1VIh7i6TzcSfzW0n4+bRQztj1VdKnITNq/MA==",
+ "dev": true
+ },
+ "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.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.36.tgz",
+ "integrity": "sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "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
+ }
+ }
+ },
+ "node_modules/pinia-plugin-persistedstate": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-2.3.0.tgz",
+ "integrity": "sha512-K7vzt68Z3lbMDjb23Ki2vgHVBP2QFvjl7WNwzIwqY/DAkhSt8mi/z6bN/cXTst7fJjXWF0lC9NyxFKHfxWehuw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "pinia": "^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "pinia": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.5.tgz",
+ "integrity": "sha512-VkxCBFVgQhNHYk9subx+HOhZ4jzynH11ah63LZsprTKwPCWG9pfWBlkElWFbvkP9BVR0dP1jS9xPdhaHQNK74Q==",
+ "dev": true,
+ "dependencies": {
+ "jsonc-parser": "^3.2.0",
+ "mlly": "^0.5.14",
+ "pathe": "^0.3.7"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "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.11",
+ "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.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
+ "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.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "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-modules": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz",
+ "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==",
+ "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.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+ "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+ "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+ "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "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.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
+ "node_modules/prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/qrcode-reader": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz",
+ "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==",
+ "dev": true
+ },
+ "node_modules/qrcode-terminal": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
+ "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
+ "dev": true,
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ ]
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dev": true,
+ "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.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
+ "dev": true
+ },
+ "node_modules/resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "dependencies": {
+ "is-core-module": "^2.9.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/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.79.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.0.tgz",
+ "integrity": "sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-area-insets": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/safe-area-insets/-/safe-area-insets-1.4.1.tgz",
+ "integrity": "sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ=="
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/sass": {
+ "version": "1.54.9",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.9.tgz",
+ "integrity": "sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q==",
+ "devOptional": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/scule": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-0.3.2.tgz",
+ "integrity": "sha512-zIvPdjOH8fv8CgrPT5eqtxHQXmPNnV/vHJYffZhE43KZkvULvpCTvOt1HPlFaCZx287INL9qaqrZg34e8NgI4g==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "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.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "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/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A=="
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-literal": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.0.tgz",
+ "integrity": "sha512-ql/sBDoJOybTKSIOWrrh8kgUEMjXMwRAkZTD0EwiwxQH/6tTPkZvMIEjp0CRlpi6V5FMiJyvxeRkEi1KrGISoA==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.7.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/systemjs": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.12.6.tgz",
+ "integrity": "sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw==",
+ "dev": true
+ },
+ "node_modules/tapable": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.3.2.tgz",
+ "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/text-encoding-shim": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/text-encoding-shim/-/text-encoding-shim-1.0.5.tgz",
+ "integrity": "sha512-H7yYW+jRn4yhu60ygZ2f/eMhXPITRt4QSUTKzLm+eCaDsdX8avmgWpmtmHAzesjBVUTAypz9odu5RKUjX5HNYA==",
+ "license": "MIT"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
+ "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
+ "devOptional": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.5.tgz",
+ "integrity": "sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==",
+ "dev": true
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/unimport": {
+ "version": "0.6.7",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-0.6.7.tgz",
+ "integrity": "sha512-EMoVqDjswHkU+nD098QYHXH7Mkw7KwGDQAyeRF2lgairJnuO+wpkhIcmCqrD1OPJmsjkTbJ2tW6Ap8St0PuWZA==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^4.2.1",
+ "escape-string-regexp": "^5.0.0",
+ "fast-glob": "^3.2.11",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.26.2",
+ "mlly": "^0.5.7",
+ "pathe": "^0.3.3",
+ "scule": "^0.3.2",
+ "strip-literal": "^0.4.0",
+ "unplugin": "^0.9.0"
+ }
+ },
+ "node_modules/unimport/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unplugin": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.9.5.tgz",
+ "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.0",
+ "chokidar": "^3.5.3",
+ "webpack-sources": "^3.2.3",
+ "webpack-virtual-modules": "^0.4.4"
+ },
+ "peerDependencies": {
+ "esbuild": ">=0.13",
+ "rollup": "^2.50.0",
+ "vite": "^2.3.0 || ^3.0.0-0",
+ "webpack": "4 || 5"
+ },
+ "peerDependenciesMeta": {
+ "esbuild": {
+ "optional": true
+ },
+ "rollup": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.11.2.tgz",
+ "integrity": "sha512-1+VwBfn9dtiYv9SQLKP1AvZolUbK9xTVeAT+iOcEk4EHSFUlmIqBVLEKI76cifSQTLOJ3rZyPrEgptf3SZNLlQ==",
+ "dev": true,
+ "dependencies": {
+ "@antfu/utils": "^0.5.2",
+ "@rollup/pluginutils": "^4.2.1",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.26.2",
+ "unimport": "^0.6.7",
+ "unplugin": "^0.9.3"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vueuse/core": "*"
+ },
+ "peerDependenciesMeta": {
+ "@vueuse/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz",
+ "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "browserslist-lint": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vite": {
+ "version": "2.9.14",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.14.tgz",
+ "integrity": "sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==",
+ "dependencies": {
+ "esbuild": "^0.14.27",
+ "postcss": "^8.4.13",
+ "resolve": "^1.22.0",
+ "rollup": "^2.59.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": ">=12.2.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "less": "*",
+ "sass": "*",
+ "stylus": "*"
+ },
+ "peerDependenciesMeta": {
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.22.tgz",
+ "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/compiler-sfc": "3.5.22",
+ "@vue/runtime-dom": "3.5.22",
+ "@vue/server-renderer": "3.5.22",
+ "@vue/shared": "3.5.22"
+ },
+ "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-router": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.5.tgz",
+ "integrity": "sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/compiler-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.22.tgz",
+ "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.4",
+ "@vue/shared": "3.5.22",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/compiler-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz",
+ "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/compiler-sfc": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz",
+ "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.4",
+ "@vue/compiler-core": "3.5.22",
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/compiler-ssr": "3.5.22",
+ "@vue/shared": "3.5.22",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.19",
+ "postcss": "^8.5.6",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/compiler-ssr": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz",
+ "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==",
+ "license": "MIT"
+ },
+ "node_modules/vue/node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz",
+ "integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==",
+ "dev": true
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wot-design-uni": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmmirror.com/wot-design-uni/-/wot-design-uni-1.13.0.tgz",
+ "integrity": "sha512-U4ezX7n1DfSuecTvHap06UqkN7dGhSLyC5n7OfmddajYSiV6t39bPLtRIds6uTarmRZCEWERrLN8cGSdZJIHWg==",
+ "license": "MIT",
+ "engines": {
+ "HBuilderX": "^3.8.7"
+ },
+ "peerDependencies": {
+ "vue": ">=3.2.47"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
+ "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==",
+ "dev": true,
+ "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/xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/xregexp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.0.tgz",
+ "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg=="
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ }
+ },
+ "dependencies": {
+ "@ampproject/remapping": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@antfu/utils": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.5.2.tgz",
+ "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==",
+ "dev": true
+ },
+ "@babel/code-frame": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "requires": {
+ "@babel/highlight": "^7.18.6"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz",
+ "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw=="
+ },
+ "@babel/core": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.0.tgz",
+ "integrity": "sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==",
+ "requires": {
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.19.0",
+ "@babel/helper-compilation-targets": "^7.19.0",
+ "@babel/helper-module-transforms": "^7.19.0",
+ "@babel/helpers": "^7.19.0",
+ "@babel/parser": "^7.19.0",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.19.0",
+ "@babel/types": "^7.19.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.1",
+ "semver": "^6.3.0"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz",
+ "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==",
+ "requires": {
+ "@babel/types": "^7.19.0",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "jsesc": "^2.5.1"
+ },
+ "dependencies": {
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ }
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz",
+ "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==",
+ "requires": {
+ "@babel/compat-data": "^7.19.0",
+ "@babel/helper-validator-option": "^7.18.6",
+ "browserslist": "^4.20.2",
+ "semver": "^6.3.0"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz",
+ "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-member-expression-to-functions": "^7.18.9",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.18.9",
+ "@babel/helper-split-export-declaration": "^7.18.6"
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg=="
+ },
+ "@babel/helper-function-name": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
+ "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
+ "requires": {
+ "@babel/template": "^7.18.10",
+ "@babel/types": "^7.19.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
+ "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.18.9"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz",
+ "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==",
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-simple-access": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.19.0",
+ "@babel/types": "^7.19.0"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+ "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz",
+ "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==",
+ "dev": true
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz",
+ "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-member-expression-to-functions": "^7.18.9",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
+ "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw=="
+ },
+ "@babel/helpers": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz",
+ "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==",
+ "requires": {
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.19.0",
+ "@babel/types": "^7.19.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "requires": {
+ "@babel/types": "^7.28.5"
+ }
+ },
+ "@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
+ "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz",
+ "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.0.tgz",
+ "integrity": "sha512-DOOIywxPpkQHXijXv+s9MDAyZcLp12oYRl3CMWZ6u7TjSoCBq/KqHR/nNFR3+i2xqheZxoF0H2XyL7B6xeSRuA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.19.0",
+ "@babel/helper-plugin-utils": "^7.19.0",
+ "@babel/plugin-syntax-typescript": "^7.18.6"
+ }
+ },
+ "@babel/standalone": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.19.0.tgz",
+ "integrity": "sha512-P8lYynBl10MYpgkhGEV1fOsGDE/6lQSYp+e2YvqUPMWHT4JaQrOkM49FizjswrRzJ6KZTgG6ZY90/1GYvAR3/Q==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.18.10",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
+ "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
+ "requires": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/parser": "^7.18.10",
+ "@babel/types": "^7.18.10"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz",
+ "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==",
+ "requires": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.19.0",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.19.0",
+ "@babel/types": "^7.19.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ }
+ },
+ "@dcloudio/types": {
+ "version": "3.0.14",
+ "resolved": "https://registry.npmjs.org/@dcloudio/types/-/types-3.0.14.tgz",
+ "integrity": "sha512-WNVBTL4yn8a2cDp2YkVDhvBHIsw505HgY4lLILvzmUO9nFxidwJawXYAgE05lYidE4c62SRZSh9/gYF3eRtg1A==",
+ "dev": true
+ },
+ "@dcloudio/uni-app": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app/-/uni-app-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-QmL7TwB5oTu4/NaLVl2nYsMeg9CqE+ssw88TFk2m/beNckax0+8PDzEWgJ+fTa1JU/hffM0wVtelYuSfii6bnQ==",
+ "requires": {
+ "@dcloudio/uni-cloud": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-components": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-push": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-stat": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-app-plus": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-Cd9LnWaXLlT0e9QoUe1k7o+83hiddA2XKaOZPFtv2vq8vL6IbYrVHG9QjaOT4UVX0KP6XRMjKk8NR2lL/bt5RA==",
+ "requires": {
+ "@dcloudio/uni-app-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-app-vue": "3.0.0-alpha-3050320220729001"
+ }
+ },
+ "@dcloudio/uni-app-vite": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-gevUPtUxphXaqlErl+rkEcVD4daQopU8aX+Jw9BBnLz5omdGGe0dcn5kbLsMtDftjbB/sG5Q/nKM0uAL7XdOeQ==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uts": "3.0.0-alpha-3050320220729001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-vue": "^2.3.3",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0",
+ "rollup": "^2.59.0"
+ }
+ },
+ "@dcloudio/uni-app-vue": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-489zXrr1xB4noQhyAcJK38u3FnWQmKDkHdSLW3WvtMmqwDXQQgGYz9V4U7XDKXLGbP7LpQzHAqKd47+b54UMtA=="
+ },
+ "@dcloudio/uni-automator": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-automator/-/uni-automator-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-NoLWdz3qtj3ZwimD3oyIWW+H5TZkOMiIKdldN5NWOBKmBaceNT/KLfx6bDmmUIm+ceSHl/796IZgZTsOtHu+oA==",
+ "dev": true,
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "address": "^1.1.2",
+ "cross-env": "^7.0.3",
+ "debug": "^4.3.3",
+ "default-gateway": "^6.0.3",
+ "fs-extra": "^10.0.0",
+ "licia": "^1.29.0",
+ "postcss-selector-parser": "^6.0.6",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "@dcloudio/uni-cli-shared": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-HhCQqPN1tvFam1J6Og3ZTyAa4VVoVV+VcvKDRQ6xoMsR3xPyiHhrW3yPp8kcPCKnIfB8vxVtX9f4NMGOauXI7A==",
+ "requires": {
+ "@ampproject/remapping": "^2.1.2",
+ "@babel/core": "^7.17.9",
+ "@babel/parser": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@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.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "autoprefixer": "^10.4.7",
+ "base64url": "^3.0.1",
+ "chokidar": "^3.5.3",
+ "compare-versions": "^3.6.0",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^0.9.3",
+ "esbuild": "^0.14.27",
+ "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.26.1",
+ "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.0",
+ "tapable": "^2.2.0",
+ "xregexp": "3.1.0"
+ },
+ "dependencies": {
+ "@vue/reactivity": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+ "peer": true,
+ "requires": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+ "peer": true,
+ "requires": {
+ "@vue/reactivity": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+ "peer": true,
+ "requires": {
+ "@vue/runtime-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "vue": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/runtime-dom": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ }
+ }
+ },
+ "@dcloudio/uni-cloud": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-dkZBop9yOsdoFf9fS8VMGewJ0DQzdZPYiI5sy/YJxi+3HJU17znNVKpP1ittvDd6PUV8YVIC/qJ+O7nnvzcoLQ==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37",
+ "fast-glob": "^3.2.11"
+ }
+ },
+ "@dcloudio/uni-components": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-components/-/uni-components-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-xz6boCIrcdO7+ZoNHf+LlEdInNjI06bibDjcaDRRG+noAXkctvCh1k17h/pvz9ZLHxcvrs/SAR7bacuBF2y9Ow=="
+ },
+ "@dcloudio/uni-h5": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5/-/uni-h5-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-rauQlZDFEn6D/HxCJQgCvSG2cPxmJ5eirdhKXvW3T5/8i0Eo6jqxljGMmmIfttcSDkPEdrXYKUyGQQHREw8oIg==",
+ "requires": {
+ "@dcloudio/uni-h5-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-h5-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "localstorage-polyfill": "^1.0.1",
+ "safe-area-insets": "^1.4.1",
+ "vue-router": "^4.1.2",
+ "xmlhttprequest": "^1.8.0"
+ },
+ "dependencies": {
+ "@vue/reactivity": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+ "peer": true,
+ "requires": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+ "peer": true,
+ "requires": {
+ "@vue/reactivity": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+ "peer": true,
+ "requires": {
+ "@vue/runtime-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "vue": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/runtime-dom": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ }
+ }
+ },
+ "@dcloudio/uni-h5-vite": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-GW/VEp6UkqbKBlcuPdqf2O5GbyjU7E2RzY5Reh7gcoQBt5SPcwQsOlh++HflkOTEOuY2uAM6V15FzrhHi415QA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2"
+ },
+ "dependencies": {
+ "@vue/reactivity": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+ "peer": true,
+ "requires": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+ "peer": true,
+ "requires": {
+ "@vue/reactivity": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+ "peer": true,
+ "requires": {
+ "@vue/runtime-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "vue": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/runtime-dom": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ }
+ }
+ },
+ "@dcloudio/uni-h5-vue": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-AZ3O/7JuMPFIcjAMKLL3c0L2E2pjcf1CKZQ64Jf/g8IptAJJxGzb0+usFT72sElzRsmelcKpFgAfO1LTJfOq8Q==",
+ "requires": {
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001"
+ }
+ },
+ "@dcloudio/uni-i18n": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-xlrc0nkbsR2hB6Puhu6/z+Zgm2Ze246DzGjz0ulIAWI/W1uyVgx7cE8UrV2ppAUIKlE47ZX+GSu689j0GDo8wg=="
+ },
+ "@dcloudio/uni-mp-alipay": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-+XJTJScIi7Osz5agpCg+e+fYSxXqm0UMuxhQMhPe4cqmBreFkgKmq5Fio3aMJc8hK/JXtazAbf+x25LnnyqnHQ==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-mp-baidu": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-IoPw6E/eIn41dBl55HQBOs98LyOx9KWhCR8u3G/I6GV8qAZ6fjpWLdebJlEGlFbQ00kqZxy0+9RtJKGtXS1f1A==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-mp-compiler": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-AsOuHKM8oc9XIXG5NxLcGI995v8H3XXFTvPQJYj5zlwlwc6dTC6K2RuBgaDlmge83V5JdYq4E7CTnsT2nMfu/g==",
+ "requires": {
+ "@babel/generator": "^7.17.9",
+ "@babel/parser": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2"
+ }
+ },
+ "@dcloudio/uni-mp-kuaishou": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-b2am+5J+aQacWJhpm+01SyU55/dFOcl7A4CfAMLRhVeXjWUGCkooq4YbZ55xvMXbo6/iqEtQCLNc24jtj2pfFg==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-mp-lark": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-iD8j2YYez7jY3oF3TVtODW1tflDnwr5zHDg9nOoCRrmTI/O9C0mIu1/y7C2un0LYjR2XVSj5yJQLdBsxqwCaDQ==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-mp-qq": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-Kg2J9yJyWIx5VibqnRDNUYP5kTmEJ2ZFOv/VgObeQ6m55muAZuWNXoeoQwHN4NwGUMkm6FpotGCQZkONrelieg==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37",
+ "fs-extra": "^10.0.0"
+ }
+ },
+ "@dcloudio/uni-mp-toutiao": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-wHSJ8vrLvjW4Uor+oH65dQ1zb4mg2jwl4EZuT6B0SozTd0bawuysEheSP5wjND6I8uzL5hDy2wVOdO+LX4Drww==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-mp-vite": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-P51UW1IHQVrEVqU5KsEQ+9x4M1jiafdpgtAHSa5JW/xLnesziisMiBtfIj5KtQP8/hds94y5Dy/dxLqONgKyRQ==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "debug": "^4.3.3",
+ "magic-string": "^0.26.1"
+ }
+ },
+ "@dcloudio/uni-mp-vue": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-KroRZfvWjCLf4dSvOUxXTwWTXZxHnHBYDCigH9TdCJT+qkxvjSk09oMlc6f/M9VwBru6mLBw7+lVWEFobrFwFQ==",
+ "requires": {
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-mp-weixin": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-NRHxl8/ZGtkfEOJMTjD5H4goadzfgmZtJDf52wYypYepImg8Q34InW7oIrwAozF+SNlY3DjTE34bl4obd1M76w==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-nvue-styler": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-+qksnZhaGbPC9+5wxKeMakOrpbO/InPuORn2PbfdZYIFm9YJGvRXbMncH46+dIl7Vf4hkwLpXbUkC+z0CSuIsg==",
+ "requires": {
+ "@vue/shared": "3.2.37",
+ "parse-css-font": "^4.0.0",
+ "postcss": "^8.4.13"
+ }
+ },
+ "@dcloudio/uni-push": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-push/-/uni-push-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-lxpLu4Q2YvaYL17qbapNxOYzjJrRH4nKnHLHVxry/DmxEANVTP30AAcdfe+j5bKKG/RGqIa8clFezpxccAkNfA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001"
+ }
+ },
+ "@dcloudio/uni-quickapp-webview": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-RdmVtlIMx+4Mw7Ut7IMS52iALgbKHSDufsVrU91hkvr2xCWtVDp9X4wV58UXD32a3QecRz62CTEfQ0kqKgT+3g==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vite": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-vue": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-shared": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-shared/-/uni-shared-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-sDSR4HFm+uQu0fnouL91LwvMgw1E2Gd608Lk7+7j7n809CHWFXlpKXX8uJ84cIQRFh1N0NMAcCoNg3976MecJg==",
+ "requires": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@dcloudio/uni-stacktracey": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-achRH2PTQxaaRH/WBkmWLvGqUbFHKQ13nOLQXz4uU7o8CIvVrnYwJVmnFRizxK/9PMGO612B127hNc4TM+kwqA==",
+ "dev": true
+ },
+ "@dcloudio/uni-stat": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stat/-/uni-stat-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-X+83ScyAHNFXpBFI81sM1ytz6+fX+NnUUzKGLS4kBzmYgiQ21toXN5FYr8cvBXx7L4Cb1K6ADr0hYdKghOW5Gw==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "debug": "^4.3.3"
+ }
+ },
+ "@dcloudio/uts": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts/-/uts-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-3b46dL23LTNqUCR53uQlESsVVMDiQN32dN6xNvHSCtQdBCnMs+3DwdWN2uSR+Gl9mwiH3hPkLO76pjzJeKa68g==",
+ "requires": {
+ "@dcloudio/uts-darwin-arm64": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uts-darwin-x64": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uts-win32-ia32-msvc": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uts-win32-x64-msvc": "3.0.0-alpha-3050320220729001",
+ "cac": "6.7.9",
+ "chokidar": "^3.5.3",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "@dcloudio/uts-darwin-arm64": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts-darwin-arm64/-/uts-darwin-arm64-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-MeCR4/qs4N95Stkial2cxEzE+3J8oIGW+TU6fP67ez/wBMMBBP+qM1r3BKCdNx9HksphhguNu1+yivHsCfzc0g==",
+ "optional": true
+ },
+ "@dcloudio/uts-darwin-x64": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts-darwin-x64/-/uts-darwin-x64-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-V/6GYijIrzNCGHpYWJ9nklaTKzWkft49GX3uaIH36LCoSyVYDV7lb0pd0OYcFPaqOgZf5pip+2AlNgRKhFppJw==",
+ "optional": true
+ },
+ "@dcloudio/uts-win32-ia32-msvc": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts-win32-ia32-msvc/-/uts-win32-ia32-msvc-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-ZvEmaQ8Am89FfLuoSaZQFEPZUEj1QQcdMQhAxn9oo9wuKvlYTglNi1AmMJ00rBEc8eI4zNCGFq8snEsnviZ+Rg==",
+ "optional": true
+ },
+ "@dcloudio/uts-win32-x64-msvc": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uts-win32-x64-msvc/-/uts-win32-x64-msvc-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-Jv9Wst0GQrcXBr11rWH1C+vend+44ff6O9pbicWVlXEKFyQaG+Peq0tp0iu0ejhwEZnnusDneKVltzQBLME6TA==",
+ "optional": true
+ },
+ "@dcloudio/vite-plugin-uni": {
+ "version": "3.0.0-alpha-3050320220729001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-alpha-3050320220729001.tgz",
+ "integrity": "sha512-g2fU7M635Y2eoLPjtGBNkBih+3jErQp2ywi3Sz/lHv31EjM6XTZi4BpxwnGk4wuKhSyCz+cDQm/RtR7L2yDCkw==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.17.9",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.16.8",
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-shared": "3.0.0-alpha-3050320220729001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-legacy": "^1.8.2",
+ "@vitejs/plugin-vue": "^2.3.3",
+ "@vitejs/plugin-vue-jsx": "^1.3.10",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "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",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
+ "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
+ "optional": true
+ },
+ "@intlify/core-base": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.9.tgz",
+ "integrity": "sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==",
+ "requires": {
+ "@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/devtools-if": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.9.tgz",
+ "integrity": "sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==",
+ "requires": {
+ "@intlify/shared": "9.1.9"
+ }
+ },
+ "@intlify/message-compiler": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.9.tgz",
+ "integrity": "sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==",
+ "requires": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "source-map": "0.6.1"
+ }
+ },
+ "@intlify/message-resolver": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.9.tgz",
+ "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA=="
+ },
+ "@intlify/runtime": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.9.tgz",
+ "integrity": "sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==",
+ "requires": {
+ "@intlify/message-compiler": "9.1.9",
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ }
+ },
+ "@intlify/shared": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.9.tgz",
+ "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw=="
+ },
+ "@intlify/vue-devtools": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz",
+ "integrity": "sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==",
+ "requires": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ }
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "requires": {
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "requires": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ }
+ },
+ "@types/node": {
+ "version": "18.19.130",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.19.130.tgz",
+ "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
+ "dev": true,
+ "requires": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "@types/uni-app": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmmirror.com/@types/uni-app/-/uni-app-1.4.8.tgz",
+ "integrity": "sha512-plxwi9MvGDrekCsDKuNlCN3ZXIv9zkqHsKZJOsc8FQqLSHveDBOm11qOaswe4QyNWVHpvwZMViii/Ni1/d40LA==",
+ "requires": {
+ "vue": "^2.6.8"
+ },
+ "dependencies": {
+ "@vue/compiler-sfc": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
+ "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
+ "requires": {
+ "@babel/parser": "^7.23.5",
+ "postcss": "^8.4.14",
+ "prettier": "^1.18.2 || ^2.0.0",
+ "source-map": "^0.6.1"
+ }
+ },
+ "vue": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz",
+ "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
+ "requires": {
+ "@vue/compiler-sfc": "2.7.16",
+ "csstype": "^3.1.0"
+ }
+ }
+ }
+ },
+ "@vitejs/plugin-legacy": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.8.2.tgz",
+ "integrity": "sha512-NCOKU+pU+cxLMR9P9RTolEuOK+h+zYBXlknj+zGcKSj/NXBZYgA1GAH1FnO4zijoWRiTaiOm2ha9LQrELE7XHg==",
+ "dev": true,
+ "requires": {
+ "@babel/standalone": "^7.17.11",
+ "core-js": "^3.22.3",
+ "magic-string": "^0.26.1",
+ "regenerator-runtime": "^0.13.9",
+ "systemjs": "^6.12.1"
+ }
+ },
+ "@vitejs/plugin-vue": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz",
+ "integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==",
+ "requires": {}
+ },
+ "@vitejs/plugin-vue-jsx": {
+ "version": "1.3.10",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.3.10.tgz",
+ "integrity": "sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.17.9",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.16.8",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/babel-plugin-jsx": "^1.1.1",
+ "hash-sum": "^2.0.0"
+ }
+ },
+ "@vue/babel-helper-vue-transform-on": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
+ "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==",
+ "dev": true
+ },
+ "@vue/babel-plugin-jsx": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
+ "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "@vue/babel-helper-vue-transform-on": "^1.0.2",
+ "camelcase": "^6.0.0",
+ "html-tags": "^3.1.0",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
+ "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
+ "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
+ "requires": {
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
+ "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/reactivity-transform": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ }
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
+ "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@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=="
+ },
+ "@vue/reactivity": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.22.tgz",
+ "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==",
+ "requires": {
+ "@vue/shared": "3.5.22"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w=="
+ }
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
+ "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ },
+ "dependencies": {
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ }
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.22.tgz",
+ "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==",
+ "requires": {
+ "@vue/reactivity": "3.5.22",
+ "@vue/shared": "3.5.22"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w=="
+ }
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz",
+ "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==",
+ "requires": {
+ "@vue/reactivity": "3.5.22",
+ "@vue/runtime-core": "3.5.22",
+ "@vue/shared": "3.5.22",
+ "csstype": "^3.1.3"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w=="
+ }
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.22.tgz",
+ "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==",
+ "requires": {
+ "@vue/compiler-ssr": "3.5.22",
+ "@vue/shared": "3.5.22"
+ },
+ "dependencies": {
+ "@vue/compiler-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.22.tgz",
+ "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==",
+ "requires": {
+ "@babel/parser": "^7.28.4",
+ "@vue/shared": "3.5.22",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz",
+ "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==",
+ "requires": {
+ "@vue/compiler-core": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz",
+ "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==",
+ "requires": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w=="
+ }
+ }
+ },
+ "@vue/shared": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
+ "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
+ },
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ }
+ },
+ "acorn": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
+ "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
+ "dev": true
+ },
+ "address": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz",
+ "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "10.4.8",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz",
+ "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==",
+ "requires": {
+ "browserslist": "^4.21.3",
+ "caniuse-lite": "^1.0.30001373",
+ "fraction.js": "^4.2.0",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ }
+ },
+ "base64url": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
+ "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A=="
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
+ },
+ "body-parser": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
+ "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.10.3",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "browserslist": {
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
+ "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
+ "requires": {
+ "caniuse-lite": "^1.0.30001370",
+ "electron-to-chromium": "^1.4.202",
+ "node-releases": "^2.0.6",
+ "update-browserslist-db": "^1.0.5"
+ }
+ },
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true
+ },
+ "cac": {
+ "version": "6.7.9",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.9.tgz",
+ "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w=="
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001393",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001393.tgz",
+ "integrity": "sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA=="
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.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"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "compare-versions": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.2.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
+ }
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "core-js": {
+ "version": "3.25.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.1.tgz",
+ "integrity": "sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ==",
+ "dev": true
+ },
+ "cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.1"
+ }
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "css-font-size-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz",
+ "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q=="
+ },
+ "css-font-stretch-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz",
+ "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg=="
+ },
+ "css-font-style-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz",
+ "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg=="
+ },
+ "css-font-weight-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+ "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA=="
+ },
+ "css-list-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/css-list-helpers/-/css-list-helpers-2.0.0.tgz",
+ "integrity": "sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ=="
+ },
+ "css-system-font-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
+ "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA=="
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+ },
+ "csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dev": true,
+ "requires": {
+ "execa": "^5.0.0"
+ }
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.4.245",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.245.tgz",
+ "integrity": "sha512-kUN8QXmqHAN8phxjF3QpHeX7CbXGXadSngx9r1O/S9jt+uC0O/vjPi/9+8/Mk3sKewLLMrjpBJZMfVpPCdkG3g=="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true
+ },
+ "entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
+ },
+ "es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
+ },
+ "esbuild": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
+ "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
+ "requires": {
+ "@esbuild/linux-loong64": "0.14.54",
+ "esbuild-android-64": "0.14.54",
+ "esbuild-android-arm64": "0.14.54",
+ "esbuild-darwin-64": "0.14.54",
+ "esbuild-darwin-arm64": "0.14.54",
+ "esbuild-freebsd-64": "0.14.54",
+ "esbuild-freebsd-arm64": "0.14.54",
+ "esbuild-linux-32": "0.14.54",
+ "esbuild-linux-64": "0.14.54",
+ "esbuild-linux-arm": "0.14.54",
+ "esbuild-linux-arm64": "0.14.54",
+ "esbuild-linux-mips64le": "0.14.54",
+ "esbuild-linux-ppc64le": "0.14.54",
+ "esbuild-linux-riscv64": "0.14.54",
+ "esbuild-linux-s390x": "0.14.54",
+ "esbuild-netbsd-64": "0.14.54",
+ "esbuild-openbsd-64": "0.14.54",
+ "esbuild-sunos-64": "0.14.54",
+ "esbuild-windows-32": "0.14.54",
+ "esbuild-windows-64": "0.14.54",
+ "esbuild-windows-arm64": "0.14.54"
+ }
+ },
+ "esbuild-android-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
+ "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
+ "optional": true
+ },
+ "esbuild-android-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
+ "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
+ "optional": true
+ },
+ "esbuild-darwin-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
+ "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
+ "optional": true
+ },
+ "esbuild-darwin-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
+ "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
+ "optional": true
+ },
+ "esbuild-freebsd-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
+ "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
+ "optional": true
+ },
+ "esbuild-freebsd-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
+ "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
+ "optional": true
+ },
+ "esbuild-linux-32": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
+ "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
+ "optional": true
+ },
+ "esbuild-linux-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
+ "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
+ "optional": true
+ },
+ "esbuild-linux-arm": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
+ "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
+ "optional": true
+ },
+ "esbuild-linux-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
+ "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
+ "optional": true
+ },
+ "esbuild-linux-mips64le": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
+ "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
+ "optional": true
+ },
+ "esbuild-linux-ppc64le": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
+ "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
+ "optional": true
+ },
+ "esbuild-linux-riscv64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
+ "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
+ "optional": true
+ },
+ "esbuild-linux-s390x": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
+ "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
+ "optional": true
+ },
+ "esbuild-netbsd-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
+ "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
+ "optional": true
+ },
+ "esbuild-openbsd-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
+ "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
+ "optional": true
+ },
+ "esbuild-sunos-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
+ "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
+ "optional": true
+ },
+ "esbuild-windows-32": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
+ "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
+ "optional": true
+ },
+ "esbuild-windows-64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
+ "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
+ "optional": true
+ },
+ "esbuild-windows-arm64": {
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
+ "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
+ "optional": true
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true
+ },
+ "execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "requires": {
+ "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"
+ }
+ },
+ "express": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
+ "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.0",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.10.3",
+ "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"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
+ }
+ },
+ "fast-glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+ "requires": {
+ "@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"
+ }
+ },
+ "fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "requires": {
+ "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"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true
+ },
+ "fraction.js": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "generic-names": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz",
+ "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==",
+ "requires": {
+ "loader-utils": "^3.2.0"
+ }
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+ },
+ "get-intrinsic": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
+ "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+ },
+ "graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true
+ },
+ "hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
+ },
+ "html-tags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
+ "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "requires": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ }
+ },
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg=="
+ },
+ "icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "requires": {}
+ },
+ "immutable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
+ "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==",
+ "devOptional": true
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz",
+ "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw=="
+ },
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-core-module": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
+ "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "js-calendar-converter": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmmirror.com/js-calendar-converter/-/js-calendar-converter-0.0.7.tgz",
+ "integrity": "sha512-w4QSGDwWaxBAxmWdfOC2CHVxEFxu48WUm9191uomUPabDyx/pVKSapZebBBVBv/H5GQc5hzDPOPmOLVA31bqjQ=="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ },
+ "json5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
+ },
+ "jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "lcid": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz",
+ "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+ "requires": {
+ "invert-kv": "^3.0.0"
+ }
+ },
+ "licia": {
+ "version": "1.37.0",
+ "resolved": "https://registry.npmjs.org/licia/-/licia-1.37.0.tgz",
+ "integrity": "sha512-jX49+WmzikOPGNrcy/giS23HCI8Pb7RF585Ei5d7oWF4WMelaZWv4odqQNdT0jtHkoUxqSvPz67Jvyq06xamUA==",
+ "dev": true
+ },
+ "lilconfig": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
+ "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg=="
+ },
+ "loader-utils": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz",
+ "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ=="
+ },
+ "local-pkg": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz",
+ "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==",
+ "dev": true
+ },
+ "localstorage-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz",
+ "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw=="
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "lunisolar": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/lunisolar/-/lunisolar-2.6.0.tgz",
+ "integrity": "sha512-Q2Ph0MtYDovbX5lvvo2FvM+bFzZVZaIb70q+FyQLheZ4xuL5tvCBP/uEU5KwG+vfo0ztzGPrlIitOcGhltfwvQ=="
+ },
+ "magic-string": {
+ "version": "0.26.3",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.3.tgz",
+ "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true
+ },
+ "merge": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
+ "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "miniprogram-api-typings": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/miniprogram-api-typings/-/miniprogram-api-typings-4.1.0.tgz",
+ "integrity": "sha512-4RBsz27nBKyRkVGoNkRaPx24/KeJBw3zaaIlXDR8s/WBh2PbcUAc+q7wLLbp7Qsmb3bLzzUu7tqAti+B06kmjg=="
+ },
+ "mlly": {
+ "version": "0.5.14",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.14.tgz",
+ "integrity": "sha512-DgRgNUSX9NIxxCxygX4Xeg9C7GX7OUx1wuQ8cXx9o9LE0e9wrH+OZ9fcnrlEedsC/rtqry3ZhUddC759XD/L0w==",
+ "dev": true,
+ "requires": {
+ "acorn": "^8.8.0",
+ "pathe": "^0.3.5",
+ "pkg-types": "^0.3.4",
+ "ufo": "^0.8.5"
+ }
+ },
+ "module-alias": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz",
+ "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true
+ },
+ "node-releases": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
+ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "os-locale-s-fix": {
+ "version": "1.0.8-fix-1",
+ "resolved": "https://registry.npmjs.org/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz",
+ "integrity": "sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==",
+ "requires": {
+ "lcid": "^3.0.0"
+ }
+ },
+ "parse-css-font": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-css-font/-/parse-css-font-4.0.0.tgz",
+ "integrity": "sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==",
+ "requires": {
+ "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"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
+ "pathe": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.7.tgz",
+ "integrity": "sha512-yz7GK+kSsS27x727jtXpd5VT4dDfP/JDIQmaowfxyWCnFjOWtE1VIh7i6TzcSfzW0n4+bRQztj1VdKnITNq/MA==",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
+ },
+ "pinia": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.36.tgz",
+ "integrity": "sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==",
+ "requires": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": "*"
+ }
+ },
+ "pinia-plugin-persistedstate": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-2.3.0.tgz",
+ "integrity": "sha512-K7vzt68Z3lbMDjb23Ki2vgHVBP2QFvjl7WNwzIwqY/DAkhSt8mi/z6bN/cXTst7fJjXWF0lC9NyxFKHfxWehuw==",
+ "requires": {}
+ },
+ "pkg-types": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.5.tgz",
+ "integrity": "sha512-VkxCBFVgQhNHYk9subx+HOhZ4jzynH11ah63LZsprTKwPCWG9pfWBlkElWFbvkP9BVR0dP1jS9xPdhaHQNK74Q==",
+ "dev": true,
+ "requires": {
+ "jsonc-parser": "^3.2.0",
+ "mlly": "^0.5.14",
+ "pathe": "^0.3.7"
+ }
+ },
+ "postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "requires": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "postcss-import": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
+ "requires": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ }
+ },
+ "postcss-load-config": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "requires": {
+ "lilconfig": "^2.0.5",
+ "yaml": "^1.10.2"
+ }
+ },
+ "postcss-modules": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz",
+ "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==",
+ "requires": {
+ "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"
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+ "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+ "requires": {}
+ },
+ "postcss-modules-local-by-default": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+ "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
+ "requires": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+ "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
+ "requires": {
+ "postcss-selector-parser": "^6.0.4"
+ }
+ },
+ "postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "requires": {
+ "icss-utils": "^5.0.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
+ "prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "optional": true
+ },
+ "proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "requires": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ }
+ },
+ "qrcode-reader": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz",
+ "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==",
+ "dev": true
+ },
+ "qrcode-terminal": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
+ "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ }
+ },
+ "read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "requires": {
+ "pify": "^2.3.0"
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "requires": {
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+ },
+ "rollup": {
+ "version": "2.79.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.0.tgz",
+ "integrity": "sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==",
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "safe-area-insets": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/safe-area-insets/-/safe-area-insets-1.4.1.tgz",
+ "integrity": "sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ=="
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sass": {
+ "version": "1.54.9",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.9.tgz",
+ "integrity": "sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q==",
+ "devOptional": true,
+ "requires": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ }
+ },
+ "scule": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-0.3.2.tgz",
+ "integrity": "sha512-zIvPdjOH8fv8CgrPT5eqtxHQXmPNnV/vHJYffZhE43KZkvULvpCTvOt1HPlFaCZx287INL9qaqrZg34e8NgI4g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ },
+ "send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "requires": {
+ "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"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "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=="
+ },
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true
+ },
+ "string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A=="
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true
+ },
+ "strip-literal": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.0.tgz",
+ "integrity": "sha512-ql/sBDoJOybTKSIOWrrh8kgUEMjXMwRAkZTD0EwiwxQH/6tTPkZvMIEjp0CRlpi6V5FMiJyvxeRkEi1KrGISoA==",
+ "dev": true,
+ "requires": {
+ "acorn": "^8.7.1"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "systemjs": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.12.6.tgz",
+ "integrity": "sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw==",
+ "dev": true
+ },
+ "tapable": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.3.2.tgz",
+ "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA=="
+ },
+ "text-encoding-shim": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/text-encoding-shim/-/text-encoding-shim-1.0.5.tgz",
+ "integrity": "sha512-H7yYW+jRn4yhu60ygZ2f/eMhXPITRt4QSUTKzLm+eCaDsdX8avmgWpmtmHAzesjBVUTAypz9odu5RKUjX5HNYA=="
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "typescript": {
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
+ "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
+ "devOptional": true
+ },
+ "ufo": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.5.tgz",
+ "integrity": "sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==",
+ "dev": true
+ },
+ "undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "unimport": {
+ "version": "0.6.7",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-0.6.7.tgz",
+ "integrity": "sha512-EMoVqDjswHkU+nD098QYHXH7Mkw7KwGDQAyeRF2lgairJnuO+wpkhIcmCqrD1OPJmsjkTbJ2tW6Ap8St0PuWZA==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^4.2.1",
+ "escape-string-regexp": "^5.0.0",
+ "fast-glob": "^3.2.11",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.26.2",
+ "mlly": "^0.5.7",
+ "pathe": "^0.3.3",
+ "scule": "^0.3.2",
+ "strip-literal": "^0.4.0",
+ "unplugin": "^0.9.0"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true
+ }
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true
+ },
+ "unplugin": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.9.5.tgz",
+ "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==",
+ "dev": true,
+ "requires": {
+ "acorn": "^8.8.0",
+ "chokidar": "^3.5.3",
+ "webpack-sources": "^3.2.3",
+ "webpack-virtual-modules": "^0.4.4"
+ }
+ },
+ "unplugin-auto-import": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.11.2.tgz",
+ "integrity": "sha512-1+VwBfn9dtiYv9SQLKP1AvZolUbK9xTVeAT+iOcEk4EHSFUlmIqBVLEKI76cifSQTLOJ3rZyPrEgptf3SZNLlQ==",
+ "dev": true,
+ "requires": {
+ "@antfu/utils": "^0.5.2",
+ "@rollup/pluginutils": "^4.2.1",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.26.2",
+ "unimport": "^0.6.7",
+ "unplugin": "^0.9.3"
+ }
+ },
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
+ },
+ "update-browserslist-db": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz",
+ "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==",
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true
+ },
+ "vite": {
+ "version": "2.9.14",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.14.tgz",
+ "integrity": "sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==",
+ "requires": {
+ "esbuild": "^0.14.27",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.4.13",
+ "resolve": "^1.22.0",
+ "rollup": "^2.59.0"
+ }
+ },
+ "vue": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.22.tgz",
+ "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==",
+ "requires": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/compiler-sfc": "3.5.22",
+ "@vue/runtime-dom": "3.5.22",
+ "@vue/server-renderer": "3.5.22",
+ "@vue/shared": "3.5.22"
+ },
+ "dependencies": {
+ "@vue/compiler-core": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.22.tgz",
+ "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==",
+ "requires": {
+ "@babel/parser": "^7.28.4",
+ "@vue/shared": "3.5.22",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz",
+ "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==",
+ "requires": {
+ "@vue/compiler-core": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz",
+ "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==",
+ "requires": {
+ "@babel/parser": "^7.28.4",
+ "@vue/compiler-core": "3.5.22",
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/compiler-ssr": "3.5.22",
+ "@vue/shared": "3.5.22",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.19",
+ "postcss": "^8.5.6",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz",
+ "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==",
+ "requires": {
+ "@vue/compiler-dom": "3.5.22",
+ "@vue/shared": "3.5.22"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.5.22",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
+ "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w=="
+ },
+ "magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ }
+ }
+ },
+ "vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "requires": {}
+ },
+ "vue-router": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.5.tgz",
+ "integrity": "sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==",
+ "requires": {
+ "@vue/devtools-api": "^6.1.4"
+ }
+ },
+ "webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true
+ },
+ "webpack-virtual-modules": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz",
+ "integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "wot-design-uni": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmmirror.com/wot-design-uni/-/wot-design-uni-1.13.0.tgz",
+ "integrity": "sha512-U4ezX7n1DfSuecTvHap06UqkN7dGhSLyC5n7OfmddajYSiV6t39bPLtRIds6uTarmRZCEWERrLN8cGSdZJIHWg==",
+ "requires": {}
+ },
+ "ws": {
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
+ "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==",
+ "dev": true,
+ "requires": {}
+ },
+ "xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA=="
+ },
+ "xregexp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.0.tgz",
+ "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg=="
+ },
+ "yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..8e730a1
--- /dev/null
+++ b/package.json
@@ -0,0 +1,70 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "description": "此项目为uniapp的vue3 + ts + vite + pinia的模板",
+ "scripts": {
+ "dev:app": "uni -p app",
+ "dev:custom": "uni -p",
+ "dev:h5": "uni",
+ "dev:h5:ssr": "uni --ssr",
+ "dev:mp-alipay": "uni -p mp-alipay",
+ "dev:mp-baidu": "uni -p mp-baidu",
+ "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:custom": "uni build -p",
+ "build:h5": "uni build",
+ "build:h5:ssr": "uni build --ssr",
+ "build:mp-alipay": "uni build -p mp-alipay",
+ "build:mp-baidu": "uni build -p mp-baidu",
+ "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"
+ },
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-app-plus": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-components": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-h5": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-lark": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-qq": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3050320220729001",
+ "@types/uni-app": "^1.4.8",
+ "js-calendar-converter": "^0.0.7",
+ "lunisolar": "^2.6.0",
+ "miniprogram-api-typings": "^4.1.0",
+ "pinia": "^2.0.36",
+ "pinia-plugin-persistedstate": "^2.3.0",
+ "text-encoding-shim": "^1.0.5",
+ "vue": "^3.5.1",
+ "wot-design-uni": "^1.13.0"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.0.13",
+ "@dcloudio/uni-automator": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/uni-stacktracey": "3.0.0-alpha-3050320220729001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-alpha-3050320220729001",
+ "@types/node": "^18.11.9",
+ "sass": "^1.54.9",
+ "typescript": "^4.7.4",
+ "unplugin-auto-import": "^0.11.2",
+ "vite": "^2.9.14"
+ }
+}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..d41e853
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,56 @@
+
+
diff --git a/src/api/index.ts b/src/api/index.ts
new file mode 100644
index 0000000..d46c793
--- /dev/null
+++ b/src/api/index.ts
@@ -0,0 +1,4 @@
+export * from './modules/AI'
+export * from './modules/ZhouYi'
+export * from './modules/question'
+export * from './modules/suggestion'
diff --git a/src/api/modules/AI.ts b/src/api/modules/AI.ts
new file mode 100644
index 0000000..c83b455
--- /dev/null
+++ b/src/api/modules/AI.ts
@@ -0,0 +1,147 @@
+import { request } from '@/utils/request'
+import { getPageConfig } from './config'
+import { 动爻数量 } from '@/utils/gua_64'
+import { storeToRefs } from 'pinia'
+import { useAIReponseStore, useTabStore } from '@/stores'
+import * as TextEncoding from "text-encoding-shim";
+import { watch } from 'vue'
+
+const {
+ responseText,
+ showResponseText,
+ isLoading,
+ isDone
+} = storeToRefs(useAIReponseStore())
+
+const {
+ tabIndex
+} = storeToRefs(useTabStore())
+
+
+// const API_KEY = 'sk-Go5P3ztUx30inaZCsWHQje7SjUxbGjD6znDO6xUJNCDB5jNu' // 美团团
+// const API_KEY = 'sk-OPl2umaMSEp7QrwK5e13Fd5f9d86471788A3E2590f439f18' // aihubmix
+// const API_KEY = 'sk-54463246c08f40ecb3baec28bc9a78b4' // 千问
+const API_KEY = 'sk-b65f99c1b2ab416aaf340891cf4ca308' // ds
+
+const AI_URL = 'https://api.deepseek.com/chat/completions'
+// const AI_URL = 'https://max.openai365.top/v1/chat/completions'
+// const AI_URL = 'https://aihubmix.com/v1/chat/completions'
+// const AI_MODEL = 'gemini-3-pro-preview'
+// const AI_URL = 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions'
+const AI_MODEL = 'deepseek-chat'
+
+const errMessage = {
+ 401: 'API key 无效',
+ 403: 'API key 余额不足',
+}
+
+export const AIChat = async (
+ q: string, // 用户所问之事
+ symbol_1: string, // 本卦结果
+ symbol_2: string, // 变卦结果
+ symbol_3: string, // 动爻结果
+ // count: number, // 动爻数量
+) => {
+ const pageCfg = await getPageConfig()
+
+ let callWord = pageCfg.call_word
+ callWord = callWord
+ .replace('[q]', q)
+ .replace('[symbol_1]', symbol_1)
+ .replace('[symbol_2]', symbol_2)
+ .replace('[symbol_3]', symbol_3)
+
+ console.log(callWord)
+
+ // try {
+ // const requestTask = await StreamRequest({
+ // model: AI_MODEL,
+ // messages: [
+ // { role: "system", content: "You are a helpful assistant." },
+ // { role: "user", content: callWord }
+ // ],
+ // stream: true
+ // })
+ // requestTask.onHeadersReceived((e) => {
+ // console.log(e);
+ // })
+ // requestTask.onChunkReceived((e) => {
+ // console.log(e);
+ // const decoder = new TextDecoder('utf-8');
+ // const txt = decoder.decode(e.data);
+ // responseText.value = txt
+ // })
+ // } catch (err) {
+ // console.log(err);
+ // }
+
+ return await new Promise((resolve, reject) => {
+ const requestTask: any = uni.request({
+ url: AI_URL,
+ method: 'POST',
+ header: {
+ 'content-type': 'application/json',
+ 'Authorization': `Bearer ${API_KEY}`
+ },
+ data: {
+ model: AI_MODEL,
+ messages: [
+ { role: "system", content: "You are a helpful assistant." },
+ { role: "user", content: callWord }
+ ],
+ stream: true
+ },
+ enableChunked: true,
+ responseType: 'arraybuffer',
+ success: (res) => {
+ if (res.statusCode !== 200) {
+ resolve({
+ code: res.statusCode,
+ message: errMessage[res.statusCode]
+ })
+ }
+ isDone.value = true
+ // console.log('Data received 数据接受完毕:', res.data)
+ },
+ fail: (error) => {
+ // console.log('打印***error 错误处理', error)
+ },
+ complete: (complete) => {
+ // console.log('打印***complete 完成接收', complete)
+ }
+ } as any)
+
+ requestTask.onChunkReceived(res => {
+ const uint8Array = new Uint8Array(res.data);
+ const decoder = new TextEncoding.TextDecoder("utf-8");
+ const chunk = decoder.decode(uint8Array).toString().split('data: ')
+
+ for (let i = 1; i < chunk.length; i++) {
+ try {
+ const result = JSON.parse(chunk[i])
+ // console.log(result)
+ if (result.choices[0].delta.content) {
+ // showResponseText.value = true
+ isLoading.value = false
+ responseText.value += result.choices[0].delta?.content
+ }
+ } catch (e) {}
+ }
+ })
+
+ watch(
+ () => tabIndex.value,
+ (newVal, oldVal) => {
+ if (newVal !== oldVal) {
+ requestTask.abort()
+ isLoading.value = false
+ responseText.value = ''
+ return
+ }
+ },
+ {
+ deep: true
+ }
+ )
+ })
+}
\ No newline at end of file
diff --git a/src/api/modules/ZhouYi.ts b/src/api/modules/ZhouYi.ts
new file mode 100644
index 0000000..848e32f
--- /dev/null
+++ b/src/api/modules/ZhouYi.ts
@@ -0,0 +1,41 @@
+import { request } from "@/utils/request"
+
+export const getZhouList = () => {
+ return request('/api/zhou-yis?sort=index&pagination[pageSize]=64', {
+ method: 'GET',
+ })
+}
+
+export const getZhouDetail = ({
+ id,
+ name
+}: {
+ id?: string,
+ name?: string
+}) => {
+ if (id) {
+ return request(`/api/zhou-yis/${id}`, {
+ method: 'GET',
+ })
+ }
+ if (name) {
+ return request(`/api/zhou-yis?filters[name]=${name}`, {
+ method: 'GET',
+ })
+ }
+}
+
+export const 获取易经爻辞 = (
+ name: string,
+ 动爻名称: string
+) => {
+ return request(`/api/zhou-yis?filters[name]=${name}`, {
+ method: 'GET',
+ }).then(
+ res => res.data[0]
+ ).then(res => {
+ let str = res.desc.split('\n\n')
+ let index = str.findIndex(item => item.includes(动爻名称))
+ return str[index] + '\n' + str[index + 1]
+ })
+}
\ No newline at end of file
diff --git a/src/api/modules/config.ts b/src/api/modules/config.ts
new file mode 100644
index 0000000..a24f375
--- /dev/null
+++ b/src/api/modules/config.ts
@@ -0,0 +1,7 @@
+import { request } from '@/utils/request'
+
+export const getPageConfig = async () => {
+ return request('/api/config?populate=avatar', {
+ method: 'GET'
+ }).then(res => res.data)
+}
\ No newline at end of file
diff --git a/src/api/modules/question.ts b/src/api/modules/question.ts
new file mode 100644
index 0000000..dfecc0a
--- /dev/null
+++ b/src/api/modules/question.ts
@@ -0,0 +1,14 @@
+import { request } from "@/utils/request"
+
+export const createQ = (
+ q: string
+) => {
+ return request('/api/questions', {
+ method: 'POST',
+ data: {
+ data: {
+ q
+ }
+ }
+ })
+}
\ No newline at end of file
diff --git a/src/api/modules/suggestion.ts b/src/api/modules/suggestion.ts
new file mode 100644
index 0000000..1a391b8
--- /dev/null
+++ b/src/api/modules/suggestion.ts
@@ -0,0 +1,14 @@
+import { request } from "@/utils/request"
+
+export const createSuggestion = (
+ desc: string
+) => {
+ return request('/api/suggestions', {
+ method: 'POST',
+ data: {
+ data: {
+ desc
+ }
+ }
+ })
+}
\ No newline at end of file
diff --git a/src/components/Navbar.vue b/src/components/Navbar.vue
new file mode 100644
index 0000000..e2e0432
--- /dev/null
+++ b/src/components/Navbar.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/TabBar.vue b/src/components/TabBar.vue
new file mode 100644
index 0000000..c3f62bb
--- /dev/null
+++ b/src/components/TabBar.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/ua-markdown/lib/highlight/atom-one-dark.css b/src/components/ua-markdown/lib/highlight/atom-one-dark.css
new file mode 100644
index 0000000..5344ee3
--- /dev/null
+++ b/src/components/ua-markdown/lib/highlight/atom-one-dark.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
\ No newline at end of file
diff --git a/src/components/ua-markdown/lib/highlight/atom-one-light.css b/src/components/ua-markdown/lib/highlight/atom-one-light.css
new file mode 100644
index 0000000..df0268a
--- /dev/null
+++ b/src/components/ua-markdown/lib/highlight/atom-one-light.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#c18401}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
\ No newline at end of file
diff --git a/src/components/ua-markdown/lib/highlight/github-dark.min.css b/src/components/ua-markdown/lib/highlight/github-dark.min.css
new file mode 100644
index 0000000..03b6da8
--- /dev/null
+++ b/src/components/ua-markdown/lib/highlight/github-dark.min.css
@@ -0,0 +1,10 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+ Theme: GitHub Dark
+ Description: Dark theme as seen on github.com
+ Author: github.com
+ Maintainer: @Hirse
+ Updated: 2021-05-15
+
+ Outdated base version: https://github.com/primer/github-syntax-dark
+ Current colors taken from GitHub's CSS
+*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}
\ No newline at end of file
diff --git a/src/components/ua-markdown/lib/highlight/uni-highlight.min.js b/src/components/ua-markdown/lib/highlight/uni-highlight.min.js
new file mode 100644
index 0000000..489c997
--- /dev/null
+++ b/src/components/ua-markdown/lib/highlight/uni-highlight.min.js
@@ -0,0 +1,5254 @@
+/*
+ Highlight.js v11.7.0
+ (c) 2006-2022 undefined and other contributors
+ License: BSD-3-Clause
+ */
+var e = {
+ exports: {}
+};
+function n(e) {
+ return e instanceof Map ? e.clear = e.delete = e.set = () => {
+ throw Error("map is read-only")
+ } : e instanceof Set && (e.add = e.clear = e.delete = () => {
+ throw Error("set is read-only")
+ }), Object.freeze(e), Object.getOwnPropertyNames(e).forEach((t => {
+ var a = e[t];
+ "object" != typeof a || Object.isFrozen(a) || n(a)
+ })), e
+}
+e.exports = n, e.exports.default = n;
+class t {
+ constructor(e) {
+ void 0 === e.data && (e.data = {}), this.data = e.data, this.isMatchIgnored = !1
+ }
+ ignoreMatch() {
+ this.isMatchIgnored = !0
+ }
+}
+
+function a(e) {
+ return e.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g,
+ "'")
+}
+
+function i(e, ...n) {
+ const t = Object.create(null);
+ for (const n in e) t[n] = e[n];
+ return n.forEach((e => {
+ for (const n in e) t[n] = e[n]
+ })), t
+}
+const r = e => !!e.scope || e.sublanguage && e.language;
+class s {
+ constructor(e, n) {
+ this.buffer = "", this.classPrefix = n.classPrefix, e.walk(this)
+ }
+ addText(e) {
+ this.buffer += a(e)
+ }
+ openNode(e) {
+ if (!r(e)) return;
+ let n = "";
+ n = e.sublanguage ? "language-" + e.language : ((e, {
+ prefix: n
+ }) => {
+ if (e.includes(".")) {
+ const t = e.split(".");
+ return [`${n}${t.shift()}`, ...t.map(((e, n) => `${e}${"_".repeat(n+1)}`))].join(" ")
+ }
+ return `${n}${e}`
+ })(e.scope, {
+ prefix: this.classPrefix
+ }), this.span(n)
+ }
+ closeNode(e) {
+ r(e) && (this.buffer += "")
+ }
+ value() {
+ return this.buffer
+ }
+ span(e) {
+ this.buffer += ``
+ }
+}
+const o = (e = {}) => {
+ const n = {
+ children: []
+ };
+ return Object.assign(n, e), n
+};
+class l {
+ constructor() {
+ this.rootNode = o(), this.stack = [this.rootNode]
+ }
+ get top() {
+ return this.stack[this.stack.length - 1]
+ }
+ get root() {
+ return this.rootNode
+ }
+ add(e) {
+ this.top.children.push(e)
+ }
+ openNode(e) {
+ const n = o({
+ scope: e
+ });
+ this.add(n), this.stack.push(n)
+ }
+ closeNode() {
+ if (this.stack.length > 1) return this.stack.pop()
+ }
+ closeAllNodes() {
+ for (; this.closeNode(););
+ }
+ toJSON() {
+ return JSON.stringify(this.rootNode, null, 4)
+ }
+ walk(e) {
+ return this.constructor._walk(e, this.rootNode)
+ }
+ static _walk(e, n) {
+ return "string" == typeof n ? e.addText(n) : n.children && (e.openNode(n),
+ n.children.forEach((n => this._walk(e, n))), e.closeNode(n)), e
+ }
+ static _collapse(e) {
+ "string" != typeof e && e.children && (e.children.every((e => "string" == typeof e)) ? e.children = [e.children
+ .join("")
+ ] : e.children.forEach((e => {
+ l._collapse(e)
+ })))
+ }
+}
+class c extends l {
+ constructor(e) {
+ super(), this.options = e
+ }
+ addKeyword(e, n) {
+ "" !== e && (this.openNode(n), this.addText(e), this.closeNode())
+ }
+ addText(e) {
+ "" !== e && this.add(e)
+ }
+ addSublanguage(e, n) {
+ const t = e.root;
+ t.sublanguage = !0, t.language = n, this.add(t)
+ }
+ toHTML() {
+ return new s(this, this.options).value()
+ }
+ finalize() {
+ return !0
+ }
+}
+
+function d(e) {
+ return e ? "string" == typeof e ? e : e.source : null
+}
+
+function g(e) {
+ return m("(?=", e, ")")
+}
+
+function u(e) {
+ return m("(?:", e, ")*")
+}
+
+function b(e) {
+ return m("(?:", e, ")?")
+}
+
+function m(...e) {
+ return e.map((e => d(e))).join("")
+}
+
+function p(...e) {
+ const n = (e => {
+ const n = e[e.length - 1];
+ return "object" == typeof n && n.constructor === Object ? (e.splice(e.length - 1, 1), n) : {}
+ })(e);
+ return "(" + (n.capture ? "" : "?:") + e.map((e => d(e))).join("|") + ")"
+}
+
+function _(e) {
+ return RegExp(e.toString() + "|").exec("").length - 1
+}
+const h = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
+
+function f(e, {
+ joinWith: n
+}) {
+ let t = 0;
+ return e.map((e => {
+ t += 1;
+ const n = t;
+ let a = d(e),
+ i = "";
+ for (; a.length > 0;) {
+ const e = h.exec(a);
+ if (!e) {
+ i += a;
+ break
+ }
+ i += a.substring(0, e.index),
+ a = a.substring(e.index + e[0].length), "\\" === e[0][0] && e[1] ? i += "\\" + (Number(e[1]) + n) : (i +=
+ e[0],
+ "(" === e[0] && t++)
+ }
+ return i
+ })).map((e => `(${e})`)).join(n)
+}
+const E = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
+ y = {
+ begin: "\\\\[\\s\\S]",
+ relevance: 0
+ },
+ w = {
+ scope: "string",
+ begin: "'",
+ end: "'",
+ illegal: "\\n",
+ contains: [y]
+ },
+ N = {
+ scope: "string",
+ begin: '"',
+ end: '"',
+ illegal: "\\n",
+ contains: [y]
+ },
+ v = (e, n, t = {}) => {
+ const a = i({
+ scope: "comment",
+ begin: e,
+ end: n,
+ contains: []
+ }, t);
+ a.contains.push({
+ scope: "doctag",
+ begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
+ end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,
+ excludeBegin: !0,
+ relevance: 0
+ });
+ const r = p("I", "a", "is", "so", "us", "to", "at", "if", "in", "it", "on", /[A-Za-z]+['](d|ve|re|ll|t|s|n)/,
+ /[A-Za-z]+[-][a-z]+/, /[A-Za-z][a-z]{2,}/);
+ return a.contains.push({
+ begin: m(/[ ]+/, "(", r, /[.]?[:]?([.][ ]|[ ])/, "){3}")
+ }), a
+ },
+ O = v("//", "$"),
+ k = v("/\\*", "\\*/"),
+ x = v("#", "$");
+var M = Object.freeze({
+ __proto__: null,
+ MATCH_NOTHING_RE: /\b\B/,
+ IDENT_RE: "[a-zA-Z]\\w*",
+ UNDERSCORE_IDENT_RE: "[a-zA-Z_]\\w*",
+ NUMBER_RE: "\\b\\d+(\\.\\d+)?",
+ C_NUMBER_RE: E,
+ BINARY_NUMBER_RE: "\\b(0b[01]+)",
+ RE_STARTERS_RE: "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
+ SHEBANG: (e = {}) => {
+ const n = /^#![ ]*\//;
+ return e.binary && (e.begin = m(n, /.*\b/, e.binary, /\b.*/)), i({
+ scope: "meta",
+ begin: n,
+ end: /$/,
+ relevance: 0,
+ "on:begin": (e, n) => {
+ 0 !== e.index && n.ignoreMatch()
+ }
+ }, e)
+ },
+ BACKSLASH_ESCAPE: y,
+ APOS_STRING_MODE: w,
+ QUOTE_STRING_MODE: N,
+ PHRASAL_WORDS_MODE: {
+ begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
+ },
+ COMMENT: v,
+ C_LINE_COMMENT_MODE: O,
+ C_BLOCK_COMMENT_MODE: k,
+ HASH_COMMENT_MODE: x,
+ NUMBER_MODE: {
+ scope: "number",
+ begin: "\\b\\d+(\\.\\d+)?",
+ relevance: 0
+ },
+ C_NUMBER_MODE: {
+ scope: "number",
+ begin: E,
+ relevance: 0
+ },
+ BINARY_NUMBER_MODE: {
+ scope: "number",
+ begin: "\\b(0b[01]+)",
+ relevance: 0
+ },
+ REGEXP_MODE: {
+ begin: /(?=\/[^/\n]*\/)/,
+ contains: [{
+ scope: "regexp",
+ begin: /\//,
+ end: /\/[gimuy]*/,
+ illegal: /\n/,
+ contains: [y, {
+ begin: /\[/,
+ end: /\]/,
+ relevance: 0,
+ contains: [y]
+ }]
+ }]
+ },
+ TITLE_MODE: {
+ scope: "title",
+ begin: "[a-zA-Z]\\w*",
+ relevance: 0
+ },
+ UNDERSCORE_TITLE_MODE: {
+ scope: "title",
+ begin: "[a-zA-Z_]\\w*",
+ relevance: 0
+ },
+ METHOD_GUARD: {
+ begin: "\\.\\s*[a-zA-Z_]\\w*",
+ relevance: 0
+ },
+ END_SAME_AS_BEGIN: e => Object.assign(e, {
+ "on:begin": (e, n) => {
+ n.data._beginMatch = e[1]
+ },
+ "on:end": (e, n) => {
+ n.data._beginMatch !== e[1] && n.ignoreMatch()
+ }
+ })
+});
+
+function S(e, n) {
+ "." === e.input[e.index - 1] && n.ignoreMatch()
+}
+
+function A(e, n) {
+ void 0 !== e.className && (e.scope = e.className, delete e.className)
+}
+
+function C(e, n) {
+ n && e.beginKeywords && (e.begin = "\\b(" + e.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)",
+ e.__beforeBegin = S, e.keywords = e.keywords || e.beginKeywords, delete e.beginKeywords,
+ void 0 === e.relevance && (e.relevance = 0))
+}
+
+function T(e, n) {
+ Array.isArray(e.illegal) && (e.illegal = p(...e.illegal))
+}
+
+function R(e, n) {
+ if (e.match) {
+ if (e.begin || e.end) throw Error("begin & end are not supported with match");
+ e.begin = e.match, delete e.match
+ }
+}
+
+function D(e, n) {
+ void 0 === e.relevance && (e.relevance = 1)
+}
+const I = (e, n) => {
+ if (!e.beforeMatch) return;
+ if (e.starts) throw Error("beforeMatch cannot be used with starts");
+ const t = Object.assign({}, e);
+ Object.keys(e).forEach((n => {
+ delete e[n]
+ })), e.keywords = t.keywords, e.begin = m(t.beforeMatch, g(t.begin)), e.starts = {
+ relevance: 0,
+ contains: [Object.assign(t, {
+ endsParent: !0
+ })]
+ }, e.relevance = 0, delete t.beforeMatch
+ },
+ L = ["of", "and", "for", "in", "not", "or", "if", "then", "parent", "list", "value"];
+
+function B(e, n, t = "keyword") {
+ const a = Object.create(null);
+ return "string" == typeof e ? i(t, e.split(" ")) : Array.isArray(e) ? i(t, e) : Object.keys(e).forEach((t => {
+ Object.assign(a, B(e[t], n, t))
+ })), a;
+
+ function i(e, t) {
+ n && (t = t.map((e => e.toLowerCase()))), t.forEach((n => {
+ const t = n.split("|");
+ a[t[0]] = [e, $(t[0], t[1])]
+ }))
+ }
+}
+
+function $(e, n) {
+ return n ? Number(n) : (e => L.includes(e.toLowerCase()))(e) ? 0 : 1
+}
+const z = {},
+ F = e => {
+ console.error(e)
+ },
+ U = (e, ...n) => {
+ console.log("WARN: " + e, ...n)
+ },
+ j = (e, n) => {
+ z[`${e}/${n}`] || (console.log(`Deprecated as of ${e}. ${n}`), z[`${e}/${n}`] = !0)
+ },
+ P = Error();
+
+function K(e, n, {
+ key: t
+}) {
+ let a = 0;
+ const i = e[t],
+ r = {},
+ s = {};
+ for (let e = 1; e <= n.length; e++) s[e + a] = i[e], r[e + a] = !0, a += _(n[e - 1]);
+ e[t] = s, e[t]._emit = r, e[t]._multi = !0
+}
+
+function H(e) {
+ (e => {
+ e.scope && "object" == typeof e.scope && null !== e.scope && (e.beginScope = e.scope,
+ delete e.scope)
+ })(e), "string" == typeof e.beginScope && (e.beginScope = {
+ _wrap: e.beginScope
+ }), "string" == typeof e.endScope && (e.endScope = {
+ _wrap: e.endScope
+ }), (e => {
+ if (Array.isArray(e.begin)) {
+ if (e.skip || e.excludeBegin || e.returnBegin) throw F(
+ "skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
+ P;
+ if ("object" != typeof e.beginScope || null === e.beginScope) throw F("beginScope must be object"),
+ P;
+ K(e, e.begin, {
+ key: "beginScope"
+ }), e.begin = f(e.begin, {
+ joinWith: ""
+ })
+ }
+ })(e), (e => {
+ if (Array.isArray(e.end)) {
+ if (e.skip || e.excludeEnd || e.returnEnd) throw F(
+ "skip, excludeEnd, returnEnd not compatible with endScope: {}"),
+ P;
+ if ("object" != typeof e.endScope || null === e.endScope) throw F("endScope must be object"),
+ P;
+ K(e, e.end, {
+ key: "endScope"
+ }), e.end = f(e.end, {
+ joinWith: ""
+ })
+ }
+ })(e)
+}
+
+function q(e) {
+ function n(n, t) {
+ return RegExp(d(n), "m" + (e.case_insensitive ? "i" : "") + (e.unicodeRegex ? "u" : "") + (t ? "g" : ""))
+ }
+ class t {
+ constructor() {
+ this.matchIndexes = {}, this.regexes = [], this.matchAt = 1, this.position = 0
+ }
+ addRule(e, n) {
+ n.position = this.position++, this.matchIndexes[this.matchAt] = n, this.regexes.push([n, e]),
+ this.matchAt += _(e) + 1
+ }
+ compile() {
+ 0 === this.regexes.length && (this.exec = () => null);
+ const e = this.regexes.map((e => e[1]));
+ this.matcherRe = n(f(e, {
+ joinWith: "|"
+ }), !0), this.lastIndex = 0
+ }
+ exec(e) {
+ this.matcherRe.lastIndex = this.lastIndex;
+ const n = this.matcherRe.exec(e);
+ if (!n) return null;
+ const t = n.findIndex(((e, n) => n > 0 && void 0 !== e)),
+ a = this.matchIndexes[t];
+ return n.splice(0, t), Object.assign(n, a)
+ }
+ }
+ class a {
+ constructor() {
+ this.rules = [], this.multiRegexes = [],
+ this.count = 0, this.lastIndex = 0, this.regexIndex = 0
+ }
+ getMatcher(e) {
+ if (this.multiRegexes[e]) return this.multiRegexes[e];
+ const n = new t;
+ return this.rules.slice(e).forEach((([e, t]) => n.addRule(e, t))),
+ n.compile(), this.multiRegexes[e] = n, n
+ }
+ resumingScanAtSamePosition() {
+ return 0 !== this.regexIndex
+ }
+ considerAll() {
+ this.regexIndex = 0
+ }
+ addRule(e, n) {
+ this.rules.push([e, n]), "begin" === n.type && this.count++
+ }
+ exec(e) {
+ const n = this.getMatcher(this.regexIndex);
+ n.lastIndex = this.lastIndex;
+ let t = n.exec(e);
+ if (this.resumingScanAtSamePosition())
+ if (t && t.index === this.lastIndex);
+ else {
+ const n = this.getMatcher(0);
+ n.lastIndex = this.lastIndex + 1, t = n.exec(e)
+ }
+ return t && (this.regexIndex += t.position + 1,
+ this.regexIndex === this.count && this.considerAll()), t
+ }
+ }
+ if (e.compilerExtensions || (e.compilerExtensions = []),
+ e.contains && e.contains.includes("self")) throw Error(
+ "ERR: contains `self` is not supported at the top-level of a language. See documentation.");
+ return e.classNameAliases = i(e.classNameAliases || {}),
+ function t(r, s) {
+ const o = r;
+ if (r.isCompiled) return o;
+ [A, R, H, I].forEach((e => e(r, s))), e.compilerExtensions.forEach((e => e(r, s))),
+ r.__beforeBegin = null, [C, T, D].forEach((e => e(r, s))), r.isCompiled = !0;
+ let l = null;
+ return "object" == typeof r.keywords && r.keywords.$pattern && (r.keywords = Object.assign({}, r.keywords),
+ l = r.keywords.$pattern,
+ delete r.keywords.$pattern), l = l || /\w+/, r.keywords && (r.keywords = B(r.keywords, e.case_insensitive)),
+ o.keywordPatternRe = n(l, !0),
+ s && (r.begin || (r.begin = /\B|\b/), o.beginRe = n(o.begin), r.end || r.endsWithParent || (r.end = /\B|\b/),
+ r.end && (o.endRe = n(o.end)),
+ o.terminatorEnd = d(o.end) || "", r.endsWithParent && s.terminatorEnd && (o.terminatorEnd += (r.end ? "|" :
+ "") + s.terminatorEnd)),
+ r.illegal && (o.illegalRe = n(r.illegal)),
+ r.contains || (r.contains = []), r.contains = [].concat(...r.contains.map((e => (e => (e.variants && !e
+ .cachedVariants && (e.cachedVariants = e.variants.map((n => i(e, {
+ variants: null
+ }, n)))), e.cachedVariants ? e.cachedVariants : Z(e) ? i(e, {
+ starts: e.starts ? i(e.starts) : null
+ }) : Object.isFrozen(e) ? i(e) : e))("self" === e ? r : e)))), r.contains.forEach((e => {
+ t(e, o)
+ })), r.starts && t(r.starts, s), o.matcher = (e => {
+ const n = new a;
+ return e.contains.forEach((e => n.addRule(e.begin, {
+ rule: e,
+ type: "begin"
+ }))), e.terminatorEnd && n.addRule(e.terminatorEnd, {
+ type: "end"
+ }), e.illegal && n.addRule(e.illegal, {
+ type: "illegal"
+ }), n
+ })(o), o
+ }(e)
+}
+
+function Z(e) {
+ return !!e && (e.endsWithParent || Z(e.starts))
+}
+class G extends Error {
+ constructor(e, n) {
+ super(e), this.name = "HTMLInjectionError", this.html = n
+ }
+}
+const W = a,
+ Q = i,
+ X = Symbol("nomatch");
+var V = (n => {
+ const a = Object.create(null),
+ i = Object.create(null),
+ r = [];
+ let s = !0;
+ const o = "Could not find the language '{}', did you forget to load/include a language module?",
+ l = {
+ disableAutodetect: !0,
+ name: "Plain text",
+ contains: []
+ };
+ let d = {
+ ignoreUnescapedHTML: !1,
+ throwUnescapedHTML: !1,
+ noHighlightRe: /^(no-?highlight)$/i,
+ languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
+ classPrefix: "hljs-",
+ cssSelector: "pre code",
+ languages: null,
+ __emitter: c
+ };
+
+ function _(e) {
+ return d.noHighlightRe.test(e)
+ }
+
+ function h(e, n, t) {
+ let a = "",
+ i = "";
+ "object" == typeof n ? (a = e,
+ t = n.ignoreIllegals, i = n.language) : (j("10.7.0", "highlight(lang, code, ...args) has been deprecated."),
+ j("10.7.0",
+ "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
+ i = e, a = n), void 0 === t && (t = !0);
+ const r = {
+ code: a,
+ language: i
+ };
+ x("before:highlight", r);
+ const s = r.result ? r.result : f(r.language, r.code, t);
+ return s.code = r.code, x("after:highlight", s), s
+ }
+
+ function f(e, n, i, r) {
+ const l = Object.create(null);
+
+ function c() {
+ if (!k.keywords) return void M.addText(S);
+ let e = 0;
+ k.keywordPatternRe.lastIndex = 0;
+ let n = k.keywordPatternRe.exec(S),
+ t = "";
+ for (; n;) {
+ t += S.substring(e, n.index);
+ const i = w.case_insensitive ? n[0].toLowerCase() : n[0],
+ r = (a = i, k.keywords[a]);
+ if (r) {
+ const [e, a] = r
+ ;
+ if (M.addText(t), t = "", l[i] = (l[i] || 0) + 1, l[i] <= 7 && (A += a), e.startsWith("_")) t += n[0];
+ else {
+ const t = w.classNameAliases[e] || e;
+ M.addKeyword(n[0], t)
+ }
+ } else t += n[0];
+ e = k.keywordPatternRe.lastIndex, n = k.keywordPatternRe.exec(S)
+ }
+ var a;
+ t += S.substring(e), M.addText(t)
+ }
+
+ function g() {
+ null != k.subLanguage ? (() => {
+ if ("" === S) return;
+ let e = null;
+ if ("string" == typeof k.subLanguage) {
+ if (!a[k.subLanguage]) return void M.addText(S);
+ e = f(k.subLanguage, S, !0, x[k.subLanguage]), x[k.subLanguage] = e._top
+ } else e = E(S, k.subLanguage.length ? k.subLanguage : null);
+ k.relevance > 0 && (A += e.relevance), M.addSublanguage(e._emitter, e.language)
+ })() : c(), S = ""
+ }
+
+ function u(e, n) {
+ let t = 1;
+ const a = n.length - 1;
+ for (; t <= a;) {
+ if (!e._emit[t]) {
+ t++;
+ continue
+ }
+ const a = w.classNameAliases[e[t]] || e[t],
+ i = n[t];
+ a ? M.addKeyword(i, a) : (S = i, c(), S = ""), t++
+ }
+ }
+
+ function b(e, n) {
+ return e.scope && "string" == typeof e.scope && M.openNode(w.classNameAliases[e.scope] || e.scope),
+ e.beginScope && (e.beginScope._wrap ? (M.addKeyword(S, w.classNameAliases[e.beginScope._wrap] || e
+ .beginScope._wrap),
+ S = "") : e.beginScope._multi && (u(e.beginScope, n), S = "")), k = Object.create(e, {
+ parent: {
+ value: k
+ }
+ }), k
+ }
+
+ function m(e, n, a) {
+ let i = ((e, n) => {
+ const t = e && e.exec(n);
+ return t && 0 === t.index
+ })(e.endRe, a);
+ if (i) {
+ if (e["on:end"]) {
+ const a = new t(e);
+ e["on:end"](n, a), a.isMatchIgnored && (i = !1)
+ }
+ if (i) {
+ for (; e.endsParent && e.parent;) e = e.parent;
+ return e
+ }
+ }
+ if (e.endsWithParent) return m(e.parent, n, a)
+ }
+
+ function p(e) {
+ return 0 === k.matcher.regexIndex ? (S += e[0], 1) : (R = !0, 0)
+ }
+
+ function _(e) {
+ const t = e[0],
+ a = n.substring(e.index),
+ i = m(k, e, a);
+ if (!i) return X;
+ const r = k;
+ k.endScope && k.endScope._wrap ? (g(),
+ M.addKeyword(t, k.endScope._wrap)) : k.endScope && k.endScope._multi ? (g(),
+ u(k.endScope, e)) : r.skip ? S += t : (r.returnEnd || r.excludeEnd || (S += t),
+ g(), r.excludeEnd && (S = t));
+ do {
+ k.scope && M.closeNode(), k.skip || k.subLanguage || (A += k.relevance), k = k.parent
+ } while (k !== i.parent);
+ return i.starts && b(i.starts, e), r.returnEnd ? 0 : t.length
+ }
+ let h = {};
+
+ function y(a, r) {
+ const o = r && r[0];
+ if (S += a, null == o) return g(), 0;
+ if ("begin" === h.type && "end" === r.type && h.index === r.index && "" === o) {
+ if (S += n.slice(r.index, r.index + 1), !s) {
+ const n = Error(`0 width match regex (${e})`);
+ throw n.languageName = e, n.badRule = h.rule, n
+ }
+ return 1
+ }
+ if (h = r, "begin" === r.type) return (e => {
+ const n = e[0],
+ a = e.rule,
+ i = new t(a),
+ r = [a.__beforeBegin, a["on:begin"]];
+ for (const t of r)
+ if (t && (t(e, i), i.isMatchIgnored)) return p(n);
+ return a.skip ? S += n : (a.excludeBegin && (S += n),
+ g(), a.returnBegin || a.excludeBegin || (S = n)), b(a, e), a.returnBegin ? 0 : n.length
+ })(r);
+ if ("illegal" === r.type && !i) {
+ const e = Error('Illegal lexeme "' + o + '" for mode "' + (k.scope || "") + '"');
+ throw e.mode = k, e
+ }
+ if ("end" === r.type) {
+ const e = _(r);
+ if (e !== X) return e
+ }
+ if ("illegal" === r.type && "" === o) return 1;
+ if (T > 1e5 && T > 3 * r.index) throw Error("potential infinite loop, way more iterations than matches");
+ return S += o, o.length
+ }
+ const w = v(e);
+ if (!w) throw F(o.replace("{}", e)), Error('Unknown language: "' + e + '"');
+ const N = q(w);
+ let O = "",
+ k = r || N;
+ const x = {},
+ M = new d.__emitter(d);
+ (() => {
+ const e = [];
+ for (let n = k; n !== w; n = n.parent) n.scope && e.unshift(n.scope);
+ e.forEach((e => M.openNode(e)))
+ })();
+ let S = "",
+ A = 0,
+ C = 0,
+ T = 0,
+ R = !1;
+ try {
+ for (k.matcher.considerAll();;) {
+ T++, R ? R = !1 : k.matcher.considerAll(), k.matcher.lastIndex = C;
+ const e = k.matcher.exec(n);
+ if (!e) break;
+ const t = y(n.substring(C, e.index), e);
+ C = e.index + t
+ }
+ return y(n.substring(C)), M.closeAllNodes(), M.finalize(), O = M.toHTML(), {
+ language: e,
+ value: O,
+ relevance: A,
+ illegal: !1,
+ _emitter: M,
+ _top: k
+ }
+ } catch (t) {
+ if (t.message && t.message.includes("Illegal")) return {
+ language: e,
+ value: W(n),
+ illegal: !0,
+ relevance: 0,
+ _illegalBy: {
+ message: t.message,
+ index: C,
+ context: n.slice(C - 100, C + 100),
+ mode: t.mode,
+ resultSoFar: O
+ },
+ _emitter: M
+ };
+ if (s) return {
+ language: e,
+ value: W(n),
+ illegal: !1,
+ relevance: 0,
+ errorRaised: t,
+ _emitter: M,
+ _top: k
+ };
+ throw t
+ }
+ }
+
+ function E(e, n) {
+ n = n || d.languages || Object.keys(a);
+ const t = (e => {
+ const n = {
+ value: W(e),
+ illegal: !1,
+ relevance: 0,
+ _top: l,
+ _emitter: new d.__emitter(d)
+ };
+ return n._emitter.addText(e), n
+ })(e),
+ i = n.filter(v).filter(k).map((n => f(n, e, !1)));
+ i.unshift(t);
+ const r = i.sort(((e, n) => {
+ if (e.relevance !== n.relevance) return n.relevance - e.relevance;
+ if (e.language && n.language) {
+ if (v(e.language).supersetOf === n.language) return 1;
+ if (v(n.language).supersetOf === e.language) return -1
+ }
+ return 0
+ })),
+ [s, o] = r,
+ c = s;
+ return c.secondBest = o, c
+ }
+
+ function y(e) {
+ let n = null;
+ const t = (e => {
+ let n = e.className + " ";
+ n += e.parentNode ? e.parentNode.className : "";
+ const t = d.languageDetectRe.exec(n);
+ if (t) {
+ const n = v(t[1]);
+ return n || (U(o.replace("{}", t[1])),
+ U("Falling back to no-highlight mode for this block.", e)), n ? t[1] : "no-highlight"
+ }
+ return n.split(/\s+/).find((e => _(e) || v(e)))
+ })(e);
+ if (_(t)) return;
+ if (x("before:highlightElement", {
+ el: e,
+ language: t
+ }), e.children.length > 0 && (d.ignoreUnescapedHTML || (console.warn(
+ "One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
+ console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
+ console.warn("The element with unescaped HTML:"),
+ console.warn(e)), d.throwUnescapedHTML)) throw new G("One of your code blocks includes unescaped HTML.", e
+ .innerHTML);
+ n = e;
+ const a = n.textContent,
+ r = t ? h(a, {
+ language: t,
+ ignoreIllegals: !0
+ }) : E(a);
+ e.innerHTML = r.value, ((e, n, t) => {
+ const a = n && i[n] || t;
+ e.classList.add("hljs"), e.classList.add("language-" + a)
+ })(e, t, r.language), e.result = {
+ language: r.language,
+ re: r.relevance,
+ relevance: r.relevance
+ }, r.secondBest && (e.secondBest = {
+ language: r.secondBest.language,
+ relevance: r.secondBest.relevance
+ }), x("after:highlightElement", {
+ el: e,
+ result: r,
+ text: a
+ })
+ }
+ let w = !1;
+
+ function N() {
+ "loading" !== document.readyState ? document.querySelectorAll(d.cssSelector).forEach(y) : w = !0
+ }
+
+ function v(e) {
+ return e = (e || "").toLowerCase(), a[e] || a[i[e]]
+ }
+
+ function O(e, {
+ languageName: n
+ }) {
+ "string" == typeof e && (e = [e]), e.forEach((e => {
+ i[e.toLowerCase()] = n
+ }))
+ }
+
+ function k(e) {
+ const n = v(e);
+ return n && !n.disableAutodetect
+ }
+
+ function x(e, n) {
+ const t = e;
+ r.forEach((e => {
+ e[t] && e[t](n)
+ }))
+ }
+ "undefined" != typeof window && window.addEventListener && window.addEventListener("DOMContentLoaded", (() => {
+ w && N()
+ }), !1), Object.assign(n, {
+ highlight: h,
+ highlightAuto: E,
+ highlightAll: N,
+ highlightElement: y,
+ highlightBlock: e => (j("10.7.0", "highlightBlock will be removed entirely in v12.0"),
+ j("10.7.0", "Please use highlightElement now."), y(e)),
+ configure: e => {
+ d = Q(d, e)
+ },
+ initHighlighting: () => {
+ N(), j("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.")
+ },
+ initHighlightingOnLoad: () => {
+ N(), j("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now.")
+ },
+ registerLanguage: (e, t) => {
+ let i = null;
+ try {
+ i = t(n)
+ } catch (n) {
+ if (F("Language definition for '{}' could not be registered.".replace("{}", e)),
+ !s) throw n;
+ F(n), i = l
+ }
+ i.name || (i.name = e), a[e] = i, i.rawDefinition = t.bind(null, n), i.aliases && O(i.aliases, {
+ languageName: e
+ })
+ },
+ unregisterLanguage: e => {
+ delete a[e];
+ for (const n of Object.keys(i)) i[n] === e && delete i[n]
+ },
+ listLanguages: () => Object.keys(a),
+ getLanguage: v,
+ registerAliases: O,
+ autoDetection: k,
+ inherit: Q,
+ addPlugin: e => {
+ (e => {
+ e["before:highlightBlock"] && !e["before:highlightElement"] && (e["before:highlightElement"] =
+ n => {
+ e["before:highlightBlock"](Object.assign({
+ block: n.el
+ }, n))
+ }), e["after:highlightBlock"] && !e["after:highlightElement"] && (e["after:highlightElement"] =
+ n => {
+ e["after:highlightBlock"](Object.assign({
+ block: n.el
+ }, n))
+ })
+ })(e), r.push(e)
+ }
+ }), n.debugMode = () => {
+ s = !1
+ }, n.safeMode = () => {
+ s = !0
+ }, n.versionString = "11.7.0", n.regex = {
+ concat: m,
+ lookahead: g,
+ either: p,
+ optional: b,
+ anyNumberOfTimes: u
+ };
+ for (const n in M) "object" == typeof M[n] && e.exports(M[n]);
+ return Object.assign(n, M), n
+})({});
+const J = e => ({
+ IMPORTANT: {
+ scope: "meta",
+ begin: "!important"
+ },
+ BLOCK_COMMENT: e.C_BLOCK_COMMENT_MODE,
+ HEXCOLOR: {
+ scope: "number",
+ begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/
+ },
+ FUNCTION_DISPATCH: {
+ className: "built_in",
+ begin: /[\w-]+(?=\()/
+ },
+ ATTRIBUTE_SELECTOR_MODE: {
+ scope: "selector-attr",
+ begin: /\[/,
+ end: /\]/,
+ illegal: "$",
+ contains: [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]
+ },
+ CSS_NUMBER_MODE: {
+ scope: "number",
+ begin: e.NUMBER_RE +
+ "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
+ relevance: 0
+ },
+ CSS_VARIABLE: {
+ className: "attr",
+ begin: /--[A-Za-z][A-Za-z0-9_-]*/
+ }
+ }),
+ Y = ["a", "abbr", "address", "article", "aside", "audio", "b", "blockquote", "body", "button", "canvas", "caption",
+ "cite", "code", "dd", "del", "details", "dfn", "div", "dl", "dt", "em", "fieldset", "figcaption", "figure",
+ "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "html", "i", "iframe", "img", "input",
+ "ins", "kbd", "label", "legend", "li", "main", "mark", "menu", "nav", "object", "ol", "p", "q", "quote", "samp",
+ "section", "span", "strong", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time",
+ "tr", "ul", "var", "video"
+ ],
+ ee = ["any-hover", "any-pointer", "aspect-ratio", "color", "color-gamut", "color-index", "device-aspect-ratio",
+ "device-height", "device-width", "display-mode", "forced-colors", "grid", "height", "hover", "inverted-colors",
+ "monochrome", "orientation", "overflow-block", "overflow-inline", "pointer", "prefers-color-scheme",
+ "prefers-contrast", "prefers-reduced-motion", "prefers-reduced-transparency", "resolution", "scan", "scripting",
+ "update", "width", "min-width", "max-width", "min-height", "max-height"
+ ],
+ ne = ["active", "any-link", "blank", "checked", "current", "default", "defined", "dir", "disabled", "drop", "empty",
+ "enabled", "first", "first-child", "first-of-type", "fullscreen", "future", "focus", "focus-visible",
+ "focus-within", "has", "host", "host-context", "hover", "indeterminate", "in-range", "invalid", "is", "lang",
+ "last-child", "last-of-type", "left", "link", "local-link", "not", "nth-child", "nth-col", "nth-last-child",
+ "nth-last-col", "nth-last-of-type", "nth-of-type", "only-child", "only-of-type", "optional", "out-of-range", "past",
+ "placeholder-shown", "read-only", "read-write", "required", "right", "root", "scope", "target", "target-within",
+ "user-invalid", "valid", "visited", "where"
+ ],
+ te = ["after", "backdrop", "before", "cue", "cue-region", "first-letter", "first-line", "grammar-error", "marker",
+ "part", "placeholder", "selection", "slotted", "spelling-error"
+ ],
+ ae = ["align-content", "align-items", "align-self", "all", "animation", "animation-delay", "animation-direction",
+ "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state",
+ "animation-timing-function", "backface-visibility", "background", "background-attachment", "background-blend-mode",
+ "background-clip", "background-color", "background-image", "background-origin", "background-position",
+ "background-repeat", "background-size", "block-size", "border", "border-block", "border-block-color",
+ "border-block-end", "border-block-end-color", "border-block-end-style", "border-block-end-width",
+ "border-block-start", "border-block-start-color", "border-block-start-style", "border-block-start-width",
+ "border-block-style", "border-block-width", "border-bottom", "border-bottom-color", "border-bottom-left-radius",
+ "border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color",
+ "border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source",
+ "border-image-width", "border-inline", "border-inline-color", "border-inline-end", "border-inline-end-color",
+ "border-inline-end-style", "border-inline-end-width", "border-inline-start", "border-inline-start-color",
+ "border-inline-start-style", "border-inline-start-width", "border-inline-style", "border-inline-width",
+ "border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right",
+ "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style", "border-top",
+ "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width",
+ "border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "break-after", "break-before",
+ "break-inside", "caption-side", "caret-color", "clear", "clip", "clip-path", "clip-rule", "color", "column-count",
+ "column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width",
+ "column-span", "column-width", "columns", "contain", "content", "content-visibility", "counter-increment",
+ "counter-reset", "cue", "cue-after", "cue-before", "cursor", "direction", "display", "empty-cells", "filter",
+ "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "flow",
+ "font", "font-display", "font-family", "font-feature-settings", "font-kerning", "font-language-override",
+ "font-size", "font-size-adjust", "font-smoothing", "font-stretch", "font-style", "font-synthesis", "font-variant",
+ "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric",
+ "font-variant-position", "font-variation-settings", "font-weight", "gap", "glyph-orientation-vertical", "grid",
+ "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows", "grid-column", "grid-column-end",
+ "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-start", "grid-template",
+ "grid-template-areas", "grid-template-columns", "grid-template-rows", "hanging-punctuation", "height", "hyphens",
+ "icon", "image-orientation", "image-rendering", "image-resolution", "ime-mode", "inline-size", "isolation",
+ "justify-content", "left", "letter-spacing", "line-break", "line-height", "list-style", "list-style-image",
+ "list-style-position", "list-style-type", "margin", "margin-block", "margin-block-end", "margin-block-start",
+ "margin-bottom", "margin-inline", "margin-inline-end", "margin-inline-start", "margin-left", "margin-right",
+ "margin-top", "marks", "mask", "mask-border", "mask-border-mode", "mask-border-outset", "mask-border-repeat",
+ "mask-border-slice", "mask-border-source", "mask-border-width", "mask-clip", "mask-composite", "mask-image",
+ "mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size", "mask-type", "max-block-size",
+ "max-height", "max-inline-size", "max-width", "min-block-size", "min-height", "min-inline-size", "min-width",
+ "mix-blend-mode", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "none", "normal", "object-fit",
+ "object-position", "opacity", "order", "orphans", "outline", "outline-color", "outline-offset", "outline-style",
+ "outline-width", "overflow", "overflow-wrap", "overflow-x", "overflow-y", "padding", "padding-block",
+ "padding-block-end", "padding-block-start", "padding-bottom", "padding-inline", "padding-inline-end",
+ "padding-inline-start", "padding-left", "padding-right", "padding-top", "page-break-after", "page-break-before",
+ "page-break-inside", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "pointer-events",
+ "position", "quotes", "resize", "rest", "rest-after", "rest-before", "right", "row-gap", "scroll-margin",
+ "scroll-margin-block", "scroll-margin-block-end", "scroll-margin-block-start", "scroll-margin-bottom",
+ "scroll-margin-inline", "scroll-margin-inline-end", "scroll-margin-inline-start", "scroll-margin-left",
+ "scroll-margin-right", "scroll-margin-top", "scroll-padding", "scroll-padding-block", "scroll-padding-block-end",
+ "scroll-padding-block-start", "scroll-padding-bottom", "scroll-padding-inline", "scroll-padding-inline-end",
+ "scroll-padding-inline-start", "scroll-padding-left", "scroll-padding-right", "scroll-padding-top",
+ "scroll-snap-align", "scroll-snap-stop", "scroll-snap-type", "scrollbar-color", "scrollbar-gutter",
+ "scrollbar-width", "shape-image-threshold", "shape-margin", "shape-outside", "speak", "speak-as", "src", "tab-size",
+ "table-layout", "text-align", "text-align-all", "text-align-last", "text-combine-upright", "text-decoration",
+ "text-decoration-color", "text-decoration-line", "text-decoration-style", "text-emphasis", "text-emphasis-color",
+ "text-emphasis-position", "text-emphasis-style", "text-indent", "text-justify", "text-orientation", "text-overflow",
+ "text-rendering", "text-shadow", "text-transform", "text-underline-position", "top", "transform", "transform-box",
+ "transform-origin", "transform-style", "transition", "transition-delay", "transition-duration",
+ "transition-property", "transition-timing-function", "unicode-bidi", "vertical-align", "visibility",
+ "voice-balance", "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
+ "voice-volume", "white-space", "widows", "width", "will-change", "word-break", "word-spacing", "word-wrap",
+ "writing-mode", "z-index"
+ ].reverse(),
+ ie = ne.concat(te);
+var re = "\\.([0-9](_*[0-9])*)",
+ se = "[0-9a-fA-F](_*[0-9a-fA-F])*",
+ oe = {
+ className: "number",
+ variants: [{
+ begin: `(\\b([0-9](_*[0-9])*)((${re})|\\.)?|(${re}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
+ }, {
+ begin: `\\b([0-9](_*[0-9])*)((${re})[fFdD]?\\b|\\.([fFdD]\\b)?)`
+ }, {
+ begin: `(${re})[fFdD]?\\b`
+ }, {
+ begin: "\\b([0-9](_*[0-9])*)[fFdD]\\b"
+ }, {
+ begin: `\\b0[xX]((${se})\\.?|(${se})?\\.(${se}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
+ }, {
+ begin: "\\b(0|[1-9](_*[0-9])*)[lL]?\\b"
+ }, {
+ begin: `\\b0[xX](${se})[lL]?\\b`
+ }, {
+ begin: "\\b0(_*[0-7])*[lL]?\\b"
+ }, {
+ begin: "\\b0[bB][01](_*[01])*[lL]?\\b"
+ }],
+ relevance: 0
+ };
+
+function le(e, n, t) {
+ return -1 === t ? "" : e.replace(n, (a => le(e, n, t - 1)))
+}
+const ce = "[A-Za-z$_][0-9A-Za-z$_]*",
+ de = ["as", "in", "of", "if", "for", "while", "finally", "var", "new", "function", "do", "return", "void", "else",
+ "break", "catch", "instanceof", "with", "throw", "case", "default", "try", "switch", "continue", "typeof", "delete",
+ "let", "yield", "const", "class", "debugger", "async", "await", "static", "import", "from", "export", "extends"
+ ],
+ ge = ["true", "false", "null", "undefined", "NaN", "Infinity"],
+ ue = ["Object", "Function", "Boolean", "Symbol", "Math", "Date", "Number", "BigInt", "String", "RegExp", "Array",
+ "Float32Array", "Float64Array", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Int32Array",
+ "Uint16Array", "Uint32Array", "BigInt64Array", "BigUint64Array", "Set", "Map", "WeakSet", "WeakMap", "ArrayBuffer",
+ "SharedArrayBuffer", "Atomics", "DataView", "JSON", "Promise", "Generator", "GeneratorFunction", "AsyncFunction",
+ "Reflect", "Proxy", "Intl", "WebAssembly"
+ ],
+ be = ["Error", "EvalError", "InternalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError"],
+ me = ["setInterval", "setTimeout", "clearInterval", "clearTimeout", "require", "exports", "eval", "isFinite", "isNaN",
+ "parseFloat", "parseInt", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "unescape"
+ ],
+ pe = ["arguments", "this", "super", "console", "window", "document", "localStorage", "module", "global"],
+ _e = [].concat(me, ue, be);
+
+function he(e) {
+ const n = e.regex,
+ t = ce,
+ a = {
+ begin: /<[A-Za-z0-9\\._:-]+/,
+ end: /\/[A-Za-z0-9\\._:-]+>|\/>/,
+ isTrulyOpeningTag: (e, n) => {
+ const t = e[0].length + e.index,
+ a = e.input[t];
+ if ("<" === a || "," === a) return void n.ignoreMatch();
+ let i;
+ ">" === a && (((e, {
+ after: n
+ }) => {
+ const t = "" + e[0].slice(1);
+ return -1 !== e.input.indexOf(t, n)
+ })(e, {
+ after: t
+ }) || n.ignoreMatch());
+ const r = e.input.substring(t);
+ ((i = r.match(/^\s*=/)) || (i = r.match(/^\s+extends\s+/)) && 0 === i.index) && n.ignoreMatch()
+ }
+ },
+ i = {
+ $pattern: ce,
+ keyword: de,
+ literal: ge,
+ built_in: _e,
+ "variable.language": pe
+ },
+ r = "\\.([0-9](_?[0-9])*)",
+ s = "0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",
+ o = {
+ className: "number",
+ variants: [{
+ begin: `(\\b(${s})((${r})|\\.)?|(${r}))[eE][+-]?([0-9](_?[0-9])*)\\b`
+ }, {
+ begin: `\\b(${s})\\b((${r})\\b|\\.)?|(${r})\\b`
+ }, {
+ begin: "\\b(0|[1-9](_?[0-9])*)n\\b"
+ }, {
+ begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"
+ }, {
+ begin: "\\b0[bB][0-1](_?[0-1])*n?\\b"
+ }, {
+ begin: "\\b0[oO][0-7](_?[0-7])*n?\\b"
+ }, {
+ begin: "\\b0[0-7]+n?\\b"
+ }],
+ relevance: 0
+ },
+ l = {
+ className: "subst",
+ begin: "\\$\\{",
+ end: "\\}",
+ keywords: i,
+ contains: []
+ },
+ c = {
+ begin: "html`",
+ end: "",
+ starts: {
+ end: "`",
+ returnEnd: !1,
+ contains: [e.BACKSLASH_ESCAPE, l],
+ subLanguage: "xml"
+ }
+ },
+ d = {
+ begin: "css`",
+ end: "",
+ starts: {
+ end: "`",
+ returnEnd: !1,
+ contains: [e.BACKSLASH_ESCAPE, l],
+ subLanguage: "css"
+ }
+ },
+ g = {
+ className: "string",
+ begin: "`",
+ end: "`",
+ contains: [e.BACKSLASH_ESCAPE, l]
+ },
+ u = {
+ className: "comment",
+ variants: [e.COMMENT(/\/\*\*(?!\/)/, "\\*/", {
+ relevance: 0,
+ contains: [{
+ begin: "(?=@[A-Za-z]+)",
+ relevance: 0,
+ contains: [{
+ className: "doctag",
+ begin: "@[A-Za-z]+"
+ }, {
+ className: "type",
+ begin: "\\{",
+ end: "\\}",
+ excludeEnd: !0,
+ excludeBegin: !0,
+ relevance: 0
+ }, {
+ className: "variable",
+ begin: t + "(?=\\s*(-)|$)",
+ endsParent: !0,
+ relevance: 0
+ }, {
+ begin: /(?=[^\n])\s/,
+ relevance: 0
+ }]
+ }]
+ }), e.C_BLOCK_COMMENT_MODE, e.C_LINE_COMMENT_MODE]
+ },
+ b = [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, c, d, g, {
+ match: /\$\d+/
+ }, o];
+ l.contains = b.concat({
+ begin: /\{/,
+ end: /\}/,
+ keywords: i,
+ contains: ["self"].concat(b)
+ });
+ const m = [].concat(u, l.contains),
+ p = m.concat([{
+ begin: /\(/,
+ end: /\)/,
+ keywords: i,
+ contains: ["self"].concat(m)
+ }]),
+ _ = {
+ className: "params",
+ begin: /\(/,
+ end: /\)/,
+ excludeBegin: !0,
+ excludeEnd: !0,
+ keywords: i,
+ contains: p
+ },
+ h = {
+ variants: [{
+ match: [/class/, /\s+/, t, /\s+/, /extends/, /\s+/, n.concat(t, "(", n.concat(/\./, t), ")*")],
+ scope: {
+ 1: "keyword",
+ 3: "title.class",
+ 5: "keyword",
+ 7: "title.class.inherited"
+ }
+ }, {
+ match: [/class/, /\s+/, t],
+ scope: {
+ 1: "keyword",
+ 3: "title.class"
+ }
+ }]
+ },
+ f = {
+ relevance: 0,
+ match: n.either(/\bJSON/, /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,
+ /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),
+ className: "title.class",
+ keywords: {
+ _: [...ue, ...be]
+ }
+ },
+ E = {
+ variants: [{
+ match: [/function/, /\s+/, t, /(?=\s*\()/]
+ }, {
+ match: [/function/, /\s*(?=\()/]
+ }],
+ className: {
+ 1: "keyword",
+ 3: "title.function"
+ },
+ label: "func.def",
+ contains: [_],
+ illegal: /%/
+ },
+ y = {
+ match: n.concat(/\b/, (w = [...me, "super", "import"], n.concat("(?!", w.join("|"), ")")), t, n.lookahead(/\(/)),
+ className: "title.function",
+ relevance: 0
+ };
+ var w;
+ const N = {
+ begin: n.concat(/\./, n.lookahead(n.concat(t, /(?![0-9A-Za-z$_(])/))),
+ end: t,
+ excludeBegin: !0,
+ keywords: "prototype",
+ className: "property",
+ relevance: 0
+ },
+ v = {
+ match: [/get|set/, /\s+/, t, /(?=\()/],
+ className: {
+ 1: "keyword",
+ 3: "title.function"
+ },
+ contains: [{
+ begin: /\(\)/
+ }, _]
+ },
+ O = "(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|" + e.UNDERSCORE_IDENT_RE + ")\\s*=>",
+ k = {
+ match: [/const|var|let/, /\s+/, t, /\s*/, /=\s*/, /(async\s*)?/, n.lookahead(O)],
+ keywords: "async",
+ className: {
+ 1: "keyword",
+ 3: "title.function"
+ },
+ contains: [_]
+ };
+ return {
+ name: "Javascript",
+ aliases: ["js", "jsx", "mjs", "cjs"],
+ keywords: i,
+ exports: {
+ PARAMS_CONTAINS: p,
+ CLASS_REFERENCE: f
+ },
+ illegal: /#(?![$_A-z])/,
+ contains: [e.SHEBANG({
+ label: "shebang",
+ binary: "node",
+ relevance: 5
+ }), {
+ label: "use_strict",
+ className: "meta",
+ relevance: 10,
+ begin: /^\s*['"]use (strict|asm)['"]/
+ }, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, c, d, g, u, {
+ match: /\$\d+/
+ }, o, f, {
+ className: "attr",
+ begin: t + n.lookahead(":"),
+ relevance: 0
+ }, k, {
+ begin: "(" + e.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*",
+ keywords: "return throw case",
+ relevance: 0,
+ contains: [u, e.REGEXP_MODE, {
+ className: "function",
+ begin: O,
+ returnBegin: !0,
+ end: "\\s*=>",
+ contains: [{
+ className: "params",
+ variants: [{
+ begin: e.UNDERSCORE_IDENT_RE,
+ relevance: 0
+ }, {
+ className: null,
+ begin: /\(\s*\)/,
+ skip: !0
+ }, {
+ begin: /\(/,
+ end: /\)/,
+ excludeBegin: !0,
+ excludeEnd: !0,
+ keywords: i,
+ contains: p
+ }]
+ }]
+ }, {
+ begin: /,/,
+ relevance: 0
+ }, {
+ match: /\s+/,
+ relevance: 0
+ }, {
+ variants: [{
+ begin: "<>",
+ end: ">"
+ }, {
+ match: /<[A-Za-z0-9\\._:-]+\s*\/>/
+ }, {
+ begin: a.begin,
+ "on:begin": a.isTrulyOpeningTag,
+ end: a.end
+ }],
+ subLanguage: "xml",
+ contains: [{
+ begin: a.begin,
+ end: a.end,
+ skip: !0,
+ contains: ["self"]
+ }]
+ }]
+ }, E, {
+ beginKeywords: "while if switch catch for"
+ }, {
+ begin: "\\b(?!function)" + e.UNDERSCORE_IDENT_RE +
+ "\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
+ returnBegin: !0,
+ label: "func.def",
+ contains: [_, e.inherit(e.TITLE_MODE, {
+ begin: t,
+ className: "title.function"
+ })]
+ }, {
+ match: /\.\.\./,
+ relevance: 0
+ }, N, {
+ match: "\\$" + t,
+ relevance: 0
+ }, {
+ match: [/\bconstructor(?=\s*\()/],
+ className: {
+ 1: "title.function"
+ },
+ contains: [_]
+ }, y, {
+ relevance: 0,
+ match: /\b[A-Z][A-Z_0-9]+\b/,
+ className: "variable.constant"
+ }, h, v, {
+ match: /\$[(.]/
+ }]
+ }
+}
+const fe = e => m(/\b/, e, /\w$/.test(e) ? /\b/ : /\B/),
+ Ee = ["Protocol", "Type"].map(fe),
+ ye = ["init", "self"].map(fe),
+ we = ["Any", "Self"],
+ Ne = ["actor", "any", "associatedtype", "async", "await", /as\?/, /as!/, "as", "break", "case", "catch", "class",
+ "continue", "convenience", "default", "defer", "deinit", "didSet", "distributed", "do", "dynamic", "else", "enum",
+ "extension", "fallthrough", /fileprivate\(set\)/, "fileprivate", "final", "for", "func", "get", "guard", "if",
+ "import", "indirect", "infix", /init\?/, /init!/, "inout", /internal\(set\)/, "internal", "in", "is", "isolated",
+ "nonisolated", "lazy", "let", "mutating", "nonmutating", /open\(set\)/, "open", "operator", "optional", "override",
+ "postfix", "precedencegroup", "prefix", /private\(set\)/, "private", "protocol", /public\(set\)/, "public",
+ "repeat", "required", "rethrows", "return", "set", "some", "static", "struct", "subscript", "super", "switch",
+ "throws", "throw", /try\?/, /try!/, "try", "typealias", /unowned\(safe\)/, /unowned\(unsafe\)/, "unowned", "var",
+ "weak", "where", "while", "willSet"
+ ],
+ ve = ["false", "nil", "true"],
+ Oe = ["assignment", "associativity", "higherThan", "left", "lowerThan", "none", "right"],
+ ke = ["#colorLiteral", "#column", "#dsohandle", "#else", "#elseif", "#endif", "#error", "#file", "#fileID",
+ "#fileLiteral", "#filePath", "#function", "#if", "#imageLiteral", "#keyPath", "#line", "#selector",
+ "#sourceLocation", "#warn_unqualified_access", "#warning"
+ ],
+ xe = ["abs", "all", "any", "assert", "assertionFailure", "debugPrint", "dump", "fatalError", "getVaList",
+ "isKnownUniquelyReferenced", "max", "min", "numericCast", "pointwiseMax", "pointwiseMin", "precondition",
+ "preconditionFailure", "print", "readLine", "repeatElement", "sequence", "stride", "swap",
+ "swift_unboxFromSwiftValueWithType", "transcode", "type", "unsafeBitCast", "unsafeDowncast", "withExtendedLifetime",
+ "withUnsafeMutablePointer", "withUnsafePointer", "withVaList", "withoutActuallyEscaping", "zip"
+ ],
+ Me = p(/[/=\-+!*%<>&|^~?]/, /[\u00A1-\u00A7]/, /[\u00A9\u00AB]/, /[\u00AC\u00AE]/, /[\u00B0\u00B1]/,
+ /[\u00B6\u00BB\u00BF\u00D7\u00F7]/, /[\u2016-\u2017]/, /[\u2020-\u2027]/, /[\u2030-\u203E]/, /[\u2041-\u2053]/,
+ /[\u2055-\u205E]/, /[\u2190-\u23FF]/, /[\u2500-\u2775]/, /[\u2794-\u2BFF]/, /[\u2E00-\u2E7F]/, /[\u3001-\u3003]/,
+ /[\u3008-\u3020]/, /[\u3030]/),
+ Se = p(Me, /[\u0300-\u036F]/, /[\u1DC0-\u1DFF]/, /[\u20D0-\u20FF]/, /[\uFE00-\uFE0F]/, /[\uFE20-\uFE2F]/),
+ Ae = m(Me, Se, "*"),
+ Ce = p(/[a-zA-Z_]/, /[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,
+ /[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/, /[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,
+ /[\u1E00-\u1FFF]/, /[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,
+ /[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/, /[\u2C00-\u2DFF\u2E80-\u2FFF]/,
+ /[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/, /[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,
+ /[\uFE47-\uFEFE\uFF00-\uFFFD]/),
+ Te = p(Ce, /\d/, /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),
+ Re = m(Ce, Te, "*"),
+ De = m(/[A-Z]/, Te, "*"),
+ Ie = ["autoclosure", m(/convention\(/, p("swift", "block", "c"), /\)/), "discardableResult", "dynamicCallable",
+ "dynamicMemberLookup", "escaping", "frozen", "GKInspectable", "IBAction", "IBDesignable", "IBInspectable",
+ "IBOutlet", "IBSegueAction", "inlinable", "main", "nonobjc", "NSApplicationMain", "NSCopying", "NSManaged", m(
+ /objc\(/, Re, /\)/), "objc", "objcMembers", "propertyWrapper", "requires_stored_property_inits", "resultBuilder",
+ "testable", "UIApplicationMain", "unknown", "usableFromInline"
+ ],
+ Le = ["iOS", "iOSApplicationExtension", "macOS", "macOSApplicationExtension", "macCatalyst",
+ "macCatalystApplicationExtension", "watchOS", "watchOSApplicationExtension", "tvOS", "tvOSApplicationExtension",
+ "swift"
+ ];
+var Be = Object.freeze({
+ __proto__: null,
+ grmr_bash: e => {
+ const n = e.regex,
+ t = {},
+ a = {
+ begin: /\$\{/,
+ end: /\}/,
+ contains: ["self", {
+ begin: /:-/,
+ contains: [t]
+ }]
+ };
+ Object.assign(t, {
+ className: "variable",
+ variants: [{
+ begin: n.concat(/\$[\w\d#@][\w\d_]*/, "(?![\\w\\d])(?![$])")
+ }, a]
+ });
+ const i = {
+ className: "subst",
+ begin: /\$\(/,
+ end: /\)/,
+ contains: [e.BACKSLASH_ESCAPE]
+ },
+ r = {
+ begin: /<<-?\s*(?=\w+)/,
+ starts: {
+ contains: [e.END_SAME_AS_BEGIN({
+ begin: /(\w+)/,
+ end: /(\w+)/,
+ className: "string"
+ })]
+ }
+ },
+ s = {
+ className: "string",
+ begin: /"/,
+ end: /"/,
+ contains: [e.BACKSLASH_ESCAPE, t, i]
+ };
+ i.contains.push(s);
+ const o = {
+ begin: /\$?\(\(/,
+ end: /\)\)/,
+ contains: [{
+ begin: /\d+#[0-9a-f]+/,
+ className: "number"
+ }, e.NUMBER_MODE, t]
+ },
+ l = e.SHEBANG({
+ binary: "(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",
+ relevance: 10
+ }),
+ c = {
+ className: "function",
+ begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
+ returnBegin: !0,
+ contains: [e.inherit(e.TITLE_MODE, {
+ begin: /\w[\w\d_]*/
+ })],
+ relevance: 0
+ };
+ return {
+ name: "Bash",
+ aliases: ["sh"],
+ keywords: {
+ $pattern: /\b[a-z][a-z0-9._-]+\b/,
+ keyword: ["if", "then", "else", "elif", "fi", "for", "while", "in", "do", "done", "case", "esac",
+ "function"
+ ],
+ literal: ["true", "false"],
+ built_in: ["break", "cd", "continue", "eval", "exec", "exit", "export", "getopts", "hash", "pwd",
+ "readonly", "return", "shift", "test", "times", "trap", "umask", "unset", "alias", "bind", "builtin",
+ "caller", "command", "declare", "echo", "enable", "help", "let", "local", "logout", "mapfile",
+ "printf", "read", "readarray", "source", "type", "typeset", "ulimit", "unalias", "set", "shopt",
+ "autoload", "bg", "bindkey", "bye", "cap", "chdir", "clone", "comparguments", "compcall", "compctl",
+ "compdescribe", "compfiles", "compgroups", "compquote", "comptags", "comptry", "compvalues", "dirs",
+ "disable", "disown", "echotc", "echoti", "emulate", "fc", "fg", "float", "functions", "getcap",
+ "getln", "history", "integer", "jobs", "kill", "limit", "log", "noglob", "popd", "print", "pushd",
+ "pushln", "rehash", "sched", "setcap", "setopt", "stat", "suspend", "ttyctl", "unfunction", "unhash",
+ "unlimit", "unsetopt", "vared", "wait", "whence", "where", "which", "zcompile", "zformat", "zftp",
+ "zle", "zmodload", "zparseopts", "zprof", "zpty", "zregexparse", "zsocket", "zstyle", "ztcp", "chcon",
+ "chgrp", "chown", "chmod", "cp", "dd", "df", "dir", "dircolors", "ln", "ls", "mkdir", "mkfifo",
+ "mknod", "mktemp", "mv", "realpath", "rm", "rmdir", "shred", "sync", "touch", "truncate", "vdir",
+ "b2sum", "base32", "base64", "cat", "cksum", "comm", "csplit", "cut", "expand", "fmt", "fold", "head",
+ "join", "md5sum", "nl", "numfmt", "od", "paste", "ptx", "pr", "sha1sum", "sha224sum", "sha256sum",
+ "sha384sum", "sha512sum", "shuf", "sort", "split", "sum", "tac", "tail", "tr", "tsort", "unexpand",
+ "uniq", "wc", "arch", "basename", "chroot", "date", "dirname", "du", "echo", "env", "expr", "factor",
+ "groups", "hostid", "id", "link", "logname", "nice", "nohup", "nproc", "pathchk", "pinky", "printenv",
+ "printf", "pwd", "readlink", "runcon", "seq", "sleep", "stat", "stdbuf", "stty", "tee", "test",
+ "timeout", "tty", "uname", "unlink", "uptime", "users", "who", "whoami", "yes"
+ ]
+ },
+ contains: [l, e.SHEBANG(), c, o, e.HASH_COMMENT_MODE, r, {
+ match: /(\/[a-z._-]+)+/
+ }, s, {
+ className: "",
+ begin: /\\"/
+ }, {
+ className: "string",
+ begin: /'/,
+ end: /'/
+ }, t]
+ }
+ },
+ grmr_c: e => {
+ const n = e.regex,
+ t = e.COMMENT("//", "$", {
+ contains: [{
+ begin: /\\\n/
+ }]
+ }),
+ a = "[a-zA-Z_]\\w*::",
+ i = "(decltype\\(auto\\)|" + n.optional(a) + "[a-zA-Z_]\\w*" + n.optional("<[^<>]+>") + ")",
+ r = {
+ className: "type",
+ variants: [{
+ begin: "\\b[a-z\\d_]*_t\\b"
+ }, {
+ match: /\batomic_[a-z]{3,6}\b/
+ }]
+ },
+ s = {
+ className: "string",
+ variants: [{
+ begin: '(u8?|U|L)?"',
+ end: '"',
+ illegal: "\\n",
+ contains: [e.BACKSLASH_ESCAPE]
+ }, {
+ begin: "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
+ end: "'",
+ illegal: "."
+ }, e.END_SAME_AS_BEGIN({
+ begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,
+ end: /\)([^()\\ ]{0,16})"/
+ })]
+ },
+ o = {
+ className: "number",
+ variants: [{
+ begin: "\\b(0b[01']+)"
+ }, {
+ begin: "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
+ }, {
+ begin: "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+ }],
+ relevance: 0
+ },
+ l = {
+ className: "meta",
+ begin: /#\s*[a-z]+\b/,
+ end: /$/,
+ keywords: {
+ keyword: "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
+ },
+ contains: [{
+ begin: /\\\n/,
+ relevance: 0
+ }, e.inherit(s, {
+ className: "string"
+ }), {
+ className: "string",
+ begin: /<.*?>/
+ }, t, e.C_BLOCK_COMMENT_MODE]
+ },
+ c = {
+ className: "title",
+ begin: n.optional(a) + e.IDENT_RE,
+ relevance: 0
+ },
+ d = n.optional(a) + e.IDENT_RE + "\\s*\\(",
+ g = {
+ keyword: ["asm", "auto", "break", "case", "continue", "default", "do", "else", "enum", "extern", "for",
+ "fortran", "goto", "if", "inline", "register", "restrict", "return", "sizeof", "struct", "switch",
+ "typedef", "union", "volatile", "while", "_Alignas", "_Alignof", "_Atomic", "_Generic", "_Noreturn",
+ "_Static_assert", "_Thread_local", "alignas", "alignof", "noreturn", "static_assert", "thread_local",
+ "_Pragma"
+ ],
+ type: ["float", "double", "signed", "unsigned", "int", "short", "long", "char", "void", "_Bool",
+ "_Complex", "_Imaginary", "_Decimal32", "_Decimal64", "_Decimal128", "const", "static", "complex",
+ "bool", "imaginary"
+ ],
+ literal: "true false NULL",
+ built_in: "std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"
+ },
+ u = [l, r, t, e.C_BLOCK_COMMENT_MODE, o, s],
+ b = {
+ variants: [{
+ begin: /=/,
+ end: /;/
+ }, {
+ begin: /\(/,
+ end: /\)/
+ }, {
+ beginKeywords: "new throw return else",
+ end: /;/
+ }],
+ keywords: g,
+ contains: u.concat([{
+ begin: /\(/,
+ end: /\)/,
+ keywords: g,
+ contains: u.concat(["self"]),
+ relevance: 0
+ }]),
+ relevance: 0
+ },
+ m = {
+ begin: "(" + i + "[\\*&\\s]+)+" + d,
+ returnBegin: !0,
+ end: /[{;=]/,
+ excludeEnd: !0,
+ keywords: g,
+ illegal: /[^\w\s\*&:<>.]/,
+ contains: [{
+ begin: "decltype\\(auto\\)",
+ keywords: g,
+ relevance: 0
+ }, {
+ begin: d,
+ returnBegin: !0,
+ contains: [e.inherit(c, {
+ className: "title.function"
+ })],
+ relevance: 0
+ }, {
+ relevance: 0,
+ match: /,/
+ }, {
+ className: "params",
+ begin: /\(/,
+ end: /\)/,
+ keywords: g,
+ relevance: 0,
+ contains: [t, e.C_BLOCK_COMMENT_MODE, s, o, r, {
+ begin: /\(/,
+ end: /\)/,
+ keywords: g,
+ relevance: 0,
+ contains: ["self", t, e.C_BLOCK_COMMENT_MODE, s, o, r]
+ }]
+ }, r, t, e.C_BLOCK_COMMENT_MODE, l]
+ };
+ return {
+ name: "C",
+ aliases: ["h"],
+ keywords: g,
+ disableAutodetect: !0,
+ illegal: "",
+ contains: [].concat(b, m, u, [l, {
+ begin: e.IDENT_RE + "::",
+ keywords: g
+ }, {
+ className: "class",
+ beginKeywords: "enum class struct union",
+ end: /[{;:<>=]/,
+ contains: [{
+ beginKeywords: "final class struct"
+ }, e.TITLE_MODE]
+ }]),
+ exports: {
+ preprocessor: l,
+ strings: s,
+ keywords: g
+ }
+ }
+ },
+ grmr_cpp: e => {
+ const n = e.regex,
+ t = e.COMMENT("//", "$", {
+ contains: [{
+ begin: /\\\n/
+ }]
+ }),
+ a = "[a-zA-Z_]\\w*::",
+ i = "(?!struct)(decltype\\(auto\\)|" + n.optional(a) + "[a-zA-Z_]\\w*" + n.optional("<[^<>]+>") + ")",
+ r = {
+ className: "type",
+ begin: "\\b[a-z\\d_]*_t\\b"
+ },
+ s = {
+ className: "string",
+ variants: [{
+ begin: '(u8?|U|L)?"',
+ end: '"',
+ illegal: "\\n",
+ contains: [e.BACKSLASH_ESCAPE]
+ }, {
+ begin: "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
+ end: "'",
+ illegal: "."
+ }, e.END_SAME_AS_BEGIN({
+ begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,
+ end: /\)([^()\\ ]{0,16})"/
+ })]
+ },
+ o = {
+ className: "number",
+ variants: [{
+ begin: "\\b(0b[01']+)"
+ }, {
+ begin: "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
+ }, {
+ begin: "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+ }],
+ relevance: 0
+ },
+ l = {
+ className: "meta",
+ begin: /#\s*[a-z]+\b/,
+ end: /$/,
+ keywords: {
+ keyword: "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
+ },
+ contains: [{
+ begin: /\\\n/,
+ relevance: 0
+ }, e.inherit(s, {
+ className: "string"
+ }), {
+ className: "string",
+ begin: /<.*?>/
+ }, t, e.C_BLOCK_COMMENT_MODE]
+ },
+ c = {
+ className: "title",
+ begin: n.optional(a) + e.IDENT_RE,
+ relevance: 0
+ },
+ d = n.optional(a) + e.IDENT_RE + "\\s*\\(",
+ g = {
+ type: ["bool", "char", "char16_t", "char32_t", "char8_t", "double", "float", "int", "long", "short",
+ "void", "wchar_t", "unsigned", "signed", "const", "static"
+ ],
+ keyword: ["alignas", "alignof", "and", "and_eq", "asm", "atomic_cancel", "atomic_commit",
+ "atomic_noexcept", "auto", "bitand", "bitor", "break", "case", "catch", "class", "co_await",
+ "co_return", "co_yield", "compl", "concept", "const_cast|10", "consteval", "constexpr", "constinit",
+ "continue", "decltype", "default", "delete", "do", "dynamic_cast|10", "else", "enum", "explicit",
+ "export", "extern", "false", "final", "for", "friend", "goto", "if", "import", "inline", "module",
+ "mutable", "namespace", "new", "noexcept", "not", "not_eq", "nullptr", "operator", "or", "or_eq",
+ "override", "private", "protected", "public", "reflexpr", "register", "reinterpret_cast|10",
+ "requires", "return", "sizeof", "static_assert", "static_cast|10", "struct", "switch", "synchronized",
+ "template", "this", "thread_local", "throw", "transaction_safe", "transaction_safe_dynamic", "true",
+ "try", "typedef", "typeid", "typename", "union", "using", "virtual", "volatile", "while", "xor",
+ "xor_eq"
+ ],
+ literal: ["NULL", "false", "nullopt", "nullptr", "true"],
+ built_in: ["_Pragma"],
+ _type_hints: ["any", "auto_ptr", "barrier", "binary_semaphore", "bitset", "complex", "condition_variable",
+ "condition_variable_any", "counting_semaphore", "deque", "false_type", "future", "imaginary",
+ "initializer_list", "istringstream", "jthread", "latch", "lock_guard", "multimap", "multiset",
+ "mutex", "optional", "ostringstream", "packaged_task", "pair", "promise", "priority_queue", "queue",
+ "recursive_mutex", "recursive_timed_mutex", "scoped_lock", "set", "shared_future", "shared_lock",
+ "shared_mutex", "shared_timed_mutex", "shared_ptr", "stack", "string_view", "stringstream",
+ "timed_mutex", "thread", "true_type", "tuple", "unique_lock", "unique_ptr", "unordered_map",
+ "unordered_multimap", "unordered_multiset", "unordered_set", "variant", "vector", "weak_ptr",
+ "wstring", "wstring_view"
+ ]
+ },
+ u = {
+ className: "function.dispatch",
+ relevance: 0,
+ keywords: {
+ _hint: ["abort", "abs", "acos", "apply", "as_const", "asin", "atan", "atan2", "calloc", "ceil", "cerr",
+ "cin", "clog", "cos", "cosh", "cout", "declval", "endl", "exchange", "exit", "exp", "fabs", "floor",
+ "fmod", "forward", "fprintf", "fputs", "free", "frexp", "fscanf", "future", "invoke", "isalnum",
+ "isalpha", "iscntrl", "isdigit", "isgraph", "islower", "isprint", "ispunct", "isspace", "isupper",
+ "isxdigit", "labs", "launder", "ldexp", "log", "log10", "make_pair", "make_shared",
+ "make_shared_for_overwrite", "make_tuple", "make_unique", "malloc", "memchr", "memcmp", "memcpy",
+ "memset", "modf", "move", "pow", "printf", "putchar", "puts", "realloc", "scanf", "sin", "sinh",
+ "snprintf", "sprintf", "sqrt", "sscanf", "std", "stderr", "stdin", "stdout", "strcat", "strchr",
+ "strcmp", "strcpy", "strcspn", "strlen", "strncat", "strncmp", "strncpy", "strpbrk", "strrchr",
+ "strspn", "strstr", "swap", "tan", "tanh", "terminate", "to_underlying", "tolower", "toupper",
+ "vfprintf", "visit", "vprintf", "vsprintf"
+ ]
+ },
+ begin: n.concat(/\b/, /(?!decltype)/, /(?!if)/, /(?!for)/, /(?!switch)/, /(?!while)/, e.IDENT_RE, n
+ .lookahead(/(<[^<>]+>|)\s*\(/))
+ },
+ b = [u, l, r, t, e.C_BLOCK_COMMENT_MODE, o, s],
+ m = {
+ variants: [{
+ begin: /=/,
+ end: /;/
+ }, {
+ begin: /\(/,
+ end: /\)/
+ }, {
+ beginKeywords: "new throw return else",
+ end: /;/
+ }],
+ keywords: g,
+ contains: b.concat([{
+ begin: /\(/,
+ end: /\)/,
+ keywords: g,
+ contains: b.concat(["self"]),
+ relevance: 0
+ }]),
+ relevance: 0
+ },
+ p = {
+ className: "function",
+ begin: "(" + i + "[\\*&\\s]+)+" + d,
+ returnBegin: !0,
+ end: /[{;=]/,
+ excludeEnd: !0,
+ keywords: g,
+ illegal: /[^\w\s\*&:<>.]/,
+ contains: [{
+ begin: "decltype\\(auto\\)",
+ keywords: g,
+ relevance: 0
+ }, {
+ begin: d,
+ returnBegin: !0,
+ contains: [c],
+ relevance: 0
+ }, {
+ begin: /::/,
+ relevance: 0
+ }, {
+ begin: /:/,
+ endsWithParent: !0,
+ contains: [s, o]
+ }, {
+ relevance: 0,
+ match: /,/
+ }, {
+ className: "params",
+ begin: /\(/,
+ end: /\)/,
+ keywords: g,
+ relevance: 0,
+ contains: [t, e.C_BLOCK_COMMENT_MODE, s, o, r, {
+ begin: /\(/,
+ end: /\)/,
+ keywords: g,
+ relevance: 0,
+ contains: ["self", t, e.C_BLOCK_COMMENT_MODE, s, o, r]
+ }]
+ }, r, t, e.C_BLOCK_COMMENT_MODE, l]
+ };
+ return {
+ name: "C++",
+ aliases: ["cc", "c++", "h++", "hpp", "hh", "hxx", "cxx"],
+ keywords: g,
+ illegal: "",
+ classNameAliases: {
+ "function.dispatch": "built_in"
+ },
+ contains: [].concat(m, p, u, b, [l, {
+ begin: "\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<(?!<)",
+ end: ">",
+ keywords: g,
+ contains: ["self", r]
+ }, {
+ begin: e.IDENT_RE + "::",
+ keywords: g
+ }, {
+ match: [/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/, /\s+/, /\w+/],
+ className: {
+ 1: "keyword",
+ 3: "title.class"
+ }
+ }])
+ }
+ },
+ grmr_csharp: e => {
+ const n = {
+ keyword: ["abstract", "as", "base", "break", "case", "catch", "class", "const", "continue", "do", "else",
+ "event", "explicit", "extern", "finally", "fixed", "for", "foreach", "goto", "if", "implicit", "in",
+ "interface", "internal", "is", "lock", "namespace", "new", "operator", "out", "override", "params",
+ "private", "protected", "public", "readonly", "record", "ref", "return", "scoped", "sealed", "sizeof",
+ "stackalloc", "static", "struct", "switch", "this", "throw", "try", "typeof", "unchecked", "unsafe",
+ "using", "virtual", "void", "volatile", "while"
+ ].concat(["add", "alias", "and", "ascending", "async", "await", "by", "descending", "equals", "from",
+ "get", "global", "group", "init", "into", "join", "let", "nameof", "not", "notnull", "on", "or",
+ "orderby", "partial", "remove", "select", "set", "unmanaged", "value|0", "var", "when", "where",
+ "with", "yield"
+ ]),
+ built_in: ["bool", "byte", "char", "decimal", "delegate", "double", "dynamic", "enum", "float", "int",
+ "long", "nint", "nuint", "object", "sbyte", "short", "string", "ulong", "uint", "ushort"
+ ],
+ literal: ["default", "false", "null", "true"]
+ },
+ t = e.inherit(e.TITLE_MODE, {
+ begin: "[a-zA-Z](\\.?\\w)*"
+ }),
+ a = {
+ className: "number",
+ variants: [{
+ begin: "\\b(0b[01']+)"
+ }, {
+ begin: "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"
+ }, {
+ begin: "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+ }],
+ relevance: 0
+ },
+ i = {
+ className: "string",
+ begin: '@"',
+ end: '"',
+ contains: [{
+ begin: '""'
+ }]
+ },
+ r = e.inherit(i, {
+ illegal: /\n/
+ }),
+ s = {
+ className: "subst",
+ begin: /\{/,
+ end: /\}/,
+ keywords: n
+ },
+ o = e.inherit(s, {
+ illegal: /\n/
+ }),
+ l = {
+ className: "string",
+ begin: /\$"/,
+ end: '"',
+ illegal: /\n/,
+ contains: [{
+ begin: /\{\{/
+ }, {
+ begin: /\}\}/
+ }, e.BACKSLASH_ESCAPE, o]
+ },
+ c = {
+ className: "string",
+ begin: /\$@"/,
+ end: '"',
+ contains: [{
+ begin: /\{\{/
+ }, {
+ begin: /\}\}/
+ }, {
+ begin: '""'
+ }, s]
+ },
+ d = e.inherit(c, {
+ illegal: /\n/,
+ contains: [{
+ begin: /\{\{/
+ }, {
+ begin: /\}\}/
+ }, {
+ begin: '""'
+ }, o]
+ });
+ s.contains = [c, l, i, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, a, e.C_BLOCK_COMMENT_MODE],
+ o.contains = [d, l, r, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, a, e.inherit(e.C_BLOCK_COMMENT_MODE, {
+ illegal: /\n/
+ })];
+ const g = {
+ variants: [c, l, i, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]
+ },
+ u = {
+ begin: "<",
+ end: ">",
+ contains: [{
+ beginKeywords: "in out"
+ }, t]
+ },
+ b = e.IDENT_RE + "(<" + e.IDENT_RE + "(\\s*,\\s*" + e.IDENT_RE + ")*>)?(\\[\\])?",
+ m = {
+ begin: "@" + e.IDENT_RE,
+ relevance: 0
+ };
+ return {
+ name: "C#",
+ aliases: ["cs", "c#"],
+ keywords: n,
+ illegal: /::/,
+ contains: [e.COMMENT("///", "$", {
+ returnBegin: !0,
+ contains: [{
+ className: "doctag",
+ variants: [{
+ begin: "///",
+ relevance: 0
+ }, {
+ begin: "\x3c!--|--\x3e"
+ }, {
+ begin: "?",
+ end: ">"
+ }]
+ }]
+ }), e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, {
+ className: "meta",
+ begin: "#",
+ end: "$",
+ keywords: {
+ keyword: "if else elif endif define undef warning error line region endregion pragma checksum"
+ }
+ }, g, a, {
+ beginKeywords: "class interface",
+ relevance: 0,
+ end: /[{;=]/,
+ illegal: /[^\s:,]/,
+ contains: [{
+ beginKeywords: "where class"
+ }, t, u, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
+ }, {
+ beginKeywords: "namespace",
+ relevance: 0,
+ end: /[{;=]/,
+ illegal: /[^\s:]/,
+ contains: [t, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
+ }, {
+ beginKeywords: "record",
+ relevance: 0,
+ end: /[{;=]/,
+ illegal: /[^\s:]/,
+ contains: [t, u, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
+ }, {
+ className: "meta",
+ begin: "^\\s*\\[(?=[\\w])",
+ excludeBegin: !0,
+ end: "\\]",
+ excludeEnd: !0,
+ contains: [{
+ className: "string",
+ begin: /"/,
+ end: /"/
+ }]
+ }, {
+ beginKeywords: "new return throw await else",
+ relevance: 0
+ }, {
+ className: "function",
+ begin: "(" + b + "\\s+)+" + e.IDENT_RE + "\\s*(<[^=]+>\\s*)?\\(",
+ returnBegin: !0,
+ end: /\s*[{;=]/,
+ excludeEnd: !0,
+ keywords: n,
+ contains: [{
+ beginKeywords: "public private protected static internal protected abstract async extern override unsafe virtual new sealed partial",
+ relevance: 0
+ }, {
+ begin: e.IDENT_RE + "\\s*(<[^=]+>\\s*)?\\(",
+ returnBegin: !0,
+ contains: [e.TITLE_MODE, u],
+ relevance: 0
+ }, {
+ match: /\(\)/
+ }, {
+ className: "params",
+ begin: /\(/,
+ end: /\)/,
+ excludeBegin: !0,
+ excludeEnd: !0,
+ keywords: n,
+ relevance: 0,
+ contains: [g, a, e.C_BLOCK_COMMENT_MODE]
+ }, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
+ }, m]
+ }
+ },
+ grmr_css: e => {
+ const n = e.regex,
+ t = J(e),
+ a = [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE];
+ return {
+ name: "CSS",
+ case_insensitive: !0,
+ illegal: /[=|'\$]/,
+ keywords: {
+ keyframePosition: "from to"
+ },
+ classNameAliases: {
+ keyframePosition: "selector-tag"
+ },
+ contains: [t.BLOCK_COMMENT, {
+ begin: /-(webkit|moz|ms|o)-(?=[a-z])/
+ }, t.CSS_NUMBER_MODE, {
+ className: "selector-id",
+ begin: /#[A-Za-z0-9_-]+/,
+ relevance: 0
+ }, {
+ className: "selector-class",
+ begin: "\\.[a-zA-Z-][a-zA-Z0-9_-]*",
+ relevance: 0
+ }, t.ATTRIBUTE_SELECTOR_MODE, {
+ className: "selector-pseudo",
+ variants: [{
+ begin: ":(" + ne.join("|") + ")"
+ }, {
+ begin: ":(:)?(" + te.join("|") + ")"
+ }]
+ }, t.CSS_VARIABLE, {
+ className: "attribute",
+ begin: "\\b(" + ae.join("|") + ")\\b"
+ }, {
+ begin: /:/,
+ end: /[;}{]/,
+ contains: [t.BLOCK_COMMENT, t.HEXCOLOR, t.IMPORTANT, t.CSS_NUMBER_MODE, ...a, {
+ begin: /(url|data-uri)\(/,
+ end: /\)/,
+ relevance: 0,
+ keywords: {
+ built_in: "url data-uri"
+ },
+ contains: [...a, {
+ className: "string",
+ begin: /[^)]/,
+ endsWithParent: !0,
+ excludeEnd: !0
+ }]
+ }, t.FUNCTION_DISPATCH]
+ }, {
+ begin: n.lookahead(/@/),
+ end: "[{;]",
+ relevance: 0,
+ illegal: /:/,
+ contains: [{
+ className: "keyword",
+ begin: /@-?\w[\w]*(-\w+)*/
+ }, {
+ begin: /\s/,
+ endsWithParent: !0,
+ excludeEnd: !0,
+ relevance: 0,
+ keywords: {
+ $pattern: /[a-z-]+/,
+ keyword: "and or not only",
+ attribute: ee.join(" ")
+ },
+ contains: [{
+ begin: /[a-z-]+(?=:)/,
+ className: "attribute"
+ }, ...a, t.CSS_NUMBER_MODE]
+ }]
+ }, {
+ className: "selector-tag",
+ begin: "\\b(" + Y.join("|") + ")\\b"
+ }]
+ }
+ },
+ grmr_diff: e => {
+ const n = e.regex;
+ return {
+ name: "Diff",
+ aliases: ["patch"],
+ contains: [{
+ className: "meta",
+ relevance: 10,
+ match: n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/, /^\*\*\* +\d+,\d+ +\*\*\*\*$/, /^--- +\d+,\d+ +----$/)
+ }, {
+ className: "comment",
+ variants: [{
+ begin: n.either(/Index: /, /^index/, /={3,}/, /^-{3}/, /^\*{3} /, /^\+{3}/, /^diff --git/),
+ end: /$/
+ }, {
+ match: /^\*{15}$/
+ }]
+ }, {
+ className: "addition",
+ begin: /^\+/,
+ end: /$/
+ }, {
+ className: "deletion",
+ begin: /^-/,
+ end: /$/
+ }, {
+ className: "addition",
+ begin: /^!/,
+ end: /$/
+ }]
+ }
+ },
+ grmr_go: e => {
+ const n = {
+ keyword: ["break", "case", "chan", "const", "continue", "default", "defer", "else", "fallthrough", "for",
+ "func", "go", "goto", "if", "import", "interface", "map", "package", "range", "return", "select",
+ "struct", "switch", "type", "var"
+ ],
+ type: ["bool", "byte", "complex64", "complex128", "error", "float32", "float64", "int8", "int16", "int32",
+ "int64", "string", "uint8", "uint16", "uint32", "uint64", "int", "uint", "uintptr", "rune"
+ ],
+ literal: ["true", "false", "iota", "nil"],
+ built_in: ["append", "cap", "close", "complex", "copy", "imag", "len", "make", "new", "panic", "print",
+ "println", "real", "recover", "delete"
+ ]
+ };
+ return {
+ name: "Go",
+ aliases: ["golang"],
+ keywords: n,
+ illegal: "",
+ contains: [e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, {
+ className: "string",
+ variants: [e.QUOTE_STRING_MODE, e.APOS_STRING_MODE, {
+ begin: "`",
+ end: "`"
+ }]
+ }, {
+ className: "number",
+ variants: [{
+ begin: e.C_NUMBER_RE + "[i]",
+ relevance: 1
+ }, e.C_NUMBER_MODE]
+ }, {
+ begin: /:=/
+ }, {
+ className: "function",
+ beginKeywords: "func",
+ end: "\\s*(\\{|$)",
+ excludeEnd: !0,
+ contains: [e.TITLE_MODE, {
+ className: "params",
+ begin: /\(/,
+ end: /\)/,
+ endsParent: !0,
+ keywords: n,
+ illegal: /["']/
+ }]
+ }]
+ }
+ },
+ grmr_graphql: e => {
+ const n = e.regex;
+ return {
+ name: "GraphQL",
+ aliases: ["gql"],
+ case_insensitive: !0,
+ disableAutodetect: !1,
+ keywords: {
+ keyword: ["query", "mutation", "subscription", "type", "input", "schema", "directive", "interface",
+ "union", "scalar", "fragment", "enum", "on"
+ ],
+ literal: ["true", "false", "null"]
+ },
+ contains: [e.HASH_COMMENT_MODE, e.QUOTE_STRING_MODE, e.NUMBER_MODE, {
+ scope: "punctuation",
+ match: /[.]{3}/,
+ relevance: 0
+ }, {
+ scope: "punctuation",
+ begin: /[\!\(\)\:\=\[\]\{\|\}]{1}/,
+ relevance: 0
+ }, {
+ scope: "variable",
+ begin: /\$/,
+ end: /\W/,
+ excludeEnd: !0,
+ relevance: 0
+ }, {
+ scope: "meta",
+ match: /@\w+/,
+ excludeEnd: !0
+ }, {
+ scope: "symbol",
+ begin: n.concat(/[_A-Za-z][_0-9A-Za-z]*/, n.lookahead(/\s*:/)),
+ relevance: 0
+ }],
+ illegal: [/[;<']/, /BEGIN/]
+ }
+ },
+ grmr_ini: e => {
+ const n = e.regex,
+ t = {
+ className: "number",
+ relevance: 0,
+ variants: [{
+ begin: /([+-]+)?[\d]+_[\d_]+/
+ }, {
+ begin: e.NUMBER_RE
+ }]
+ },
+ a = e.COMMENT();
+ a.variants = [{
+ begin: /;/,
+ end: /$/
+ }, {
+ begin: /#/,
+ end: /$/
+ }];
+ const i = {
+ className: "variable",
+ variants: [{
+ begin: /\$[\w\d"][\w\d_]*/
+ }, {
+ begin: /\$\{(.*?)\}/
+ }]
+ },
+ r = {
+ className: "literal",
+ begin: /\bon|off|true|false|yes|no\b/
+ },
+ s = {
+ className: "string",
+ contains: [e.BACKSLASH_ESCAPE],
+ variants: [{
+ begin: "'''",
+ end: "'''",
+ relevance: 10
+ }, {
+ begin: '"""',
+ end: '"""',
+ relevance: 10
+ }, {
+ begin: '"',
+ end: '"'
+ }, {
+ begin: "'",
+ end: "'"
+ }]
+ },
+ o = {
+ begin: /\[/,
+ end: /\]/,
+ contains: [a, r, i, s, t, "self"],
+ relevance: 0
+ },
+ l = n.either(/[A-Za-z0-9_-]+/, /"(\\"|[^"])*"/, /'[^']*'/);
+ return {
+ name: "TOML, also INI",
+ aliases: ["toml"],
+ case_insensitive: !0,
+ illegal: /\S/,
+ contains: [a, {
+ className: "section",
+ begin: /\[+/,
+ end: /\]+/
+ }, {
+ begin: n.concat(l, "(\\s*\\.\\s*", l, ")*", n.lookahead(/\s*=\s*[^#\s]/)),
+ className: "attr",
+ starts: {
+ end: /$/,
+ contains: [a, o, r, i, s, t]
+ }
+ }]
+ }
+ },
+ grmr_java: e => {
+ const n = e.regex,
+ t = "[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",
+ a = t + le("(?:<" + t + "~~~(?:\\s*,\\s*" + t + "~~~)*>)?", /~~~/g, 2),
+ i = {
+ keyword: ["synchronized", "abstract", "private", "var", "static", "if", "const ", "for", "while",
+ "strictfp", "finally", "protected", "import", "native", "final", "void", "enum", "else", "break",
+ "transient", "catch", "instanceof", "volatile", "case", "assert", "package", "default", "public",
+ "try", "switch", "continue", "throws", "protected", "public", "private", "module", "requires",
+ "exports", "do", "sealed", "yield", "permits"
+ ],
+ literal: ["false", "true", "null"],
+ type: ["char", "boolean", "long", "float", "int", "byte", "short", "double"],
+ built_in: ["super", "this"]
+ },
+ r = {
+ className: "meta",
+ begin: "@" + t,
+ contains: [{
+ begin: /\(/,
+ end: /\)/,
+ contains: ["self"]
+ }]
+ },
+ s = {
+ className: "params",
+ begin: /\(/,
+ end: /\)/,
+ keywords: i,
+ relevance: 0,
+ contains: [e.C_BLOCK_COMMENT_MODE],
+ endsParent: !0
+ };
+ return {
+ name: "Java",
+ aliases: ["jsp"],
+ keywords: i,
+ illegal: /<\/|#/,
+ contains: [e.COMMENT("/\\*\\*", "\\*/", {
+ relevance: 0,
+ contains: [{
+ begin: /\w+@/,
+ relevance: 0
+ }, {
+ className: "doctag",
+ begin: "@[A-Za-z]+"
+ }]
+ }), {
+ begin: /import java\.[a-z]+\./,
+ keywords: "import",
+ relevance: 2
+ }, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, {
+ begin: /"""/,
+ end: /"""/,
+ className: "string",
+ contains: [e.BACKSLASH_ESCAPE]
+ }, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, {
+ match: [/\b(?:class|interface|enum|extends|implements|new)/, /\s+/, t],
+ className: {
+ 1: "keyword",
+ 3: "title.class"
+ }
+ }, {
+ match: /non-sealed/,
+ scope: "keyword"
+ }, {
+ begin: [n.concat(/(?!else)/, t), /\s+/, t, /\s+/, /=(?!=)/],
+ className: {
+ 1: "type",
+ 3: "variable",
+ 5: "operator"
+ }
+ }, {
+ begin: [/record/, /\s+/, t],
+ className: {
+ 1: "keyword",
+ 3: "title.class"
+ },
+ contains: [s, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
+ }, {
+ beginKeywords: "new throw return else",
+ relevance: 0
+ }, {
+ begin: ["(?:" + a + "\\s+)", e.UNDERSCORE_IDENT_RE, /\s*(?=\()/],
+ className: {
+ 2: "title.function"
+ },
+ keywords: i,
+ contains: [{
+ className: "params",
+ begin: /\(/,
+ end: /\)/,
+ keywords: i,
+ relevance: 0,
+ contains: [r, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, oe, e.C_BLOCK_COMMENT_MODE]
+ }, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
+ }, oe, r]
+ }
+ },
+ grmr_javascript: he,
+ grmr_json: e => {
+ const n = ["true", "false", "null"],
+ t = {
+ scope: "literal",
+ beginKeywords: n.join(" ")
+ };
+ return {
+ name: "JSON",
+ keywords: {
+ literal: n
+ },
+ contains: [{
+ className: "attr",
+ begin: /"(\\.|[^\\"\r\n])*"(?=\s*:)/,
+ relevance: 1.01
+ }, {
+ match: /[{}[\],:]/,
+ className: "punctuation",
+ relevance: 0
+ }, e.QUOTE_STRING_MODE, t, e.C_NUMBER_MODE, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE],
+ illegal: "\\S"
+ }
+ },
+ grmr_kotlin: e => {
+ const n = {
+ keyword: "abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",
+ built_in: "Byte Short Char Int Long Boolean Float Double Void Unit Nothing",
+ literal: "true false null"
+ },
+ t = {
+ className: "symbol",
+ begin: e.UNDERSCORE_IDENT_RE + "@"
+ },
+ a = {
+ className: "subst",
+ begin: /\$\{/,
+ end: /\}/,
+ contains: [e.C_NUMBER_MODE]
+ },
+ i = {
+ className: "variable",
+ begin: "\\$" + e.UNDERSCORE_IDENT_RE
+ },
+ r = {
+ className: "string",
+ variants: [{
+ begin: '"""',
+ end: '"""(?=[^"])',
+ contains: [i, a]
+ }, {
+ begin: "'",
+ end: "'",
+ illegal: /\n/,
+ contains: [e.BACKSLASH_ESCAPE]
+ }, {
+ begin: '"',
+ end: '"',
+ illegal: /\n/,
+ contains: [e.BACKSLASH_ESCAPE, i, a]
+ }]
+ };
+ a.contains.push(r);
+ const s = {
+ className: "meta",
+ begin: "@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*" + e
+ .UNDERSCORE_IDENT_RE + ")?"
+ },
+ o = {
+ className: "meta",
+ begin: "@" + e.UNDERSCORE_IDENT_RE,
+ contains: [{
+ begin: /\(/,
+ end: /\)/,
+ contains: [e.inherit(r, {
+ className: "string"
+ }), "self"]
+ }]
+ },
+ l = oe,
+ c = e.COMMENT("/\\*", "\\*/", {
+ contains: [e.C_BLOCK_COMMENT_MODE]
+ }),
+ d = {
+ variants: [{
+ className: "type",
+ begin: e.UNDERSCORE_IDENT_RE
+ }, {
+ begin: /\(/,
+ end: /\)/,
+ contains: []
+ }]
+ },
+ g = d;
+ return g.variants[1].contains = [d], d.variants[1].contains = [g], {
+ name: "Kotlin",
+ aliases: ["kt", "kts"],
+ keywords: n,
+ contains: [e.COMMENT("/\\*\\*", "\\*/", {
+ relevance: 0,
+ contains: [{
+ className: "doctag",
+ begin: "@[A-Za-z]+"
+ }]
+ }), e.C_LINE_COMMENT_MODE, c, {
+ className: "keyword",
+ begin: /\b(break|continue|return|this)\b/,
+ starts: {
+ contains: [{
+ className: "symbol",
+ begin: /@\w+/
+ }]
+ }
+ }, t, s, o, {
+ className: "function",
+ beginKeywords: "fun",
+ end: "[(]|$",
+ returnBegin: !0,
+ excludeEnd: !0,
+ keywords: n,
+ relevance: 5,
+ contains: [{
+ begin: e.UNDERSCORE_IDENT_RE + "\\s*\\(",
+ returnBegin: !0,
+ relevance: 0,
+ contains: [e.UNDERSCORE_TITLE_MODE]
+ }, {
+ className: "type",
+ begin: /,
+ end: />/,
+ keywords: "reified",
+ relevance: 0
+ }, {
+ className: "params",
+ begin: /\(/,
+ end: /\)/,
+ endsParent: !0,
+ keywords: n,
+ relevance: 0,
+ contains: [{
+ begin: /:/,
+ end: /[=,\/]/,
+ endsWithParent: !0,
+ contains: [d, e.C_LINE_COMMENT_MODE, c],
+ relevance: 0
+ }, e.C_LINE_COMMENT_MODE, c, s, o, r, e.C_NUMBER_MODE]
+ }, c]
+ }, {
+ begin: [/class|interface|trait/, /\s+/, e.UNDERSCORE_IDENT_RE],
+ beginScope: {
+ 3: "title.class"
+ },
+ keywords: "class interface trait",
+ end: /[:\{(]|$/,
+ excludeEnd: !0,
+ illegal: "extends implements",
+ contains: [{
+ beginKeywords: "public protected internal private constructor"
+ }, e.UNDERSCORE_TITLE_MODE, {
+ className: "type",
+ begin: /,
+ end: />/,
+ excludeBegin: !0,
+ excludeEnd: !0,
+ relevance: 0
+ }, {
+ className: "type",
+ begin: /[,:]\s*/,
+ end: /[<\(,){\s]|$/,
+ excludeBegin: !0,
+ returnEnd: !0
+ }, s, o]
+ }, r, {
+ className: "meta",
+ begin: "^#!/usr/bin/env",
+ end: "$",
+ illegal: "\n"
+ }, l]
+ }
+ },
+ grmr_less: e => {
+ const n = J(e),
+ t = ie,
+ a = "([\\w-]+|@\\{[\\w-]+\\})",
+ i = [],
+ r = [],
+ s = e => ({
+ className: "string",
+ begin: "~?" + e + ".*?" + e
+ }),
+ o = (e, n, t) => ({
+ className: e,
+ begin: n,
+ relevance: t
+ }),
+ l = {
+ $pattern: /[a-z-]+/,
+ keyword: "and or not only",
+ attribute: ee.join(" ")
+ },
+ c = {
+ begin: "\\(",
+ end: "\\)",
+ contains: r,
+ keywords: l,
+ relevance: 0
+ };
+ r.push(e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, s("'"), s('"'), n.CSS_NUMBER_MODE, {
+ begin: "(url|data-uri)\\(",
+ starts: {
+ className: "string",
+ end: "[\\)\\n]",
+ excludeEnd: !0
+ }
+ }, n.HEXCOLOR, c, o("variable", "@@?[\\w-]+", 10), o("variable", "@\\{[\\w-]+\\}"), o("built_in",
+ "~?`[^`]*?`"), {
+ className: "attribute",
+ begin: "[\\w-]+\\s*:",
+ end: ":",
+ returnBegin: !0,
+ excludeEnd: !0
+ }, n.IMPORTANT, {
+ beginKeywords: "and not"
+ }, n.FUNCTION_DISPATCH);
+ const d = r.concat({
+ begin: /\{/,
+ end: /\}/,
+ contains: i
+ }),
+ g = {
+ beginKeywords: "when",
+ endsWithParent: !0,
+ contains: [{
+ beginKeywords: "and not"
+ }].concat(r)
+ },
+ u = {
+ begin: a + "\\s*:",
+ returnBegin: !0,
+ end: /[;}]/,
+ relevance: 0,
+ contains: [{
+ begin: /-(webkit|moz|ms|o)-/
+ }, n.CSS_VARIABLE, {
+ className: "attribute",
+ begin: "\\b(" + ae.join("|") + ")\\b",
+ end: /(?=:)/,
+ starts: {
+ endsWithParent: !0,
+ illegal: "[<=$]",
+ relevance: 0,
+ contains: r
+ }
+ }]
+ },
+ b = {
+ className: "keyword",
+ begin: "@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",
+ starts: {
+ end: "[;{}]",
+ keywords: l,
+ returnEnd: !0,
+ contains: r,
+ relevance: 0
+ }
+ },
+ m = {
+ className: "variable",
+ variants: [{
+ begin: "@[\\w-]+\\s*:",
+ relevance: 15
+ }, {
+ begin: "@[\\w-]+"
+ }],
+ starts: {
+ end: "[;}]",
+ returnEnd: !0,
+ contains: d
+ }
+ },
+ p = {
+ variants: [{
+ begin: "[\\.#:&\\[>]",
+ end: "[;{}]"
+ }, {
+ begin: a,
+ end: /\{/
+ }],
+ returnBegin: !0,
+ returnEnd: !0,
+ illegal: "[<='$\"]",
+ relevance: 0,
+ contains: [e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, g, o("keyword", "all\\b"), o("variable",
+ "@\\{[\\w-]+\\}"), {
+ begin: "\\b(" + Y.join("|") + ")\\b",
+ className: "selector-tag"
+ }, n.CSS_NUMBER_MODE, o("selector-tag", a, 0), o("selector-id", "#" + a), o("selector-class", "\\." +
+ a, 0), o("selector-tag", "&", 0), n.ATTRIBUTE_SELECTOR_MODE, {
+ className: "selector-pseudo",
+ begin: ":(" + ne.join("|") + ")"
+ }, {
+ className: "selector-pseudo",
+ begin: ":(:)?(" + te.join("|") + ")"
+ }, {
+ begin: /\(/,
+ end: /\)/,
+ relevance: 0,
+ contains: d
+ }, {
+ begin: "!important"
+ }, n.FUNCTION_DISPATCH]
+ },
+ _ = {
+ begin: `[\\w-]+:(:)?(${t.join("|")})`,
+ returnBegin: !0,
+ contains: [p]
+ };
+ return i.push(e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, b, m, _, u, p, g, n.FUNCTION_DISPATCH), {
+ name: "Less",
+ case_insensitive: !0,
+ illegal: "[=>'/<($\"]",
+ contains: i
+ }
+ },
+ grmr_lua: e => {
+ const n = "\\[=*\\[",
+ t = "\\]=*\\]",
+ a = {
+ begin: n,
+ end: t,
+ contains: ["self"]
+ },
+ i = [e.COMMENT("--(?!\\[=*\\[)", "$"), e.COMMENT("--\\[=*\\[", t, {
+ contains: [a],
+ relevance: 10
+ })];
+ return {
+ name: "Lua",
+ keywords: {
+ $pattern: e.UNDERSCORE_IDENT_RE,
+ literal: "true false nil",
+ keyword: "and break do else elseif end for goto if in local not or repeat return then until while",
+ built_in: "_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"
+ },
+ contains: i.concat([{
+ className: "function",
+ beginKeywords: "function",
+ end: "\\)",
+ contains: [e.inherit(e.TITLE_MODE, {
+ begin: "([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"
+ }), {
+ className: "params",
+ begin: "\\(",
+ endsWithParent: !0,
+ contains: i
+ }].concat(i)
+ }, e.C_NUMBER_MODE, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, {
+ className: "string",
+ begin: n,
+ end: t,
+ contains: [a],
+ relevance: 5
+ }])
+ }
+ },
+ grmr_makefile: e => {
+ const n = {
+ className: "variable",
+ variants: [{
+ begin: "\\$\\(" + e.UNDERSCORE_IDENT_RE + "\\)",
+ contains: [e.BACKSLASH_ESCAPE]
+ }, {
+ begin: /\$[@%\^\+\*]/
+ }]
+ },
+ t = {
+ className: "string",
+ begin: /"/,
+ end: /"/,
+ contains: [e.BACKSLASH_ESCAPE, n]
+ },
+ a = {
+ className: "variable",
+ begin: /\$\([\w-]+\s/,
+ end: /\)/,
+ keywords: {
+ built_in: "subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"
+ },
+ contains: [n]
+ },
+ i = {
+ begin: "^" + e.UNDERSCORE_IDENT_RE + "\\s*(?=[:+?]?=)"
+ },
+ r = {
+ className: "section",
+ begin: /^[^\s]+:/,
+ end: /$/,
+ contains: [n]
+ };
+ return {
+ name: "Makefile",
+ aliases: ["mk", "mak", "make"],
+ keywords: {
+ $pattern: /[\w-]+/,
+ keyword: "define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"
+ },
+ contains: [e.HASH_COMMENT_MODE, n, t, a, i, {
+ className: "meta",
+ begin: /^\.PHONY:/,
+ end: /$/,
+ keywords: {
+ $pattern: /[\.\w]+/,
+ keyword: ".PHONY"
+ }
+ }, r]
+ }
+ },
+ grmr_xml: e => {
+ const n = e.regex,
+ t = n.concat(
+ /(?:[A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/,
+ n.optional(
+ /(?:[\x2D\.0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*:/
+ ),
+ /(?:[\x2D\.0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*/
+ ),
+ a = {
+ className: "symbol",
+ begin: /&[a-z]+;|[0-9]+;|[a-f0-9]+;/
+ },
+ i = {
+ begin: /\s/,
+ contains: [{
+ className: "keyword",
+ begin: /#?[a-z_][a-z1-9_-]+/,
+ illegal: /\n/
+ }]
+ },
+ r = e.inherit(i, {
+ begin: /\(/,
+ end: /\)/
+ }),
+ s = e.inherit(e.APOS_STRING_MODE, {
+ className: "string"
+ }),
+ o = e.inherit(e.QUOTE_STRING_MODE, {
+ className: "string"
+ }),
+ l = {
+ endsWithParent: !0,
+ illegal: /,
+ relevance: 0,
+ contains: [{
+ className: "attr",
+ begin: /(?:[\x2D\.0-:A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])+/,
+ relevance: 0
+ }, {
+ begin: /=\s*/,
+ relevance: 0,
+ contains: [{
+ className: "string",
+ endsParent: !0,
+ variants: [{
+ begin: /"/,
+ end: /"/,
+ contains: [a]
+ }, {
+ begin: /'/,
+ end: /'/,
+ contains: [a]
+ }, {
+ begin: /[^\s"'=<>`]+/
+ }]
+ }]
+ }]
+ };
+ return {
+ name: "HTML, XML",
+ aliases: ["html", "xhtml", "rss", "atom", "xjb", "xsd", "xsl", "plist", "wsf", "svg"],
+ case_insensitive: !0,
+ unicodeRegex: !0,
+ contains: [{
+ className: "meta",
+ begin: //,
+ relevance: 10,
+ contains: [i, o, s, r, {
+ begin: /\[/,
+ end: /\]/,
+ contains: [{
+ className: "meta",
+ begin: //,
+ contains: [i, r, o, s]
+ }]
+ }]
+ }, e.COMMENT(//, {
+ relevance: 10
+ }), {
+ begin: //,
+ relevance: 10
+ }, a, {
+ className: "meta",
+ end: /\?>/,
+ variants: [{
+ begin: /<\?xml/,
+ relevance: 10,
+ contains: [o]
+ }, {
+ begin: /<\?[a-z][a-z0-9]+/
+ }]
+ }, {
+ className: "tag",
+ begin: /
diff --git a/src/config/api.config.ts b/src/config/api.config.ts
new file mode 100644
index 0000000..dfbb885
--- /dev/null
+++ b/src/config/api.config.ts
@@ -0,0 +1,5 @@
+export const PORT = 1337
+// export const HOST_NAME = 'http://localhost'
+export const BASE_URL = 'https://ching.snhaenigseal.cn'
+// export const BASE_SERVER_URL = `${HOST_NAME}:${PORT}`
+// export const BASE_UPLOAD_URL = `${HOST_NAME}:${PORT}/api/upload`
\ No newline at end of file
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..0d738ff
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,12 @@
+import { createSSRApp } from 'vue'
+
+import { setupStore } from './stores'
+import App from './App.vue'
+
+export function createApp() {
+ const app = createSSRApp(App)
+ setupStore(app);
+ return {
+ app,
+ }
+}
diff --git a/src/manifest.json b/src/manifest.json
new file mode 100644
index 0000000..63c4f84
--- /dev/null
+++ b/src/manifest.json
@@ -0,0 +1,73 @@
+{
+ "name" : "",
+ "appid" : "",
+ "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" : "wxed54ab6227ca85b6",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true,
+ "lazyCodeLoading": "requiredComponents"
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics": {
+ "enable": false
+ },
+ "vueVersion" : "3"
+}
diff --git a/src/package.json b/src/package.json
new file mode 100644
index 0000000..6592424
--- /dev/null
+++ b/src/package.json
@@ -0,0 +1,18 @@
+{
+ "id": "ua-markdown",
+ "name": "uniapp markdown语法渲染及代码高亮",
+ "displayName": "uniapp markdown语法渲染及代码高亮",
+ "version": "1.2.4",
+ "description": "基于uniapp+vue3自定义解析markdown语法/高亮,适用于h5+小程序+App端。",
+ "keywords": [
+ "ua-markdown",
+ "uni-markdown",
+ "markdown"
+ ],
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/pages.json b/src/pages.json
new file mode 100644
index 0000000..d75d4c9
--- /dev/null
+++ b/src/pages.json
@@ -0,0 +1,34 @@
+{
+ "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+ {
+ "path": "pages/index/index",
+ "style": {
+ "navigationStyle":"custom"
+ }
+ },
+ {
+ "path": "pages/user/history",
+ "style": {
+ "navigationStyle":"custom"
+ }
+ },
+ {
+ "path": "pages/user/suggestion",
+ "style": {
+ "navigationStyle":"custom"
+ }
+ },
+ {
+ "path": "pages/ZhouYi/detail",
+ "style": {
+ "navigationStyle":"custom"
+ }
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "uni-app",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#F8F8F8"
+ }
+}
diff --git a/src/pages/ZhouYi/detail.vue b/src/pages/ZhouYi/detail.vue
new file mode 100644
index 0000000..2e71d7f
--- /dev/null
+++ b/src/pages/ZhouYi/detail.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/home/home.vue b/src/pages/home/home.vue
new file mode 100644
index 0000000..dd24c9e
--- /dev/null
+++ b/src/pages/home/home.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue
new file mode 100644
index 0000000..f957711
--- /dev/null
+++ b/src/pages/index/index.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/suan-gua/suan-gua.vue b/src/pages/suan-gua/suan-gua.vue
new file mode 100644
index 0000000..a28e52e
--- /dev/null
+++ b/src/pages/suan-gua/suan-gua.vue
@@ -0,0 +1,902 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 本卦 }}
+
+
+ 尚未起卦
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 变卦 }}
+
+
+
+ {{ lines.length === 0 ? '暂无' : '无动爻' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存此次结果
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/user/history.vue b/src/pages/user/history.vue
new file mode 100644
index 0000000..31d0aa6
--- /dev/null
+++ b/src/pages/user/history.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/user/suggestion.vue b/src/pages/user/suggestion.vue
new file mode 100644
index 0000000..636d225
--- /dev/null
+++ b/src/pages/user/suggestion.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/user/user.vue b/src/pages/user/user.vue
new file mode 100644
index 0000000..57fa4a4
--- /dev/null
+++ b/src/pages/user/user.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/readme.md b/src/readme.md
new file mode 100644
index 0000000..a2cb68d
--- /dev/null
+++ b/src/readme.md
@@ -0,0 +1,49 @@
+
+# vue3版本!!!
+vue2版本已经上线,欢迎下载使用。
+[https://ext.dcloud.net.cn/plugin?id=13864](https://ext.dcloud.net.cn/plugin?id=13864)
+
+## uniapp markdown渲染解析.md语法及代码高亮
+> **组件名:uaMarkdown**
+> 代码块: ``
+
+
+uaMarkdown组件是基于uniapp+vue3自定义解析markdown语法结构插件、支持代码块高亮,编译兼容H5+小程序端+App端。
+
+
+### 引入方式
+
+本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,只需将本组件`ua-markdown`放在components目录,在页面`template`中即可直接使用。
+
+
+### 基本用法
+
+**示例**
+
+- 基础用法
+
+```html
+const mdvalue = '### uniapp markdwon'
+
+```
+
+- 去掉代码块行号
+
+```html
+
+```
+
+
+### API
+
+### uaMarkdown Props
+
+|属性名|类型|默认值|说明|
+|:-:|:-:|:-:|:-:|
+|source|String|-| 渲染解析内容 |
+|showLine|Boolean|true| 是否显示代码块行号 |
+
+
+### 💝最后
+
+开发不易,希望各位小伙伴们多多支持下哈~~ ☕️☕️
diff --git a/src/static/avatar.png b/src/static/avatar.png
new file mode 100644
index 0000000..e449eed
Binary files /dev/null and b/src/static/avatar.png differ
diff --git a/src/static/logo.png b/src/static/logo.png
new file mode 100644
index 0000000..b5771e2
Binary files /dev/null and b/src/static/logo.png differ
diff --git a/src/static/mov_yang.png b/src/static/mov_yang.png
new file mode 100644
index 0000000..8e7b760
Binary files /dev/null and b/src/static/mov_yang.png differ
diff --git a/src/static/mov_yin.png b/src/static/mov_yin.png
new file mode 100644
index 0000000..8d8afca
Binary files /dev/null and b/src/static/mov_yin.png differ
diff --git a/src/static/yang.png b/src/static/yang.png
new file mode 100644
index 0000000..78e5213
Binary files /dev/null and b/src/static/yang.png differ
diff --git a/src/static/yin.png b/src/static/yin.png
new file mode 100644
index 0000000..4aa7893
Binary files /dev/null and b/src/static/yin.png differ
diff --git a/src/stores/index.ts b/src/stores/index.ts
new file mode 100644
index 0000000..c52d82b
--- /dev/null
+++ b/src/stores/index.ts
@@ -0,0 +1,27 @@
+// src/store/index.ts
+import type { App } from "vue";
+import { createPinia } from "pinia"
+import { createPersistedState } from 'pinia-plugin-persistedstate';
+
+const createPersistUni = () => {
+ return createPersistedState({
+ storage: {
+ getItem: uni.getStorageSync,
+ setItem: uni.setStorageSync
+ }
+ })
+}
+
+const store = createPinia();
+store.use(createPersistUni());
+
+export * from './modules/tabIndex'
+export * from './modules/user'
+export * from './modules/AIResponse'
+export * from './modules/rateLimit'
+
+
+// 注册 Pinia
+export function setupStore(app: App) {
+ app.use(store); // 全局注册 Pinia
+}
\ No newline at end of file
diff --git a/src/stores/modules/AIResponse.ts b/src/stores/modules/AIResponse.ts
new file mode 100644
index 0000000..bff9498
--- /dev/null
+++ b/src/stores/modules/AIResponse.ts
@@ -0,0 +1,28 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+
+
+
+export const useAIReponseStore = defineStore('AIResponse', () => {
+ const responseText = ref('')
+
+ const showResponseText = ref(false)
+
+ const isLoading = ref(false)
+
+ const isDone = ref(false)
+
+ const reset = () => {
+ responseText.value = ''
+ showResponseText.value = false
+ isDone.value = false
+ }
+
+ return {
+ responseText,
+ showResponseText,
+ isLoading,
+ isDone,
+ reset
+ }
+})
\ No newline at end of file
diff --git a/src/stores/modules/rateLimit.ts b/src/stores/modules/rateLimit.ts
new file mode 100644
index 0000000..e53268f
--- /dev/null
+++ b/src/stores/modules/rateLimit.ts
@@ -0,0 +1,14 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+
+
+
+export const useRateLimitStore = defineStore('rateLimit', () => {
+ const timestamps = ref([])
+
+ return {
+ timestamps
+ }
+}, {
+ persist: true
+})
\ No newline at end of file
diff --git a/src/stores/modules/tabIndex.ts b/src/stores/modules/tabIndex.ts
new file mode 100644
index 0000000..444a316
--- /dev/null
+++ b/src/stores/modules/tabIndex.ts
@@ -0,0 +1,14 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+
+
+
+export const useTabStore = defineStore('tab', () => {
+ const tabIndex = ref(1)
+
+ return {
+ tabIndex
+ }
+}, {
+ persist: true
+})
\ No newline at end of file
diff --git a/src/stores/modules/user.ts b/src/stores/modules/user.ts
new file mode 100644
index 0000000..9ac4e3f
--- /dev/null
+++ b/src/stores/modules/user.ts
@@ -0,0 +1,21 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+
+interface Yao {
+ time: number, // 时间轴
+ symbol1?: string, // 主爻结果
+ symbol2?: string, // 动爻内容
+ symbolNum: string // 主卦结果数字
+ result?: string, // 算卦结果
+ q: string, // 所问之事
+}
+
+export const useUserStore = defineStore('user', () => {
+ const yaoList = ref([])
+
+ return {
+ yaoList
+ }
+}, {
+ persist: true
+})
\ No newline at end of file
diff --git a/src/uni.scss b/src/uni.scss
new file mode 100644
index 0000000..845142d
--- /dev/null
+++ b/src/uni.scss
@@ -0,0 +1,76 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:24rpx;
+$uni-font-size-base:28rpx;
+$uni-font-size-lg:32rpx;
+
+/* 图片尺寸 */
+$uni-img-size-sm:40rpx;
+$uni-img-size-base:52rpx;
+$uni-img-size-lg:80rpx;
+
+/* Border Radius */
+$uni-border-radius-sm: 4rpx;
+$uni-border-radius-base: 6rpx;
+$uni-border-radius-lg: 12rpx;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 10px;
+$uni-spacing-row-base: 20rpx;
+$uni-spacing-row-lg: 30rpx;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 8rpx;
+$uni-spacing-col-base: 16rpx;
+$uni-spacing-col-lg: 24rpx;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:40rpx;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:36rpx;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:30rpx;
\ 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..d089f44
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/changelog.md
@@ -0,0 +1,2277 @@
+## 1.13.0(2025-09-29)
+## [1.13.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.12.4...v1.13.0) (2025-09-28)
+
+
+### ✨ Features | 新功能
+
+* ✨ 为 Curtain 组件添加 show-menu-by-longpress 和 close-on-click 属性 ([a905655](https://github.com/Moonofweisheng/wot-design-uni/commit/a90565510ab55431f6d7537da465cc8299d07a46)), closes [#1279](https://github.com/Moonofweisheng/wot-design-uni/issues/1279)
+* ✨ 优化 Swiper 使用默认插槽时插槽内容的显示效果 ([#1301](https://github.com/Moonofweisheng/wot-design-uni/issues/1301)) ([41dd417](https://github.com/Moonofweisheng/wot-design-uni/commit/41dd4177b66e6e03357ce79f5c9b92fa2a932a7a))
+* ✨ 优化 Toast 组件图标的体积 ([#1034](https://github.com/Moonofweisheng/wot-design-uni/issues/1034)) ([c984cff](https://github.com/Moonofweisheng/wot-design-uni/commit/c984cff24749ffd753f21f04c79c6f896f7bd9ef))
+* ✨ 增加车牌键盘语言切换功能,支持受控和非受控模式 ([#1294](https://github.com/Moonofweisheng/wot-design-uni/issues/1294)) ([9943011](https://github.com/Moonofweisheng/wot-design-uni/commit/9943011b4c629625091e82115d9241e6503efeae)), closes [#1275](https://github.com/Moonofweisheng/wot-design-uni/issues/1275) [#818](https://github.com/Moonofweisheng/wot-design-uni/issues/818)
+* ✨ button组件支持微信小程序的getrealtimephonenumber 事件 ([#1097](https://github.com/Moonofweisheng/wot-design-uni/issues/1097)) ([ed412b6](https://github.com/Moonofweisheng/wot-design-uni/commit/ed412b67261fce04c51d5c5b8836ca4dd0dc22a4))
+* ✨ Cell 新增 icon-siz 属性用于指定左侧图标大小 ([#1298](https://github.com/Moonofweisheng/wot-design-uni/issues/1298)) ([9585db1](https://github.com/Moonofweisheng/wot-design-uni/commit/9585db11503bc5e77e72e78ba7a51f1f6932f510)), closes [#1088](https://github.com/Moonofweisheng/wot-design-uni/issues/1088)
+* ✨ Rate 支持清空评分([#1302](https://github.com/Moonofweisheng/wot-design-uni/issues/1302)) ([1333bda](https://github.com/Moonofweisheng/wot-design-uni/commit/1333bdac4f8f605c3c9851d0f43d267205ce5aef)), closes [#1293](https://github.com/Moonofweisheng/wot-design-uni/issues/1293)
+* ✨ swiper新增default slot 用户可自定义swiper-item中的内容展示 ([#1164](https://github.com/Moonofweisheng/wot-design-uni/issues/1164)) ([046b135](https://github.com/Moonofweisheng/wot-design-uni/commit/046b135a14a938840c9309c6b9eedb1878866ac9))
+* ✨ wd-picker-view 添加 item-height 属性 ([8d84508](https://github.com/Moonofweisheng/wot-design-uni/commit/8d845081657581a84282f8d4de6039272700e9b0))
+
+
+### Documentation | 文档
+
+* 修复黑暗模式下demo页面样式异常 ([397c883](https://github.com/Moonofweisheng/wot-design-uni/commit/397c88338a65afa71f452a67cec938afd5e25e9a))
+* 补充 Button 组件的 getRealtimePhoneNumber 仅支持微信小程序 ([7466c91](https://github.com/Moonofweisheng/wot-design-uni/commit/7466c91c1a50318c6f80cbcbeb368dad2bff7dd9))
+* 补全一些缺失的文档 ([b0bb46d](https://github.com/Moonofweisheng/wot-design-uni/commit/b0bb46d3a792bc01c7f8fdbe97835fc04ae577bc))
+* 调整 Gap 文档描述错误的问题 ([1a9f626](https://github.com/Moonofweisheng/wot-design-uni/commit/1a9f62698643b5d1e5fc24be52ad3416464ff651))
+* 调整文档站点域名为 wot-ui.cn ([4c8cdb8](https://github.com/Moonofweisheng/wot-design-uni/commit/4c8cdb83d077370f6d81b9250c6651301521eb6b))
+* 更新快速上手项目链接 ([d86dd18](https://github.com/Moonofweisheng/wot-design-uni/commit/d86dd18b49bbaf2a06a6f85338b2e9fe6b9950b6))
+* 添加 vscode 代码提示插件 ([c3c6eb1](https://github.com/Moonofweisheng/wot-design-uni/commit/c3c6eb124985b4620a336c034919085ecaed20d9))
+* 添加博客链接地址 ([d7272eb](https://github.com/Moonofweisheng/wot-design-uni/commit/d7272ebab6fbea321133ee52ce1c6748567bf486))
+* 添加关于全局反馈方案和最佳实践分享的文档 ([a4d2550](https://github.com/Moonofweisheng/wot-design-uni/commit/a4d2550fefe77c64e179ebd22d212827b5fa5217))
+* 添加赞助渠道 ([3564bce](https://github.com/Moonofweisheng/wot-design-uni/commit/3564bce12f4341bd329731c9a18121c611c460c7))
+* 文档首页新增快速上手模板和公众号的入口 ([e80b0df](https://github.com/Moonofweisheng/wot-design-uni/commit/e80b0df51e5049cecf4f0f70cc83535dc52f8e06))
+* 优化演示 Demo 在小屏幕上的显示效果 ([#1296](https://github.com/Moonofweisheng/wot-design-uni/issues/1296)) ([0dbdde9](https://github.com/Moonofweisheng/wot-design-uni/commit/0dbdde9e23645c4735e4051f5c259b0c473df896))
+* 优化演示demo显示效果 ([868b5ad](https://github.com/Moonofweisheng/wot-design-uni/commit/868b5ad3108f45a096da967f92793ae05b645c2b)), closes [#1269](https://github.com/Moonofweisheng/wot-design-uni/issues/1269)
+* 友情链接支持一行最多四个 ([4810db7](https://github.com/Moonofweisheng/wot-design-uni/commit/4810db7d6fba25062382be3f862b5ba252052b70))
+* 添加 img 组件 transformAssetUrls 配置介绍 ([#1259](https://github.com/Moonofweisheng/wot-design-uni/issues/1259)) ([96cf9c7](https://github.com/Moonofweisheng/wot-design-uni/commit/96cf9c7082b94904d45ef1a514f66bff60a57071))
+* 修正 Text 组件文档一些语言组织的错误 ([abc4571](https://github.com/Moonofweisheng/wot-design-uni/commit/abc457147a09444fa82868aa73800958b3621796))
+* 修复 starter 地址错误 ([#1316](https://github.com/Moonofweisheng/wot-design-uni/issues/1316)) ([00212b0](https://github.com/Moonofweisheng/wot-design-uni/commit/00212b0e3ecad336edbeec6473db01a67c04cb6b))
+
+
+### Bug Fixes | Bug 修复
+
+* 修复 Segmented 选项点击时无论是否改变选中值都会触发 change 的问题 ([#1326](https://github.com/Moonofweisheng/wot-design-uni/issues/1326)) ([5657aa6](https://github.com/Moonofweisheng/wot-design-uni/commit/5657aa68a8357ca66c626b7e844c18aa95828c6d)), closes [#1323](https://github.com/Moonofweisheng/wot-design-uni/issues/1323)
+* 修复 table 组件表头文字溢出样式异常的问题 ([#1297](https://github.com/Moonofweisheng/wot-design-uni/issues/1297)) ([5e186ea](https://github.com/Moonofweisheng/wot-design-uni/commit/5e186ea4b2f8fea09cb1913c6a63f1e60827ec4e)), closes [#1182](https://github.com/Moonofweisheng/wot-design-uni/issues/1182) [#1058](https://github.com/Moonofweisheng/wot-design-uni/issues/1058)
+* 修复wd-drop-menu-item组件在popup数据较多在滚动区下拉时和页面onPullDownRefresh之间的冲突 ([#1113](https://github.com/Moonofweisheng/wot-design-uni/issues/1113)) ([73027c0](https://github.com/Moonofweisheng/wot-design-uni/commit/73027c0cefe980c27f46412c5648761c30a01bd0)), closes [#1107](https://github.com/Moonofweisheng/wot-design-uni/issues/1107)
+
+# 更新日志
+
+
+## [1.13.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.12.4...v1.13.0) (2025-09-28)
+
+
+### ✨ Features | 新功能
+
+* ✨ 为 Curtain 组件添加 show-menu-by-longpress 和 close-on-click 属性 ([a905655](https://github.com/Moonofweisheng/wot-design-uni/commit/a90565510ab55431f6d7537da465cc8299d07a46)), closes [#1279](https://github.com/Moonofweisheng/wot-design-uni/issues/1279)
+* ✨ 优化 Swiper 使用默认插槽时插槽内容的显示效果 ([#1301](https://github.com/Moonofweisheng/wot-design-uni/issues/1301)) ([41dd417](https://github.com/Moonofweisheng/wot-design-uni/commit/41dd4177b66e6e03357ce79f5c9b92fa2a932a7a))
+* ✨ 优化 Toast 组件图标的体积 ([#1034](https://github.com/Moonofweisheng/wot-design-uni/issues/1034)) ([c984cff](https://github.com/Moonofweisheng/wot-design-uni/commit/c984cff24749ffd753f21f04c79c6f896f7bd9ef))
+* ✨ 增加车牌键盘语言切换功能,支持受控和非受控模式 ([#1294](https://github.com/Moonofweisheng/wot-design-uni/issues/1294)) ([9943011](https://github.com/Moonofweisheng/wot-design-uni/commit/9943011b4c629625091e82115d9241e6503efeae)), closes [#1275](https://github.com/Moonofweisheng/wot-design-uni/issues/1275) [#818](https://github.com/Moonofweisheng/wot-design-uni/issues/818)
+* ✨ button组件支持微信小程序的getrealtimephonenumber 事件 ([#1097](https://github.com/Moonofweisheng/wot-design-uni/issues/1097)) ([ed412b6](https://github.com/Moonofweisheng/wot-design-uni/commit/ed412b67261fce04c51d5c5b8836ca4dd0dc22a4))
+* ✨ Cell 新增 icon-siz 属性用于指定左侧图标大小 ([#1298](https://github.com/Moonofweisheng/wot-design-uni/issues/1298)) ([9585db1](https://github.com/Moonofweisheng/wot-design-uni/commit/9585db11503bc5e77e72e78ba7a51f1f6932f510)), closes [#1088](https://github.com/Moonofweisheng/wot-design-uni/issues/1088)
+* ✨ Rate 支持清空评分([#1302](https://github.com/Moonofweisheng/wot-design-uni/issues/1302)) ([1333bda](https://github.com/Moonofweisheng/wot-design-uni/commit/1333bdac4f8f605c3c9851d0f43d267205ce5aef)), closes [#1293](https://github.com/Moonofweisheng/wot-design-uni/issues/1293)
+* ✨ swiper新增default slot 用户可自定义swiper-item中的内容展示 ([#1164](https://github.com/Moonofweisheng/wot-design-uni/issues/1164)) ([046b135](https://github.com/Moonofweisheng/wot-design-uni/commit/046b135a14a938840c9309c6b9eedb1878866ac9))
+* ✨ wd-picker-view 添加 item-height 属性 ([8d84508](https://github.com/Moonofweisheng/wot-design-uni/commit/8d845081657581a84282f8d4de6039272700e9b0))
+
+
+### ✏️ Documentation | 文档
+
+* 修复黑暗模式下demo页面样式异常 ([397c883](https://github.com/Moonofweisheng/wot-design-uni/commit/397c88338a65afa71f452a67cec938afd5e25e9a))
+* ✏️ 补充 Button 组件的 getRealtimePhoneNumber 仅支持微信小程序 ([7466c91](https://github.com/Moonofweisheng/wot-design-uni/commit/7466c91c1a50318c6f80cbcbeb368dad2bff7dd9))
+* ✏️ 补全一些缺失的文档 ([b0bb46d](https://github.com/Moonofweisheng/wot-design-uni/commit/b0bb46d3a792bc01c7f8fdbe97835fc04ae577bc))
+* ✏️ 调整 Gap 文档描述错误的问题 ([1a9f626](https://github.com/Moonofweisheng/wot-design-uni/commit/1a9f62698643b5d1e5fc24be52ad3416464ff651))
+* ✏️ 调整文档站点域名为 wot-ui.cn ([4c8cdb8](https://github.com/Moonofweisheng/wot-design-uni/commit/4c8cdb83d077370f6d81b9250c6651301521eb6b))
+* ✏️ 更新快速上手项目链接 ([d86dd18](https://github.com/Moonofweisheng/wot-design-uni/commit/d86dd18b49bbaf2a06a6f85338b2e9fe6b9950b6))
+* ✏️ 添加 vscode 代码提示插件 ([c3c6eb1](https://github.com/Moonofweisheng/wot-design-uni/commit/c3c6eb124985b4620a336c034919085ecaed20d9))
+* ✏️ 添加博客链接地址 ([d7272eb](https://github.com/Moonofweisheng/wot-design-uni/commit/d7272ebab6fbea321133ee52ce1c6748567bf486))
+* ✏️ 添加关于全局反馈方案和最佳实践分享的文档 ([a4d2550](https://github.com/Moonofweisheng/wot-design-uni/commit/a4d2550fefe77c64e179ebd22d212827b5fa5217))
+* ✏️ 添加赞助渠道 ([3564bce](https://github.com/Moonofweisheng/wot-design-uni/commit/3564bce12f4341bd329731c9a18121c611c460c7))
+* ✏️ 文档首页新增快速上手模板和公众号的入口 ([e80b0df](https://github.com/Moonofweisheng/wot-design-uni/commit/e80b0df51e5049cecf4f0f70cc83535dc52f8e06))
+* ✏️ 优化演示 Demo 在小屏幕上的显示效果 ([#1296](https://github.com/Moonofweisheng/wot-design-uni/issues/1296)) ([0dbdde9](https://github.com/Moonofweisheng/wot-design-uni/commit/0dbdde9e23645c4735e4051f5c259b0c473df896))
+* ✏️ 优化演示demo显示效果 ([868b5ad](https://github.com/Moonofweisheng/wot-design-uni/commit/868b5ad3108f45a096da967f92793ae05b645c2b)), closes [#1269](https://github.com/Moonofweisheng/wot-design-uni/issues/1269)
+* ✏️ 友情链接支持一行最多四个 ([4810db7](https://github.com/Moonofweisheng/wot-design-uni/commit/4810db7d6fba25062382be3f862b5ba252052b70))
+* ✏️ 添加 img 组件 transformAssetUrls 配置介绍 ([#1259](https://github.com/Moonofweisheng/wot-design-uni/issues/1259)) ([96cf9c7](https://github.com/Moonofweisheng/wot-design-uni/commit/96cf9c7082b94904d45ef1a514f66bff60a57071))
+* ✏️ 修正 Text 组件文档一些语言组织的错误 ([abc4571](https://github.com/Moonofweisheng/wot-design-uni/commit/abc457147a09444fa82868aa73800958b3621796))
+* 修复 starter 地址错误 ([#1316](https://github.com/Moonofweisheng/wot-design-uni/issues/1316)) ([00212b0](https://github.com/Moonofweisheng/wot-design-uni/commit/00212b0e3ecad336edbeec6473db01a67c04cb6b))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Segmented 选项点击时无论是否改变选中值都会触发 change 的问题 ([#1326](https://github.com/Moonofweisheng/wot-design-uni/issues/1326)) ([5657aa6](https://github.com/Moonofweisheng/wot-design-uni/commit/5657aa68a8357ca66c626b7e844c18aa95828c6d)), closes [#1323](https://github.com/Moonofweisheng/wot-design-uni/issues/1323)
+* 🐛 修复 table 组件表头文字溢出样式异常的问题 ([#1297](https://github.com/Moonofweisheng/wot-design-uni/issues/1297)) ([5e186ea](https://github.com/Moonofweisheng/wot-design-uni/commit/5e186ea4b2f8fea09cb1913c6a63f1e60827ec4e)), closes [#1182](https://github.com/Moonofweisheng/wot-design-uni/issues/1182) [#1058](https://github.com/Moonofweisheng/wot-design-uni/issues/1058)
+* 🐛 修复wd-drop-menu-item组件在popup数据较多在滚动区下拉时和页面onPullDownRefresh之间的冲突 ([#1113](https://github.com/Moonofweisheng/wot-design-uni/issues/1113)) ([73027c0](https://github.com/Moonofweisheng/wot-design-uni/commit/73027c0cefe980c27f46412c5648761c30a01bd0)), closes [#1107](https://github.com/Moonofweisheng/wot-design-uni/issues/1107)
+
+### [1.12.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.12.3...v1.12.4) (2025-08-28)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Upload 设置 multiple 无效的问题 ([#1250](https://github.com/Moonofweisheng/wot-design-uni/issues/1250)) ([784aab4](https://github.com/Moonofweisheng/wot-design-uni/commit/784aab4aa156e2a440db7d1a0a10e36358851763))
+
+### [1.12.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.12.2...v1.12.3) (2025-08-27)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Fab、Cell组件 Icon 垂直居中异常的问题 ([#1249](https://github.com/Moonofweisheng/wot-design-uni/issues/1249)) ([d7dac97](https://github.com/Moonofweisheng/wot-design-uni/commit/d7dac979982513c88363dd6224352ab099b7d0c3))
+
+### [1.12.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.12.1...v1.12.2) (2025-08-26)
+
+
+### ✨ Features | 新功能
+
+* ✨ 调整 composables 的导出,新增 useCountDown 的导出 ([#1242](https://github.com/Moonofweisheng/wot-design-uni/issues/1242)) ([93fafa1](https://github.com/Moonofweisheng/wot-design-uni/commit/93fafa180fcfb3fa07deab0393449e822179d43b)), closes [#1239](https://github.com/Moonofweisheng/wot-design-uni/issues/1239)
+* ✨ DroMenu 图标大小和位置样式逻辑调整为不缩放且不使用绝对定位 ([#1243](https://github.com/Moonofweisheng/wot-design-uni/issues/1243)) ([e59fd56](https://github.com/Moonofweisheng/wot-design-uni/commit/e59fd568be9284b7eb91575a3f59194cd681828c))
+
+### [1.12.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.12.0...v1.12.1) (2025-08-25)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 DropDown 图标垂直居中异常的问题 ([37042c7](https://github.com/Moonofweisheng/wot-design-uni/commit/37042c7766bfe366828f51201c6023aeb4cfaec6))
+
+## [1.12.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.11.1...v1.12.0) (2025-08-24)
+
+
+### ✨ Features | 新功能
+
+* ✨ 为 Cell、Input、Textarea 等组件添加 marker-side 属性控制必填*位置 ([#1181](https://github.com/Moonofweisheng/wot-design-uni/issues/1181)) ([cade06f](https://github.com/Moonofweisheng/wot-design-uni/commit/cade06fe4a776e55a862a58f1eddc1fe0f055a88)), closes [#555](https://github.com/Moonofweisheng/wot-design-uni/issues/555)
+* ✨ 新增维语本地化支持 ([b4e8605](https://github.com/Moonofweisheng/wot-design-uni/commit/b4e86053b4bb73ef89ae91330d50b6e68349ad20))
+* ✨ Upload 上传组件调信小程序端使用chooseMedia替换掉chooseImage等 ([57d89f3](https://github.com/Moonofweisheng/wot-design-uni/commit/57d89f33d769362c198048d37b44f7d67ed384f4)), closes [#1193](https://github.com/Moonofweisheng/wot-design-uni/issues/1193)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 签字版组件设置exportScale < 1时在支付宝上导出图片不完整 ([#1129](https://github.com/Moonofweisheng/wot-design-uni/issues/1129)) ([555ae5f](https://github.com/Moonofweisheng/wot-design-uni/commit/555ae5f40049ffd958ec4e58e80ccd3ba4f524f3))
+* 🐛 修复 grid-item 组件 custom-text 失效的问题 ([#1180](https://github.com/Moonofweisheng/wot-design-uni/issues/1180)) ([5abc3b5](https://github.com/Moonofweisheng/wot-design-uni/commit/5abc3b5344bd2f880ef94350e10c2ef9e9f9250f)), closes [#995](https://github.com/Moonofweisheng/wot-design-uni/issues/995)
+* 🐛 修复 signature 组件设置background-color为透明色导致撤销无效 ([#1224](https://github.com/Moonofweisheng/wot-design-uni/issues/1224)) ([2e67adf](https://github.com/Moonofweisheng/wot-design-uni/commit/2e67adf2bae212a03f3cef3113326f4d942b0b55)), closes [#1223](https://github.com/Moonofweisheng/wot-design-uni/issues/1223)
+* 🐛 修复 Upload 多选时配置为覆盖上传图片达到上限无法替换图片的问题 ([00ab76b](https://github.com/Moonofweisheng/wot-design-uni/commit/00ab76bd91e91a3d0fabdb8b80e00df764055519))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复基础组件文档问题 - 阶段一完成 ([#1220](https://github.com/Moonofweisheng/wot-design-uni/issues/1220)) ([9132174](https://github.com/Moonofweisheng/wot-design-uni/commit/9132174b11c539d2ec5f8d0aec2044ac1affaaff))
+* ✏️ 修正 drop-menu-item options 默认数据结构注释 ([#1087](https://github.com/Moonofweisheng/wot-design-uni/issues/1087)) ([7a2cd2d](https://github.com/Moonofweisheng/wot-design-uni/commit/7a2cd2da93746761b05e068083b171312c4af0e3))
+* 修复 Button/Icon/ConfigProvider/Popup 组件文档不一致问题 ([#1190](https://github.com/Moonofweisheng/wot-design-uni/issues/1190)) ([04d0d11](https://github.com/Moonofweisheng/wot-design-uni/commit/04d0d1184957bb1ae5b1ee2ddfaa978a989427b3))
+
+### [1.11.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.11.0...v1.11.1) (2025-07-25)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 RootPortal 及 Picker 相关组件 type-check 错误的问题 ([1859294](https://github.com/Moonofweisheng/wot-design-uni/commit/185929461c56d596b6a9d0dabe117e229ceda601))
+
+## [1.11.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.10.0...v1.11.0) (2025-07-20)
+
+
+### ✨ Features | 新功能
+
+* ✨ 结合Cell组件重构Picker相关组件的触发器 ([4a50f2d](https://github.com/Moonofweisheng/wot-design-uni/commit/4a50f2db5956134d579b3be5830f786deb272364))
+* ✨ 新增 root-portal 组件支持从页面中脱离出来,用于解决各种 fixed 失效问题 ([#1155](https://github.com/Moonofweisheng/wot-design-uni/issues/1155)) ([372735a](https://github.com/Moonofweisheng/wot-design-uni/commit/372735a16af7d9a9f3a1a75a8493c2293f2aa216))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 DatetimePicker 超出隐藏 ellipsis 无效的问题 ([cdf1f78](https://github.com/Moonofweisheng/wot-design-uni/commit/cdf1f78513e6116a5f837237af766d00e1244668))
+* 🐛 修复 DatetimePicker 区间选择时无法选择绑定值范围以外的时间的问题 ([3c1023c](https://github.com/Moonofweisheng/wot-design-uni/commit/3c1023c9f6e07b17f684f7a62c5c8ffc462b9808)), closes [#1170](https://github.com/Moonofweisheng/wot-design-uni/issues/1170)
+* 🐛 修复 Overlay 组件锁定背景滚动属性 lock-scroll 无法取消的问题 ([#1149](https://github.com/Moonofweisheng/wot-design-uni/issues/1149)) ([f3ccf3d](https://github.com/Moonofweisheng/wot-design-uni/commit/f3ccf3d936d7224468a29f869c326d98ea8c87f8))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 更新微信小程序演示二维码 ([28d5970](https://github.com/Moonofweisheng/wot-design-uni/commit/28d5970a4f6a9548469fcdc2be48737c13d4014c))
+* ✏️ 添加脚手架与模板的介绍 ([27243c1](https://github.com/Moonofweisheng/wot-design-uni/commit/27243c134114a7c5c52395f22c07a33760427a33))
+* ✏️ 添加快速上手项目链接 ([ed923ec](https://github.com/Moonofweisheng/wot-design-uni/commit/ed923ecf99728813410164fe4963c520592a12a4))
+* ✏️ 文档侧边栏新增版本号显示 ([6c6d5c9](https://github.com/Moonofweisheng/wot-design-uni/commit/6c6d5c9ea3a3016bd4eb9e85e0a6ae1472c02b13))
+* ✏️ 新增咨询服务章节 ([66f796e](https://github.com/Moonofweisheng/wot-design-uni/commit/66f796e4406309c0f5ad09d1b521aab6962047c9))
+* ✏️ 修复快速上手页面存在死链的问题 ([722103c](https://github.com/Moonofweisheng/wot-design-uni/commit/722103c46dcfec530c7675f5fac4d6b4e8d6c4ea))
+* ✏️ 修复文档中 calendar 类型名 `monthrang` → `monthrange` 的拼写错误。 ([41a6fe3](https://github.com/Moonofweisheng/wot-design-uni/commit/41a6fe3647c9837e0a6cb964882e9e5812ed7b7f))
+* **backtop:** ✏️ 修正文档中 BackTop 组件的 bottom 属性描述从「距离屏幕顶部的距离」修改为「距离屏幕底部的距离」 ([5a458fc](https://github.com/Moonofweisheng/wot-design-uni/commit/5a458fc723fe0745dc7de8ffc7e50b5c7f75654d))
+* **backtop:** ✏️ 修正文档中 bottom 属性的描述 ([b0cd321](https://github.com/Moonofweisheng/wot-design-uni/commit/b0cd321c5ed4e8f6042bd85551b7efe96e891156))
+* **component:** ✏️ 移除多余的 H5 平台标题 ([f851d13](https://github.com/Moonofweisheng/wot-design-uni/commit/f851d139b1b00967fc5f2bcb1d7517a58f40adf7))
+* **datetime-picker:** 添加 before-confirm 回调中使用loading的提示 ([c61b33f](https://github.com/Moonofweisheng/wot-design-uni/commit/c61b33f51a3a8e00900ba765b72d6056b1299c0c))
+* unibest 链接地址更新 ([645e022](https://github.com/Moonofweisheng/wot-design-uni/commit/645e022094122ef3afee81c5f8059429e950a68a))
+
+## [1.10.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.9.1...v1.10.0) (2025-06-29)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整微信小程序演示demo激励按钮的文案以应对微信审核 ([06323a9](https://github.com/Moonofweisheng/wot-design-uni/commit/06323a9b3228299fa9cf4ff6cd826514ced1dc32))
+* ✏️ 简化组件库通用名称为 WotUI ([8177978](https://github.com/Moonofweisheng/wot-design-uni/commit/817797801de1228d39ff399c7792d76c2652e94d))
+* ✏️ 添加 WotUI 加群凭证相关介绍 ([341b9e1](https://github.com/Moonofweisheng/wot-design-uni/commit/341b9e1c1e98699510bbdc4587782b3647d2c4ba))
+* ✏️ 修正示例 demo 源码链接地址 ([1ccdb4a](https://github.com/Moonofweisheng/wot-design-uni/commit/1ccdb4a7468ce7984ac4f17305212aebc54f62c3)), closes [#1045](https://github.com/Moonofweisheng/wot-design-uni/issues/1045)
+* ✏️ 优化加群文档使其更加清晰明确 ([207dfb8](https://github.com/Moonofweisheng/wot-design-uni/commit/207dfb8c9bbf4434ec51e186886ad8dba6289153))
+* ✏️ 优秀案例改为取线上资源 ([053485b](https://github.com/Moonofweisheng/wot-design-uni/commit/053485b470419b5a451b73aec0dc03d12b7dde56))
+* ✏️ update cases ([f1ad2fa](https://github.com/Moonofweisheng/wot-design-uni/commit/f1ad2fa05efba00d89958adba5ca967eead01cfe))
+
+
+### ✨ Features | 新功能
+
+* ✨ DatetimePicker 支持time和date-time类型下配置选择到秒 ([#1117](https://github.com/Moonofweisheng/wot-design-uni/issues/1117)) ([f2e8fda](https://github.com/Moonofweisheng/wot-design-uni/commit/f2e8fdad8026b4b8ce5d11a2e80d5a565031cdc5)), closes [#844](https://github.com/Moonofweisheng/wot-design-uni/issues/844)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 DropDownItem 自定义样式类 CustomIcon 无效的问题 ([cb408f5](https://github.com/Moonofweisheng/wot-design-uni/commit/cb408f553a2e5d84225b5dcdb447dd784992aa6b)), closes [#1119](https://github.com/Moonofweisheng/wot-design-uni/issues/1119)
+* 🐛 修复 DropMenu 设置 Modal 无效的问题 ([#1125](https://github.com/Moonofweisheng/wot-design-uni/issues/1125)) ([eddbd5d](https://github.com/Moonofweisheng/wot-design-uni/commit/eddbd5d22e6cb413e5bf06a642f60f6e081a9074)), closes [#1121](https://github.com/Moonofweisheng/wot-design-uni/issues/1121)
+* 🐛 修复 Input、Textarea、Search 组件设置清空后不聚焦时无法触发失焦事件的问题 ([#1046](https://github.com/Moonofweisheng/wot-design-uni/issues/1046)) ([33b5565](https://github.com/Moonofweisheng/wot-design-uni/commit/33b556546a03e240cfcb3662286cc6dc70b70263))
+* 🐛 修复 Slider 处理边界值异常的问题,优化样式和事件处理逻辑 ([#1050](https://github.com/Moonofweisheng/wot-design-uni/issues/1050)) ([0d7ed81](https://github.com/Moonofweisheng/wot-design-uni/commit/0d7ed8129c623c0b423fe8da6814417417ea3114)), closes [#1023](https://github.com/Moonofweisheng/wot-design-uni/issues/1023)
+* 🐛 修复 Toast 英文断行样式错误问题 ([#1067](https://github.com/Moonofweisheng/wot-design-uni/issues/1067)) ([09dde62](https://github.com/Moonofweisheng/wot-design-uni/commit/09dde6278ed9bb0a57709c15ea4dff8da6e786cd))
+* 🐛 修复 wd-img-cropper 组件在微信小程序中旋转图片后操作卡顿的问题 ([#1112](https://github.com/Moonofweisheng/wot-design-uni/issues/1112)) ([50782a1](https://github.com/Moonofweisheng/wot-design-uni/commit/50782a16717d483f4dc7095e2f6096591999df01))
+* 🐛 修复 wd-slider 滑块不跟手的问题 ([#1114](https://github.com/Moonofweisheng/wot-design-uni/issues/1114)) ([e3dc36e](https://github.com/Moonofweisheng/wot-design-uni/commit/e3dc36e832a74029348a859adb53f06054e9eea6))
+* 🐛 修复NumberKeyboard组件使用 title 插槽未传入关闭文本时不展示头部的问题 ([#1060](https://github.com/Moonofweisheng/wot-design-uni/issues/1060)) ([875e072](https://github.com/Moonofweisheng/wot-design-uni/commit/875e072b3ea8dff270cb2214f94b95e03fa210db)), closes [#760](https://github.com/Moonofweisheng/wot-design-uni/issues/760)
+* 🐛 优化 InputNumbe 处理中间状态值的逻辑,支持配置不立即响应输入变化 ([#1116](https://github.com/Moonofweisheng/wot-design-uni/issues/1116)) ([ff99b22](https://github.com/Moonofweisheng/wot-design-uni/commit/ff99b22a6930ea500539f403f23d46cd836e8bca))
+* 修复 wd-upload 组件的 formData 属性的 ts 类型为 void 的问题 ([#1106](https://github.com/Moonofweisheng/wot-design-uni/issues/1106)) ([6026137](https://github.com/Moonofweisheng/wot-design-uni/commit/60261374acb99f64298c724e1f8d1df3061bd85a))
+
+### [1.9.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.9.0...v1.9.1) (2025-05-08)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 处理小程序超包 ([08e9ee1](https://github.com/Moonofweisheng/wot-design-uni/commit/08e9ee1cb366e4c5ec87d989795d58399cb1df32))
+* ✏️ 修复部分组件二维码显示异常的问题 ([eea9bf7](https://github.com/Moonofweisheng/wot-design-uni/commit/eea9bf7aac36cfd9b7b476392c35e3db097e4891))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Upload 开启 multiple 后只能成功上传最后一个文件的问题 ([#1044](https://github.com/Moonofweisheng/wot-design-uni/issues/1044)) ([f2ae0d3](https://github.com/Moonofweisheng/wot-design-uni/commit/f2ae0d3aacab3b95b48f623623c5bf1f9acecf18)), closes [#1043](https://github.com/Moonofweisheng/wot-design-uni/issues/1043)
+
+## [1.9.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.8.0...v1.9.0) (2025-05-07)
+
+
+### ⚡ Performance Improvements | 性能优化
+
+* ⚡ 增强 wd-drop-menu 组件,优化遮罩层闪烁 ([#974](https://github.com/Moonofweisheng/wot-design-uni/issues/974)) ([f9605b7](https://github.com/Moonofweisheng/wot-design-uni/commit/f9605b71b667cfaad56b7b028d53ccff5112ddf8))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Curtain 幕帘组件 close 事件触发2次的问题 ([460a838](https://github.com/Moonofweisheng/wot-design-uni/commit/460a83802bad5b38d6e7063e481e510ed69dffb9)), closes [#894](https://github.com/Moonofweisheng/wot-design-uni/issues/894)
+* 🐛 修复 message-box 配合 layouts 使用全局 message-box 时,切换页面可能会显示上一次的 message-box 内容的问题 ([f137a63](https://github.com/Moonofweisheng/wot-design-uni/commit/f137a6313e45e65dd23a03ae88b304e07b1a377e))
+* 🐛 修复 Textarea 设置为 null 时,显示字数限制显示错误问题 ([#1004](https://github.com/Moonofweisheng/wot-design-uni/issues/1004)) ([60f2fe6](https://github.com/Moonofweisheng/wot-design-uni/commit/60f2fe61ae77e170e2c05e1b20d256ab107ee4db)), closes [#1003](https://github.com/Moonofweisheng/wot-design-uni/issues/1003)
+* 🐛 修复部分国际化文本不正确的问题 ([#970](https://github.com/Moonofweisheng/wot-design-uni/issues/970)) ([4319fa9](https://github.com/Moonofweisheng/wot-design-uni/commit/4319fa9badf3e3dd08218e8e90604c91c49b49c7))
+* 🐛 修复多个 ImgCropper 存在时生成图片异常的问题 ([1876fc3](https://github.com/Moonofweisheng/wot-design-uni/commit/1876fc3d0c21c2d9d9c45fe3096690a0bde46493))
+
+
+### ✨ Features | 新功能
+
+* ✨ 将 Tabbar 和 Badge 设置为标准盒子模型 ([#1036](https://github.com/Moonofweisheng/wot-design-uni/issues/1036)) ([7f2ccb2](https://github.com/Moonofweisheng/wot-design-uni/commit/7f2ccb2d372c412670bfe4ac833f8dc957d994e9))
+* ✨ 提供 useUpload hooks 用于便捷上传 ([#969](https://github.com/Moonofweisheng/wot-design-uni/issues/969)) ([49fe25a](https://github.com/Moonofweisheng/wot-design-uni/commit/49fe25a99bb0c60b3a81a11ef7eb06e762fb1d25))
+* ✨ 添加组合式API文档并提供相关API ([#972](https://github.com/Moonofweisheng/wot-design-uni/issues/972)) ([b852376](https://github.com/Moonofweisheng/wot-design-uni/commit/b85237643ce217c14a304e8477487acce327ed49))
+* ✨ 添加input props.type可选类型 ([#983](https://github.com/Moonofweisheng/wot-design-uni/issues/983)) ([91776bf](https://github.com/Moonofweisheng/wot-design-uni/commit/91776bf3de9bdd6c6954ecab8024dddbdcee7e48)), closes [#981](https://github.com/Moonofweisheng/wot-design-uni/issues/981)
+* ✨ 文档示例项目支持国际化切换 ([#992](https://github.com/Moonofweisheng/wot-design-uni/issues/992)) ([4ae9587](https://github.com/Moonofweisheng/wot-design-uni/commit/4ae9587d635c1ba80b8855d3b3d5a38939b1825c))
+* ✨ 移除 keyboard 虚拟键盘车牌号模式下不可用的 I、O 键 ([#1037](https://github.com/Moonofweisheng/wot-design-uni/issues/1037)) ([90c53d7](https://github.com/Moonofweisheng/wot-design-uni/commit/90c53d7e2c3208827433093023711c93610df7da)), closes [#1005](https://github.com/Moonofweisheng/wot-design-uni/issues/1005)
+* ✨ 引入 vitepress-plugin-llms 优化 AI 理解 ([#1034](https://github.com/Moonofweisheng/wot-design-uni/issues/1034)) ([901c754](https://github.com/Moonofweisheng/wot-design-uni/commit/901c7548fca2bc42c597bb5780769f05e63ede96))
+* ✨ 引入vitest做组件测试 ([7e84c5c](https://github.com/Moonofweisheng/wot-design-uni/commit/7e84c5c91f3c351922e976255dc97281c1fe371b))
+* ✨ grid-item添加hover-class ([#994](https://github.com/Moonofweisheng/wot-design-uni/issues/994)) ([dfaff53](https://github.com/Moonofweisheng/wot-design-uni/commit/dfaff531cb0a78ec1201f323c5d3326ca967c1e7))
+* ✨ ImgCropper 图片剪裁支持设置裁剪框宽高比 ([#973](https://github.com/Moonofweisheng/wot-design-uni/issues/973)) ([5a3f85d](https://github.com/Moonofweisheng/wot-design-uni/commit/5a3f85df6f1e3e54954754b832b0427b67559d58)), closes [#920](https://github.com/Moonofweisheng/wot-design-uni/issues/920)
+* ✨ Upload 上传组件支持根据扩展名过滤文件 ([#980](https://github.com/Moonofweisheng/wot-design-uni/issues/980)) ([51adb6b](https://github.com/Moonofweisheng/wot-design-uni/commit/51adb6b8a9911e8d64ef376b19a4aef900b52789)), closes [#796](https://github.com/Moonofweisheng/wot-design-uni/issues/796) [#581](https://github.com/Moonofweisheng/wot-design-uni/issues/581)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档中添加测试覆盖率徽标 ([4ae514c](https://github.com/Moonofweisheng/wot-design-uni/commit/4ae514c716f1c3b0cb2b05443b995eec4fb82b21))
+* ✏️ 修复全局 closeOutside 影响 DropDown 异步开关的问题 ([49e5d63](https://github.com/Moonofweisheng/wot-design-uni/commit/49e5d63dd17b48c00648bcab05cb93e743ca43ab))
+* ✏️ 移除 petercatai 聊天助手 ([5c77483](https://github.com/Moonofweisheng/wot-design-uni/commit/5c77483974189e8b22587407ff9baf484a5779da))
+* ✏️ 优化 `WdConfigProvider` 文档,解决组件命名风格问题导致失效问题 ([#989](https://github.com/Moonofweisheng/wot-design-uni/issues/989)) ([0f693f9](https://github.com/Moonofweisheng/wot-design-uni/commit/0f693f9784224ee0949d4a7efc66985224bf0d5b))
+* ✏️ update cases ([a200337](https://github.com/Moonofweisheng/wot-design-uni/commit/a2003378636a25c253a8596f5afbbbcf6ad3e419))
+
+## [1.8.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.7.1...v1.8.0) (2025-03-23)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 DateTimePicker 区域选择时边界值处理错误的问题 ([230e09f](https://github.com/Moonofweisheng/wot-design-uni/commit/230e09ff2ac25550b0efc2628827b70162041aad))
+* 🐛 修复 drop-menu-item 有选项值为空字符串时导致新值错误并触发组件内部警告的问题 ([f63de5b](https://github.com/Moonofweisheng/wot-design-uni/commit/f63de5bd1d3453e844c058a9f185c0a5e56bcf67))
+* 🐛 修复在template中使用readonly无法通过vue-ts校验的问题 ([ee5b25f](https://github.com/Moonofweisheng/wot-design-uni/commit/ee5b25fbc36a24cab02576757226f26fb9e27777))
+* 🐛 修复input、textarea组件placeholder样式在微信小程序无效的问题 ([#944](https://github.com/Moonofweisheng/wot-design-uni/issues/944)) ([1ac115f](https://github.com/Moonofweisheng/wot-design-uni/commit/1ac115fdac310760e630e8745b438f96c6b88386)), closes [#943](https://github.com/Moonofweisheng/wot-design-uni/issues/943)
+* 🐛 修复textarea统计多码元字符长度错误的问题 ([#940](https://github.com/Moonofweisheng/wot-design-uni/issues/940)) ([f9d8523](https://github.com/Moonofweisheng/wot-design-uni/commit/f9d85232c4142f0c957fa3c829dd3321c7ad56e5)), closes [#933](https://github.com/Moonofweisheng/wot-design-uni/issues/933)
+* **picker:** clear selected value and options when columns is emptied ([496cb73](https://github.com/Moonofweisheng/wot-design-uni/commit/496cb732b1ab0e69517d629e147b673692631f98)), closes [#935](https://github.com/Moonofweisheng/wot-design-uni/issues/935)
+
+
+### ✨ Features | 新功能
+
+* ✨ Img 组件添加预览图片属性 ([#945](https://github.com/Moonofweisheng/wot-design-uni/issues/945)) ([34a4878](https://github.com/Moonofweisheng/wot-design-uni/commit/34a48783f37a56fb6ed7a77dd29ee5a406bf989a))
+* ✨ 废弃 DateTimePicker 开启插槽开关use-label-slot和use-default-slot ([8d9e5c6](https://github.com/Moonofweisheng/wot-design-uni/commit/8d9e5c66589f1b6eed5faa093f2c28cf2640f5b5))
+* ✨ 新增 InputNumber 组件支持长按加减功能 ([#910](https://github.com/Moonofweisheng/wot-design-uni/issues/910)) ([9437087](https://github.com/Moonofweisheng/wot-design-uni/commit/94370876e4ce91faec6e10db5e413dfa27d0f4c2))
+* ✨ 重构 Signature 签字板历史记录模式并添加压感模式和横屏示例 ([#967](https://github.com/Moonofweisheng/wot-design-uni/issues/967)) ([aad3e83](https://github.com/Moonofweisheng/wot-design-uni/commit/aad3e8332b4cb6a1f9c0a3c81e9fb7d5068f09b3))
+* ✨ Signature 添加历史记录和历史记录步长(包含文档添加、i18n、代码示例) ([#889](https://github.com/Moonofweisheng/wot-design-uni/issues/889)) ([10ec731](https://github.com/Moonofweisheng/wot-design-uni/commit/10ec731b8986f7bf5903a923fe7f1f7d78623ecf))
+* extend wd-fab component with 4 new positions and update docs ([6f12aa4](https://github.com/Moonofweisheng/wot-design-uni/commit/6f12aa4b04477a2b1f8535e272699333ceb0b9f6))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 接入 petercatai 聊天助手 ([34f0299](https://github.com/Moonofweisheng/wot-design-uni/commit/34f02997dd79f88de89da79791d5a6c056367e8a))
+* ✏️ 添加优秀案例页面 ([ef7c98b](https://github.com/Moonofweisheng/wot-design-uni/commit/ef7c98bffb843129d872c8ebc6a1bbaf7d8437bf))
+* ✏️ 新增优秀案例——随享小栈 ([2040230](https://github.com/Moonofweisheng/wot-design-uni/commit/2040230064989bf4816932870920f52ae0797bf2))
+* ✏️ 修复 Navbar 文档部分标题显示 Tabbar 的问题 ([b4b4d59](https://github.com/Moonofweisheng/wot-design-uni/commit/b4b4d594fc29fe1f947b6ea7e8b5b90cc3f58013))
+* ✏️ 修复部分文档拼写错误 ([#911](https://github.com/Moonofweisheng/wot-design-uni/issues/911)) ([15613b3](https://github.com/Moonofweisheng/wot-design-uni/commit/15613b393aaf750a85e03512c41ffed473471228))
+* fix drop-menu demo code type error ([#905](https://github.com/Moonofweisheng/wot-design-uni/issues/905)) ([0c32c29](https://github.com/Moonofweisheng/wot-design-uni/commit/0c32c29969a8fcb748409a17a06cf277202a18a7))
+
+### [1.7.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.7.0...v1.7.1) (2025-02-19)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 InputNumber 微信小程序设置了precision后无法输入小数点的问题 ([#902](https://github.com/Moonofweisheng/wot-design-uni/issues/902)) ([e3a03b1](https://github.com/Moonofweisheng/wot-design-uni/commit/e3a03b1dbb6640b76a3034daeebd88d42252508c)), closes [#878](https://github.com/Moonofweisheng/wot-design-uni/issues/878)
+* 🐛 修复 Upload 文档自定义唤起上传样式的示例错误的问题 ([3dfa69c](https://github.com/Moonofweisheng/wot-design-uni/commit/3dfa69c282514bd786d3822963f3f1dd18089eb9))
+* 🐛 修复分页组件为0时不更新页数问题 ([#903](https://github.com/Moonofweisheng/wot-design-uni/issues/903)) ([604faeb](https://github.com/Moonofweisheng/wot-design-uni/commit/604faebf4bb19eca96ba84ee48424be12ee72ba3)), closes [#897](https://github.com/Moonofweisheng/wot-design-uni/issues/897)
+* 🐛 修复web-types可选值/默认值类型识别错误 ([#899](https://github.com/Moonofweisheng/wot-design-uni/issues/899)) ([8b4d2ed](https://github.com/Moonofweisheng/wot-design-uni/commit/8b4d2ed14b6340003c63d10e31c02f058bed3ef0))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 优化demo项目的展示方便支付宝平台提审 ([c48a67b](https://github.com/Moonofweisheng/wot-design-uni/commit/c48a67b027b9b3f66f0b051ee34bde163feda6cf))
+
+## [1.7.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.6.1...v1.7.0) (2025-02-16)
+
+
+### ✨ Features | 新功能
+
+* ✨ 添加 web-type.json 支持 webstorm 代码提示 ([#871](https://github.com/Moonofweisheng/wot-design-uni/issues/871)) ([4575099](https://github.com/Moonofweisheng/wot-design-uni/commit/4575099b9ba580fee2c03e8f8660bbfd9aa70aa3)), closes [#819](https://github.com/Moonofweisheng/wot-design-uni/issues/819)
+* ✨ 重构 Curtain 优化控制展示隐藏的实现逻辑 ([#895](https://github.com/Moonofweisheng/wot-design-uni/issues/895)) ([0e31950](https://github.com/Moonofweisheng/wot-design-uni/commit/0e3195059e0843045533b7ff89b9a3613c5449a8))
+* ✨ ActionSheet 支持 close-on-click-action 控制点击选项后是否关闭菜单功能 ([#891](https://github.com/Moonofweisheng/wot-design-uni/issues/891)) ([a1b035a](https://github.com/Moonofweisheng/wot-design-uni/commit/a1b035a6fe3a9ae3a023032b6c33403853424559)), closes [#698](https://github.com/Moonofweisheng/wot-design-uni/issues/698)
+* ✨ NavbarCapsule 导航胶囊组件支持外部传入样式 ([fb980e7](https://github.com/Moonofweisheng/wot-design-uni/commit/fb980e7d9bd90c76570d2069a9d41a6c1187ef30))
+* ✨ Rate 评分新增支持半选和触摸滑动选中 ([#896](https://github.com/Moonofweisheng/wot-design-uni/issues/896)) ([9d34f2e](https://github.com/Moonofweisheng/wot-design-uni/commit/9d34f2e5d90cca1820d69100bca7c546ce16fb0e)), closes [#669](https://github.com/Moonofweisheng/wot-design-uni/issues/669)
+* ✨ Toast 支持设置布局方向 ([ed60852](https://github.com/Moonofweisheng/wot-design-uni/commit/ed60852432999d295e4af2efe9f1ee86e235e1ee)), closes [#780](https://github.com/Moonofweisheng/wot-design-uni/issues/780)
+* ✨ Toast 支持通过props设置组件属性并新增局中显示的配置 ([#888](https://github.com/Moonofweisheng/wot-design-uni/issues/888)) ([ebbe7e4](https://github.com/Moonofweisheng/wot-design-uni/commit/ebbe7e407904df428564dcf53e5141c14d9e7daa))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 标注 Form 组件支持不校验隐藏子组件的版本 ([e5a24c4](https://github.com/Moonofweisheng/wot-design-uni/commit/e5a24c4873baa9db62ad1ab6f3adb078dac89dc2))
+* ✏️ 新增关于页面展示主要团队成员信息 ([031107d](https://github.com/Moonofweisheng/wot-design-uni/commit/031107d5888c2887ea40d47810239cd398f042ef))
+* ✏️ 修复 SwipeAction 文档示例拼写错误的问题 ([1dc48cf](https://github.com/Moonofweisheng/wot-design-uni/commit/1dc48cfce9773a0ec60dd2b6cb8fd6c60bb63281))
+* ✏️ 修复文档拼写的错误 ([8f8cb10](https://github.com/Moonofweisheng/wot-design-uni/commit/8f8cb1077aa318e9fb067dfeebdd04dfbdb12412))
+* ✏️ fix create-uni command error ([#874](https://github.com/Moonofweisheng/wot-design-uni/issues/874)) ([a0da88c](https://github.com/Moonofweisheng/wot-design-uni/commit/a0da88c5db21b7127de9342aabcf6961b611e22d))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 InputNumber 设置了precision后无法输入小数点的问题 ([#886](https://github.com/Moonofweisheng/wot-design-uni/issues/886)) ([dd1a005](https://github.com/Moonofweisheng/wot-design-uni/commit/dd1a00596472023c9b6e545dbf2a9a8238e67baf)), closes [#878](https://github.com/Moonofweisheng/wot-design-uni/issues/878)
+* 🐛 修复 Swiper 在微信小程序平台轮播视频时在iOS平台全屏展示异常的问题 ([#898](https://github.com/Moonofweisheng/wot-design-uni/issues/898)) ([34a15ac](https://github.com/Moonofweisheng/wot-design-uni/commit/34a15ac0786d003825491cc9fa2a8961b307c0d2)), closes [#885](https://github.com/Moonofweisheng/wot-design-uni/issues/885)
+* 🐛 修复 Tabs 组件导航地图标题不生效的问题 ([#869](https://github.com/Moonofweisheng/wot-design-uni/issues/869)) ([ccf976a](https://github.com/Moonofweisheng/wot-design-uni/commit/ccf976ad631b4ad0272d4897a6245cdd8f13fa4b))
+* 🐛 修复 Upload 组件自定义上传方法不支持asyncfunction的问题 ([#890](https://github.com/Moonofweisheng/wot-design-uni/issues/890)) ([25649db](https://github.com/Moonofweisheng/wot-design-uni/commit/25649dbca55059cb425ba7d7b4e0af7884366dce)), closes [#859](https://github.com/Moonofweisheng/wot-design-uni/issues/859)
+
+### [1.6.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.6.0...v1.6.1) (2025-01-20)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 更新文档小程序二维码 ([a5f862b](https://github.com/Moonofweisheng/wot-design-uni/commit/a5f862bdbea6a84df7ad2e3bef4456baae040ae8))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Search placeholder 样式丢失的问题 ([#857](https://github.com/Moonofweisheng/wot-design-uni/issues/857)) ([40565d1](https://github.com/Moonofweisheng/wot-design-uni/commit/40565d19688f6776cdb4ea4b9fc3f6cbaeb4dc66)), closes [#856](https://github.com/Moonofweisheng/wot-design-uni/issues/856)
+
+## [1.6.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.5.1...v1.6.0) (2025-01-18)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 常见问题添加Vue 3.3+使用defineOptions设置styleIsolation规则的介绍 ([f3bee13](https://github.com/Moonofweisheng/wot-design-uni/commit/f3bee13b46ccbb8856b9051a99ed2b5356dc0d8e)), closes [#784](https://github.com/Moonofweisheng/wot-design-uni/issues/784)
+* ✏️ 更新组件库互助群二维码 ([9b50d6c](https://github.com/Moonofweisheng/wot-design-uni/commit/9b50d6c6922e34c964621cff926565cb9fb723ab))
+* ✏️ 添加互助交流QQ群3群二维码 ([1d0b11b](https://github.com/Moonofweisheng/wot-design-uni/commit/1d0b11b25621b7b585fe1e047093d07861c88a30))
+* ✏️ 微信小程序演示demo提供激励视频广告页面 ([#783](https://github.com/Moonofweisheng/wot-design-uni/issues/783)) ([7ed7dd3](https://github.com/Moonofweisheng/wot-design-uni/commit/7ed7dd3495c84f91ed5e77870da7e5845fc28a94))
+* ✏️ 修复 Tooltip 文档显示异常的问题 ([c89eb92](https://github.com/Moonofweisheng/wot-design-uni/commit/c89eb927a21e0f4e10d317346c31ab45d322720d))
+* ✏️ 演示demo小程序支持分享 ([583acc2](https://github.com/Moonofweisheng/wot-design-uni/commit/583acc2fa942422469abcab5f805a54c72614d69))
+* ✏️ 优化演示demo支持在顶部显示对应页面微信小程序的二维码 ([b1f42af](https://github.com/Moonofweisheng/wot-design-uni/commit/b1f42af640a32d8c9119331a19fe0495a908b16c))
+* ✏️修改自定义样式描述 [#772](https://github.com/Moonofweisheng/wot-design-uni/issues/772) ([1ac352d](https://github.com/Moonofweisheng/wot-design-uni/commit/1ac352da9539e60ac79bd1ec10768e08e4d49ff3))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Calendar 为周选择时跨年周的单元格值显示错误的问题 ([#854](https://github.com/Moonofweisheng/wot-design-uni/issues/854)) ([c0d48b2](https://github.com/Moonofweisheng/wot-design-uni/commit/c0d48b25c11af87629e7feedc6cd0cc3a70b37e4))
+* 🐛 修复 Divider 分割线组件 CustomClass 未生效的问题 ([#790](https://github.com/Moonofweisheng/wot-design-uni/issues/790)) ([44df081](https://github.com/Moonofweisheng/wot-design-uni/commit/44df081dbd80771a9df122be4e3953034194308f)), closes [#789](https://github.com/Moonofweisheng/wot-design-uni/issues/789)
+* 🐛 修复 Form 表单 validator 校验不通过且未指定错误信息时无法显示校验信息的问题 ([#791](https://github.com/Moonofweisheng/wot-design-uni/issues/791)) ([bdb5653](https://github.com/Moonofweisheng/wot-design-uni/commit/bdb56537db7fbec59224ebf5aecd3e7a6354424c))
+* 🐛 修复Button初始化margin的问题 ([#831](https://github.com/Moonofweisheng/wot-design-uni/issues/831)) ([3836309](https://github.com/Moonofweisheng/wot-design-uni/commit/38363097a5fbf4c0c7116abd536f90936d2fa86d))
+* 🐛 修复Card footer或者header没写的时候,不会自动隐藏占位 ([8d528cb](https://github.com/Moonofweisheng/wot-design-uni/commit/8d528cb9c06c48456016e0a4cce1cf0699b7311b))
+* 🐛 修复Form组件rules属性,没有按照顺序执行问题 ([#808](https://github.com/Moonofweisheng/wot-design-uni/issues/808)) ([834cd8e](https://github.com/Moonofweisheng/wot-design-uni/commit/834cd8e3f08919800189c1d2710267d4aa99a8d5)), closes [#799](https://github.com/Moonofweisheng/wot-design-uni/issues/799) [#799](https://github.com/Moonofweisheng/wot-design-uni/issues/799) [#799](https://github.com/Moonofweisheng/wot-design-uni/issues/799)
+* 🐛 修复Input初始化修改失败的问题 ([#814](https://github.com/Moonofweisheng/wot-design-uni/issues/814)) ([04e9a50](https://github.com/Moonofweisheng/wot-design-uni/commit/04e9a50ede30337c35e9f28b7f7985f3e717a91f))
+* 🐛 修复Picker文档初始选项code错误的问题 ([67f675d](https://github.com/Moonofweisheng/wot-design-uni/commit/67f675d1cc4764e25d357b91c17ad276612340a1))
+* 🐛 修复popover tooltip组件visibleArrow=false时弹出框距离元素间距过远的问题 ([#792](https://github.com/Moonofweisheng/wot-design-uni/issues/792)) ([3b6d10d](https://github.com/Moonofweisheng/wot-design-uni/commit/3b6d10dbb93188adb3aea3fc9f7d1b763b4d5ec9)), closes [#788](https://github.com/Moonofweisheng/wot-design-uni/issues/788)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增Signature签名组件 ([0ad8fcc](https://github.com/Moonofweisheng/wot-design-uni/commit/0ad8fcce28f5692572aeae79f0cc7315aa6e5b54)), closes [#505](https://github.com/Moonofweisheng/wot-design-uni/issues/505)
+* ✨ 修复 InputNumber 在设置为 allow-null 时被赋值为空时未触发更新的问题并支持异步更新 ([#812](https://github.com/Moonofweisheng/wot-design-uni/issues/812)) ([0fc90dd](https://github.com/Moonofweisheng/wot-design-uni/commit/0fc90ddcc9b5d478fe3e5bf84e2e780c48a8a341))
+* ✨ 修复Img组件在错误状态下可以预览的问题 ([dbd2c85](https://github.com/Moonofweisheng/wot-design-uni/commit/dbd2c85b83b0992e791c0b828a12f182d4923b81))
+* ✨ Calendar 确认事件 confirm 增加 `type` 参数 ([e0fca91](https://github.com/Moonofweisheng/wot-design-uni/commit/e0fca9161e8282871b2126ecc82999bc9530eb6b))
+* ✨ Form 表单 validate 方法支持传入数组 ([#829](https://github.com/Moonofweisheng/wot-design-uni/issues/829)) ([8e6096a](https://github.com/Moonofweisheng/wot-design-uni/commit/8e6096ab7459b9164ef1ec9b366becf9acc7ab83)), closes [#797](https://github.com/Moonofweisheng/wot-design-uni/issues/797)
+* ✨ Search新增customInputClass,placeholderClass等属性 ([#845](https://github.com/Moonofweisheng/wot-design-uni/issues/845)) ([03623f4](https://github.com/Moonofweisheng/wot-design-uni/commit/03623f4989b6bfbf53588058c632eb2f2e830bfd)), closes [#299](https://github.com/Moonofweisheng/wot-design-uni/issues/299)
+* ✨ Swiper 轮播视频支持控制静音播放和循环播放 ([#855](https://github.com/Moonofweisheng/wot-design-uni/issues/855)) ([7a0d5ce](https://github.com/Moonofweisheng/wot-design-uni/commit/7a0d5ce9720020e3f0fb148f7b65db129ceb82af)), closes [#846](https://github.com/Moonofweisheng/wot-design-uni/issues/846)
+* ✨ Swiper 轮播项type字段的处理逻辑限制在可选值范围内 ([#785](https://github.com/Moonofweisheng/wot-design-uni/issues/785)) ([1fd0a27](https://github.com/Moonofweisheng/wot-design-uni/commit/1fd0a27788db2b467bc53e83a6a4953e5d134c53))
+
+### [1.5.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.5.0...v1.5.1) (2024-12-10)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 调整 Upload 的覆盖上传参数 reupload 默认值为 false ([d9ce000](https://github.com/Moonofweisheng/wot-design-uni/commit/d9ce00010a15ae8e168e082a2c4f3a50cf61fa13))
+
+## [1.5.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.4.0...v1.5.0) (2024-12-09)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Button 按钮设置为 block 无效的问题 ([#762](https://github.com/Moonofweisheng/wot-design-uni/issues/762)) ([ea8bc66](https://github.com/Moonofweisheng/wot-design-uni/commit/ea8bc6671012a811f49027062e6e7f8f1359a175))
+* 🐛 修复 Cell 设置 label 过长时影响页面结构的问题 ([70058f2](https://github.com/Moonofweisheng/wot-design-uni/commit/70058f2270788fb9d7edd56eff35bd2cbebcd99e))
+* 🐛 修复 Collapse v-model绑定数据变化时未更新折叠面板状态的问题 ([#744](https://github.com/Moonofweisheng/wot-design-uni/issues/744)) ([09f7f9c](https://github.com/Moonofweisheng/wot-design-uni/commit/09f7f9caf5e381ef44fb9a31965f8d2d70d4e271)), closes [#741](https://github.com/Moonofweisheng/wot-design-uni/issues/741)
+* 🐛 修复 GridItem 徽标属性类型标注错误的问题 ([c018560](https://github.com/Moonofweisheng/wot-design-uni/commit/c018560b7d3087b89b759b3c83aff91c74354021)), closes [#766](https://github.com/Moonofweisheng/wot-design-uni/issues/766)
+* 🐛 修复 Progress 无法设置进度为 0 的问题 ([#748](https://github.com/Moonofweisheng/wot-design-uni/issues/748)) ([c136f54](https://github.com/Moonofweisheng/wot-design-uni/commit/c136f54cda6164ab3653d47342d7c88c5f515efc)), closes [#747](https://github.com/Moonofweisheng/wot-design-uni/issues/747)
+* 🐛 修复 Swiper 在支付宝小程序平台点击事件无效的问题 ([f63bf10](https://github.com/Moonofweisheng/wot-design-uni/commit/f63bf101338d7f9d2f72c5941d3405950544a1d7))
+* 🐛 修复 Tab 未渲染项高度会影响整体高度的问题 ([5e06378](https://github.com/Moonofweisheng/wot-design-uni/commit/5e063781a3b58f94f107816473600ce95f3761e9))
+* 🐛 修复 vue-tsc 校验不通过的问题 ([#753](https://github.com/Moonofweisheng/wot-design-uni/issues/753)) ([a90f4ad](https://github.com/Moonofweisheng/wot-design-uni/commit/a90f4ad2f2b68bb79f30a2e6973a4e149b7ba66e)), closes [#752](https://github.com/Moonofweisheng/wot-design-uni/issues/752)
+* 🐛 修复微信小程序在iOS设备上处于后台一段时间后抖动的问题 ([6091566](https://github.com/Moonofweisheng/wot-design-uni/commit/6091566380c7c129fca284eb4e5a2ba6e447a7ab)), closes [#694](https://github.com/Moonofweisheng/wot-design-uni/issues/694)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整文档结构增加文档内容可用宽度,支持收起演示demo ([#765](https://github.com/Moonofweisheng/wot-design-uni/issues/765)) ([402f73f](https://github.com/Moonofweisheng/wot-design-uni/commit/402f73f6ee8aa7d022b640333e6bfef4311fdc6f))
+* ✏️ 添加 MessageBox 自定义按钮样式的文档 ([46b1c39](https://github.com/Moonofweisheng/wot-design-uni/commit/46b1c394a024c293fb07c7788691e2ac572a2fa1))
+* ✏️ 添加关于Sass的介绍 ([995a65f](https://github.com/Moonofweisheng/wot-design-uni/commit/995a65f8451801062ae83f0f71470d0c428dba7f))
+* ✏️ 优化 Cell 关于 clickable 和 is-link 的介绍 ([6f58e72](https://github.com/Moonofweisheng/wot-design-uni/commit/6f58e72b1d5436326052a79da19e21d071ab9b3c))
+* ✏️ 增加 ConfigProvider 组件设定全局共享示例 ([#758](https://github.com/Moonofweisheng/wot-design-uni/issues/758)) ([356cb4a](https://github.com/Moonofweisheng/wot-design-uni/commit/356cb4ad11791366138002233754b2d2e79d5d18))
+* ✏️ Table 表格组件提供结合分页器使用的demo ([#738](https://github.com/Moonofweisheng/wot-design-uni/issues/738)) ([fb7580d](https://github.com/Moonofweisheng/wot-design-uni/commit/fb7580df7eee7d81d3826c399e565975cef81625))
+
+
+### ✨ Features | 新功能
+
+* ✨ 优化 Divider 分割线功能支持虚线、垂直等功能 ([#737](https://github.com/Moonofweisheng/wot-design-uni/issues/737)) ([1b9d7e6](https://github.com/Moonofweisheng/wot-design-uni/commit/1b9d7e625256b365a381b30e902bb54692d636cf))
+* ✨ Calendar 优化选中样式和滚动位置处理并支持屏蔽内置cell ([#768](https://github.com/Moonofweisheng/wot-design-uni/issues/768)) ([97c4004](https://github.com/Moonofweisheng/wot-design-uni/commit/97c40047e8ed46af31d4c1647056d90c2edf4842))
+* ✨ Curtain 幕帘新增 close 插槽和自定义关闭插槽样式类 ([#746](https://github.com/Moonofweisheng/wot-design-uni/issues/746)) ([7bc3592](https://github.com/Moonofweisheng/wot-design-uni/commit/7bc359205deb99899baf01c733af9690b12703fa)), closes [#648](https://github.com/Moonofweisheng/wot-design-uni/issues/648)
+* ✨ DropMenuItem 增加自定 Popup 样式参数 ([28ad03b](https://github.com/Moonofweisheng/wot-design-uni/commit/28ad03b7afdd38a86f168d15a7c0f3564d122101))
+* ✨ Input、Textarea在APP-VUE和H5端支持inputmode ([#771](https://github.com/Moonofweisheng/wot-design-uni/issues/771)) ([9ceb2e8](https://github.com/Moonofweisheng/wot-design-uni/commit/9ceb2e807e33edd3937db5f57a4306f1ce719cff)), closes [#743](https://github.com/Moonofweisheng/wot-design-uni/issues/743)
+* ✨ MessageBox 新增确认、取消按钮的 ButtonProps 属性 ([#761](https://github.com/Moonofweisheng/wot-design-uni/issues/761)) ([80682ba](https://github.com/Moonofweisheng/wot-design-uni/commit/80682ba933427fac7bfefc6c692cd058a14163c5)), closes [#740](https://github.com/Moonofweisheng/wot-design-uni/issues/740)
+* ✨ Radio添加icon-placement属性用于控制图标方向 ([#763](https://github.com/Moonofweisheng/wot-design-uni/issues/763)) ([b06a7a7](https://github.com/Moonofweisheng/wot-design-uni/commit/b06a7a751b3115c8e3909af4cbe595684ed9d00f)), closes [#371](https://github.com/Moonofweisheng/wot-design-uni/issues/371)
+* ✨ Segmented 提供 updateActiveStyle 方法设置激活样式 ([529e57f](https://github.com/Moonofweisheng/wot-design-uni/commit/529e57fc83b00482f101e84cf0437627e140a59f))
+* ✨ Table 支持设置不固定表头 ([#769](https://github.com/Moonofweisheng/wot-design-uni/issues/769)) ([b0a2461](https://github.com/Moonofweisheng/wot-design-uni/commit/b0a2461a1a6f9691502a1f4a1a06ec4103fabd4b))
+* ✨ Upload 支持文件重传 ([3cd5137](https://github.com/Moonofweisheng/wot-design-uni/commit/3cd5137129ae13f90744a5d0038686cef5602d8c))
+
+## [1.4.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.14...v1.4.0) (2024-11-24)
+
+
+### ✨ Features | 新功能
+
+* ✨ Curtain 幕帘组件支持设置 z-index ([a1e20af](https://github.com/Moonofweisheng/wot-design-uni/commit/a1e20afef34704e518a96d4b4cb248cab3b7a8b6))
+* ✨ Siderbar 侧边栏添加before-change属性支持异步更新 ([#721](https://github.com/Moonofweisheng/wot-design-uni/issues/721)) ([1f5801d](https://github.com/Moonofweisheng/wot-design-uni/commit/1f5801d3f4c2cfc1b3990d74077e18ea88e8d7f8)), closes [#711](https://github.com/Moonofweisheng/wot-design-uni/issues/711)
+* ✨ Swiper 支持指定轮播项的文件类型 ([#720](https://github.com/Moonofweisheng/wot-design-uni/issues/720)) ([1e039cb](https://github.com/Moonofweisheng/wot-design-uni/commit/1e039cb7073d57bd19f59d4ffbb95c74b5cdc42f)), closes [#712](https://github.com/Moonofweisheng/wot-design-uni/issues/712)
+* ✨ Tab 添加 lazy 属性支持配置是否开启懒加载 ([bb5b193](https://github.com/Moonofweisheng/wot-design-uni/commit/bb5b19325fc2a0f4d13d353ee9bc8cfbf8605daa)), closes [#641](https://github.com/Moonofweisheng/wot-design-uni/issues/641)
+* ✨ Tabs 新增 `autoLineWidth` 设置底部条宽度自动同步文本内容' ([#679](https://github.com/Moonofweisheng/wot-design-uni/issues/679)) ([cb7cbf3](https://github.com/Moonofweisheng/wot-design-uni/commit/cb7cbf33250e3711d631271b1bbcb5f6829e75fa))
+* ✨ Tabs 新增map-title属性支持修改导航地图标题 ([0b7605f](https://github.com/Moonofweisheng/wot-design-uni/commit/0b7605f3ef2ca11cedc2cc61a3eb93e0757e6b86)), closes [#670](https://github.com/Moonofweisheng/wot-design-uni/issues/670)
+* ✨ Tabs 支持设置徽标 ([#724](https://github.com/Moonofweisheng/wot-design-uni/issues/724)) ([cd20581](https://github.com/Moonofweisheng/wot-design-uni/commit/cd20581ca6f75a67995a0cf562f524d82e357bbc)), closes [#689](https://github.com/Moonofweisheng/wot-design-uni/issues/689) [#672](https://github.com/Moonofweisheng/wot-design-uni/issues/672)
+* ✨ tabs支持左对齐 ([#718](https://github.com/Moonofweisheng/wot-design-uni/issues/718)) ([314c2e8](https://github.com/Moonofweisheng/wot-design-uni/commit/314c2e8c9d08e806dd0ec78fd4b2aa5e536af8f8)), closes [#380](https://github.com/Moonofweisheng/wot-design-uni/issues/380)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Collapse 使用 toggleAall 方法时不会触发 before-expand 钩子的问题 ([#727](https://github.com/Moonofweisheng/wot-design-uni/issues/727)) ([02aa5ce](https://github.com/Moonofweisheng/wot-design-uni/commit/02aa5ceb78713f210d97ecc29f18618084b93096))
+* 🐛 修复 CollapseItem 在微信小程序平台使用 title 插槽时宽度无法撑满的问题 ([4f1d945](https://github.com/Moonofweisheng/wot-design-uni/commit/4f1d9452ecd5054a636fb51871369ee1f183e1f1))
+* 🐛 修复 DateTimePicker 设置为 time 类型时绑定值无法设置为空数组的问题 ([443ac92](https://github.com/Moonofweisheng/wot-design-uni/commit/443ac929820327339062a608ef94db43bdaafb27)), closes [#706](https://github.com/Moonofweisheng/wot-design-uni/issues/706)
+* 🐛 修复 FloadingPanel 设置 height 不生效的问题 ([#725](https://github.com/Moonofweisheng/wot-design-uni/issues/725)) ([3cc1805](https://github.com/Moonofweisheng/wot-design-uni/commit/3cc18058aee83ed0abbf804595e38d7934490f4a)), closes [#703](https://github.com/Moonofweisheng/wot-design-uni/issues/703)
+* 🐛 修复 Slider 滑块处于极值时会遮挡max和min的问题 ([aa8834d](https://github.com/Moonofweisheng/wot-design-uni/commit/aa8834df630286882425778263ea9ff68811c928)), closes [#714](https://github.com/Moonofweisheng/wot-design-uni/issues/714)
+* 🐛 修复 wd-select-picker 组件单选搜索高亮 class 错误 ([7d461a5](https://github.com/Moonofweisheng/wot-design-uni/commit/7d461a54d09b14273fd18ff37310ecf754cf5138))
+* 🐛 修复Collapse折叠面板组件内容溢出问题 ([#710](https://github.com/Moonofweisheng/wot-design-uni/issues/710)) ([4bf8d1e](https://github.com/Moonofweisheng/wot-design-uni/commit/4bf8d1e300c28f405402582dd32fde4245d9ed47))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整文档中gitee镜像仓库的地址 ([a40dd9f](https://github.com/Moonofweisheng/wot-design-uni/commit/a40dd9f63e52cf178be2fd9a93904cdf26e23f14))
+* ✏️ 调整join-group页面加群的问题 ([9a70d89](https://github.com/Moonofweisheng/wot-design-uni/commit/9a70d89be1e369dc2ea2a4babd3b3fdb326fcecc))
+* ✏️ 添加 Cell 单元格 border 属性的文档 ([fad777d](https://github.com/Moonofweisheng/wot-design-uni/commit/fad777dfa8cf8dcf26288a9f975927dc3de2e80d)), closes [#653](https://github.com/Moonofweisheng/wot-design-uni/issues/653)
+* ✏️ 添加关于 Button 自定义样式设置阴影的文档 ([c38321f](https://github.com/Moonofweisheng/wot-design-uni/commit/c38321f69c8f4fcb572cb40c8eef38cf4fa20eae)), closes [#731](https://github.com/Moonofweisheng/wot-design-uni/issues/731)
+* ✏️ 文档新增演示页面源码和组件源码链接 ([330e8c7](https://github.com/Moonofweisheng/wot-design-uni/commit/330e8c7bbfc792f4a29cdaa08dec8b35c75b2a30))
+* ✏️ 优化 NoticeBar 垂直滚动示例 ([ff1d377](https://github.com/Moonofweisheng/wot-design-uni/commit/ff1d37723b38169fc1a1f75676a8464343b42bec))
+* ✏️ 增加 Input 字数限制的示例 ([5aa1c00](https://github.com/Moonofweisheng/wot-design-uni/commit/5aa1c00acd72f17cea108ffccecc427711e2cbdb))
+* ✏️ 增加关于Tabs属性autoLineWidth的介绍和最低版本要求 ([08e7d77](https://github.com/Moonofweisheng/wot-design-uni/commit/08e7d774c6b6886fe3f79431b4728176e267144f))
+
+### [1.3.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.13...v1.3.14) (2024-11-09)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Curtain 幕帘组件在某些情况下关闭按钮不显示的问题 ([8c0e978](https://github.com/Moonofweisheng/wot-design-uni/commit/8c0e97831445183662ce0af79210117eb77e63e9)), closes [#690](https://github.com/Moonofweisheng/wot-design-uni/issues/690)
+* 🐛 修复Picker和SelectPicker清空按钮颜色与Input不统一的问题 ([#700](https://github.com/Moonofweisheng/wot-design-uni/issues/700)) ([8fdbfa3](https://github.com/Moonofweisheng/wot-design-uni/commit/8fdbfa319a5c0c5895a3162b56cd3225c54a24d2))
+* 🐛 修复upload组件header默认值错误的问题 ([4cfd1e5](https://github.com/Moonofweisheng/wot-design-uni/commit/4cfd1e568d55eed9efe9cc1dadcc30dd571d3b36)), closes [#691](https://github.com/Moonofweisheng/wot-design-uni/issues/691)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档添加生活小工具 ([6f44a63](https://github.com/Moonofweisheng/wot-design-uni/commit/6f44a631ac067a7321ff0cb6ea8ebaabbc64bd9b))
+* ✏️ 文档中添加wot-demo的介绍 ([66fff60](https://github.com/Moonofweisheng/wot-design-uni/commit/66fff6009b261a62be96d4c279d83833c70a8a0f))
+* ✏️ 增加create-uni创建快速上手项目的介绍 ([92aa1ef](https://github.com/Moonofweisheng/wot-design-uni/commit/92aa1efe68f4a9bd52942122b2f063384eb885fc))
+
+
+### ✨ Features | 新功能
+
+* ✨ 使用Transition重构Popup为center类型的Popup添加zoom-in动画 ([#699](https://github.com/Moonofweisheng/wot-design-uni/issues/699)) ([0dd34d0](https://github.com/Moonofweisheng/wot-design-uni/commit/0dd34d06492f9d071ce6c11aa82789fbcc5cd442)), closes [#687](https://github.com/Moonofweisheng/wot-design-uni/issues/687)
+* ✨ 移除Switch默认的size支持在不指定size的情况下使用css变量设置组件尺寸 ([5e55da4](https://github.com/Moonofweisheng/wot-design-uni/commit/5e55da4839677c63534148d4664dbde1c9f950b2)), closes [#516](https://github.com/Moonofweisheng/wot-design-uni/issues/516)
+* ✨ 优化Toast、Message和Notify组件的函数式调用方案 ([#696](https://github.com/Moonofweisheng/wot-design-uni/issues/696)) ([9f318bd](https://github.com/Moonofweisheng/wot-design-uni/commit/9f318bdeb37bea643276d3e7f8be51bfc1b19d27))
+* ✨ 支持Button在支付宝小程序平台opentype设为getAuthorize用于获取手机号和用户信息 ([deeb45d](https://github.com/Moonofweisheng/wot-design-uni/commit/deeb45d8cb47284c1a557b50c3fcd95f80f93c22))
+* ✨ Form 校验规则validator支持传入Error作为校验提示 ([db32ef9](https://github.com/Moonofweisheng/wot-design-uni/commit/db32ef962140333a13e2a04ba4642e7423bc4bef)), closes [#667](https://github.com/Moonofweisheng/wot-design-uni/issues/667)
+* ✨ Loadmore提供loadingProps属性用于自定义loading样式 ([178e056](https://github.com/Moonofweisheng/wot-design-uni/commit/178e056035511de4123d2bd9ce575948154874b4))
+* ✨ Table 行高支持Number和String类型 ([#682](https://github.com/Moonofweisheng/wot-design-uni/issues/682)) ([21f0b17](https://github.com/Moonofweisheng/wot-design-uni/commit/21f0b178b6e3221a69609dd1603960fc866cb534))
+
+### [1.3.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.12...v1.3.13) (2024-10-25)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 快速上手增加vue和uni-app的快速上手链接 ([20148a7](https://github.com/Moonofweisheng/wot-design-uni/commit/20148a7800d12376adedadb32bf29239f02baef3))
+* ✏️ 添加关于深度选择的介绍 ([63428f2](https://github.com/Moonofweisheng/wot-design-uni/commit/63428f244ae84574027ea89e19598c3600716f7b))
+* ✏️ 文档新增展示优秀案例 ([47c1764](https://github.com/Moonofweisheng/wot-design-uni/commit/47c176490dabda1937abea8342d02cc6cbbcfc02))
+* ✏️ 优化文档快速上手章节 ([4e9a9da](https://github.com/Moonofweisheng/wot-design-uni/commit/4e9a9da914a372f1b0f31cfcc7fbc2f96650ef58))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Notice在Tabbar页面时跳转至其他页面导致播放异常的问题并提供reset方法 ([#680](https://github.com/Moonofweisheng/wot-design-uni/issues/680)) ([7584ac2](https://github.com/Moonofweisheng/wot-design-uni/commit/7584ac2a1249b6bee79669ae57c80da08a17d912)), closes [#358](https://github.com/Moonofweisheng/wot-design-uni/issues/358) [#650](https://github.com/Moonofweisheng/wot-design-uni/issues/650)
+
+
+### ✨ Features | 新功能
+
+* ✨ 为Picker和SelectPicker补充clear事件 ([8fffaa6](https://github.com/Moonofweisheng/wot-design-uni/commit/8fffaa646aad195b33c56719ffb28b2529f3f627))
+* ✨ 移除 Navbar 点击热区的激活态样式 ([60b07e5](https://github.com/Moonofweisheng/wot-design-uni/commit/60b07e514b836c55305536e2ba29ec5239b62de3)), closes [#511](https://github.com/Moonofweisheng/wot-design-uni/issues/511)
+* ✨ cell组件border属性以props为最高优先级 ([#656](https://github.com/Moonofweisheng/wot-design-uni/issues/656)) ([31353ce](https://github.com/Moonofweisheng/wot-design-uni/commit/31353ceafa3bcae01202c40918e579d141957c0a))
+* ✨ picker和selectPicker添加clearable属性 ([b0d60a0](https://github.com/Moonofweisheng/wot-design-uni/commit/b0d60a0b750e8ed2cbae0b55309145c6963e498a))
+* ✨ Swiper 轮播组件支持展示视频和设置轮播项标题 ([#663](https://github.com/Moonofweisheng/wot-design-uni/issues/663)) ([a50c0be](https://github.com/Moonofweisheng/wot-design-uni/commit/a50c0be38465342e5b688b8e10b377d69ba998a6))
+
+### [1.3.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.11...v1.3.12) (2024-10-08)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Upload文件小程序找不到文件,显示的问题 ([c13e605](https://github.com/Moonofweisheng/wot-design-uni/commit/c13e6058a2c665c174806aebd353294113c4007e))
+* 🐛 Radio修复在cell里面高度的问题 ([f9deacf](https://github.com/Moonofweisheng/wot-design-uni/commit/f9deacf40eed17a37558ca96319880822ca897d5))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 优化捐赠榜单中捐赠人链接的展示效果 ([898f079](https://github.com/Moonofweisheng/wot-design-uni/commit/898f07985e602ad18a84c06b5bd6183dd61142cd))
+* ✏️ Upload添加preview-cover最低版本 ([52f9bf6](https://github.com/Moonofweisheng/wot-design-uni/commit/52f9bf654b26a09c20b7118efb331f7e6228ea79))
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 FloatingPanel 浮动面板组件 ([#616](https://github.com/Moonofweisheng/wot-design-uni/issues/616)) ([e2966fd](https://github.com/Moonofweisheng/wot-design-uni/commit/e2966fdd01d6c91ab9499fbc95e4f7160a83deb5)), closes [#509](https://github.com/Moonofweisheng/wot-design-uni/issues/509)
+* ✨ 新增支持法语、日语等9 种语言 ([#637](https://github.com/Moonofweisheng/wot-design-uni/issues/637)) ([691a7b5](https://github.com/Moonofweisheng/wot-design-uni/commit/691a7b57727af45f3c2f99437740be72e8be0f86))
+* ✨ StatusTip缺省提示组件提供图片内容插槽([#538](https://github.com/Moonofweisheng/wot-design-uni/issues/538)) ([#615](https://github.com/Moonofweisheng/wot-design-uni/issues/615)) ([c6b2cf8](https://github.com/Moonofweisheng/wot-design-uni/commit/c6b2cf84db1cb5536516606999c1fa3d6bd1dbe3))
+* ✨ ToolTip 组件 offset 属性支持数组和对象写法 ([#625](https://github.com/Moonofweisheng/wot-design-uni/issues/625)) ([5092c5a](https://github.com/Moonofweisheng/wot-design-uni/commit/5092c5a6548fe7222e0d6e2614020f15ce95c5df)), closes [#560](https://github.com/Moonofweisheng/wot-design-uni/issues/560)
+* ✨ Upload新增preview-cover插槽 ([ef6433d](https://github.com/Moonofweisheng/wot-design-uni/commit/ef6433d81c576db8b55715a14a574a6d392478df))
+* ✨Calendar日历添加open事件 ([#627](https://github.com/Moonofweisheng/wot-design-uni/issues/627)) ([43a5da6](https://github.com/Moonofweisheng/wot-design-uni/commit/43a5da631d4402319d4e3f0739f2ab7e960e497f)), closes [#624](https://github.com/Moonofweisheng/wot-design-uni/issues/624)
+
+### [1.3.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.10...v1.3.11) (2024-09-23)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 移除文档中CountTo不支持的type ([cae2e56](https://github.com/Moonofweisheng/wot-design-uni/commit/cae2e56aba98427b1b6c7a2c3f6a2f9ed8acf96f))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复[#598](https://github.com/Moonofweisheng/wot-design-uni/issues/598)产生的使用未定义变量的问题 ([ce64daf](https://github.com/Moonofweisheng/wot-design-uni/commit/ce64daf77d119df509873226c9209cae406e0330))
+* 🐛 修复与@uni-helper/uni-typed搭配使用时tsc报类型错误的问题并更新依赖 ([f9ca2e4](https://github.com/Moonofweisheng/wot-design-uni/commit/f9ca2e4d4ed2ef88a073f7f80ce64df811144b3a)), closes [#586](https://github.com/Moonofweisheng/wot-design-uni/issues/586)
+* 🐛 修复Button设置为hairline时圆角显示异常的问题 ([10ebf5c](https://github.com/Moonofweisheng/wot-design-uni/commit/10ebf5c3959099389f1f1349e32ad755740ce0d5)), closes [#486](https://github.com/Moonofweisheng/wot-design-uni/issues/486)
+* 🐛 修复Input、Textarea未设置labelWidth时通过CSS变量设置label宽度无效的问题 ([#591](https://github.com/Moonofweisheng/wot-design-uni/issues/591)) ([2f12ac6](https://github.com/Moonofweisheng/wot-design-uni/commit/2f12ac6d2b598c7fa545009a82acd1c07bf21779)), closes [#573](https://github.com/Moonofweisheng/wot-design-uni/issues/573)
+* 🐛 修复loadmore组件属性errorText存在默认值导致国际化失效的问题 ([#594](https://github.com/Moonofweisheng/wot-design-uni/issues/594)) ([0bcc3c4](https://github.com/Moonofweisheng/wot-design-uni/commit/0bcc3c498ed9206bea45522f58889ec3f3a5f673))
+* 🐛 修复Radio点击失效的问题 ([5cce125](https://github.com/Moonofweisheng/wot-design-uni/commit/5cce125c737989e1e447394223129e2e585b91f4)), closes [#596](https://github.com/Moonofweisheng/wot-design-uni/issues/596)
+* 🐛确保inputNumber输入值在设定的最小值和最大值之间 ([#610](https://github.com/Moonofweisheng/wot-design-uni/issues/610)) ([344b1ac](https://github.com/Moonofweisheng/wot-design-uni/commit/344b1ac9168701bc408f82268f68ef8453527ef9)), closes [#602](https://github.com/Moonofweisheng/wot-design-uni/issues/602)
+
+
+### ✨ Features | 新功能
+
+* ✨ 迁移StatusTip组件的图片资源 ([f54ff30](https://github.com/Moonofweisheng/wot-design-uni/commit/f54ff306e7dafcfaead671120d100c4d9482daf9))
+* ✨ count-to组件添加type属性 ([#556](https://github.com/Moonofweisheng/wot-design-uni/issues/556)) ([60c92f2](https://github.com/Moonofweisheng/wot-design-uni/commit/60c92f2f38b563968f88f94267b8d805c28109d1))
+* ✨ Fab 悬浮按钮组件支持自定义触发器和控制能否展开 ([#612](https://github.com/Moonofweisheng/wot-design-uni/issues/612)) ([8e68ef3](https://github.com/Moonofweisheng/wot-design-uni/commit/8e68ef3bf807b5ec3c935daa6ce68f58962a188d)), closes [#512](https://github.com/Moonofweisheng/wot-design-uni/issues/512)
+* ✨ Img组件新增属性 show-menu-by-longpress 支持微信小程序长按弹出菜单栏 ([#613](https://github.com/Moonofweisheng/wot-design-uni/issues/613)) ([a7fc229](https://github.com/Moonofweisheng/wot-design-uni/commit/a7fc22964823af1ee1e513a268fb783bbea77ee4)), closes [#611](https://github.com/Moonofweisheng/wot-design-uni/issues/611)
+* ✨ Input、Textarea增加ignoreCompositionEvent属性 ([#592](https://github.com/Moonofweisheng/wot-design-uni/issues/592)) ([efcd4bb](https://github.com/Moonofweisheng/wot-design-uni/commit/efcd4bbb38b5bf53a26f0a8834f0cbd9fa26f5e5)), closes [#574](https://github.com/Moonofweisheng/wot-design-uni/issues/574)
+* ✨ InputNumber 步进器新增支持adjustPosition属性 ([f8a5240](https://github.com/Moonofweisheng/wot-design-uni/commit/f8a524010a2945941fbefa745756f2e6efbeb88b)), closes [#599](https://github.com/Moonofweisheng/wot-design-uni/issues/599)
+
+### [1.3.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.9...v1.3.10) (2024-09-08)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增Keyboard虚拟键盘支持车牌号输入 ([#567](https://github.com/Moonofweisheng/wot-design-uni/issues/567)) ([59df1b7](https://github.com/Moonofweisheng/wot-design-uni/commit/59df1b7ce56e9253ad046a7898651a866b8c99d7)), closes [#351](https://github.com/Moonofweisheng/wot-design-uni/issues/351)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 col-picker 点击遮罩关闭执行两次问题 ([#584](https://github.com/Moonofweisheng/wot-design-uni/issues/584)) ([8fc5380](https://github.com/Moonofweisheng/wot-design-uni/commit/8fc5380ad1f9a34998aedf1de2a9b05011bd8267))
+* 🐛 修复wd-upload 关闭按钮受项目行高影响的问题 ([#576](https://github.com/Moonofweisheng/wot-design-uni/issues/576)) ([feb64ea](https://github.com/Moonofweisheng/wot-design-uni/commit/feb64ea7be1eada01782bb1fa0d5b848acb4fa64))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档中添加KeyBoard的版本要求 ([715c054](https://github.com/Moonofweisheng/wot-design-uni/commit/715c054f4c723de73e2d57b940390cc7bcc89273))
+* ✏️ 优化多列选择器组件文档 ([#572](https://github.com/Moonofweisheng/wot-design-uni/issues/572)) ([93e0736](https://github.com/Moonofweisheng/wot-design-uni/commit/93e0736a24aa77d60376b5dd4d073180b88a6411))
+
+### [1.3.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.8...v1.3.9) (2024-09-01)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复某些场景下wd-textarea属性maxlength无效的问题 ([#558](https://github.com/Moonofweisheng/wot-design-uni/issues/558)) ([4b1b237](https://github.com/Moonofweisheng/wot-design-uni/commit/4b1b2370db4a34716ceedfde3a49d2ae7e20f919))
+* 🐛 修复IndexBar组件更新数据时显示异常的问题 ([f4c751d](https://github.com/Moonofweisheng/wot-design-uni/commit/f4c751dfae3724118c2d842489a5c7d1003996f1)), closes [#545](https://github.com/Moonofweisheng/wot-design-uni/issues/545)
+* 🐛 修复Input和Textarea设置为readonly时在部分iOS手机可以点击聚焦的问题 ([ff59403](https://github.com/Moonofweisheng/wot-design-uni/commit/ff594031546a25f4b2831749312171d260a76044)), closes [#533](https://github.com/Moonofweisheng/wot-design-uni/issues/533)
+* 🐛 修复Picker多级联动未应用picker选择值时取消后打开展示列数据错误的问题 ([90e86de](https://github.com/Moonofweisheng/wot-design-uni/commit/90e86def95ae458208f8aa50427b845db61d05b4)), closes [#562](https://github.com/Moonofweisheng/wot-design-uni/issues/562)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整数字滚动组件文档路径 ([636a2c5](https://github.com/Moonofweisheng/wot-design-uni/commit/636a2c5e8a8906166947312f085e5fabba5c47df))
+* ✏️ 更正form demo 方法名不一致 ([#534](https://github.com/Moonofweisheng/wot-design-uni/issues/534)) ([59fb1ea](https://github.com/Moonofweisheng/wot-design-uni/commit/59fb1eaabd7fea5428dc860af5ad734c9eebb496))
+* ✏️ 优化MessageBox示例demo ([a827b79](https://github.com/Moonofweisheng/wot-design-uni/commit/a827b79498a48272eb71fd9c0e70a9dae889375b))
+* ✏️ 增加安卓演示demo下载二维码 ([8680e77](https://github.com/Moonofweisheng/wot-design-uni/commit/8680e776e229d96b995de402e12ab423930a27ba))
+* ✏️ 更正text组件doc的type属性默认值 ([#557](https://github.com/Moonofweisheng/wot-design-uni/issues/557)) ([3e51f76](https://github.com/Moonofweisheng/wot-design-uni/commit/3e51f763cf394cd5214bc5c0c3e6e23c9ee974b7))
+
+
+### ✨ Features | 新功能
+
+* ✨ config-provider 支持customClass 与 customeStyle ([#535](https://github.com/Moonofweisheng/wot-design-uni/issues/535)) ([febe730](https://github.com/Moonofweisheng/wot-design-uni/commit/febe73079eceeb2cf0eec9fc5712321fa3434bd2))
+* ✨ Form设置提示模式为toast时优先显示顺序靠前的表单项的错误提示 ([f25409f](https://github.com/Moonofweisheng/wot-design-uni/commit/f25409f5a83df50ecbbf0a21bb2d5199021b9cc1)), closes [#548](https://github.com/Moonofweisheng/wot-design-uni/issues/548)
+* ✨ img 图片组件click事件增加mouseEvent参数 ([#539](https://github.com/Moonofweisheng/wot-design-uni/issues/539)) ([4983f48](https://github.com/Moonofweisheng/wot-design-uni/commit/4983f4832a194d399aeb919b8d2c02564789d9ab))
+* ✨ Text支持传入number类型的text ([e1f9ff6](https://github.com/Moonofweisheng/wot-design-uni/commit/e1f9ff60e35c7b6bbb4b5e7b84b2d570471056f6)), closes [#553](https://github.com/Moonofweisheng/wot-design-uni/issues/553)
+
+### [1.3.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.7...v1.3.8) (2024-08-18)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 补充Form设置error-type的示例 ([0e6ea3e](https://github.com/Moonofweisheng/wot-design-uni/commit/0e6ea3ead02c7b51fac7c5776c92044abeaa4dc3))
+* ✏️ 修复常见问题中useToast入参错误的问题 ([3cd0905](https://github.com/Moonofweisheng/wot-design-uni/commit/3cd0905bab2b0dfc3d05257e01aa16afe61c0002))
+* ✏️ 修复textarea组件的maxlength属性类型标注错误 ([#502](https://github.com/Moonofweisheng/wot-design-uni/issues/502)) ([3698e30](https://github.com/Moonofweisheng/wot-design-uni/commit/3698e30301c6c482135671b0a3f150388421ffae))
+* ✏️ 优化MessageBox和Toast文档中selector的介绍 ([f092838](https://github.com/Moonofweisheng/wot-design-uni/commit/f092838756144677c97155dfb700b1ae2cf56f47))
+* ✏️ Toast 文档增加唯一标识selector的介绍 ([#494](https://github.com/Moonofweisheng/wot-design-uni/issues/494)) ([3f99e1b](https://github.com/Moonofweisheng/wot-design-uni/commit/3f99e1bfc7e78c0359e593a2862d1d885c914858))
+
+
+### ✨ Features | 新功能
+
+* ✨ 调整Statistic为CountTo组件并使用useCountDown重构 ([a01baaf](https://github.com/Moonofweisheng/wot-design-uni/commit/a01baafe327e4feeba0de9735901dfc32e014f6a))
+* ✨ 新增statistic 数值显示 ([#489](https://github.com/Moonofweisheng/wot-design-uni/issues/489)) ([592c37b](https://github.com/Moonofweisheng/wot-design-uni/commit/592c37b15e54049faefd14cb480451895bb34d90))
+* ✨ Collapse 折叠面板组件支持嵌套使用 ([#521](https://github.com/Moonofweisheng/wot-design-uni/issues/521)) ([a5ce5dd](https://github.com/Moonofweisheng/wot-design-uni/commit/a5ce5dd8825e520f8e676a9f400efda1eb27546a)), closes [#503](https://github.com/Moonofweisheng/wot-design-uni/issues/503)
+* ✨ datetime-picker 增加自定义 Cell 样式属性 ([#491](https://github.com/Moonofweisheng/wot-design-uni/issues/491)) ([2cc7d7f](https://github.com/Moonofweisheng/wot-design-uni/commit/2cc7d7fb106ec0a13104bf8bea964ba375bd7ad5))
+* ✨ form表单新增errorType错误提示类型 ([#487](https://github.com/Moonofweisheng/wot-design-uni/issues/487)) ([5915922](https://github.com/Moonofweisheng/wot-design-uni/commit/5915922b0b4970424e2dc97ef7f922a918fedfce))
+* ✨Upload 组件支持手动上传并增加自定义上传函数 ([3def17e](https://github.com/Moonofweisheng/wot-design-uni/commit/3def17eb16b1355ee0a9a950788ef6299b0179a3)), closes [#481](https://github.com/Moonofweisheng/wot-design-uni/issues/481)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复checkbox-group的shape无法作用到子组件的问题 ([cd96d25](https://github.com/Moonofweisheng/wot-design-uni/commit/cd96d258f618d4a93584307b4100eee448a58884)), closes [#519](https://github.com/Moonofweisheng/wot-design-uni/issues/519)
+* 🐛 修复DropDown传入正确direction出现错误警告的问题 ([#499](https://github.com/Moonofweisheng/wot-design-uni/issues/499)) ([35507a1](https://github.com/Moonofweisheng/wot-design-uni/commit/35507a1b24dbdee27eefb960ffa637e842b04f9c))
+* 🐛 修复picker-view动态设置columns时获取选中值异常的问题 ([#518](https://github.com/Moonofweisheng/wot-design-uni/issues/518)) ([8530440](https://github.com/Moonofweisheng/wot-design-uni/commit/8530440e81cb8244d7e6288a2c7a8fda41bc7a11)), closes [#492](https://github.com/Moonofweisheng/wot-design-uni/issues/492)
+* 🐛 修复Textarea组件暗黑模式下清空按钮样式不正确的问题 ([8e83a11](https://github.com/Moonofweisheng/wot-design-uni/commit/8e83a117f2acf8b17b021ec833b43d9b2b940d9a))
+
+### [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..3d1cd94
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/common/abstracts/_mixin.scss
@@ -0,0 +1,385 @@
+/**
+ * 混合宏
+ */
+@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) */
+@mixin mdeep($modifier...) {
+ $selectors: "";
+
+ @each $item in $modifier {
+ $selectors: #{$selectors + & + $modifierSeparator + $item + ","};
+ }
+
+ @at-root {
+ :deep() {
+ #{$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..d8ee70b
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/common/abstracts/variable.scss
@@ -0,0 +1,974 @@
+@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; // 屏幕两边留白
+$-size-side-padding-small: var(--wot-size-side-padding-small, 6px) !default; // 屏幕两边留白小值
+
+/*-------------------------------- Theme color application size. end --------------------------------*/
+
+/* component var */
+
+/* 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, 18px) !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-success-color: var(--wot-button-success-color, $-color-white) !default; // 成功按钮文字颜色
+$-button-success-bg-color: var(--wot-button-success-bg-color, $-color-success) !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-error-color: var(--wot-button-error-color, $-color-white) !default; // 错误按钮颜色
+$-button-error-bg-color: var(--wot-button-error-bg-color, $-color-danger) !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-fs-large: var(--wot-cell-value-fs-large, 16px) !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-clear-color: var(--wot-cell-clear-color, #585858) !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-required-margin: var(--wot-cell-required-margin, 4px) !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-selected-color: var(--wot-calendar-selected-color, $-color-white) !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;
+$-calendar-item-margin-bottom: var(--wot-calendar-item-margin-bottom, 4px) !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 $-size-side-padding) !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-margin: var(--wot-divider-margin, 16px 0) !default; // 上下间距
+$-divider-color: var(--wot-divider-color, rgba(0, 0, 0, 0.45)) !default; // 字体颜色
+$-divider-line-color: var(--wot-divider-line-color, currentColor) !default; // 线条颜色
+$-divider-line-height: var(--wot-divider-line-height, 1px) !default; // 线条高度
+$-divider-fs: var(--wot-divider-fs, 14px) !default; // 字体大小
+$-divider-content-left-width: var(--wot-divider-content-left-width, 10%) !default; // 左侧内容宽度
+$-divider-content-left-margin: var(--wot-divider-content-left-margin, 12px) !default; // 左侧内容距离线距离
+$-divider-content-right-margin: var(--wot-divider-content-right-margin, 12px) !default; // 右侧内容距离线距离
+$-divider-content-right-width: var(--wot-divider-content-right-width, 10%) !default; // 右侧内容宽度
+$-divider-vertical-height: var(--wot-divider-vertical-height, 16px) !default; // 垂直分割线高度
+$-divider-vertical-content-margin: var(--wot-divider-vertical-content-margin, 0 8px) !default; // 垂直分割线内容间距
+$-divider-vertical-line-width: var(--wot-divider-vertical-line-width, 1px) !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-secondary) !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-small) !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-warning-color: var(--wot-progress-warning-color, $-color-warning) !default; // 进度条warning进度条颜色
+
+$-progress-color: var(--wot-progress-color, $-color-theme) !default; // 进度条颜色
+$-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, $-color-white) !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-color: var(--wot-toast-color, $-color-white) !default; // 文字颜色
+$-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-line-height: var(--wot-toast-line-height, 20px) !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-icon-margin-bottom: var(--wot-toast-icon-margin-bottom, 12px) !default; // 图标下边距
+$-toast-loading-padding: var(--wot-toast-loading-padding, 10px) !default; // loading状态下的padding
+$-toast-loading-margin-bottom: var(--wot-toast-loading-margin-bottom, 16px) !default; // loading动画的margin-bottom
+$-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; // 边框颜色
+$-grid-item-hover-bg: var(--wot-grid-item-hover-bg, $-color-gray-3) !default; // hover背景色
+$-grid-item-hover-bg-dark: var(--wot-grid-item-hover-bg-dark, $-color-gray-7) !default; // 暗黑模式hover背景色
+
+/* 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-item-text-color: var(--wot-swiper-item-text-color, #ffffff);
+$-swiper-item-text-fs: var(--wot-swiper-item-text-fs, $-fs-title);
+
+
+/* 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;
+
+/* keyboard */
+$-keyboard-key-height: var(--wot-keyboard-key-height, 48px) !default;
+$-keyboard-key-font-size: var(--wot-keyboard-key-font-size, 28px) !default;
+$-keyboard-key-background: var(--wot-keyboard-key-background, $-color-white) !default;
+$-keyboard-key-border-radius: var(--wot-keyboard-key-border-radius, 8px) !default;
+$-keyboard-delete-font-size: var(--wot-keyboard-delete-font-size, 16px) !default;
+$-keyboard-key-active-color: var(--wot-keyboard-key-active-color, $-color-gray-3) !default;
+$-keyboard-button-text-color: var(--wot-keyboard-button-text-color, $-color-white) !default;
+$-keyboard-button-background: var(--wot-keyboard--button-background, $-color-theme) !default;
+$-keyboard-button-active-opacity: var(--wot-keyboard-button-active-opacity, 0.6) !default;
+$-keyboard-background: var(--wot-keyboard-background, $-color-gray-2) !default;
+$-keyboard-title-height: var(--wot-keyboard-title-height, 34px) !default;
+$-keyboard-title-color: var(--wot-keyboard-title-color, $-color-gray-7) !default;
+$-keyboard-title-font-size: var(--wot-keyboard-title-font-size, 16px) !default;
+$-keyboard-close-padding: var(--wot-keyboard-title-font-size, 0 16px) !default;
+$-keyboard-close-color: var(--wot-keyboard-close-color, $-color-theme) !default;
+$-keyboard-close-font-size: var(--wot-keyboard-close-font-size, 14px) !default;
+$-keyboard-icon-size: var(--wot-keyboard-icon-size, 22px) !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; // 图标颜色
+
+/* floating-panel */
+$-floating-panel-bg: var(--wot-floating-panel-bg, $-color-white) !default; // 背景色
+$-floating-panel-radius: var(--wot-floating-panel-radius, 16px) !default; // 圆角
+$-floating-panel-z-index: var(--wot-floating-panel-z-index, 99) !default; // 层级
+$-floating-panel-header-height: var(--wot-floating-panel-header-height, 30px) !default; // 头部高度
+$-floating-panel-bar-width: var(--wot-floating-panel-bar-width, 20px) !default; // bar 宽度
+$-floating-panel-bar-height: var(--wot-floating-panel-bar-height, 3px) !default; // bar 高度
+$-floating-panel-bar-bg: var(--wot-floating-panel-bar-bg, $-color-gray-5) !default; // bar 背景色
+$-floating-panel-bar-radius: var(--wot-floating-panel-bar-radius, 4px) !default; // bar 圆角
+$-floating-panel-content-bg: var(--wot-floating-panel-content-bg, $-color-white) !default; // 内容背景色
+
+/* signature */
+$-signature-bg: var(--wot-signature-bg, $-color-white) !default; // 背景色
+$-signature-radius: var(--wot-signature-radius, 4px) !default; // 圆角
+$-signature-border: var(--wot-signature-border, 1px solid $-color-gray-5) !default; // 边框圆角
+$-signature-footer-margin-top: var(--wot-signature-footer-margin-top, 8px) !default; // 底部按钮上边距
+$-signature-button-margin-left: var(--wot-signature-button-margin-left, 8px) !default; // 底部按钮左边距
+
+
+
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/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/interceptor.ts b/src/uni_modules/wot-design-uni/components/common/interceptor.ts
new file mode 100644
index 0000000..d573491
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/common/interceptor.ts
@@ -0,0 +1,43 @@
+import { isPromise } from './util'
+
+function noop() {}
+
+export type Interceptor = (...args: any[]) => Promise | boolean | undefined | void
+
+export function callInterceptor(
+ interceptor: Interceptor | undefined,
+ {
+ args = [],
+ done,
+ canceled,
+ error
+ }: {
+ args?: unknown[]
+ done: () => void
+ canceled?: () => void
+ error?: () => void
+ }
+) {
+ if (interceptor) {
+ // eslint-disable-next-line prefer-spread
+ const returnVal = interceptor.apply(null, args)
+
+ if (isPromise(returnVal)) {
+ returnVal
+ .then((value) => {
+ if (value) {
+ done()
+ } else if (canceled) {
+ canceled()
+ }
+ })
+ .catch(error || noop)
+ } else if (returnVal) {
+ done()
+ } else if (canceled) {
+ canceled()
+ }
+ } else {
+ done()
+ }
+}
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..7f2819e
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/common/util.ts
@@ -0,0 +1,778 @@
+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 包含红、绿、蓝三个颜色分量的数组
+ */
+export 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 作用域(支付宝小程序无效)
+ * @param useFields 是否使用 fields 方法获取节点信息
+ * @returns 节点信息或节点信息数组
+ */
+export function getRect(selector: string, all: T, scope?: any, useFields?: boolean): Promise> {
+ return new Promise>((resolve, reject) => {
+ let query: UniNamespace.SelectorQuery | null = null
+ if (scope) {
+ query = uni.createSelectorQuery().in(scope)
+ } else {
+ query = uni.createSelectorQuery()
+ }
+
+ const method = all ? 'selectAll' : 'select'
+
+ const callback = (rect: UniApp.NodeInfo | UniApp.NodeInfo[]) => {
+ 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'))
+ }
+ }
+
+ if (useFields) {
+ query[method](selector).fields({ size: true, node: true }, callback).exec()
+ } else {
+ query[method](selector).boundingClientRect(callback).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' || getType(value) === 'asyncfunction'
+}
+
+/**
+ * 检查给定值是否为字符串。
+ * @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,然后通过分号连接
+ const result = styles
+ .filter(function (item) {
+ return item != null && item !== ''
+ })
+ .map(function (item) {
+ return objToStyle(item)
+ })
+ .join(';')
+
+ // 如果结果不为空,确保末尾有分号
+ return result ? (result.endsWith(';') ? result : result + ';') : ''
+ }
+
+ if (isString(styles)) {
+ // 如果是字符串且不为空,确保末尾有分号
+ return styles ? (styles.endsWith(';') ? styles : styles + ';') : ''
+ }
+
+ // 如果 styles 是对象类型
+ if (isObj(styles)) {
+ // 使用 Object.keys 获取所有属性名
+ // 使用过滤函数去除值为 null 或空字符串的属性
+ // 对每个属性名和属性值进行格式化,通过分号连接
+ const result = 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(';')
+
+ // 如果结果不为空,确保末尾有分号
+ return result ? (result.endsWith(';') ? result : result + ';') : ''
+ }
+ // 如果 styles 不是对象也不是数组,则直接返回
+ return ''
+}
+
+/**
+ * 判断一个对象是否包含任何字段
+ * @param obj 要检查的对象
+ * @returns {boolean} 如果对象为空(不包含任何字段)则返回 true,否则返回 false
+ */
+export function hasFields(obj: unknown): boolean {
+ // 如果不是对象类型或为 null,则认为没有字段
+ if (!isObj(obj) || obj === null) {
+ return false
+ }
+
+ // 使用 Object.keys 检查对象是否有属性
+ return Object.keys(obj).length > 0
+}
+
+/**
+ * 判断一个对象是否为空对象(不包含任何字段)
+ * @param obj 要检查的对象
+ * @returns {boolean} 如果对象为空(不包含任何字段)则返回 true,否则返回 false
+ */
+export function isEmptyObj(obj: unknown): boolean {
+ return !hasFields(obj)
+}
+
+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 = 1000 / 30) => {
+ 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 = /\.(ogm|webm|ogv|asx|m4v|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 = /\.(xbm|tif|pjp|apng|svgz|jpeg|jpg|heif|ico|tiff|heic|pjpeg|avif|gif|png|svg|webp|jfif|bmp|dpg|image)(?=$|[?#])/i
+ return imageRegex.test(url)
+}
+
+/**
+ * 判断环境是否是H5
+ */
+export const isH5 = (() => {
+ let isH5 = false
+ // #ifdef H5
+ isH5 = true
+ // #endif
+ return isH5
+})()
+
+/**
+ * 剔除对象中的某些属性
+ * @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
+}
+
+/**
+ * 缓动函数,用于在动画或过渡效果中根据时间参数计算当前值
+ * @param t 当前时间,通常是从动画开始经过的时间
+ * @param b 初始值,动画属性的初始值
+ * @param c 变化量,动画属性的目标值与初始值的差值
+ * @param d 持续时间,动画持续的总时间长度
+ * @returns 计算出的当前值
+ */
+export function easingFn(t: number = 0, b: number = 0, c: number = 0, d: number = 0): number {
+ return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b
+}
+
+/**
+ * 从数组中寻找最接近目标值的元素
+ *
+ * @param arr 数组
+ * @param target 目标值
+ * @returns 最接近目标值的元素
+ */
+export function closest(arr: number[], target: number) {
+ return arr.reduce((prev, curr) => (Math.abs(curr - target) < Math.abs(prev - target) ? curr : prev))
+}
diff --git a/src/uni_modules/wot-design-uni/components/composables/index.ts b/src/uni_modules/wot-design-uni/components/composables/index.ts
new file mode 100644
index 0000000..a483a46
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/composables/index.ts
@@ -0,0 +1,11 @@
+export { useCell } from './useCell'
+export { useChildren, flattenVNodes, sortChildren } from './useChildren'
+export { useCountDown } from './useCountDown'
+export { useLockScroll } from './useLockScroll'
+export { useParent } from './useParent'
+export { usePopover } from './usePopover'
+export { useQueue } from './useQueue'
+export { useRaf } from './useRaf'
+export { useTouch } from './useTouch'
+export { useTranslate } from './useTranslate'
+export { useUpload } from './useUpload'
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..50746e4
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/composables/useCountDown.ts
@@ -0,0 +1,138 @@
+import { ref, computed, onBeforeUnmount } from 'vue'
+import { isDef } from '../common/util'
+import { useRaf } from './useRaf'
+
+// 定义倒计时时间的数据结构
+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)
+}
+
+// 定义 useCountDown 函数
+export function useCountDown(options: UseCountDownOptions) {
+ let endTime: number // 结束时间
+ let counting: boolean // 是否计时中
+
+ const { start: startRaf, cancel: cancelRaf } = useRaf(tick)
+
+ const remain = ref(options.time) // 剩余时间
+ const current = computed(() => parseTime(remain.value)) // 当前倒计时数据
+
+ // 暂停倒计时
+ const pause = () => {
+ counting = false
+ cancelRaf()
+ }
+
+ // 获取当前剩余时间
+ 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 = () => {
+ if (counting) {
+ setRemain(getCurrentRemain())
+ if (remain.value > 0) {
+ startRaf()
+ }
+ }
+ }
+
+ // 每秒更新一次倒计时
+ const macroTick = () => {
+ if (counting) {
+ const remainRemain = getCurrentRemain()
+ if (!isSameSecond(remainRemain, remain.value) || remainRemain === 0) {
+ setRemain(remainRemain)
+ }
+
+ if (remain.value > 0) {
+ startRaf()
+ }
+ }
+ }
+
+ // 根据配置项选择更新方式
+ function tick() {
+ if (options.millisecond) {
+ microTick()
+ } else {
+ macroTick()
+ }
+ }
+
+ // 开始倒计时
+ const start = () => {
+ if (!counting) {
+ endTime = Date.now() + remain.value
+ counting = true
+ startRaf()
+ }
+ }
+
+ // 重置倒计时
+ 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..89b3203
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/composables/useLockScroll.ts
@@ -0,0 +1,37 @@
+import { onBeforeUnmount, onDeactivated, ref, watch } from 'vue'
+
+export 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
+ }
+}
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..1c61641
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/composables/usePopover.ts
@@ -0,0 +1,176 @@
+import { getCurrentInstance, ref } from 'vue'
+import { getRect, isObj } from '../common/util'
+
+export function usePopover(visibleArrow = true) {
+ 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 | number[] | Record<'x' | 'y', number>
+ ) {
+ // arrow size
+ const arrowSize = visibleArrow ? 9 : 0
+ // 上下位(纵轴)对应的距离左边的距离
+ const verticalX = width.value / 2
+ // 上下位(纵轴)对应的距离底部的距离
+ const verticalY = arrowSize + height.value + 5
+ // 左右位(横轴)对应的距离左边的距离
+ const horizontalX = width.value + arrowSize + 5
+ // 左右位(横轴)对应的距离底部的距离
+ const horizontalY = height.value / 2
+
+ let offsetX = 0
+ let offsetY = 0
+ if (Array.isArray(offset)) {
+ offsetX = (verticalX - 17 > 0 ? 0 : verticalX - 25) + offset[0]
+ offsetY = (horizontalY - 17 > 0 ? 0 : horizontalY - 25) + (offset[1] ? offset[1] : offset[0])
+ } else if (isObj(offset)) {
+ offsetX = (verticalX - 17 > 0 ? 0 : verticalX - 25) + offset.x
+ offsetY = (horizontalY - 17 > 0 ? 0 : horizontalY - 25) + offset.y
+ } else {
+ offsetX = (verticalX - 17 > 0 ? 0 : verticalX - 25) + offset
+ offsetY = (horizontalY - 17 > 0 ? 0 : horizontalY - 25) + offset
+ }
+ // 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/useRaf.ts b/src/uni_modules/wot-design-uni/components/composables/useRaf.ts
new file mode 100644
index 0000000..b52c4d8
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/composables/useRaf.ts
@@ -0,0 +1,37 @@
+import { ref, onUnmounted } from 'vue'
+import { isDef, isH5, isNumber } from '../common/util'
+
+// 定义回调函数类型
+type RafCallback = (time: number) => void
+
+export function useRaf(callback: RafCallback) {
+ const requestRef = ref>(null)
+
+ // 启动动画帧
+ const start = () => {
+ const handle = (time: number) => {
+ callback(time)
+ }
+
+ if (isH5) {
+ requestRef.value = requestAnimationFrame(handle)
+ } else {
+ requestRef.value = setTimeout(() => handle(Date.now()), 1000 / 30)
+ }
+ }
+
+ // 取消动画帧
+ const cancel = () => {
+ if (isH5 && isNumber(requestRef.value)) {
+ cancelAnimationFrame(requestRef.value!)
+ } else if (isDef(requestRef.value)) {
+ clearTimeout(requestRef.value)
+ }
+ }
+
+ onUnmounted(() => {
+ cancel()
+ })
+
+ return { start, cancel }
+}
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..79aa795
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/composables/useTranslate.ts
@@ -0,0 +1,12 @@
+import { camelCase, getPropByPath, isDef, 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) : isDef(message) ? message : `${prefix}${key}`
+ }
+ return { translate }
+}
diff --git a/src/uni_modules/wot-design-uni/components/composables/useUpload.ts b/src/uni_modules/wot-design-uni/components/composables/useUpload.ts
new file mode 100644
index 0000000..87cf54b
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/composables/useUpload.ts
@@ -0,0 +1,364 @@
+import { isArray, isDef, isFunction } from '../common/util'
+import type { ChooseFile, ChooseFileOption, UploadFileItem, UploadMethod, UploadStatusType } from '../wd-upload/types'
+
+export const UPLOAD_STATUS: Record = {
+ PENDING: 'pending',
+ LOADING: 'loading',
+ SUCCESS: 'success',
+ FAIL: 'fail'
+}
+
+export interface UseUploadReturn {
+ // 开始上传文件
+ startUpload: (file: UploadFileItem, options: UseUploadOptions) => UniApp.UploadTask | void | Promise
+ // 中断上传
+ abort: (task?: UniApp.UploadTask) => void
+ // 上传状态常量
+ UPLOAD_STATUS: Record
+ // 选择文件
+ chooseFile: (options: ChooseFileOption) => Promise
+}
+
+export interface UseUploadOptions {
+ // 上传地址
+ action: string
+ // 请求头
+ header?: Record
+ // 文件对应的 key
+ name?: string
+ // 其它表单数据
+ formData?: Record
+ // 文件类型 仅支付宝支持且在支付宝平台必填
+ fileType?: 'image' | 'video' | 'audio'
+ // 成功状态码
+ statusCode?: number
+ // 文件状态的key
+ statusKey?: string
+ // 自定义上传方法
+ uploadMethod?: UploadMethod
+ // 上传成功回调
+ onSuccess?: (res: UniApp.UploadFileSuccessCallbackResult, file: UploadFileItem, formData: Record) => void
+ // 上传失败回调
+ onError?: (res: UniApp.GeneralCallbackResult, file: UploadFileItem, formData: Record) => void
+ // 上传进度回调
+ onProgress?: (res: UniApp.OnProgressUpdateResult, file: UploadFileItem) => void
+ // 是否自动中断之前的上传任务
+ abortPrevious?: boolean
+ // 根据文件拓展名过滤(H5支持全部类型过滤,微信小程序支持all和file时过滤,其余平台不支持)
+ extension?: string[]
+}
+
+export function useUpload(): UseUploadReturn {
+ let currentTask: UniApp.UploadTask | null = null
+
+ // 中断上传
+ const abort = (task?: UniApp.UploadTask) => {
+ if (task) {
+ task.abort()
+ } else if (currentTask) {
+ currentTask.abort()
+ currentTask = null
+ }
+ }
+
+ /**
+ * 默认上传方法
+ */
+ const defaultUpload: UploadMethod = (file, formData, options) => {
+ // 如果配置了自动中断,则中断之前的上传任务
+ if (options.abortPrevious) {
+ abort()
+ }
+
+ const uploadTask = uni.uploadFile({
+ url: options.action,
+ header: options.header,
+ name: options.name,
+ fileName: options.name,
+ fileType: options.fileType,
+ formData,
+ filePath: file.url,
+ success(res) {
+ if (res.statusCode === options.statusCode) {
+ // 上传成功
+ options.onSuccess(res, file, formData)
+ } else {
+ // 上传失败
+ options.onError({ ...res, errMsg: res.errMsg || '' }, file, formData)
+ }
+ },
+ fail(err) {
+ // 上传失败
+ options.onError(err, file, formData)
+ }
+ })
+
+ currentTask = uploadTask
+
+ // 获取当前文件加载的百分比
+ uploadTask.onProgressUpdate((res) => {
+ options.onProgress(res, file)
+ })
+
+ // 返回上传任务实例,让外部可以控制上传过程
+ return uploadTask
+ }
+
+ /**
+ * 开始上传文件
+ */
+ const startUpload = (file: UploadFileItem, options: UseUploadOptions) => {
+ const {
+ uploadMethod,
+ formData = {},
+ action,
+ name = 'file',
+ header = {},
+ fileType = 'image',
+ statusCode = 200,
+ statusKey = 'status',
+ abortPrevious = false
+ } = options
+
+ // 设置上传中状态
+ file[statusKey] = UPLOAD_STATUS.LOADING
+
+ const uploadOptions = {
+ action,
+ header,
+ name,
+ fileName: name,
+ fileType,
+ statusCode,
+ abortPrevious,
+ onSuccess: (res: UniApp.UploadFileSuccessCallbackResult, file: UploadFileItem, formData: Record) => {
+ // 更新文件状态
+ file[statusKey] = UPLOAD_STATUS.SUCCESS
+ currentTask = null
+ options.onSuccess?.(res, file, formData)
+ },
+ onError: (error: UniApp.GeneralCallbackResult, file: UploadFileItem, formData: Record) => {
+ // 更新文件状态和错误信息
+ file[statusKey] = UPLOAD_STATUS.FAIL
+ file.error = error.errMsg
+ currentTask = null
+ options.onError?.(error, file, formData)
+ },
+ onProgress: (res: UniApp.OnProgressUpdateResult, file: UploadFileItem) => {
+ // 更新上传进度
+ file.percent = res.progress
+ options.onProgress?.(res, file)
+ }
+ }
+
+ // 返回上传任务实例,支持外部获取uploadTask进行操作
+ if (isFunction(uploadMethod)) {
+ return uploadMethod(file, formData, uploadOptions)
+ } else {
+ return defaultUpload(file, formData, uploadOptions)
+ }
+ }
+
+ /**
+ * 格式化图片信息
+ */
+ function formatImage(res: UniApp.ChooseImageSuccessCallbackResult): ChooseFile[] {
+ // #ifdef MP-DINGTALK
+ // 钉钉文件在files中
+ res.tempFiles = isDef((res as any).files) ? (res as any).files : res.tempFiles
+ // #endif
+ if (isArray(res.tempFiles)) {
+ return res.tempFiles.map((item: any) => ({
+ path: item.path || '',
+ name: item.name || '',
+ size: item.size,
+ type: 'image',
+ thumb: item.path || ''
+ }))
+ }
+ return [
+ {
+ path: (res.tempFiles as any).path || '',
+ name: (res.tempFiles as any).name || '',
+ size: (res.tempFiles as any).size,
+ type: 'image',
+ thumb: (res.tempFiles as any).path || ''
+ }
+ ]
+ }
+
+ /**
+ * 格式化视频信息
+ */
+ function formatVideo(res: UniApp.ChooseVideoSuccess): ChooseFile[] {
+ return [
+ {
+ path: res.tempFilePath || (res as any).filePath || '',
+ name: res.name || '',
+ size: res.size,
+ type: 'video',
+ thumb: (res as any).thumbTempFilePath || '',
+ duration: res.duration
+ }
+ ]
+ }
+
+ /**
+ * 格式化媒体信息
+ */
+ function formatMedia(res: UniApp.ChooseMediaSuccessCallbackResult): ChooseFile[] {
+ return res.tempFiles.map((item) => ({
+ type: item.fileType,
+ path: item.tempFilePath,
+ thumb: item.fileType === 'video' ? item.thumbTempFilePath : item.tempFilePath,
+ size: item.size,
+ duration: item.duration
+ }))
+ }
+
+ /**
+ * 选择文件
+ */
+ function chooseFile({
+ multiple,
+ sizeType,
+ sourceType,
+ maxCount,
+ accept,
+ compressed,
+ maxDuration,
+ camera,
+ extension
+ }: ChooseFileOption): Promise {
+ return new Promise((resolve, reject) => {
+ switch (accept) {
+ case 'image':
+ // #ifdef MP-WEIXIN
+ uni.chooseMedia({
+ count: multiple ? maxCount : 1,
+ mediaType: ['image'],
+ sourceType,
+ sizeType,
+ camera,
+ success: (res) => resolve(formatMedia(res)),
+ fail: reject
+ })
+ // #endif
+ // #ifndef MP-WEIXIN
+ uni.chooseImage({
+ count: multiple ? maxCount : 1,
+ sizeType,
+ sourceType,
+ // #ifdef H5
+ extension,
+ // #endif
+ success: (res) => resolve(formatImage(res)),
+ fail: reject
+ })
+ // #endif
+ break
+ case 'video':
+ // #ifdef MP-WEIXIN
+ uni.chooseMedia({
+ count: multiple ? maxCount : 1,
+ mediaType: ['video'],
+ sourceType,
+ camera,
+ maxDuration,
+ success: (res) => resolve(formatMedia(res)),
+ fail: reject
+ })
+ // #endif
+ // #ifndef MP-WEIXIN
+ uni.chooseVideo({
+ sourceType,
+ compressed,
+ maxDuration,
+ camera,
+ // #ifdef H5
+ extension,
+ // #endif
+ success: (res) => resolve(formatVideo(res)),
+ fail: reject
+ })
+ // #endif
+ break
+ // #ifdef MP-WEIXIN
+ case 'media':
+ uni.chooseMedia({
+ count: multiple ? maxCount : 1,
+ sourceType,
+ sizeType,
+ camera,
+ maxDuration,
+ success: (res) => resolve(formatMedia(res)),
+ fail: reject
+ })
+ break
+ case 'file':
+ uni.chooseMessageFile({
+ count: multiple ? (isDef(maxCount) ? maxCount : 100) : 1,
+ type: accept,
+ extension,
+ success: (res) => resolve(res.tempFiles),
+ fail: reject
+ })
+ break
+ // #endif
+ case 'all':
+ // #ifdef H5
+ uni.chooseFile({
+ count: multiple ? maxCount : 1,
+ type: accept,
+ extension,
+ success: (res) => resolve(res.tempFiles as ChooseFile[]),
+ fail: reject
+ })
+ // #endif
+ // #ifdef MP-WEIXIN
+ uni.chooseMessageFile({
+ count: multiple ? Number(maxCount) : 1,
+ type: accept,
+ extension,
+ success: (res) => resolve(res.tempFiles),
+ fail: reject
+ })
+ // #endif
+
+ break
+ default:
+ // #ifdef MP-WEIXIN
+ uni.chooseMedia({
+ count: multiple ? maxCount : 1,
+ mediaType: ['image'],
+ sourceType,
+ sizeType,
+ camera,
+ success: (res) => resolve(formatMedia(res)),
+ fail: reject
+ })
+ // #endif
+ // #ifndef MP-WEIXIN
+ uni.chooseImage({
+ count: multiple ? maxCount : 1,
+ sizeType,
+ sourceType,
+ // #ifdef H5
+ extension,
+ // #endif
+ success: (res) => resolve(formatImage(res)),
+ fail: reject
+ })
+ // #endif
+ break
+ }
+ })
+ }
+
+ return {
+ startUpload,
+ abort,
+ UPLOAD_STATUS,
+ chooseFile
+ }
+}
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..b2086a7
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts
@@ -0,0 +1,118 @@
+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),
+ /**
+ * 是否从页面中脱离出来,用于解决各种 fixed 失效问题 (H5: teleport, APP: renderjs, 小程序: root-portal)
+ * 类型:boolean
+ * 默认值:false
+ */
+ rootPortal: makeBooleanProp(false)
+}
+
+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..111e04e
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+ {{ (col as any).title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..12df252
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-backtop/wd-backtop.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..d75390a
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-badge/index.scss
@@ -0,0 +1,63 @@
+@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;
+ box-sizing: content-box;
+ 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;
+ top: 0px;
+ right: 0px;
+ 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..49cffa5
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-badge/types.ts
@@ -0,0 +1,50 @@
+/*
+ * @Author: weisheng
+ * @Date: 2024-03-15 11:36:12
+ * @LastEditTime: 2024-11-20 20:29:03
+ * @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, numericProp } from '../common/props'
+
+export type BadgeType = 'primary' | 'success' | 'warning' | 'danger' | 'info'
+
+export const badgeProps = {
+ ...baseProps,
+ /**
+ * 显示值
+ */
+ modelValue: numericProp,
+ /** 当数值为 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: numericProp,
+ /**
+ * 为正时,角标向左偏移对应的像素
+ */
+ right: numericProp
+}
+
+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..a47b1ac
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-badge/wd-badge.vue
@@ -0,0 +1,61 @@
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
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..d8ebba2
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-button/index.scss
@@ -0,0 +1,336 @@
+@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) {
+ margin-left: initial;
+ margin-right: initial;
+ position: relative;
+ display: inline-block;
+ outline: none;
+ -webkit-appearance: none;
+ outline: none;
+ background: transparent;
+ box-sizing: border-box;
+ border: none;
+ border-radius: 0;
+ 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;
+ border-radius: 0;
+ }
+
+ @include e(content) {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100%;
+ }
+
+ @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;
+ min-width: 120px;
+
+
+ @include when(round) {
+
+ @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;
+ }
+
+ .wd-button__loading {
+ width: $-button-large-loading;
+ height: $-button-large-loading;
+ }
+ }
+
+
+ @include when(round) {
+ border-radius: 999px;
+ }
+
+ @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;
+ border: 1px solid currentColor;
+
+ @include when(primary) {
+ color: $-button-primary-bg-color;
+ }
+
+ @include when(success) {
+ color: $-button-success-bg-color;
+ }
+
+ @include when(info) {
+ color: $-button-info-plain-normal-color;
+ border-color: $-button-info-plain-border-color;
+ }
+
+ @include when(warning) {
+ color: $-button-warning-bg-color;
+ }
+
+ @include when(error) {
+ color: $-button-error-bg-color;
+ }
+ }
+
+ @include when(hairline) {
+ border-width: 0;
+
+ &.is-plain {
+ @include halfPixelBorderSurround();
+
+ &::before {
+ border-radius: inherit;
+ }
+
+ &::after {
+ border-color: inherit;
+ }
+
+ &.is-round {
+ &::after {
+ border-radius: inherit !important;
+ }
+ }
+
+ &.is-large {
+ &::after {
+ border-radius: calc(2 * $-button-large-radius);
+ }
+ }
+
+ &.is-medium {
+ &::after {
+ border-radius: calc(2 * $-button-medium-radius);
+ }
+ }
+
+ &.is-small {
+ &::after {
+ border-radius: calc(2 * $-button-small-radius);
+ }
+ }
+ }
+ }
+
+ @include when(block) {
+ display: block;
+ }
+
+ @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;
+ }
+}
+
+@keyframes wd-rotate {
+ from {
+ transform: rotate(0deg);
+ }
+
+ to {
+ transform: rotate(360deg);
+ }
+}
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..04c85e0
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-button/types.ts
@@ -0,0 +1,142 @@
+/*
+ * @Author: weisheng
+ * @Date: 2024-03-15 11:36:12
+ * @LastEditTime: 2024-11-04 21:33:52
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-button\types.ts
+ * 记得注释
+ */
+import type { ExtractPropTypes, PropType } 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 type ButtonLang = 'zh_CN' | 'zh_TW' | 'en'
+
+export type ButtonOpenType =
+ | 'feedback'
+ | 'share'
+ | 'getUserInfo'
+ | 'contact'
+ | 'getPhoneNumber'
+ | 'getRealtimePhoneNumber'
+ | 'launchApp'
+ | 'openSetting'
+ | 'chooseAvatar'
+ | 'getAuthorize'
+ | 'lifestyle'
+ | 'contactShare'
+ | 'openGroupProfile'
+ | 'openGuildProfile'
+ | 'openPublicProfile'
+ | 'shareMessageToFriend'
+ | 'addFriend'
+ | 'addColorSign'
+ | 'addGroupApp'
+ | 'addToFavorites'
+ | 'chooseAddress'
+ | 'chooseInvoiceTitle'
+ | 'login'
+ | 'subscribe'
+ | 'favorite'
+ | 'watchLater'
+ | 'openProfile'
+ | 'agreePrivacyAuthorization'
+
+export type ButtonScope = 'phoneNumber' | 'userInfo'
+
+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 as PropType,
+ /**
+ * 指定是否阻止本节点的祖先节点出现点击态
+ */
+ hoverStopPropagation: Boolean,
+ /**
+ * 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文
+ */
+ lang: String as PropType,
+ /**
+ * 会话来源,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,
+ /**
+ * 支付宝小程序,当 open-type 为 getAuthorize 时有效。
+ * 可选值:'phoneNumber' | 'userInfo'
+ */
+ scope: String as PropType
+}
+
+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..9be8629
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-button/wd-button.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
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..a60250a
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/index.scss
@@ -0,0 +1,162 @@
+@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;
+ margin-bottom: $-calendar-item-margin-bottom;
+
+ @include when(disabled) {
+ .wd-month__day-text {
+ color: $-calendar-disabled-color;
+ }
+ }
+
+ @include when(current) {
+ color: $-calendar-active-color;
+ }
+
+ @include when(selected, multiple-selected) {
+ .wd-month__day-container {
+ border-radius: $-calendar-active-border;
+ background: $-calendar-active-color;
+ color: $-calendar-selected-color;
+ }
+ }
+
+ @include when(middle) {
+ .wd-month__day-container {
+ background: $-calendar-range-color;
+ }
+ }
+ @include when(multiple-middle) {
+ .wd-month__day-container {
+ background: $-calendar-active-color;
+ color: $-calendar-selected-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: $-calendar-selected-color;
+ border-radius: $-calendar-active-border 0 0 $-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: $-calendar-selected-color;
+ border-radius: 0 $-calendar-active-border $-calendar-active-border 0;
+ }
+ }
+
+ @include when(same) {
+ .wd-month__day-container {
+ background: $-calendar-active-color;
+ color: $-calendar-selected-color;
+ border-radius: $-calendar-active-border;
+ }
+ }
+
+ @include when(last-row){
+ margin-bottom: 0;
+ }
+ }
+
+ @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..64442eb
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/month.vue
@@ -0,0 +1,389 @@
+
+
+
+
+
+ {{ monthTitle(date) }}
+
+
+
+ {{ item.topInfo }}
+
+ {{ item.text }}
+
+ {{ item.bottomInfo }}
+
+
+
+
+
+
+
+
+
+
+
+
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..f25263c
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/month/types.ts
@@ -0,0 +1,20 @@
+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>
+ },
+ showTitle: makeBooleanProp(true)
+}
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..86725c8
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/month-panel.vue
@@ -0,0 +1,374 @@
+
+
+
+ {{ title }}
+
+
+ {{ weekLabel(item + firstDayOfWeek) }}
+
+
+
+
+
+
+
+
+ {{ timeType === 'start' ? translate('startTime') : translate('endTime') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
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..cadbf1b
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/types.ts
@@ -0,0 +1,109 @@
+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' | 'multiple-middle' | 'multiple-selected'
+
+export type CalendarDayItem = {
+ date: number
+ text?: number | string
+ topInfo?: string
+ bottomInfo?: string
+ type?: CalendarDayType
+ disabled?: boolean
+ isLastRow?: 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..3098e3f
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/utils.ts
@@ -0,0 +1,429 @@
+import { computed } from 'vue'
+import dayjs from '../../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 {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()
+}
+
+export const getPrevDay = (date: number) => getDayByOffset(date, -1)
+export const getNextDay = (date: number) => getDayByOffset(date, 1)
+
+/**
+ * 获取月份偏移量
+ * @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 | null | (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..efb9874
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/index.scss
@@ -0,0 +1,153 @@
+@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;
+ margin-bottom: $-calendar-item-margin-bottom;
+
+ @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: $-calendar-selected-color;
+
+ &::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 0 0 $-calendar-active-border;
+ }
+
+ &.is-without-end::after {
+ display: none;
+ }
+ }
+
+ @include when(end) {
+ color: $-calendar-selected-color;
+
+ &::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: 0 $-calendar-active-border $-calendar-active-border 0;
+ }
+ }
+
+ @include when(same) {
+ color: $-calendar-selected-color;
+
+ .wd-year__month-text {
+ background: $-calendar-active-color;
+ border-radius: $-calendar-active-border;
+ }
+ }
+ @include when(last-row){
+ margin-bottom: 0;
+ }
+ }
+
+ @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..0df05ac
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/types.ts
@@ -0,0 +1,20 @@
+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>
+ },
+ showTitle: makeBooleanProp(true)
+}
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..85ee52c
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/year/year.vue
@@ -0,0 +1,202 @@
+
+
+
+
+ {{ yearTitle(date) }}
+
+
+ {{ item.topInfo }}
+ {{ getMonthLabel(item.date) }}
+ {{ item.bottomInfo }}
+
+
+
+
+
+
+
+
+
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..8c48c89
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/year-panel.vue
@@ -0,0 +1,135 @@
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
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..99221a3
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar/index.scss
@@ -0,0 +1,158 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(calendar) {
+
+ @include e(title) {
+ color: $-dark-color;
+ }
+
+ :deep(.wd-calendar__arrow),
+ :deep(.wd-calendar__close),
+ :deep(.wd-calendar__clear) {
+ color: $-dark-color;
+ }
+
+ @include e(range-label-item) {
+ color: $-dark-color;
+
+ @include when(placeholder) {
+ color: $-dark-color-gray;
+ }
+ }
+
+ @include e(range-sperator) {
+ color: $-dark-color-gray;
+ }
+
+ :deep(.wd-calendar__cell--placeholder) {
+ .wd-cell__value {
+ color: $-dark-color-gray;
+ }
+ }
+ }
+}
+
+@include b(calendar) {
+
+ @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;
+ }
+
+ @include edeep(cell) {
+ @include when(disabled) {
+ .wd-cell__value {
+ color: $-input-disabled-color;
+ cursor: not-allowed;
+ }
+ }
+ @include when(error) {
+ .wd-cell__value {
+ color: $-input-error-color;
+ }
+ :deep(.wd-calendar__arrow) {
+ color: $-input-error-color;
+ }
+ }
+ @include when(large) {
+ .wd-calendar__arrow {
+ font-size: $-cell-icon-size-large;
+ }
+ }
+
+ @include m(placeholder) {
+ .wd-cell__value {
+ color: $-input-placeholder-color;
+ }
+ }
+ }
+
+ @include edeep(arrow) {
+ display: block;
+ font-size: $-cell-icon-size;
+ color: $-cell-arrow-color;
+ line-height: $-cell-line-height;
+ }
+
+ @include edeep(clear) {
+ display: block;
+ font-size: $-cell-icon-size;
+ color: $-cell-clear-color;
+ line-height: $-cell-line-height;
+ }
+}
\ 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..813f715
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar/types.ts
@@ -0,0 +1,226 @@
+/*
+ * @Author: weisheng
+ * @Date: 2024-03-15 20:40:34
+ * @LastEditTime: 2025-07-11 16:00:26
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-calendar/types.ts
+ * 记得注释
+ */
+import type { ComponentPublicInstance, ExtractPropTypes, 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: makeStringProp('33%'),
+ /**
+ * 禁用
+ */
+ 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),
+ /**
+ * 是否使用内置单元格
+ * 默认为 true,使用内置单元格
+ */
+ withCell: makeBooleanProp(true),
+ /**
+ * 是否从页面中脱离出来,用于解决各种 fixed 失效问题 (H5: teleport, APP: renderjs, 小程序: root-portal)
+ */
+ rootPortal: makeBooleanProp(false),
+ /**
+ * 必填标记位置,可选值:before、after
+ */
+ markerSide: makeStringProp<'before' | 'after'>('before'),
+ /**
+ * 显示清空按钮
+ */
+ clearable: 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
+}
+
+export type CalendarProps = ExtractPropTypes
+
+export type CalendarInstance = ComponentPublicInstance
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..669533c
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-calendar/wd-calendar.vue
@@ -0,0 +1,451 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ rangeLabel[0] }}
+
+ /
+
+ {{ rangeLabel[1] }}
+
+
+
+
+
+ {{ confirmText || translate('confirm') }}
+
+
+
+
+
+
+
+
+
+
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..01ba71e
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-card/wd-card.vue
@@ -0,0 +1,37 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..d16a8fa
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
+ {{ value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..a87f91c
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-cell/index.scss
@@ -0,0 +1,206 @@
+@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-color;
+ }
+
+ @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;
+ box-sizing: border-box;
+ width: 100%;
+ overflow: hidden;
+
+ @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;
+ overflow: hidden;
+
+ @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 e(right) {
+ position: relative;
+ flex: 1;
+ min-width: 0;
+ }
+
+ @include e(title) {
+ font-size: $-cell-title-fs;
+ }
+
+ @include e(required) {
+ font-size: $-cell-required-size;
+ color: $-cell-required-color;
+ margin-left: $-cell-required-margin;
+
+ @include m(left) {
+ margin-left: 0;
+ margin-right: $-cell-required-margin;
+ }
+ }
+
+ @include e(label) {
+ margin-top: 2px;
+ font-size: $-cell-label-fs;
+ color: $-cell-label-color;
+ }
+
+ @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;
+ min-width: 0;
+ }
+
+ @include e(value) {
+ position: relative;
+ flex: 1;
+ font-size: $-cell-value-fs;
+ color: $-cell-value-color;
+ vertical-align: middle;
+
+ @include m(left) {
+ text-align: left;
+ }
+
+ @include m(right) {
+ text-align: right;
+ }
+
+ @include m(ellipsis) {
+ @include lineEllipsis;
+ min-width: 0;
+ }
+ }
+
+ @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;
+ }
+
+ .wd-cell__value {
+ font-size: $-cell-value-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..10a52b9
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-cell/types.ts
@@ -0,0 +1,111 @@
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeStringProp, makeNumericProp, numericProp } from '../common/props'
+
+import { type FormItemRule } from '../wd-form/types'
+
+export const cellProps = {
+ ...baseProps,
+ /**
+ * 标题
+ */
+ title: String,
+ /**
+ * 右侧内容
+ */
+ value: makeNumericProp(''),
+ /**
+ * 图标类名
+ */
+ icon: String,
+ /**
+ * 图标大小
+ */
+ iconSize: numericProp,
+ /**
+ * 描述信息
+ */
+ label: String,
+ /**
+ * 是否为跳转链接
+ */
+ isLink: makeBooleanProp(false),
+ /**
+ * 跳转地址
+ */
+ to: String,
+ /**
+ * 跳转时是否替换栈顶页面
+ */
+ replace: makeBooleanProp(false),
+ /**
+ * 开启点击反馈,is-link 默认开启
+ */
+ clickable: makeBooleanProp(false),
+ /**
+ * 设置单元格大小,可选值:large
+ */
+ size: String,
+ /**
+ * 是否展示边框线
+ */
+ border: makeBooleanProp(void 0),
+ /**
+ * 设置左侧标题宽度
+ */
+ 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(''),
+ /**
+ * value 文字对齐方式,可选值:left、right、center
+ */
+ valueAlign: makeStringProp<'left' | 'right'>('right'),
+ /**
+ * 是否超出隐藏,显示省略号
+ */
+ ellipsis: makeBooleanProp(false),
+ /**
+ * 是否启用title插槽,默认启用,用来解决插槽传递时v-slot和v-if冲突问题。
+ * 问题见:https://github.com/dcloudio/uni-app/issues/4847
+ */
+ useTitleSlot: makeBooleanProp(true),
+ /**
+ * 必填标记位置,可选值:before(标签前)、after(标签后)
+ */
+ markerSide: makeStringProp<'before' | 'after'>('before')
+}
+
+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..04adbc7
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-cell/wd-cell.vue
@@ -0,0 +1,140 @@
+
+
+
+
+ *
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+ {{ label }}
+
+
+
+ *
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+
+ {{ errorMessage }}
+
+
+
+
+
+
+
+
+
+
+
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..86bafc7
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-checkbox/types.ts
@@ -0,0 +1,68 @@
+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: {
+ type: String as PropType
+ },
+ /**
+ * 选中的颜色
+ */
+ 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..d46c8fe
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-checkbox/wd-checkbox.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..1cb7040
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ text }}
+
+
+
+
+
+
+
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..c6fb8db
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-col-picker/index.scss
@@ -0,0 +1,168 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(col-picker) {
+ @include e(list-item) {
+ @include when(disabled) {
+ color: $-dark-color3;
+ }
+ }
+
+ @include e(list-item-tip) {
+ color: $-dark-color-gray;
+ }
+
+ :deep(.wd-col-picker__arrow) {
+ color: $-dark-color;
+ }
+
+ @include e(list) {
+ color: $-dark-color;
+ }
+
+ @include e(selected) {
+ color: $-dark-color;
+ }
+
+ :deep(.wd-col-picker__cell--placeholder) {
+ .wd-cell__value {
+ color: $-dark-color-gray;
+ }
+ }
+ }
+}
+
+@include b(col-picker) {
+ @include edeep(cell) {
+ @include when(disabled) {
+ .wd-cell__value {
+ color: $-input-disabled-color;
+ cursor: not-allowed;
+ }
+ }
+ @include when(error) {
+ .wd-cell__value {
+ color: $-input-error-color;
+ }
+ .wd-col-picker__arrow {
+ color: $-input-error-color;
+ }
+ }
+ @include when(large) {
+ .wd-col-picker__arrow {
+ font-size: $-cell-icon-size-large;
+ }
+ }
+
+ @include m(placeholder) {
+ .wd-cell__value {
+ 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(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..ae28eea
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-col-picker/types.ts
@@ -0,0 +1,166 @@
+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(''),
+ /**
+ * 是否从页面中脱离出来,用于解决各种 fixed 失效问题 (H5: teleport, APP: renderjs, 小程序: root-portal)
+ */
+ rootPortal: makeBooleanProp(false),
+ /**
+ * 必填标记位置,可选值:before、after
+ */
+ markerSide: makeStringProp<'before' | 'after'>('before')
+}
+
+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..7c494c5
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue
@@ -0,0 +1,498 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ selectShowList[colIndex] || translate('select') }}
+
+
+
+
+
+
+
+
+
+ {{ item[labelKey] }}
+ {{ item[tipKey] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..11aad88
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-col/wd-col.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
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..97f4655
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-collapse-item/index.scss
@@ -0,0 +1,90 @@
+@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 when(expanded) {
+ @include halfPixelBorder('bottom');
+ }
+
+ @include when(custom) {
+ display: block;
+ }
+ }
+
+ @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;
+ 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..07b28f6
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-collapse-item/types.ts
@@ -0,0 +1,48 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeRequiredProp, makeStringProp } from '../common/props'
+
+export type CollapseItemBeforeExpand = (name: string) => boolean | Promise
+
+export const collapseItemProps = {
+ ...baseProps,
+ /**
+ * 自定义折叠栏内容容器样式类名
+ */
+ customBodyClass: makeStringProp(''),
+ /**
+ * 自定义折叠栏内容容器样式
+ */
+ customBodyStyle: makeStringProp(''),
+ /**
+ * 折叠栏的标题, 可通过 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
+ /**
+ * 更新展开状态
+ */
+ updateExpand: () => Promise
+}
+
+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..2f1d123
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-collapse-item/wd-collapse-item.vue
@@ -0,0 +1,171 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..e2057f8
--- /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?: 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..d39130d
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-collapse/wd-collapse.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ !modelValue ? translate('expand') : translate('retract') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..cb8f0b9
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-config-provider/types.ts
@@ -0,0 +1,1052 @@
+import type { ExtractPropTypes, PropType } from 'vue'
+import { makeStringProp, baseProps } from '../common/props'
+
+export type ConfigProviderTheme = 'light' | 'dark'
+
+export const configProviderProps = {
+ ...baseProps,
+ /**
+ * 主题风格,设置为 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
+ buttonSuccessColor?: string
+ buttonSuccessBgColor?: string
+ buttonInfoColor?: string
+ buttonInfoBgColor?: string
+ buttonInfoPlainBorderColor?: string
+ buttonInfoPlainNormalColor?: string
+ buttonWarningColor?: string
+ buttonWarningBgColor?: string
+ buttonErrorColor?: string
+ buttonErrorBgColor?: 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
+ cellValueFsLarge?: string
+ cellValueColor?: string
+ cellArrowSize?: string
+ cellArrowColor?: string
+ cellClearColor?: string
+ cellTapBg?: string
+ cellTitleFsLarge?: string
+ cellLabelFsLarge?: string
+ cellIconSizeLarge?: string
+ cellRequiredColor?: string
+ cellRequiredSize?: string
+ cellRequiredMargin?: 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
+ calendarSelectedColor?: string
+ calendarDisabledColor?: string
+ calendarRangeColor?: string
+ calendarActiveBorder?: string
+ calendarInfoFs?: string
+ calendarItemMarginBottom?: 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
+ dividerMargin?: string
+ dividerColor?: string
+ dividerLineColor?: string
+ dividerLineHeight?: string
+ dividerFs?: string
+ dividerContentLeftWidth?: string
+ dividerContentLeftMargin?: string
+ dividerContentRightMargin?: string
+ dividerContentRightWidth?: string
+ dividerVerticalHeight?: string
+ dividerVerticalContentMargin?: string
+ dividerVerticalLineWidth?: 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
+ progressWarningColor?: string
+ progressColor?: 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 = {
+ toastColor?: string
+ toastPadding?: string
+ toastMaxWidth?: string
+ toastRadius?: string
+ toastBg?: string
+ toastFs?: string
+ toastLineHeight?: string
+ toastWithIconMinWidth?: string
+ toastIconSize?: string
+ toastIconMarginRight?: string
+ toastIconMarginBottom?: string
+ toastLoadingPadding?: string
+ toastLoadingMarginBottom?: 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
+ gridItemHoverBg?: string
+ gridItemHoverBgDark?: 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
+ swiperItemTextColor?: string
+ swiperItemTextFs?: string
+}
+
+export type swiperNavThemeVars = {
+ swiperNavDotColor?: string
+ swiperNavDotActiveColor?: string
+ swiperNavDotSize?: string
+ swiperNavDotsBarActiveWidth?: string
+ swiperNavFractionColor?: string
+ swiperNavFractionBgColor?: string
+ swiperNavFractionHeight?: string
+ swiperNavFractionFontSize?: string
+ 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 keyboardThemeVars = {
+ keyboardKeyHeight?: string
+ keyboardKeyFontSize?: string
+ keyboardKeyBackground?: string
+ keyboardKeyBorderRadius?: string
+ keyboardDeleteFontSize?: string
+ keyboardKeyActiveColor?: string
+ keyboardButtonTextColor?: string
+ keyboardButtonBackground?: string
+ keyboardButtonActiveOpacity?: string
+ keyboardBackground?: string
+ keyboardTitleHeight?: string
+ keyboardTitleColor?: string
+ keyboardTitleFontSize?: string
+ keyboardClosePadding?: string
+ keyboardCloseColor?: string
+ keyboardCloseFontSize?: string
+ keyboardIconSize?: 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 floatingPanelThemeVars = {
+ floatingPanelBg?: string
+ floatingPanelRadius?: string
+ floatingPanelZIndex?: string
+ floatingPanelHeaderHeight?: string
+ floatingPanelBarWidth?: string
+ floatingPanelBarHeight?: string
+ floatingPanelBarBg?: string
+ floatingPanelBarRadius?: string
+ floatingPanelContentBg?: string
+}
+
+export type signatureThemeVars = {
+ signatureBg?: string
+ signatureRadius?: string
+ signatureBorder?: string
+ signatureFooterMarginTop?: string
+ signatureButtonMarginLeft?: 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 &
+ keyboardThemeVars &
+ numberKeyboardThemeVars &
+ passwodInputThemeVars &
+ formItemThemeVars &
+ backtopThemeVars &
+ indexBarThemeVars &
+ textThemeVars &
+ videoPreviewThemeVars &
+ imgCropperThemeVars &
+ floatingPanelThemeVars &
+ signatureThemeVars
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..482980b
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-config-provider/wd-config-provider.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
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..efa6200
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-count-down/utils.ts
@@ -0,0 +1,52 @@
+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
+}
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..04c10f4
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-count-down/wd-count-down.vue
@@ -0,0 +1,60 @@
+
+
+
+ {{ timeText }}
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/wot-design-uni/components/wd-count-to/index.scss b/src/uni_modules/wot-design-uni/components/wd-count-to/index.scss
new file mode 100644
index 0000000..0a96178
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-count-to/index.scss
@@ -0,0 +1,7 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+
+.wd-count-to{
+ vertical-align: bottom;
+}
diff --git a/src/uni_modules/wot-design-uni/components/wd-count-to/types.ts b/src/uni_modules/wot-design-uni/components/wd-count-to/types.ts
new file mode 100644
index 0000000..5cd17ee
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-count-to/types.ts
@@ -0,0 +1,117 @@
+import type { ComponentPublicInstance, ExtractPropTypes } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+import type { TextType } from '../wd-text/types'
+
+export const countToProps = {
+ ...baseProps,
+
+ // 字体大小
+ fontSize: makeNumberProp(16),
+
+ // 文本颜色
+ color: makeStringProp(''),
+ /**
+ * 主题类型
+ * 类型:string
+ * 可选值:'default' /'primary' / 'error' / 'warning' / 'success'
+ * 默认值:'default'
+ */
+ type: makeStringProp('default'),
+ /**
+ * 起始值
+ * 类型:number
+ * 默认值:0
+ */
+ startVal: makeNumberProp(0),
+
+ /**
+ * 最终值
+ * 类型:number
+ * 默认值:2021
+ */
+ endVal: makeNumberProp(2024),
+
+ /**
+ * 从起始值到结束值数字变动的时间,单位毫秒
+ * 类型:number
+ * 默认值:3000
+ */
+ duration: makeNumberProp(3000),
+ /**
+ * 是否自动开始
+ * 类型:boolean
+ * 默认值:true
+ */
+ autoStart: makeBooleanProp(true),
+ /**
+ * 保留的小数位数
+ * 类型:number
+ * 默认值:0
+ * 校验:大于等于0
+ */
+ decimals: {
+ type: Number,
+ required: false,
+ default: 0,
+ validator(value: number) {
+ return value >= 0
+ }
+ },
+
+ // 小数点
+ decimal: makeStringProp('.'),
+
+ // 三位三位的隔开效果
+ separator: makeStringProp(','),
+
+ /**
+ * 前缀
+ * 类型:string
+ * 默认值:''
+ * @example '¥' 人民币前缀
+ */
+ prefix: makeStringProp(''),
+
+ /**
+ * 后缀
+ * 类型:string
+ * 默认值:''
+ */
+ suffix: makeStringProp(''),
+
+ /**
+ * 是否具有连贯性
+ * 类型:boolean
+ * 默认值:true
+ */
+ useEasing: makeBooleanProp(true),
+
+ /**
+ * 自定义根节点样式
+ */
+ customStyle: makeStringProp(''),
+
+ /**
+ * 自定义根节点样式类
+ */
+ customClass: makeStringProp('')
+}
+
+export type CountDownProps = ExtractPropTypes
+
+export type CountUpExpose = {
+ /**
+ * 开始倒计时
+ */
+ start: () => void
+ /**
+ * 暂停倒计时
+ */
+ pause: () => void
+ /**
+ * 重设倒计时,若 auto-start 为 true,重设后会自动开始倒计时
+ */
+ reset: () => void
+}
+
+export type CountToInstance = ComponentPublicInstance
diff --git a/src/uni_modules/wot-design-uni/components/wd-count-to/wd-count-to.vue b/src/uni_modules/wot-design-uni/components/wd-count-to/wd-count-to.vue
new file mode 100644
index 0000000..b72f601
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-count-to/wd-count-to.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..4f7c10a
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-curtain/index.scss
@@ -0,0 +1,85 @@
+@import "./../common/abstracts/_mixin.scss";
+@import "./../common/abstracts/variable.scss";
+
+@include b(curtain-wrapper){
+ :deep(.wd-curtain){
+ display: inline-block;
+ border-radius: $-curtain-content-radius;
+ overflow-y: visible !important;
+ 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..ce12a8d
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-curtain/types.ts
@@ -0,0 +1,82 @@
+/*
+ * @Author: weisheng
+ * @Date: 2025-01-25 23:46:29
+ * @LastEditTime: 2025-09-09 10:00:00
+ * @LastEditors: rusheng
+ * @Description:
+ * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-curtain/types.ts
+ * 记得注释
+ */
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+
+export type ClosePosition = 'inset' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'
+
+export const curtainProps = {
+ ...baseProps,
+ /**
+ * 绑定值,展示/关闭幕帘
+ * @deprecated 请使用 modelValue
+ */
+ value: makeBooleanProp(false),
+ /**
+ * 绑定值,展示/关闭幕帘
+ */
+ modelValue: 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),
+ /**
+ * 设置层级
+ * 类型:number
+ * 默认值:10
+ */
+ zIndex: makeNumberProp(10),
+ /**
+ * 自定义关闭按钮的类名
+ * 类型:string
+ * 默认值:''
+ */
+ customCloseClass: makeStringProp(''),
+ /**
+ * 自定义关闭按钮的样式
+ * 类型:string
+ * 默认值:''
+ */
+ customCloseStyle: makeStringProp(''),
+ /**
+ * 是否从页面中脱离出来,用于解决各种 fixed 失效问题 (H5: teleport, APP: renderjs, 小程序: root-portal)
+ */
+ rootPortal: makeBooleanProp(false),
+ /**
+ * 开启长按图片显示识别小程序码菜单,仅在微信小程序平台有效
+ */
+ showMenuByLongpress: makeBooleanProp(false),
+ /**
+ * 点击图片是否关闭幕帘,默认为 true
+ */
+ closeOnClick: 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..f646420
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..8b95e3d
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/types.ts
@@ -0,0 +1,120 @@
+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'
+
+export const datetimePickerViewProps = {
+ ...baseProps,
+ /**
+ * 选中项,当 type 为 time 时,类型为字符串,否则为 时间戳
+ */
+ modelValue: makeRequiredProp([String, Number]),
+ /**
+ * 加载中
+ */
+ loading: makeBooleanProp(false),
+ /**
+ * 加载的颜色,只能使用十六进制的色值写法,且不能使用缩写
+ */
+ loadingColor: makeStringProp('#4D80F0'),
+ /**
+ * picker内部滚筒高
+ */
+ columnsHeight: makeNumberProp(217),
+ /**
+ * picker item的高度
+ */
+ itemHeight: makeNumberProp(35),
+ /**
+ * 选项的key
+ */
+ valueKey: makeStringProp('value'),
+ /**
+ * 选项的label
+ */
+ 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),
+ /**
+ * 是否显示秒选择,仅在 time 和 datetime 类型下生效
+ */
+ useSecond: makeBooleanProp(false),
+ /**
+ * 最小秒数,仅在 time 和 datetime 类型下生效
+ */
+ minSecond: makeNumberProp(0),
+ /**
+ * 最大秒数,仅在 time 和 datetime 类型下生效
+ */
+ maxSecond: makeNumberProp(59),
+ /**
+ * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
+ */
+ immediateChange: makeBooleanProp(false)
+}
+
+export type DatetimePickerViewColumnType = 'year' | 'month' | 'date' | 'hour' | 'minute' | 'second'
+
+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: DatetimePickerViewExpose) => DatetimePickerViewOption[][]
+
+export type DatetimePickerViewProps = ExtractPropTypes
+
+export type DatetimePickerViewExpose = {
+ updateColumns: () => DatetimePickerViewOption[][]
+ setColumns: (columnList: DatetimePickerViewOption[][]) => void
+ getSelects: () => Record | Record[] | undefined
+ correctValue: (value: string | number) => string | number
+ getOriginColumns: () => {
+ type: DatetimePickerViewColumnType
+ values: number[]
+ }[]
+}
+
+export type DatetimePickerViewInstance = ComponentPublicInstance
diff --git a/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/util.ts b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/util.ts
new file mode 100644
index 0000000..47e8449
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/util.ts
@@ -0,0 +1,30 @@
+import { type DateTimeType } from './types'
+
+/**
+ * @description 根据传入的值和类型,获取当前的选项数组,便于传入 pickerView
+ * @param value
+ * @param type picker类型
+ * @param useSecond 是否使用秒,仅在 time 和 datetime 类型下生效
+ */
+export function getPickerValue(value: string | number, type: DateTimeType, useSecond: boolean = false) {
+ const values: number[] = []
+ const date = new Date(value)
+ if (type === 'time') {
+ const pair = String(value).split(':')
+ values.push(parseInt(pair[0]), parseInt(pair[1]))
+ if (useSecond && pair[2]) {
+ values.push(parseInt(pair[2]))
+ }
+ } 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())
+ if (useSecond) {
+ values.push(date.getSeconds())
+ }
+ }
+ }
+ return values
+}
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..2d764e6
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker-view/wd-datetime-picker-view.vue
@@ -0,0 +1,499 @@
+
+
+
+
+
+
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..b92953e
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/index.scss
@@ -0,0 +1,164 @@
+@import "./../common/abstracts/_mixin.scss";
+@import "./../common/abstracts/variable.scss";
+
+.wot-theme-dark {
+ @include b(datetime-picker) {
+
+ @include e(placeholder) {
+ color: $-dark-color-gray;
+ }
+
+ :deep(.wd-datetime-picker__arrow),
+ :deep(.wd-datetime-picker__clear) {
+ 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(datetime-picker) {
+ @include edeep(cell) {
+ @include when(disabled) {
+ .wd-cell__value {
+ color: $-input-disabled-color;
+ cursor: not-allowed;
+ }
+ }
+ @include when(error) {
+ .wd-cell__value {
+ color: $-input-error-color;
+ }
+ .wd-datetime-picker__arrow {
+ color: $-input-error-color;
+ }
+ }
+ @include when(large) {
+ .wd-datetime-picker__arrow {
+ font-size: $-cell-icon-size-large;
+ }
+ }
+
+ .wd-cell__value--ellipsis {
+ view {
+ @include lineEllipsis;
+ width: 100%;
+ }
+
+ text {
+ @include lineEllipsis;
+ max-width: 100%;
+ }
+ }
+ }
+
+ @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 edeep(clear) {
+ display: block;
+ font-size: $-cell-icon-size;
+ color: $-cell-clear-color;
+ line-height: $-cell-line-height;
+ }
+
+ @include edeep(popup) {
+ border-radius: 16px 16px 0px 0px;
+ }
+
+ @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;
+ 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..3056a2f
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/types.ts
@@ -0,0 +1,231 @@
+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%'),
+ /**
+ * 是否为错误状态,错误状态时右侧内容为红色
+ */
+ error: makeBooleanProp(false),
+ /**
+ * 选择器的值靠右展示
+ */
+ alignRight: makeBooleanProp(false),
+ /**
+ * 点击遮罩是否关闭
+ */
+ closeOnClickModal: makeBooleanProp(true),
+ /**
+ * 弹出面板是否设置底部安全距离(iphone X 类型的机型)
+ */
+ safeAreaInsetBottom: makeBooleanProp(true),
+ /**
+ * 是否超出隐藏
+ */
+ ellipsis: makeBooleanProp(false),
+ /**
+ * picker内部滚筒高
+ */
+ columnsHeight: makeNumberProp(217),
+ /**
+ * 选项的key
+ */
+ valueKey: makeStringProp('value'),
+ /**
+ * 选项的label
+ */
+ labelKey: makeStringProp('label'),
+ /**
+ * 选中项,当 type 为 time 时,类型为字符串;当 type 为 Array 时,类型为范围选择;否则为 时间戳
+ */
+ modelValue: makeRequiredProp([String, Number, 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, 23, 59, 59).getTime()),
+ /**
+ * 最小小时,time类型时生效
+ */
+ minHour: makeNumberProp(0),
+ /**
+ * 最大小时,time类型时生效
+ */
+ maxHour: makeNumberProp(23),
+ /**
+ * 最小分钟,time类型时生效
+ */
+ minMinute: makeNumberProp(0),
+ /**
+ * 最大分钟,time类型时生效
+ */
+ maxMinute: makeNumberProp(59),
+ /**
+ * 是否启用秒选择,仅在 time 和 datetime 类型下生效
+ */
+ useSecond: makeBooleanProp(false),
+ /**
+ * 最小秒数,仅在 time 和 datetime 类型下生效
+ */
+ minSecond: makeNumberProp(0),
+ /**
+ * 最大秒数,仅在 time 和 datetime 类型下生效
+ */
+ maxSecond: 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(),
+ /**
+ * picker cell 外部自定义样式
+ */
+ customCellClass: makeStringProp(''),
+ /**
+ * pickerView 外部自定义样式
+ */
+ customViewClass: makeStringProp(''),
+ /**
+ * label 外部自定义样式
+ */
+ customLabelClass: makeStringProp(''),
+ /**
+ * value 外部自定义样式
+ */
+ customValueClass: makeStringProp(''),
+ /**
+ * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
+ */
+ immediateChange: makeBooleanProp(false),
+ /**
+ * 是否从页面中脱离出来,用于解决各种 fixed 失效问题 (H5: teleport, APP: renderjs, 小程序: root-portal)
+ */
+ rootPortal: makeBooleanProp(false),
+ /**
+ * 显示清空按钮
+ */
+ clearable: makeBooleanProp(false),
+ /**
+ * 必填标记位置,可选值:before、after
+ */
+ markerSide: makeStringProp<'before' | 'after'>('before')
+}
+
+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..17f3397
--- /dev/null
+++ b/src/uni_modules/wot-design-uni/components/wd-datetime-picker/wd-datetime-picker.vue
@@ -0,0 +1,801 @@
+
+
+
+
+