diff --git a/README.md b/README.md index e69de29..d8a0f90 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +### jc-club-front \ No newline at end of file diff --git a/index.html b/index.html index 38f3861..0b9623e 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,17 @@ - - - - - Vite App - - -
- - - + + + + + + + Vite App + + + +
+ + + + \ No newline at end of file diff --git a/package.json b/package.json index bc0e02f..b0da94f 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,15 @@ } }, "dependencies": { + "@ant-design/icons": "^5.2.6", + "antd": "^5.9.4", + "axios": "^1.5.1", + "lodash": "^4.17.21", + "pubsub-js": "^1.9.4", "react": "^18.1.0", "react-dom": "^18.1.0", - "react-router-dom": "^6.16.0" + "react-router-dom": "^6.16.0", + "wangeditor": "^4.7.15" }, "devDependencies": { "@commitlint/cli": "^17.0.1", @@ -38,6 +44,10 @@ "eslint-plugin-react": "^7.30.0", "eslint-plugin-react-hooks": "^4.5.0", "husky": "^8.0.1", + "less": "^4.2.0", + "less-loader": "^11.1.3", + "postcss": "^8.4.31", + "postcss-preset-env": "^9.1.4", "prettier": "^3.0.3", "stylelint": "^14.9.0", "stylelint-config-prettier": "^9.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ce1260..afd0902 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,21 @@ settings: excludeLinksFromLockfile: false dependencies: + '@ant-design/icons': + specifier: ^5.2.6 + version: registry.npmmirror.com/@ant-design/icons@5.2.6(react-dom@18.1.0)(react@18.1.0) + antd: + specifier: ^5.9.4 + version: registry.npmmirror.com/antd@5.9.4(react-dom@18.1.0)(react@18.1.0) + axios: + specifier: ^1.5.1 + version: registry.npmmirror.com/axios@1.5.1 + lodash: + specifier: ^4.17.21 + version: registry.npmmirror.com/lodash@4.17.21 + pubsub-js: + specifier: ^1.9.4 + version: registry.npmmirror.com/pubsub-js@1.9.4 react: specifier: ^18.1.0 version: 18.1.0 @@ -14,6 +29,9 @@ dependencies: react-router-dom: specifier: ^6.16.0 version: registry.npmmirror.com/react-router-dom@6.16.0(react-dom@18.1.0)(react@18.1.0) + wangeditor: + specifier: ^4.7.15 + version: registry.npmmirror.com/wangeditor@4.7.15 devDependencies: '@commitlint/cli': @@ -52,6 +70,18 @@ devDependencies: husky: specifier: ^8.0.1 version: 8.0.1 + less: + specifier: ^4.2.0 + version: registry.npmmirror.com/less@4.2.0 + less-loader: + specifier: ^11.1.3 + version: registry.npmmirror.com/less-loader@11.1.3(less@4.2.0)(webpack@5.88.2) + postcss: + specifier: ^8.4.31 + version: registry.npmmirror.com/postcss@8.4.31 + postcss-preset-env: + specifier: ^9.1.4 + version: registry.npmmirror.com/postcss-preset-env@9.1.4(postcss@8.4.31) prettier: specifier: ^3.0.3 version: registry.npmmirror.com/prettier@3.0.3 @@ -75,7 +105,7 @@ devDependencies: version: 4.7.2 vite: specifier: ^2.9.9 - version: 2.9.9 + version: 2.9.9(less@4.2.0) packages: @@ -351,7 +381,7 @@ packages: '@commitlint/read': 17.0.0 '@commitlint/types': 17.0.0 execa: 5.1.1 - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 resolve-from: 5.0.0 resolve-global: 1.0.0 yargs: 17.5.1 @@ -380,7 +410,7 @@ packages: engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.0.0 - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 dev: true /@commitlint/execute-rule@17.0.0: @@ -426,7 +456,7 @@ packages: chalk: 4.1.2 cosmiconfig: 7.0.1 cosmiconfig-typescript-loader: 2.0.1(@types/node@17.0.36)(cosmiconfig@7.0.1)(typescript@4.7.2) - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 resolve-from: 5.0.0 typescript: 4.7.2 transitivePeerDependencies: @@ -465,7 +495,7 @@ packages: '@commitlint/config-validator': 17.0.0 '@commitlint/types': 17.0.0 import-fresh: 3.3.0 - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true @@ -507,14 +537,14 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@csstools/selector-specificity@2.0.0(postcss-selector-parser@6.0.10)(postcss@8.4.14): + /@csstools/selector-specificity@2.0.0(postcss-selector-parser@6.0.10)(postcss@8.4.31): resolution: {integrity: sha512-rZ6vufeY/UjAgtyiJ4WvfF6XP6HizIyOfbZOg0RnecIwjrvH8Am3nN1BpKnnPZunYAkUcPPXDhwbxOtGop8cfQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.3 postcss-selector-parser: ^6.0.10 dependencies: - postcss: 8.4.14 + postcss: registry.npmmirror.com/postcss@8.4.31 postcss-selector-parser: 6.0.10 dev: true @@ -1111,7 +1141,7 @@ packages: engines: {node: '>=10'} dependencies: compare-func: 2.0.0 - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 q: 1.5.1 dev: true @@ -1122,7 +1152,7 @@ packages: dependencies: JSONStream: 1.3.5 is-text-path: 1.0.1 - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 meow: 8.1.2 split2: 3.2.2 through2: 4.0.2 @@ -1197,7 +1227,7 @@ packages: editor: 1.0.0 find-config: 1.0.0 inquirer: 6.5.2 - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 temp: 0.9.4 word-wrap: 1.2.3 dev: true @@ -1733,7 +1763,7 @@ packages: hasBin: true dependencies: dargs: 7.0.0 - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 meow: 8.1.2 split2: 3.2.2 through2: 4.0.2 @@ -1950,7 +1980,7 @@ packages: cli-width: 2.2.1 external-editor: 3.1.0 figures: 2.0.0 - lodash: 4.17.21 + lodash: registry.npmmirror.com/lodash@4.17.21 mute-stream: 0.0.7 run-async: 2.4.1 rxjs: 6.6.7 @@ -2215,10 +2245,6 @@ packages: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -2351,12 +2377,6 @@ packages: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} dev: true - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: true @@ -2587,13 +2607,13 @@ packages: resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.14): + /postcss-safe-parser@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.14 + postcss: registry.npmmirror.com/postcss@8.4.31 dev: true /postcss-selector-parser@6.0.10: @@ -2604,27 +2624,18 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-sorting@7.0.1(postcss@8.4.14): + /postcss-sorting@7.0.1(postcss@8.4.31): resolution: {integrity: sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==} peerDependencies: postcss: ^8.3.9 dependencies: - postcss: 8.4.14 + postcss: registry.npmmirror.com/postcss@8.4.31 dev: true /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss@8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2903,11 +2914,6 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: @@ -3071,8 +3077,8 @@ packages: peerDependencies: stylelint: ^14.0.0 dependencies: - postcss: 8.4.14 - postcss-sorting: 7.0.1(postcss@8.4.14) + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-sorting: 7.0.1(postcss@8.4.31) stylelint: 14.9.0 dev: true @@ -3081,7 +3087,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dependencies: - '@csstools/selector-specificity': 2.0.0(postcss-selector-parser@6.0.10)(postcss@8.4.14) + '@csstools/selector-specificity': 2.0.0(postcss-selector-parser@6.0.10)(postcss@8.4.31) balanced-match: 2.0.0 colord: 2.9.2 cosmiconfig: 7.0.1 @@ -3106,10 +3112,10 @@ packages: micromatch: 4.0.5 normalize-path: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.14 + postcss: registry.npmmirror.com/postcss@8.4.31 postcss-media-query-parser: 0.2.3 postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 6.0.0(postcss@8.4.14) + postcss-safe-parser: 6.0.0(postcss@8.4.31) postcss-selector-parser: 6.0.10 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -3342,7 +3348,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite@2.9.9: + /vite@2.9.9(less@4.2.0): resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==} engines: {node: '>=12.2.0'} hasBin: true @@ -3359,7 +3365,8 @@ packages: optional: true dependencies: esbuild: 0.14.42 - postcss: 8.4.14 + less: registry.npmmirror.com/less@4.2.0 + postcss: registry.npmmirror.com/postcss@8.4.31 resolve: 1.22.0 rollup: 2.75.3 optionalDependencies: @@ -3464,6 +3471,727 @@ packages: engines: {node: '>=10'} dev: true + registry.npmmirror.com/@ant-design/colors@7.0.0: + resolution: {integrity: sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ant-design/colors/-/colors-7.0.0.tgz} + name: '@ant-design/colors' + version: 7.0.0 + dependencies: + '@ctrl/tinycolor': registry.npmmirror.com/@ctrl/tinycolor@3.6.1 + dev: false + + registry.npmmirror.com/@ant-design/cssinjs@1.17.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-MgGCZ6sfD3yQB0XW0hN4jgixMxApTlDYyct+pc7fRZNO4CaqWWm/9iXkkljNR27lyWLZmm+XiDfcIOo1bnrnMA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ant-design/cssinjs/-/cssinjs-1.17.0.tgz} + id: registry.npmmirror.com/@ant-design/cssinjs/1.17.0 + name: '@ant-design/cssinjs' + version: 1.17.0 + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@emotion/hash': registry.npmmirror.com/@emotion/hash@0.8.0 + '@emotion/unitless': registry.npmmirror.com/@emotion/unitless@0.7.5 + classnames: registry.npmmirror.com/classnames@2.3.2 + csstype: registry.npmmirror.com/csstype@3.1.0 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + stylis: registry.npmmirror.com/stylis@4.3.0 + dev: false + + registry.npmmirror.com/@ant-design/icons-svg@4.3.1: + resolution: {integrity: sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz} + name: '@ant-design/icons-svg' + version: 4.3.1 + dev: false + + registry.npmmirror.com/@ant-design/icons@5.2.6(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ant-design/icons/-/icons-5.2.6.tgz} + id: registry.npmmirror.com/@ant-design/icons/5.2.6 + name: '@ant-design/icons' + version: 5.2.6 + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@ant-design/colors': registry.npmmirror.com/@ant-design/colors@7.0.0 + '@ant-design/icons-svg': registry.npmmirror.com/@ant-design/icons-svg@4.3.1 + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/@ant-design/react-slick@1.0.2(react@18.1.0): + resolution: {integrity: sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-1.0.2.tgz} + id: registry.npmmirror.com/@ant-design/react-slick/1.0.2 + name: '@ant-design/react-slick' + version: 1.0.2 + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + json2mq: registry.npmmirror.com/json2mq@0.2.0 + react: 18.1.0 + resize-observer-polyfill: registry.npmmirror.com/resize-observer-polyfill@1.5.1 + throttle-debounce: registry.npmmirror.com/throttle-debounce@5.0.0 + dev: false + + registry.npmmirror.com/@babel/runtime-corejs3@7.23.1: + resolution: {integrity: sha512-OKKfytwoc0tr7cDHwQm0RLVR3y+hDGFz3EPuvLNU/0fOeXJeKNIHj7ffNVFnncWt3sC58uyUCRSzf8nBQbyF6A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.1.tgz} + name: '@babel/runtime-corejs3' + version: 7.23.1 + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: registry.npmmirror.com/core-js-pure@3.33.0 + regenerator-runtime: registry.npmmirror.com/regenerator-runtime@0.14.0 + dev: false + + registry.npmmirror.com/@babel/runtime@7.23.1: + resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.1.tgz} + name: '@babel/runtime' + version: 7.23.1 + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: registry.npmmirror.com/regenerator-runtime@0.14.0 + dev: false + + registry.npmmirror.com/@csstools/cascade-layer-name-parser@1.0.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1): + resolution: {integrity: sha512-v/5ODKNBMfBl0us/WQjlfsvSlYxfZLhNMVIsuCPib2ulTwGKYbKJbwqw671+qH9Y4wvWVnu7LBChvml/wBKjFg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.5.tgz} + id: registry.npmmirror.com/@csstools/cascade-layer-name-parser/1.0.5 + name: '@csstools/cascade-layer-name-parser' + version: 1.0.5 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.3.2 + '@csstools/css-tokenizer': ^2.2.1 + dependencies: + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + dev: true + + registry.npmmirror.com/@csstools/color-helpers@3.0.2: + resolution: {integrity: sha512-NMVs/l7Y9eIKL5XjbCHEgGcG8LOUT2qVcRjX6EzkCdlvftHVKr2tHIPzHavfrULRZ5Q2gxrJ9f44dAlj6fX97Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/color-helpers/-/color-helpers-3.0.2.tgz} + name: '@csstools/color-helpers' + version: 3.0.2 + engines: {node: ^14 || ^16 || >=18} + dev: true + + registry.npmmirror.com/@csstools/css-calc@1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1): + resolution: {integrity: sha512-ZV1TSmToiNcQL1P3hfzlzZzA02mmVkVmXGaUDUqpYUG84PmLhVSZpKX+KfxAuOcK7de04UXSQPBrAvaya6iiGg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/css-calc/-/css-calc-1.1.4.tgz} + id: registry.npmmirror.com/@csstools/css-calc/1.1.4 + name: '@csstools/css-calc' + version: 1.1.4 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.3.2 + '@csstools/css-tokenizer': ^2.2.1 + dependencies: + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + dev: true + + registry.npmmirror.com/@csstools/css-color-parser@1.3.3(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1): + resolution: {integrity: sha512-8GHvh0jopx++NLfYg6e7Bb1snI+CrGdHxUdzjX6zERyjCRsL53dX0ZqE5i4z7thAHCaLRlQrAMIWgNI0EQkx7w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/css-color-parser/-/css-color-parser-1.3.3.tgz} + id: registry.npmmirror.com/@csstools/css-color-parser/1.3.3 + name: '@csstools/css-color-parser' + version: 1.3.3 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.3.2 + '@csstools/css-tokenizer': ^2.2.1 + dependencies: + '@csstools/color-helpers': registry.npmmirror.com/@csstools/color-helpers@3.0.2 + '@csstools/css-calc': registry.npmmirror.com/@csstools/css-calc@1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + dev: true + + registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1): + resolution: {integrity: sha512-sLYGdAdEY2x7TSw9FtmdaTrh2wFtRJO5VMbBrA8tEqEod7GEggFmxTSK9XqExib3yMuYNcvcTdCZIP6ukdjAIA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.2.tgz} + id: registry.npmmirror.com/@csstools/css-parser-algorithms/2.3.2 + name: '@csstools/css-parser-algorithms' + version: 2.3.2 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-tokenizer': ^2.2.1 + dependencies: + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + dev: true + + registry.npmmirror.com/@csstools/css-tokenizer@2.2.1: + resolution: {integrity: sha512-Zmsf2f/CaEPWEVgw29odOj+WEVoiJy9s9NOv5GgNY9mZ1CZ7394By6wONrONrTsnNDv6F9hR02nvFihrGVGHBg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/css-tokenizer/-/css-tokenizer-2.2.1.tgz} + name: '@csstools/css-tokenizer' + version: 2.2.1 + engines: {node: ^14 || ^16 || >=18} + dev: true + + registry.npmmirror.com/@csstools/media-query-list-parser@2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1): + resolution: {integrity: sha512-IxVBdYzR8pYe89JiyXQuYk4aVVoCPhMJkz6ElRwlVysjwURTsTk/bmY/z4FfeRE+CRBMlykPwXEVUg8lThv7AQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.5.tgz} + id: registry.npmmirror.com/@csstools/media-query-list-parser/2.1.5 + name: '@csstools/media-query-list-parser' + version: 2.1.5 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.3.2 + '@csstools/css-tokenizer': ^2.2.1 + dependencies: + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + dev: true + + registry.npmmirror.com/@csstools/postcss-cascade-layers@4.0.0(postcss@8.4.31): + resolution: {integrity: sha512-dVPVVqQG0FixjM9CG/+8eHTsCAxRKqmNh6H69IpruolPlnEF1611f2AoLK8TijTSAsqBSclKd4WHs1KUb/LdJw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-cascade-layers/4.0.0 + name: '@csstools/postcss-cascade-layers' + version: 4.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': registry.npmmirror.com/@csstools/selector-specificity@3.0.0(postcss-selector-parser@6.0.13) + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/@csstools/postcss-color-function@3.0.6(postcss@8.4.31): + resolution: {integrity: sha512-qAGRJLJXIYeRgqIl4T9cuXgkOtp6JVgOnA2qRE3BRc5tj7HEAqXYdZ3/+bjM+R8im0Mm+TbBCZpTx/EOibtEAg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-color-function/-/postcss-color-function-3.0.6.tgz} + id: registry.npmmirror.com/@csstools/postcss-color-function/3.0.6 + name: '@csstools/postcss-color-function' + version: 3.0.6 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': registry.npmmirror.com/@csstools/css-color-parser@1.3.3(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-color-mix-function@2.0.6(postcss@8.4.31): + resolution: {integrity: sha512-BixdhD297bYbCjD7hWO7rE6eOkCsQ2IzAyaKflVoijhnnhwLlALwMv6IQ+F8U2ACuRKQAJGYOYJkKoGbdbrWTA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.6.tgz} + id: registry.npmmirror.com/@csstools/postcss-color-mix-function/2.0.6 + name: '@csstools/postcss-color-mix-function' + version: 2.0.6 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': registry.npmmirror.com/@csstools/css-color-parser@1.3.3(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-exponential-functions@1.0.1(postcss@8.4.31): + resolution: {integrity: sha512-ZLK2iSK4DUxeypGce2PnQSdYugUqDTwxnhNiq1o6OyKMNYgYs4eKbvEhFG8JKr1sJWbeqBi5jRr0017l2EWVvg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-1.0.1.tgz} + id: registry.npmmirror.com/@csstools/postcss-exponential-functions/1.0.1 + name: '@csstools/postcss-exponential-functions' + version: 1.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': registry.npmmirror.com/@csstools/css-calc@1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-font-format-keywords@3.0.0(postcss@8.4.31): + resolution: {integrity: sha512-ntkGj+1uDa/u6lpjPxnkPcjJn7ChO/Kcy08YxctOZI7vwtrdYvFhmE476dq8bj1yna306+jQ9gzXIG/SWfOaRg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-font-format-keywords/3.0.0 + name: '@csstools/postcss-font-format-keywords' + version: 3.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/@csstools/postcss-gradients-interpolation-method@4.0.6(postcss@8.4.31): + resolution: {integrity: sha512-3YoaQtoz5uomMylT1eoSLLmsVwo1f7uP24Pd39mV5Zo9Bj04m1Mk+Xxe2sdvsgvGF4RX05SyRX5rKNcd7p+K8Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.6.tgz} + id: registry.npmmirror.com/@csstools/postcss-gradients-interpolation-method/4.0.6 + name: '@csstools/postcss-gradients-interpolation-method' + version: 4.0.6 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': registry.npmmirror.com/@csstools/css-color-parser@1.3.3(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-hwb-function@3.0.5(postcss@8.4.31): + resolution: {integrity: sha512-ISRDhzB/dxsOnR+Z5GQmdOSIi4Q2lEf+7qdCsYMZJus971boaBzGL3A3W0U5m769qwDMRyy4CvHsRZP/8Vc2IQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.5.tgz} + id: registry.npmmirror.com/@csstools/postcss-hwb-function/3.0.5 + name: '@csstools/postcss-hwb-function' + version: 3.0.5 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': registry.npmmirror.com/@csstools/css-color-parser@1.3.3(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-ic-unit@3.0.1(postcss@8.4.31): + resolution: {integrity: sha512-OkKZV0XZQixChA6r68O9UfGNFv06cPVcuT+MjpzfEuoCfbNWCj+b0dhsmdz776giQ+DymPmFDlTD+QJEFPI7rw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.1.tgz} + id: registry.npmmirror.com/@csstools/postcss-ic-unit/3.0.1 + name: '@csstools/postcss-ic-unit' + version: 3.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/@csstools/postcss-initial@1.0.0(postcss@8.4.31): + resolution: {integrity: sha512-1l7iHHjIl5qmVeGItugr4ZOlCREDP71mNKqoEyxlosIoiu3Os1nPWMHpuCvDLCLiWI/ONTOg3nzJh7gwHOrqUA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-initial/-/postcss-initial-1.0.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-initial/1.0.0 + name: '@csstools/postcss-initial' + version: 1.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-is-pseudo-class@4.0.3(postcss@8.4.31): + resolution: {integrity: sha512-/dt5M9Ty/x3Yiq0Nm/5PJJzwkVFchJgdjKVnryBPtoMCb9ohb/nDIJOwr/Wr3hK3FDs1EA1GE6PyRYsUmQPS8Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.3.tgz} + id: registry.npmmirror.com/@csstools/postcss-is-pseudo-class/4.0.3 + name: '@csstools/postcss-is-pseudo-class' + version: 4.0.3 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': registry.npmmirror.com/@csstools/selector-specificity@3.0.0(postcss-selector-parser@6.0.13) + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/@csstools/postcss-logical-float-and-clear@2.0.0(postcss@8.4.31): + resolution: {integrity: sha512-Wki4vxsF6icRvRz8eF9bPpAvwaAt0RHwhVOyzfoFg52XiIMjb6jcbHkGxwpJXP4DVrnFEwpwmrz5aTRqOW82kg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-logical-float-and-clear/2.0.0 + name: '@csstools/postcss-logical-float-and-clear' + version: 2.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-logical-resize@2.0.0(postcss@8.4.31): + resolution: {integrity: sha512-lCQ1aX8c5+WI4t5EoYf3alTzJNNocMqTb+u1J9CINdDhFh1fjovqK+0aHalUHsNstZmzFPNzIkU4Mb3eM9U8SA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-logical-resize/2.0.0 + name: '@csstools/postcss-logical-resize' + version: 2.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/@csstools/postcss-logical-viewport-units@2.0.3(postcss@8.4.31): + resolution: {integrity: sha512-xeVxqND5rlQyqLGdH7rX34sIm/JbbQKxpKQP8oD1YQqUHHCLQR9NUS57WqJKajxKN6AcNAMWJhb5LUH5RfPcyA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.3.tgz} + id: registry.npmmirror.com/@csstools/postcss-logical-viewport-units/2.0.3 + name: '@csstools/postcss-logical-viewport-units' + version: 2.0.3 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-media-minmax@1.1.0(postcss@8.4.31): + resolution: {integrity: sha512-t5Li/DPC5QmW/6VFLfUvsw/4dNYYseWR0tOXDeJg/9EKUodBgNawz5tuk5vYKtNvoj+Q08odMuXcpS5YJj0AFA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-media-minmax/1.1.0 + name: '@csstools/postcss-media-minmax' + version: 1.1.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': registry.npmmirror.com/@csstools/css-calc@1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/media-query-list-parser': registry.npmmirror.com/@csstools/media-query-list-parser@2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.3(postcss@8.4.31): + resolution: {integrity: sha512-IPL8AvnwMYW+cWtp+j8cW3MFN0RyXNT4hLOvs6Rf2N+NcbvXhSyKxZuE3W9Cv4KjaNoNoGx1d0UhT6tktq6tUw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.3.tgz} + id: registry.npmmirror.com/@csstools/postcss-media-queries-aspect-ratio-number-values/2.0.3 + name: '@csstools/postcss-media-queries-aspect-ratio-number-values' + version: 2.0.3 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/media-query-list-parser': registry.npmmirror.com/@csstools/media-query-list-parser@2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-nested-calc@3.0.0(postcss@8.4.31): + resolution: {integrity: sha512-HsB66aDWAouOwD/GcfDTS0a7wCuVWaTpXcjl5VKP0XvFxDiU+r0T8FG7xgb6ovZNZ+qzvGIwRM+CLHhDgXrYgQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-nested-calc/3.0.0 + name: '@csstools/postcss-nested-calc' + version: 3.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/@csstools/postcss-normalize-display-values@3.0.1(postcss@8.4.31): + resolution: {integrity: sha512-nUvRxI+ALJwkxZdPU4EDyuM380vP91sAGvI3jAOHs/sr3jfcCOzLkY6xKI1Mr526kZ3RivmMoYM/xq+XFyE/bw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.1.tgz} + id: registry.npmmirror.com/@csstools/postcss-normalize-display-values/3.0.1 + name: '@csstools/postcss-normalize-display-values' + version: 3.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/@csstools/postcss-oklab-function@3.0.6(postcss@8.4.31): + resolution: {integrity: sha512-p//JBeyk57OsNT1y9snWqunJ5g39JXjJUVlOcUUNavKxwQiRcXx2otONy7fRj6y3XKHLvp8wcV7kn93rooNaYA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.6.tgz} + id: registry.npmmirror.com/@csstools/postcss-oklab-function/3.0.6 + name: '@csstools/postcss-oklab-function' + version: 3.0.6 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': registry.npmmirror.com/@csstools/css-color-parser@1.3.3(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31): + resolution: {integrity: sha512-yfdEk8o3CWPTusoInmGpOVCcMg1FikcKZyYB5ApULg9mES4FTGNuHK3MESscmm64yladcLNkPlz26O7tk3LMbA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.0.1.tgz} + id: registry.npmmirror.com/@csstools/postcss-progressive-custom-properties/3.0.1 + name: '@csstools/postcss-progressive-custom-properties' + version: 3.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/@csstools/postcss-relative-color-syntax@2.0.6(postcss@8.4.31): + resolution: {integrity: sha512-GAtXFxhKRWtPOV0wJ7ENCPZUSxJtVzsDvSCzTs8aaU1g1634SlpJWVNEDuVHllzJAWk/CB97p2qkDU3jITPL3A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.6.tgz} + id: registry.npmmirror.com/@csstools/postcss-relative-color-syntax/2.0.6 + name: '@csstools/postcss-relative-color-syntax' + version: 2.0.6 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': registry.npmmirror.com/@csstools/css-color-parser@1.3.3(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-scope-pseudo-class@3.0.0(postcss@8.4.31): + resolution: {integrity: sha512-GFNVsD97OuEcfHmcT0/DAZWAvTM/FFBDQndIOLawNc1Wq8YqpZwBdHa063Lq+Irk7azygTT+Iinyg3Lt76p7rg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-scope-pseudo-class/3.0.0 + name: '@csstools/postcss-scope-pseudo-class' + version: 3.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/@csstools/postcss-stepped-value-functions@3.0.2(postcss@8.4.31): + resolution: {integrity: sha512-I3wX44MZVv+tDuWfrd3BTvRB/YRIM2F5v1MBtTI89sxpFn47mNpTwpPYUOGPVCgKlRDfZSlxIUYhUQmqRQZZFQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.2.tgz} + id: registry.npmmirror.com/@csstools/postcss-stepped-value-functions/3.0.2 + name: '@csstools/postcss-stepped-value-functions' + version: 3.0.2 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': registry.npmmirror.com/@csstools/css-calc@1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-text-decoration-shorthand@3.0.3(postcss@8.4.31): + resolution: {integrity: sha512-d5J9m49HhqXRcw1S6vTZuviHi/iknUKGjBpChiNK1ARg9sSa3b8m5lsWz5Izs8ISORZdv2bZRwbw5Z2R6gQ9kQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.3.tgz} + id: registry.npmmirror.com/@csstools/postcss-text-decoration-shorthand/3.0.3 + name: '@csstools/postcss-text-decoration-shorthand' + version: 3.0.3 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/color-helpers': registry.npmmirror.com/@csstools/color-helpers@3.0.2 + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/@csstools/postcss-trigonometric-functions@3.0.2(postcss@8.4.31): + resolution: {integrity: sha512-AwzNhF4QOKaLOKvMljwwFkeYXwufhRO15G+kKohHkyoNOL75xWkN+W2Y9ik9tSeAyDv+cYNlYaF+o/a79WjVjg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.2.tgz} + id: registry.npmmirror.com/@csstools/postcss-trigonometric-functions/3.0.2 + name: '@csstools/postcss-trigonometric-functions' + version: 3.0.2 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': registry.npmmirror.com/@csstools/css-calc@1.1.4(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/postcss-unset-value@3.0.0(postcss@8.4.31): + resolution: {integrity: sha512-P0JD1WHh3avVyKKRKjd0dZIjCEeaBer8t1BbwGMUDtSZaLhXlLNBqZ8KkqHzYWXOJgHleXAny2/sx8LYl6qhEA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.0.tgz} + id: registry.npmmirror.com/@csstools/postcss-unset-value/3.0.0 + name: '@csstools/postcss-unset-value' + version: 3.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/@csstools/selector-specificity@3.0.0(postcss-selector-parser@6.0.13): + resolution: {integrity: sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz} + id: registry.npmmirror.com/@csstools/selector-specificity/3.0.0 + name: '@csstools/selector-specificity' + version: 3.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + dependencies: + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/@ctrl/tinycolor@3.6.1: + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz} + name: '@ctrl/tinycolor' + version: 3.6.1 + engines: {node: '>=10'} + dev: false + + registry.npmmirror.com/@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz} + name: '@emotion/hash' + version: 0.8.0 + dev: false + + registry.npmmirror.com/@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.7.5.tgz} + name: '@emotion/unitless' + version: 0.7.5 + dev: false + + registry.npmmirror.com/@jridgewell/gen-mapping@0.3.1: + resolution: {integrity: sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz} + name: '@jridgewell/gen-mapping' + version: 0.3.1 + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': registry.npmmirror.com/@jridgewell/set-array@1.1.1 + '@jridgewell/sourcemap-codec': registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15 + '@jridgewell/trace-mapping': registry.npmmirror.com/@jridgewell/trace-mapping@0.3.19 + dev: true + + registry.npmmirror.com/@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz} + name: '@jridgewell/resolve-uri' + version: 3.1.1 + engines: {node: '>=6.0.0'} + dev: true + + registry.npmmirror.com/@jridgewell/set-array@1.1.1: + resolution: {integrity: sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.1.tgz} + name: '@jridgewell/set-array' + version: 1.1.1 + engines: {node: '>=6.0.0'} + dev: true + + registry.npmmirror.com/@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.5.tgz} + name: '@jridgewell/source-map' + version: 0.3.5 + dependencies: + '@jridgewell/gen-mapping': registry.npmmirror.com/@jridgewell/gen-mapping@0.3.1 + '@jridgewell/trace-mapping': registry.npmmirror.com/@jridgewell/trace-mapping@0.3.19 + dev: true + + registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz} + name: '@jridgewell/sourcemap-codec' + version: 1.4.15 + dev: true + + registry.npmmirror.com/@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz} + name: '@jridgewell/trace-mapping' + version: 0.3.19 + dependencies: + '@jridgewell/resolve-uri': registry.npmmirror.com/@jridgewell/resolve-uri@3.1.1 + '@jridgewell/sourcemap-codec': registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15 + dev: true + + registry.npmmirror.com/@rc-component/color-picker@1.4.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rc-component/color-picker/-/color-picker-1.4.1.tgz} + id: registry.npmmirror.com/@rc-component/color-picker/1.4.1 + name: '@rc-component/color-picker' + version: 1.4.1 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@ctrl/tinycolor': registry.npmmirror.com/@ctrl/tinycolor@3.6.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/@rc-component/context@1.4.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rc-component/context/-/context-1.4.0.tgz} + id: registry.npmmirror.com/@rc-component/context/1.4.0 + name: '@rc-component/context' + version: 1.4.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/@rc-component/mini-decimal@1.1.0: + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz} + name: '@rc-component/mini-decimal' + version: 1.1.0 + engines: {node: '>=8.x'} + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + dev: false + + registry.npmmirror.com/@rc-component/mutate-observer@1.1.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz} + id: registry.npmmirror.com/@rc-component/mutate-observer/1.1.0 + name: '@rc-component/mutate-observer' + version: 1.1.0 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/@rc-component/portal@1.1.2(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rc-component/portal/-/portal-1.1.2.tgz} + id: registry.npmmirror.com/@rc-component/portal/1.1.2 + name: '@rc-component/portal' + version: 1.1.2 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/@rc-component/tour@1.10.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rc-component/tour/-/tour-1.10.0.tgz} + id: registry.npmmirror.com/@rc-component/tour/1.10.0 + name: '@rc-component/tour' + version: 1.10.0 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/portal': registry.npmmirror.com/@rc-component/portal@1.1.2(react-dom@18.1.0)(react@18.1.0) + '@rc-component/trigger': registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-KN+lKHCi7L4kjuA9DU2PnwZxtIyes6R1wsexp0/Rnjr/ITELsPuC9kpzDK1+7AZMarDXUAHUdDGS2zUNEx2P0g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rc-component/trigger/-/trigger-1.17.0.tgz} + id: registry.npmmirror.com/@rc-component/trigger/1.17.0 + name: '@rc-component/trigger' + version: 1.17.0 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/portal': registry.npmmirror.com/@rc-component/portal@1.1.2(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-align: registry.npmmirror.com/rc-align@4.0.15(react-dom@18.1.0)(react@18.1.0) + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-resize-observer: registry.npmmirror.com/rc-resize-observer@1.3.1(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + registry.npmmirror.com/@remix-run/router@1.9.0: resolution: {integrity: sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@remix-run/router/-/router-1.9.0.tgz} name: '@remix-run/router' @@ -3471,6 +4199,554 @@ packages: engines: {node: '>=14.0.0'} dev: false + registry.npmmirror.com/@types/eslint-scope@3.7.5: + resolution: {integrity: sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz} + name: '@types/eslint-scope' + version: 3.7.5 + dependencies: + '@types/eslint': registry.npmmirror.com/@types/eslint@8.44.3 + '@types/estree': registry.npmmirror.com/@types/estree@1.0.2 + dev: true + + registry.npmmirror.com/@types/eslint@8.44.3: + resolution: {integrity: sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/eslint/-/eslint-8.44.3.tgz} + name: '@types/eslint' + version: 8.44.3 + dependencies: + '@types/estree': registry.npmmirror.com/@types/estree@1.0.2 + '@types/json-schema': registry.npmmirror.com/@types/json-schema@7.0.11 + dev: true + + registry.npmmirror.com/@types/estree@1.0.2: + resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/estree/-/estree-1.0.2.tgz} + name: '@types/estree' + version: 1.0.2 + dev: true + + registry.npmmirror.com/@types/json-schema@7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz} + name: '@types/json-schema' + version: 7.0.11 + dev: true + + registry.npmmirror.com/@types/node@17.0.36: + resolution: {integrity: sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/node/-/node-17.0.36.tgz} + name: '@types/node' + version: 17.0.36 + dev: true + + registry.npmmirror.com/@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz} + name: '@webassemblyjs/ast' + version: 1.11.6 + dependencies: + '@webassemblyjs/helper-numbers': registry.npmmirror.com/@webassemblyjs/helper-numbers@1.11.6 + '@webassemblyjs/helper-wasm-bytecode': registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode@1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz} + name: '@webassemblyjs/floating-point-hex-parser' + version: 1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz} + name: '@webassemblyjs/helper-api-error' + version: 1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz} + name: '@webassemblyjs/helper-buffer' + version: 1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz} + name: '@webassemblyjs/helper-numbers' + version: 1.11.6 + dependencies: + '@webassemblyjs/floating-point-hex-parser': registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser@1.11.6 + '@webassemblyjs/helper-api-error': registry.npmmirror.com/@webassemblyjs/helper-api-error@1.11.6 + '@xtuc/long': registry.npmmirror.com/@xtuc/long@4.2.2 + dev: true + + registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz} + name: '@webassemblyjs/helper-wasm-bytecode' + version: 1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz} + name: '@webassemblyjs/helper-wasm-section' + version: 1.11.6 + dependencies: + '@webassemblyjs/ast': registry.npmmirror.com/@webassemblyjs/ast@1.11.6 + '@webassemblyjs/helper-buffer': registry.npmmirror.com/@webassemblyjs/helper-buffer@1.11.6 + '@webassemblyjs/helper-wasm-bytecode': registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode@1.11.6 + '@webassemblyjs/wasm-gen': registry.npmmirror.com/@webassemblyjs/wasm-gen@1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz} + name: '@webassemblyjs/ieee754' + version: 1.11.6 + dependencies: + '@xtuc/ieee754': registry.npmmirror.com/@xtuc/ieee754@1.2.0 + dev: true + + registry.npmmirror.com/@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz} + name: '@webassemblyjs/leb128' + version: 1.11.6 + dependencies: + '@xtuc/long': registry.npmmirror.com/@xtuc/long@4.2.2 + dev: true + + registry.npmmirror.com/@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz} + name: '@webassemblyjs/utf8' + version: 1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz} + name: '@webassemblyjs/wasm-edit' + version: 1.11.6 + dependencies: + '@webassemblyjs/ast': registry.npmmirror.com/@webassemblyjs/ast@1.11.6 + '@webassemblyjs/helper-buffer': registry.npmmirror.com/@webassemblyjs/helper-buffer@1.11.6 + '@webassemblyjs/helper-wasm-bytecode': registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode@1.11.6 + '@webassemblyjs/helper-wasm-section': registry.npmmirror.com/@webassemblyjs/helper-wasm-section@1.11.6 + '@webassemblyjs/wasm-gen': registry.npmmirror.com/@webassemblyjs/wasm-gen@1.11.6 + '@webassemblyjs/wasm-opt': registry.npmmirror.com/@webassemblyjs/wasm-opt@1.11.6 + '@webassemblyjs/wasm-parser': registry.npmmirror.com/@webassemblyjs/wasm-parser@1.11.6 + '@webassemblyjs/wast-printer': registry.npmmirror.com/@webassemblyjs/wast-printer@1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz} + name: '@webassemblyjs/wasm-gen' + version: 1.11.6 + dependencies: + '@webassemblyjs/ast': registry.npmmirror.com/@webassemblyjs/ast@1.11.6 + '@webassemblyjs/helper-wasm-bytecode': registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode@1.11.6 + '@webassemblyjs/ieee754': registry.npmmirror.com/@webassemblyjs/ieee754@1.11.6 + '@webassemblyjs/leb128': registry.npmmirror.com/@webassemblyjs/leb128@1.11.6 + '@webassemblyjs/utf8': registry.npmmirror.com/@webassemblyjs/utf8@1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz} + name: '@webassemblyjs/wasm-opt' + version: 1.11.6 + dependencies: + '@webassemblyjs/ast': registry.npmmirror.com/@webassemblyjs/ast@1.11.6 + '@webassemblyjs/helper-buffer': registry.npmmirror.com/@webassemblyjs/helper-buffer@1.11.6 + '@webassemblyjs/wasm-gen': registry.npmmirror.com/@webassemblyjs/wasm-gen@1.11.6 + '@webassemblyjs/wasm-parser': registry.npmmirror.com/@webassemblyjs/wasm-parser@1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz} + name: '@webassemblyjs/wasm-parser' + version: 1.11.6 + dependencies: + '@webassemblyjs/ast': registry.npmmirror.com/@webassemblyjs/ast@1.11.6 + '@webassemblyjs/helper-api-error': registry.npmmirror.com/@webassemblyjs/helper-api-error@1.11.6 + '@webassemblyjs/helper-wasm-bytecode': registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode@1.11.6 + '@webassemblyjs/ieee754': registry.npmmirror.com/@webassemblyjs/ieee754@1.11.6 + '@webassemblyjs/leb128': registry.npmmirror.com/@webassemblyjs/leb128@1.11.6 + '@webassemblyjs/utf8': registry.npmmirror.com/@webassemblyjs/utf8@1.11.6 + dev: true + + registry.npmmirror.com/@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz} + name: '@webassemblyjs/wast-printer' + version: 1.11.6 + dependencies: + '@webassemblyjs/ast': registry.npmmirror.com/@webassemblyjs/ast@1.11.6 + '@xtuc/long': registry.npmmirror.com/@xtuc/long@4.2.2 + dev: true + + registry.npmmirror.com/@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz} + name: '@xtuc/ieee754' + version: 1.2.0 + dev: true + + registry.npmmirror.com/@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz} + name: '@xtuc/long' + version: 4.2.2 + dev: true + + registry.npmmirror.com/acorn-import-assertions@1.9.0(acorn@8.10.0): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz} + id: registry.npmmirror.com/acorn-import-assertions/1.9.0 + name: acorn-import-assertions + version: 1.9.0 + peerDependencies: + acorn: ^8 + dependencies: + acorn: registry.npmmirror.com/acorn@8.10.0 + dev: true + + registry.npmmirror.com/acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz} + name: acorn + version: 8.10.0 + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + registry.npmmirror.com/ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz} + id: registry.npmmirror.com/ajv-keywords/3.5.2 + name: ajv-keywords + version: 3.5.2 + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: registry.npmmirror.com/ajv@6.12.6 + dev: true + + registry.npmmirror.com/ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz} + name: ajv + version: 6.12.6 + dependencies: + fast-deep-equal: registry.npmmirror.com/fast-deep-equal@3.1.3 + fast-json-stable-stringify: registry.npmmirror.com/fast-json-stable-stringify@2.1.0 + json-schema-traverse: registry.npmmirror.com/json-schema-traverse@0.4.1 + uri-js: registry.npmmirror.com/uri-js@4.4.1 + dev: true + + registry.npmmirror.com/antd@5.9.4(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-eyNn1C/Q9ESn4ktfTlRIIXBbWT5L/Rr38xP37dIvJ3FeD/a4vaVcMqqLz5ywwMPKxgWnuUxggo1mJwWdPoIdSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/antd/-/antd-5.9.4.tgz} + id: registry.npmmirror.com/antd/5.9.4 + name: antd + version: 5.9.4 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': registry.npmmirror.com/@ant-design/colors@7.0.0 + '@ant-design/cssinjs': registry.npmmirror.com/@ant-design/cssinjs@1.17.0(react-dom@18.1.0)(react@18.1.0) + '@ant-design/icons': registry.npmmirror.com/@ant-design/icons@5.2.6(react-dom@18.1.0)(react@18.1.0) + '@ant-design/react-slick': registry.npmmirror.com/@ant-design/react-slick@1.0.2(react@18.1.0) + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@ctrl/tinycolor': registry.npmmirror.com/@ctrl/tinycolor@3.6.1 + '@rc-component/color-picker': registry.npmmirror.com/@rc-component/color-picker@1.4.1(react-dom@18.1.0)(react@18.1.0) + '@rc-component/mutate-observer': registry.npmmirror.com/@rc-component/mutate-observer@1.1.0(react-dom@18.1.0)(react@18.1.0) + '@rc-component/tour': registry.npmmirror.com/@rc-component/tour@1.10.0(react-dom@18.1.0)(react@18.1.0) + '@rc-component/trigger': registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + copy-to-clipboard: registry.npmmirror.com/copy-to-clipboard@3.3.3 + dayjs: registry.npmmirror.com/dayjs@1.11.10 + qrcode.react: registry.npmmirror.com/qrcode.react@3.1.0(react@18.1.0) + rc-cascader: registry.npmmirror.com/rc-cascader@3.17.0(react-dom@18.1.0)(react@18.1.0) + rc-checkbox: registry.npmmirror.com/rc-checkbox@3.1.0(react-dom@18.1.0)(react@18.1.0) + rc-collapse: registry.npmmirror.com/rc-collapse@3.7.1(react-dom@18.1.0)(react@18.1.0) + rc-dialog: registry.npmmirror.com/rc-dialog@9.2.0(react-dom@18.1.0)(react@18.1.0) + rc-drawer: registry.npmmirror.com/rc-drawer@6.4.1(react-dom@18.1.0)(react@18.1.0) + rc-dropdown: registry.npmmirror.com/rc-dropdown@4.1.0(react-dom@18.1.0)(react@18.1.0) + rc-field-form: registry.npmmirror.com/rc-field-form@1.38.2(react-dom@18.1.0)(react@18.1.0) + rc-image: registry.npmmirror.com/rc-image@7.2.0(react-dom@18.1.0)(react@18.1.0) + rc-input: registry.npmmirror.com/rc-input@1.2.1(react-dom@18.1.0)(react@18.1.0) + rc-input-number: registry.npmmirror.com/rc-input-number@8.1.0(react-dom@18.1.0)(react@18.1.0) + rc-mentions: registry.npmmirror.com/rc-mentions@2.8.0(react-dom@18.1.0)(react@18.1.0) + rc-menu: registry.npmmirror.com/rc-menu@9.12.0(react-dom@18.1.0)(react@18.1.0) + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-notification: registry.npmmirror.com/rc-notification@5.1.1(react-dom@18.1.0)(react@18.1.0) + rc-pagination: registry.npmmirror.com/rc-pagination@3.6.1(react-dom@18.1.0)(react@18.1.0) + rc-picker: registry.npmmirror.com/rc-picker@3.14.4(dayjs@1.11.10)(react-dom@18.1.0)(react@18.1.0) + rc-progress: registry.npmmirror.com/rc-progress@3.5.1(react-dom@18.1.0)(react@18.1.0) + rc-rate: registry.npmmirror.com/rc-rate@2.12.0(react-dom@18.1.0)(react@18.1.0) + rc-resize-observer: registry.npmmirror.com/rc-resize-observer@1.3.1(react-dom@18.1.0)(react@18.1.0) + rc-segmented: registry.npmmirror.com/rc-segmented@2.2.2(react-dom@18.1.0)(react@18.1.0) + rc-select: registry.npmmirror.com/rc-select@14.9.0(react-dom@18.1.0)(react@18.1.0) + rc-slider: registry.npmmirror.com/rc-slider@10.2.1(react-dom@18.1.0)(react@18.1.0) + rc-steps: registry.npmmirror.com/rc-steps@6.0.1(react-dom@18.1.0)(react@18.1.0) + rc-switch: registry.npmmirror.com/rc-switch@4.1.0(react-dom@18.1.0)(react@18.1.0) + rc-table: registry.npmmirror.com/rc-table@7.34.4(react-dom@18.1.0)(react@18.1.0) + rc-tabs: registry.npmmirror.com/rc-tabs@12.12.1(react-dom@18.1.0)(react@18.1.0) + rc-textarea: registry.npmmirror.com/rc-textarea@1.4.0(react-dom@18.1.0)(react@18.1.0) + rc-tooltip: registry.npmmirror.com/rc-tooltip@6.0.1(react-dom@18.1.0)(react@18.1.0) + rc-tree: registry.npmmirror.com/rc-tree@5.7.12(react-dom@18.1.0)(react@18.1.0) + rc-tree-select: registry.npmmirror.com/rc-tree-select@5.13.0(react-dom@18.1.0)(react@18.1.0) + rc-upload: registry.npmmirror.com/rc-upload@4.3.5(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + scroll-into-view-if-needed: registry.npmmirror.com/scroll-into-view-if-needed@3.1.0 + throttle-debounce: registry.npmmirror.com/throttle-debounce@5.0.0 + transitivePeerDependencies: + - date-fns + - luxon + - moment + dev: false + + registry.npmmirror.com/array-tree-filter@2.1.0: + resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz} + name: array-tree-filter + version: 2.1.0 + dev: false + + registry.npmmirror.com/async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz} + name: async-validator + version: 4.2.5 + dev: false + + registry.npmmirror.com/asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz} + name: asynckit + version: 0.4.0 + dev: false + + registry.npmmirror.com/autoprefixer@10.4.16(postcss@8.4.31): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.16.tgz} + id: registry.npmmirror.com/autoprefixer/10.4.16 + name: autoprefixer + version: 10.4.16 + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: registry.npmmirror.com/browserslist@4.22.1 + caniuse-lite: registry.npmmirror.com/caniuse-lite@1.0.30001546 + fraction.js: registry.npmmirror.com/fraction.js@4.3.6 + normalize-range: registry.npmmirror.com/normalize-range@0.1.2 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/axios@1.5.1: + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/axios/-/axios-1.5.1.tgz} + name: axios + version: 1.5.1 + dependencies: + follow-redirects: registry.npmmirror.com/follow-redirects@1.15.3 + form-data: registry.npmmirror.com/form-data@4.0.0 + proxy-from-env: registry.npmmirror.com/proxy-from-env@1.1.0 + transitivePeerDependencies: + - debug + dev: false + + registry.npmmirror.com/browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/browserslist/-/browserslist-4.22.1.tgz} + name: browserslist + version: 4.22.1 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: registry.npmmirror.com/caniuse-lite@1.0.30001546 + electron-to-chromium: registry.npmmirror.com/electron-to-chromium@1.4.543 + node-releases: registry.npmmirror.com/node-releases@2.0.13 + update-browserslist-db: registry.npmmirror.com/update-browserslist-db@1.0.13(browserslist@4.22.1) + dev: true + + registry.npmmirror.com/buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz} + name: buffer-from + version: 1.1.2 + dev: true + + registry.npmmirror.com/caniuse-lite@1.0.30001546: + resolution: {integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz} + name: caniuse-lite + version: 1.0.30001546 + dev: true + + registry.npmmirror.com/chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz} + name: chrome-trace-event + version: 1.0.3 + engines: {node: '>=6.0'} + dev: true + + registry.npmmirror.com/classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz} + name: classnames + version: 2.3.2 + dev: false + + registry.npmmirror.com/combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz} + name: combined-stream + version: 1.0.8 + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: registry.npmmirror.com/delayed-stream@1.0.0 + dev: false + + registry.npmmirror.com/commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz} + name: commander + version: 2.20.3 + dev: true + + registry.npmmirror.com/compute-scroll-into-view@3.1.0: + resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz} + name: compute-scroll-into-view + version: 3.1.0 + dev: false + + registry.npmmirror.com/copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz} + name: copy-anything + version: 2.0.6 + dependencies: + is-what: registry.npmmirror.com/is-what@3.14.1 + dev: true + + registry.npmmirror.com/copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz} + name: copy-to-clipboard + version: 3.3.3 + dependencies: + toggle-selection: registry.npmmirror.com/toggle-selection@1.0.6 + dev: false + + registry.npmmirror.com/core-js-pure@3.33.0: + resolution: {integrity: sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.33.0.tgz} + name: core-js-pure + version: 3.33.0 + requiresBuild: true + dev: false + + registry.npmmirror.com/css-blank-pseudo@6.0.0(postcss@8.4.31): + resolution: {integrity: sha512-VbfLlOWO7sBHBTn6pwDQzc07Z0SDydgDBfNfCE0nvrehdBNv9RKsuupIRa/qal0+fBZhAALyQDPMKz5lnvcchw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/css-blank-pseudo/-/css-blank-pseudo-6.0.0.tgz} + id: registry.npmmirror.com/css-blank-pseudo/6.0.0 + name: css-blank-pseudo + version: 6.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/css-has-pseudo@6.0.0(postcss@8.4.31): + resolution: {integrity: sha512-X+r+JBuoO37FBOWVNhVJhxtSBUFHgHbrcc0CjFT28JEdOw1qaDwABv/uunyodUuSy2hMPe9j/HjssxSlvUmKjg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/css-has-pseudo/-/css-has-pseudo-6.0.0.tgz} + id: registry.npmmirror.com/css-has-pseudo/6.0.0 + name: css-has-pseudo + version: 6.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': registry.npmmirror.com/@csstools/selector-specificity@3.0.0(postcss-selector-parser@6.0.13) + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/css-prefers-color-scheme@9.0.0(postcss@8.4.31): + resolution: {integrity: sha512-03QGAk/FXIRseDdLb7XAiu6gidQ0Nd8945xuM7VFVPpc6goJsG9uIO8xQjTxwbPdPIIV4o4AJoOJyt8gwDl67g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.0.tgz} + id: registry.npmmirror.com/css-prefers-color-scheme/9.0.0 + name: css-prefers-color-scheme + version: 9.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/cssdb@7.7.3: + resolution: {integrity: sha512-QPbpOl+jR13quGTIvwCavognmtpr6T9ra6G9S++scJek7BY4xdkJpB3slU1JkjQmzKmpDHnPB+wkz+mxoT/h4w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cssdb/-/cssdb-7.7.3.tgz} + name: cssdb + version: 7.7.3 + dev: true + + registry.npmmirror.com/cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz} + name: cssesc + version: 3.0.0 + engines: {node: '>=4'} + hasBin: true + dev: true + + registry.npmmirror.com/csstype@3.1.0: + resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/csstype/-/csstype-3.1.0.tgz} + name: csstype + version: 3.1.0 + dev: false + + registry.npmmirror.com/dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz} + name: dayjs + version: 1.11.10 + dev: false + + registry.npmmirror.com/debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz} + name: debug + version: 3.2.7 + requiresBuild: true + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: registry.npmmirror.com/ms@2.1.2 + dev: true + optional: true + + registry.npmmirror.com/delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz} + name: delayed-stream + version: 1.0.0 + engines: {node: '>=0.4.0'} + dev: false + + registry.npmmirror.com/dom-align@1.12.4: + resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz} + name: dom-align + version: 1.12.4 + dev: false + + registry.npmmirror.com/electron-to-chromium@1.4.543: + resolution: {integrity: sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.543.tgz} + name: electron-to-chromium + version: 1.4.543 + dev: true + + registry.npmmirror.com/enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz} + name: enhanced-resolve + version: 5.15.0 + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: registry.npmmirror.com/graceful-fs@4.2.10 + tapable: registry.npmmirror.com/tapable@2.2.1 + dev: true + + registry.npmmirror.com/errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz} + name: errno + version: 0.1.8 + hasBin: true + requiresBuild: true + dependencies: + prr: registry.npmmirror.com/prr@1.0.1 + dev: true + optional: true + + registry.npmmirror.com/es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz} + name: es-module-lexer + version: 1.3.1 + dev: true + registry.npmmirror.com/esbuild-android-64@0.14.42: resolution: {integrity: sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.42.tgz} name: esbuild-android-64 @@ -3691,6 +4967,94 @@ packages: dev: true optional: true + registry.npmmirror.com/escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz} + name: escalade + version: 3.1.1 + engines: {node: '>=6'} + dev: true + + registry.npmmirror.com/eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz} + name: eslint-scope + version: 5.1.1 + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: registry.npmmirror.com/esrecurse@4.3.0 + estraverse: registry.npmmirror.com/estraverse@4.3.0 + dev: true + + registry.npmmirror.com/esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz} + name: esrecurse + version: 4.3.0 + engines: {node: '>=4.0'} + dependencies: + estraverse: registry.npmmirror.com/estraverse@5.3.0 + dev: true + + registry.npmmirror.com/estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz} + name: estraverse + version: 4.3.0 + engines: {node: '>=4.0'} + dev: true + + registry.npmmirror.com/estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz} + name: estraverse + version: 5.3.0 + engines: {node: '>=4.0'} + dev: true + + registry.npmmirror.com/events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/events/-/events-3.3.0.tgz} + name: events + version: 3.3.0 + engines: {node: '>=0.8.x'} + dev: true + + registry.npmmirror.com/fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz} + name: fast-deep-equal + version: 3.1.3 + dev: true + + registry.npmmirror.com/fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz} + name: fast-json-stable-stringify + version: 2.1.0 + dev: true + + registry.npmmirror.com/follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.3.tgz} + name: follow-redirects + version: 1.15.3 + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + registry.npmmirror.com/form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz} + name: form-data + version: 4.0.0 + engines: {node: '>= 6'} + dependencies: + asynckit: registry.npmmirror.com/asynckit@0.4.0 + combined-stream: registry.npmmirror.com/combined-stream@1.0.8 + mime-types: registry.npmmirror.com/mime-types@2.1.35 + dev: false + + registry.npmmirror.com/fraction.js@4.3.6: + resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.6.tgz} + name: fraction.js + version: 4.3.6 + dev: true + registry.npmmirror.com/fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz} name: fsevents @@ -3701,14 +5065,685 @@ packages: dev: true optional: true + registry.npmmirror.com/glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz} + name: glob-to-regexp + version: 0.4.1 + dev: true + registry.npmmirror.com/graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz} name: graceful-fs version: 4.2.10 requiresBuild: true dev: true + + registry.npmmirror.com/has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz} + name: has-flag + version: 4.0.0 + engines: {node: '>=8'} + dev: true + + registry.npmmirror.com/iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz} + name: iconv-lite + version: 0.6.3 + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + safer-buffer: registry.npmmirror.com/safer-buffer@2.1.2 + dev: true optional: true + registry.npmmirror.com/image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz} + name: image-size + version: 0.5.5 + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz} + name: is-what + version: 3.14.1 + dev: true + + registry.npmmirror.com/jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz} + name: jest-worker + version: 27.5.1 + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': registry.npmmirror.com/@types/node@17.0.36 + merge-stream: registry.npmmirror.com/merge-stream@2.0.0 + supports-color: registry.npmmirror.com/supports-color@8.1.1 + dev: true + + registry.npmmirror.com/json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz} + name: json-parse-even-better-errors + version: 2.3.1 + dev: true + + registry.npmmirror.com/json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz} + name: json-schema-traverse + version: 0.4.1 + dev: true + + registry.npmmirror.com/json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/json2mq/-/json2mq-0.2.0.tgz} + name: json2mq + version: 0.2.0 + dependencies: + string-convert: registry.npmmirror.com/string-convert@0.2.1 + dev: false + + registry.npmmirror.com/less-loader@11.1.3(less@4.2.0)(webpack@5.88.2): + resolution: {integrity: sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/less-loader/-/less-loader-11.1.3.tgz} + id: registry.npmmirror.com/less-loader/11.1.3 + name: less-loader + version: 11.1.3 + engines: {node: '>= 14.15.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + dependencies: + less: registry.npmmirror.com/less@4.2.0 + webpack: registry.npmmirror.com/webpack@5.88.2 + dev: true + + registry.npmmirror.com/less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/less/-/less-4.2.0.tgz} + name: less + version: 4.2.0 + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: registry.npmmirror.com/copy-anything@2.0.6 + parse-node-version: registry.npmmirror.com/parse-node-version@1.0.1 + tslib: registry.npmmirror.com/tslib@2.6.2 + optionalDependencies: + errno: registry.npmmirror.com/errno@0.1.8 + graceful-fs: registry.npmmirror.com/graceful-fs@4.2.10 + image-size: registry.npmmirror.com/image-size@0.5.5 + make-dir: registry.npmmirror.com/make-dir@2.1.0 + mime: registry.npmmirror.com/mime@1.6.0 + needle: registry.npmmirror.com/needle@3.2.0 + source-map: registry.npmmirror.com/source-map@0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + registry.npmmirror.com/loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz} + name: loader-runner + version: 4.3.0 + engines: {node: '>=6.11.5'} + dev: true + + registry.npmmirror.com/lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz} + name: lodash + version: 4.17.21 + + registry.npmmirror.com/make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz} + name: make-dir + version: 2.1.0 + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: registry.npmmirror.com/pify@4.0.1 + semver: registry.npmmirror.com/semver@5.7.1 + dev: true + optional: true + + registry.npmmirror.com/merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz} + name: merge-stream + version: 2.0.0 + dev: true + + registry.npmmirror.com/mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz} + name: mime-db + version: 1.52.0 + engines: {node: '>= 0.6'} + + registry.npmmirror.com/mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz} + name: mime-types + version: 2.1.35 + engines: {node: '>= 0.6'} + dependencies: + mime-db: registry.npmmirror.com/mime-db@1.52.0 + + registry.npmmirror.com/mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz} + name: mime + version: 1.6.0 + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz} + name: ms + version: 2.1.2 + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz} + name: nanoid + version: 3.3.6 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + registry.npmmirror.com/needle@3.2.0: + resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz} + name: needle + version: 3.2.0 + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + debug: registry.npmmirror.com/debug@3.2.7 + iconv-lite: registry.npmmirror.com/iconv-lite@0.6.3 + sax: registry.npmmirror.com/sax@1.3.0 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + registry.npmmirror.com/neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz} + name: neo-async + version: 2.6.2 + dev: true + + registry.npmmirror.com/node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz} + name: node-releases + version: 2.0.13 + dev: true + + registry.npmmirror.com/normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz} + name: normalize-range + version: 0.1.2 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmmirror.com/parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz} + name: parse-node-version + version: 1.0.1 + engines: {node: '>= 0.10'} + dev: true + + registry.npmmirror.com/picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz} + name: picocolors + version: 1.0.0 + dev: true + + registry.npmmirror.com/pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz} + name: pify + version: 4.0.1 + engines: {node: '>=6'} + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/postcss-attribute-case-insensitive@6.0.2(postcss@8.4.31): + resolution: {integrity: sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.2.tgz} + id: registry.npmmirror.com/postcss-attribute-case-insensitive/6.0.2 + name: postcss-attribute-case-insensitive + version: 6.0.2 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.10 + dev: true + + registry.npmmirror.com/postcss-clamp@4.1.0(postcss@8.4.31): + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz} + id: registry.npmmirror.com/postcss-clamp/4.1.0 + name: postcss-clamp + version: 4.1.0 + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-color-functional-notation@6.0.1(postcss@8.4.31): + resolution: {integrity: sha512-IouVx77fASIjOChWxkvOjYGnYNKq286cSiKFJwWNICV9NP2xZWVOS9WOriR/8uIB2zt/44bzQyw4GteCLpP2SA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.1.tgz} + id: registry.npmmirror.com/postcss-color-functional-notation/6.0.1 + name: postcss-color-functional-notation + version: 6.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-color-hex-alpha@9.0.2(postcss@8.4.31): + resolution: {integrity: sha512-SfPjgr//VQ/DOCf80STIAsdAs7sbIbxATvVmd+Ec7JvR8onz9pjawhq3BJM3Pie40EE3TyB0P6hft16D33Nlyg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.2.tgz} + id: registry.npmmirror.com/postcss-color-hex-alpha/9.0.2 + name: postcss-color-hex-alpha + version: 9.0.2 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-color-rebeccapurple@9.0.1(postcss@8.4.31): + resolution: {integrity: sha512-ds4cq5BjRieizVb2PnvbJ0omg9VCo2/KzluvoFZbxuGpsGJ5BQSD93CHBooinEtangCM5YqUOerGDl4xGmOb6Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.1.tgz} + id: registry.npmmirror.com/postcss-color-rebeccapurple/9.0.1 + name: postcss-color-rebeccapurple + version: 9.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-custom-media@10.0.1(postcss@8.4.31): + resolution: {integrity: sha512-fil7cosvzlIAYmZJPtNFcTH0Er7a3GveEK4q5Y/L24eWQHmiw8Fv/E5DMkVpdbNjkGzJxrvowOSt/Il9HZ06VQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-custom-media/-/postcss-custom-media-10.0.1.tgz} + id: registry.npmmirror.com/postcss-custom-media/10.0.1 + name: postcss-custom-media + version: 10.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': registry.npmmirror.com/@csstools/cascade-layer-name-parser@1.0.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/media-query-list-parser': registry.npmmirror.com/@csstools/media-query-list-parser@2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/postcss-custom-properties@13.3.2(postcss@8.4.31): + resolution: {integrity: sha512-2Coszybpo8lpLY24vy2CYv9AasiZ39/bs8Imv0pWMq55Gl8NWzfc24OAo3zIX7rc6uUJAqESnVOMZ6V6lpMjJA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-custom-properties/-/postcss-custom-properties-13.3.2.tgz} + id: registry.npmmirror.com/postcss-custom-properties/13.3.2 + name: postcss-custom-properties + version: 13.3.2 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': registry.npmmirror.com/@csstools/cascade-layer-name-parser@1.0.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-custom-selectors@7.1.5(postcss@8.4.31): + resolution: {integrity: sha512-0UYtz7GG10bZrRiUdZ/2Flt+hp5p/WP0T7JgAPZ/Xhgb0wFjW/p7QOjE+M58S9Z3x11P9YaNPcrsoOGewWYkcw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-custom-selectors/-/postcss-custom-selectors-7.1.5.tgz} + id: registry.npmmirror.com/postcss-custom-selectors/7.1.5 + name: postcss-custom-selectors + version: 7.1.5 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': registry.npmmirror.com/@csstools/cascade-layer-name-parser@1.0.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/postcss-dir-pseudo-class@8.0.0(postcss@8.4.31): + resolution: {integrity: sha512-Oy5BBi0dWPwij/IA+yDYj+/OBMQ9EPqAzTHeSNUYrUWdll/PRJmcbiUj0MNcsBi681I1gcSTLvMERPaXzdbvJg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.0.tgz} + id: registry.npmmirror.com/postcss-dir-pseudo-class/8.0.0 + name: postcss-dir-pseudo-class + version: 8.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/postcss-double-position-gradients@5.0.1(postcss@8.4.31): + resolution: {integrity: sha512-ogcHzfC5q4nfySyZyNF7crvK3/MRDTh+akzE+l7bgJUjVkhgfahBuI+ZAm/5EeaVSVKnCOgqtC6wTyUFgLVLTw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.1.tgz} + id: registry.npmmirror.com/postcss-double-position-gradients/5.0.1 + name: postcss-double-position-gradients + version: 5.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-focus-visible@9.0.0(postcss@8.4.31): + resolution: {integrity: sha512-zA4TbVaIaT8npZBEROhZmlc+GBKE8AELPHXE7i4TmIUEQhw/P/mSJfY9t6tBzpQ1rABeGtEOHYrW4SboQeONMQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-focus-visible/-/postcss-focus-visible-9.0.0.tgz} + id: registry.npmmirror.com/postcss-focus-visible/9.0.0 + name: postcss-focus-visible + version: 9.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/postcss-focus-within@8.0.0(postcss@8.4.31): + resolution: {integrity: sha512-E7+J9nuQzZaA37D/MUZMX1K817RZGDab8qw6pFwzAkDd/QtlWJ9/WTKmzewNiuxzeq6WWY7ATiRePVoDKp+DnA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-focus-within/-/postcss-focus-within-8.0.0.tgz} + id: registry.npmmirror.com/postcss-focus-within/8.0.0 + name: postcss-focus-within + version: 8.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/postcss-font-variant@5.0.0(postcss@8.4.31): + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz} + id: registry.npmmirror.com/postcss-font-variant/5.0.0 + name: postcss-font-variant + version: 5.0.0 + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/postcss-gap-properties@5.0.0(postcss@8.4.31): + resolution: {integrity: sha512-YjsEEL6890P7MCv6fch6Am1yq0EhQCJMXyT4LBohiu87+4/WqR7y5W3RIv53WdA901hhytgRvjlrAhibhW4qsA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-gap-properties/-/postcss-gap-properties-5.0.0.tgz} + id: registry.npmmirror.com/postcss-gap-properties/5.0.0 + name: postcss-gap-properties + version: 5.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/postcss-image-set-function@6.0.1(postcss@8.4.31): + resolution: {integrity: sha512-VlZncC9hhZ5tg0JllY4g6Z28BeoPO8DIkelioEEkXL0AA0IORlqYpTi2L8TUnl4YQrlwvBgxVy+mdZJw5R/cIQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-image-set-function/-/postcss-image-set-function-6.0.1.tgz} + id: registry.npmmirror.com/postcss-image-set-function/6.0.1 + name: postcss-image-set-function + version: 6.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-lab-function@6.0.6(postcss@8.4.31): + resolution: {integrity: sha512-hZtIi0HPZg0Jc2Q7LL3TossaboSQVINYLT8zNRzp6zumjipl8vi80F2pNLO3euB4b8cRh6KlGdWKO0Q29pqtjg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-lab-function/-/postcss-lab-function-6.0.6.tgz} + id: registry.npmmirror.com/postcss-lab-function/6.0.6 + name: postcss-lab-function + version: 6.0.6 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': registry.npmmirror.com/@csstools/css-color-parser@1.3.3(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) + '@csstools/css-parser-algorithms': registry.npmmirror.com/@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1) + '@csstools/css-tokenizer': registry.npmmirror.com/@csstools/css-tokenizer@2.2.1 + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/postcss-logical@7.0.0(postcss@8.4.31): + resolution: {integrity: sha512-zYf3vHkoW82f5UZTEXChTJvH49Yl9X37axTZsJGxrCG2kOUwtaAoz9E7tqYg0lsIoJLybaL8fk/2mOi81zVIUw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-logical/-/postcss-logical-7.0.0.tgz} + id: registry.npmmirror.com/postcss-logical/7.0.0 + name: postcss-logical + version: 7.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-nesting@12.0.1(postcss@8.4.31): + resolution: {integrity: sha512-6LCqCWP9pqwXw/njMvNK0hGY44Fxc4B2EsGbn6xDcxbNRzP8GYoxT7yabVVMLrX3quqOJ9hg2jYMsnkedOf8pA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-nesting/-/postcss-nesting-12.0.1.tgz} + id: registry.npmmirror.com/postcss-nesting/12.0.1 + name: postcss-nesting + version: 12.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': registry.npmmirror.com/@csstools/selector-specificity@3.0.0(postcss-selector-parser@6.0.13) + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/postcss-opacity-percentage@2.0.0(postcss@8.4.31): + resolution: {integrity: sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz} + id: registry.npmmirror.com/postcss-opacity-percentage/2.0.0 + name: postcss-opacity-percentage + version: 2.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/postcss-overflow-shorthand@5.0.0(postcss@8.4.31): + resolution: {integrity: sha512-2rlxDyeSics/hC2FuMdPnWiP9WUPZ5x7FTuArXLFVpaSQ2woPSfZS4RD59HuEokbZhs/wPUQJ1E3MT6zVv94MQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.0.tgz} + id: registry.npmmirror.com/postcss-overflow-shorthand/5.0.0 + name: postcss-overflow-shorthand + version: 5.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-page-break@3.0.4(postcss@8.4.31): + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz} + id: registry.npmmirror.com/postcss-page-break/3.0.4 + name: postcss-page-break + version: 3.0.4 + peerDependencies: + postcss: ^8 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/postcss-place@9.0.0(postcss@8.4.31): + resolution: {integrity: sha512-qLEPD9VPH5opDVemwmRaujODF9nExn24VOC3ghgVLEvfYN7VZLwJHes0q/C9YR5hI2UC3VgBE8Wkdp1TxCXhtg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-place/-/postcss-place-9.0.0.tgz} + id: registry.npmmirror.com/postcss-place/9.0.0 + name: postcss-place + version: 9.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-preset-env@9.1.4(postcss@8.4.31): + resolution: {integrity: sha512-k2scWtmYBZhjAzMJw8Fgc4hnfkZa4KpPjK0z6+tTAJ4/3ZAmaJJ1VBQ9T7OS0qvper8AyD+kqN2UB2tYFQ4eeA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-preset-env/-/postcss-preset-env-9.1.4.tgz} + id: registry.npmmirror.com/postcss-preset-env/9.1.4 + name: postcss-preset-env + version: 9.1.4 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-cascade-layers': registry.npmmirror.com/@csstools/postcss-cascade-layers@4.0.0(postcss@8.4.31) + '@csstools/postcss-color-function': registry.npmmirror.com/@csstools/postcss-color-function@3.0.6(postcss@8.4.31) + '@csstools/postcss-color-mix-function': registry.npmmirror.com/@csstools/postcss-color-mix-function@2.0.6(postcss@8.4.31) + '@csstools/postcss-exponential-functions': registry.npmmirror.com/@csstools/postcss-exponential-functions@1.0.1(postcss@8.4.31) + '@csstools/postcss-font-format-keywords': registry.npmmirror.com/@csstools/postcss-font-format-keywords@3.0.0(postcss@8.4.31) + '@csstools/postcss-gradients-interpolation-method': registry.npmmirror.com/@csstools/postcss-gradients-interpolation-method@4.0.6(postcss@8.4.31) + '@csstools/postcss-hwb-function': registry.npmmirror.com/@csstools/postcss-hwb-function@3.0.5(postcss@8.4.31) + '@csstools/postcss-ic-unit': registry.npmmirror.com/@csstools/postcss-ic-unit@3.0.1(postcss@8.4.31) + '@csstools/postcss-initial': registry.npmmirror.com/@csstools/postcss-initial@1.0.0(postcss@8.4.31) + '@csstools/postcss-is-pseudo-class': registry.npmmirror.com/@csstools/postcss-is-pseudo-class@4.0.3(postcss@8.4.31) + '@csstools/postcss-logical-float-and-clear': registry.npmmirror.com/@csstools/postcss-logical-float-and-clear@2.0.0(postcss@8.4.31) + '@csstools/postcss-logical-resize': registry.npmmirror.com/@csstools/postcss-logical-resize@2.0.0(postcss@8.4.31) + '@csstools/postcss-logical-viewport-units': registry.npmmirror.com/@csstools/postcss-logical-viewport-units@2.0.3(postcss@8.4.31) + '@csstools/postcss-media-minmax': registry.npmmirror.com/@csstools/postcss-media-minmax@1.1.0(postcss@8.4.31) + '@csstools/postcss-media-queries-aspect-ratio-number-values': registry.npmmirror.com/@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.3(postcss@8.4.31) + '@csstools/postcss-nested-calc': registry.npmmirror.com/@csstools/postcss-nested-calc@3.0.0(postcss@8.4.31) + '@csstools/postcss-normalize-display-values': registry.npmmirror.com/@csstools/postcss-normalize-display-values@3.0.1(postcss@8.4.31) + '@csstools/postcss-oklab-function': registry.npmmirror.com/@csstools/postcss-oklab-function@3.0.6(postcss@8.4.31) + '@csstools/postcss-progressive-custom-properties': registry.npmmirror.com/@csstools/postcss-progressive-custom-properties@3.0.1(postcss@8.4.31) + '@csstools/postcss-relative-color-syntax': registry.npmmirror.com/@csstools/postcss-relative-color-syntax@2.0.6(postcss@8.4.31) + '@csstools/postcss-scope-pseudo-class': registry.npmmirror.com/@csstools/postcss-scope-pseudo-class@3.0.0(postcss@8.4.31) + '@csstools/postcss-stepped-value-functions': registry.npmmirror.com/@csstools/postcss-stepped-value-functions@3.0.2(postcss@8.4.31) + '@csstools/postcss-text-decoration-shorthand': registry.npmmirror.com/@csstools/postcss-text-decoration-shorthand@3.0.3(postcss@8.4.31) + '@csstools/postcss-trigonometric-functions': registry.npmmirror.com/@csstools/postcss-trigonometric-functions@3.0.2(postcss@8.4.31) + '@csstools/postcss-unset-value': registry.npmmirror.com/@csstools/postcss-unset-value@3.0.0(postcss@8.4.31) + autoprefixer: registry.npmmirror.com/autoprefixer@10.4.16(postcss@8.4.31) + browserslist: registry.npmmirror.com/browserslist@4.22.1 + css-blank-pseudo: registry.npmmirror.com/css-blank-pseudo@6.0.0(postcss@8.4.31) + css-has-pseudo: registry.npmmirror.com/css-has-pseudo@6.0.0(postcss@8.4.31) + css-prefers-color-scheme: registry.npmmirror.com/css-prefers-color-scheme@9.0.0(postcss@8.4.31) + cssdb: registry.npmmirror.com/cssdb@7.7.3 + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-attribute-case-insensitive: registry.npmmirror.com/postcss-attribute-case-insensitive@6.0.2(postcss@8.4.31) + postcss-clamp: registry.npmmirror.com/postcss-clamp@4.1.0(postcss@8.4.31) + postcss-color-functional-notation: registry.npmmirror.com/postcss-color-functional-notation@6.0.1(postcss@8.4.31) + postcss-color-hex-alpha: registry.npmmirror.com/postcss-color-hex-alpha@9.0.2(postcss@8.4.31) + postcss-color-rebeccapurple: registry.npmmirror.com/postcss-color-rebeccapurple@9.0.1(postcss@8.4.31) + postcss-custom-media: registry.npmmirror.com/postcss-custom-media@10.0.1(postcss@8.4.31) + postcss-custom-properties: registry.npmmirror.com/postcss-custom-properties@13.3.2(postcss@8.4.31) + postcss-custom-selectors: registry.npmmirror.com/postcss-custom-selectors@7.1.5(postcss@8.4.31) + postcss-dir-pseudo-class: registry.npmmirror.com/postcss-dir-pseudo-class@8.0.0(postcss@8.4.31) + postcss-double-position-gradients: registry.npmmirror.com/postcss-double-position-gradients@5.0.1(postcss@8.4.31) + postcss-focus-visible: registry.npmmirror.com/postcss-focus-visible@9.0.0(postcss@8.4.31) + postcss-focus-within: registry.npmmirror.com/postcss-focus-within@8.0.0(postcss@8.4.31) + postcss-font-variant: registry.npmmirror.com/postcss-font-variant@5.0.0(postcss@8.4.31) + postcss-gap-properties: registry.npmmirror.com/postcss-gap-properties@5.0.0(postcss@8.4.31) + postcss-image-set-function: registry.npmmirror.com/postcss-image-set-function@6.0.1(postcss@8.4.31) + postcss-lab-function: registry.npmmirror.com/postcss-lab-function@6.0.6(postcss@8.4.31) + postcss-logical: registry.npmmirror.com/postcss-logical@7.0.0(postcss@8.4.31) + postcss-nesting: registry.npmmirror.com/postcss-nesting@12.0.1(postcss@8.4.31) + postcss-opacity-percentage: registry.npmmirror.com/postcss-opacity-percentage@2.0.0(postcss@8.4.31) + postcss-overflow-shorthand: registry.npmmirror.com/postcss-overflow-shorthand@5.0.0(postcss@8.4.31) + postcss-page-break: registry.npmmirror.com/postcss-page-break@3.0.4(postcss@8.4.31) + postcss-place: registry.npmmirror.com/postcss-place@9.0.0(postcss@8.4.31) + postcss-pseudo-class-any-link: registry.npmmirror.com/postcss-pseudo-class-any-link@9.0.0(postcss@8.4.31) + postcss-replace-overflow-wrap: registry.npmmirror.com/postcss-replace-overflow-wrap@4.0.0(postcss@8.4.31) + postcss-selector-not: registry.npmmirror.com/postcss-selector-not@7.0.1(postcss@8.4.31) + postcss-value-parser: registry.npmmirror.com/postcss-value-parser@4.2.0 + dev: true + + registry.npmmirror.com/postcss-pseudo-class-any-link@9.0.0(postcss@8.4.31): + resolution: {integrity: sha512-QNCYIL98VKFKY6HGDEJpF6+K/sg9bxcUYnOmNHJxZS5wsFDFaVoPeG68WAuhsqwbIBSo/b9fjEnTwY2mTSD+uA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.0.tgz} + id: registry.npmmirror.com/postcss-pseudo-class-any-link/9.0.0 + name: postcss-pseudo-class-any-link + version: 9.0.0 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.13 + dev: true + + registry.npmmirror.com/postcss-replace-overflow-wrap@4.0.0(postcss@8.4.31): + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz} + id: registry.npmmirror.com/postcss-replace-overflow-wrap/4.0.0 + name: postcss-replace-overflow-wrap + version: 4.0.0 + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + dev: true + + registry.npmmirror.com/postcss-selector-not@7.0.1(postcss@8.4.31): + resolution: {integrity: sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz} + id: registry.npmmirror.com/postcss-selector-not/7.0.1 + name: postcss-selector-not + version: 7.0.1 + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: registry.npmmirror.com/postcss@8.4.31 + postcss-selector-parser: registry.npmmirror.com/postcss-selector-parser@6.0.10 + dev: true + + registry.npmmirror.com/postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz} + name: postcss-selector-parser + version: 6.0.10 + engines: {node: '>=4'} + dependencies: + cssesc: registry.npmmirror.com/cssesc@3.0.0 + util-deprecate: registry.npmmirror.com/util-deprecate@1.0.2 + dev: true + + registry.npmmirror.com/postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz} + name: postcss-selector-parser + version: 6.0.13 + engines: {node: '>=4'} + dependencies: + cssesc: registry.npmmirror.com/cssesc@3.0.0 + util-deprecate: registry.npmmirror.com/util-deprecate@1.0.2 + dev: true + + registry.npmmirror.com/postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz} + name: postcss-value-parser + version: 4.2.0 + dev: true + + registry.npmmirror.com/postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz} + name: postcss + version: 8.4.31 + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: registry.npmmirror.com/nanoid@3.3.6 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + dev: true + registry.npmmirror.com/prettier@3.0.3: resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/prettier/-/prettier-3.0.3.tgz} name: prettier @@ -3717,6 +5752,688 @@ packages: hasBin: true dev: true + registry.npmmirror.com/proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz} + name: proxy-from-env + version: 1.1.0 + dev: false + + registry.npmmirror.com/prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz} + name: prr + version: 1.0.1 + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/pubsub-js@1.9.4: + resolution: {integrity: sha512-hJYpaDvPH4w8ZX/0Fdf9ma1AwRgU353GfbaVfPjfJQf1KxZ2iHaHl3fAUw1qlJIR5dr4F3RzjGaWohYUEyoh7A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pubsub-js/-/pubsub-js-1.9.4.tgz} + name: pubsub-js + version: 1.9.4 + dev: false + + registry.npmmirror.com/punycode@2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz} + name: punycode + version: 2.1.1 + engines: {node: '>=6'} + dev: true + + registry.npmmirror.com/qrcode.react@3.1.0(react@18.1.0): + resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/qrcode.react/-/qrcode.react-3.1.0.tgz} + id: registry.npmmirror.com/qrcode.react/3.1.0 + name: qrcode.react + version: 3.1.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.1.0 + dev: false + + registry.npmmirror.com/randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz} + name: randombytes + version: 2.1.0 + dependencies: + safe-buffer: registry.npmmirror.com/safe-buffer@5.2.1 + dev: true + + registry.npmmirror.com/rc-align@4.0.15(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-align/-/rc-align-4.0.15.tgz} + id: registry.npmmirror.com/rc-align/4.0.15 + name: rc-align + version: 4.0.15 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + dom-align: registry.npmmirror.com/dom-align@1.12.4 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + resize-observer-polyfill: registry.npmmirror.com/resize-observer-polyfill@1.5.1 + dev: false + + registry.npmmirror.com/rc-cascader@3.17.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-8O5Eq/NteRuBaaUIb+ZsTEkNKM3BwWKizsFlSpukCVa2ELqrdMyslbe/OdxtuFlyJIqGyWF5rS2Q+fd0Rpvmgw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-cascader/-/rc-cascader-3.17.0.tgz} + id: registry.npmmirror.com/rc-cascader/3.17.0 + name: rc-cascader + version: 3.17.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + array-tree-filter: registry.npmmirror.com/array-tree-filter@2.1.0 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-select: registry.npmmirror.com/rc-select@14.9.0(react-dom@18.1.0)(react@18.1.0) + rc-tree: registry.npmmirror.com/rc-tree@5.7.12(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-checkbox@3.1.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-checkbox/-/rc-checkbox-3.1.0.tgz} + id: registry.npmmirror.com/rc-checkbox/3.1.0 + name: rc-checkbox + version: 3.1.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-collapse@3.7.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-collapse/-/rc-collapse-3.7.1.tgz} + id: registry.npmmirror.com/rc-collapse/3.7.1 + name: rc-collapse + version: 3.7.1 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-dialog@9.2.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-dL2tklMou/QfK77+0CTH3FTnKCvIiYv9Df7PfFfg8YVXhYAGmuIkV4ooQYHAIR4juL3Ywcm5oQflF2vDDuGlUg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-dialog/-/rc-dialog-9.2.0.tgz} + id: registry.npmmirror.com/rc-dialog/9.2.0 + name: rc-dialog + version: 9.2.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/portal': registry.npmmirror.com/@rc-component/portal@1.1.2(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-drawer@6.4.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-QIbNMjiZy322o9uEpJHsSZ5rS/zuxqam3lYVPDzjztoqsoDzTNNxWN77QVpOfQ0UC9/87+qu25zocJ+O9bK2Tg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-drawer/-/rc-drawer-6.4.1.tgz} + id: registry.npmmirror.com/rc-drawer/6.4.1 + name: rc-drawer + version: 6.4.1 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/portal': registry.npmmirror.com/@rc-component/portal@1.1.2(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-dropdown@4.1.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-dropdown/-/rc-dropdown-4.1.0.tgz} + id: registry.npmmirror.com/rc-dropdown/4.1.0 + name: rc-dropdown + version: 4.1.0 + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/trigger': registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-field-form@1.38.2(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-O83Oi1qPyEv31Sg+Jwvsj6pXc8uQI2BtIAkURr5lvEYHVggXJhdU/nynK8wY1gbw0qR48k731sN5ON4egRCROA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-field-form/-/rc-field-form-1.38.2.tgz} + id: registry.npmmirror.com/rc-field-form/1.38.2 + name: rc-field-form + version: 1.38.2 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + async-validator: registry.npmmirror.com/async-validator@4.2.5 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-image@7.2.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-5Ug2hCVl6VcT0osR5XaZQ4zclTMEWPnbn3b4/TS/MR1QjRpEACLNFUzBGwr5mbAVhzvLWX5YZf4vO10xUA5IUA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-image/-/rc-image-7.2.0.tgz} + id: registry.npmmirror.com/rc-image/7.2.0 + name: rc-image + version: 7.2.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/portal': registry.npmmirror.com/@rc-component/portal@1.1.2(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-dialog: registry.npmmirror.com/rc-dialog@9.2.0(react-dom@18.1.0)(react@18.1.0) + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-input-number@8.1.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-bdHgduOxuN0lrhzgPmoKbhRD4GLIzVcddVz972/JHPHr7oLwPX5xDb9w4bXhuMzyT2VzQy7nggRCfH3yAl09oA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-input-number/-/rc-input-number-8.1.0.tgz} + id: registry.npmmirror.com/rc-input-number/8.1.0 + name: rc-input-number + version: 8.1.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/mini-decimal': registry.npmmirror.com/@rc-component/mini-decimal@1.1.0 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-input: registry.npmmirror.com/rc-input@1.2.1(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-input@1.2.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-nQRmBvEFoGi+SNRDavccZ8ueyhFgmxkWqIt4aDyuNJgUZF12HJKIwDhAafUM7N+g7PyuW9FH3pf3zPHzdiCWbA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-input/-/rc-input-1.2.1.tgz} + id: registry.npmmirror.com/rc-input/1.2.1 + name: rc-input + version: 1.2.1 + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-mentions@2.8.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-LBMkO6bSGhEvS1CvMK978qGN82tI+mzk7l/uTiQJH+UDiwpvq+pxK4DxU5b6Q1T5LW6bn2pSua9RaZKZrDoBOw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-mentions/-/rc-mentions-2.8.0.tgz} + id: registry.npmmirror.com/rc-mentions/2.8.0 + name: rc-mentions + version: 2.8.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/trigger': registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-input: registry.npmmirror.com/rc-input@1.2.1(react-dom@18.1.0)(react@18.1.0) + rc-menu: registry.npmmirror.com/rc-menu@9.12.0(react-dom@18.1.0)(react@18.1.0) + rc-textarea: registry.npmmirror.com/rc-textarea@1.4.0(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-menu@9.12.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-Apr/fRf5EcqWJ4nphHV6dTGZcLPaPzwY44q9hAtLJysY4rkC9Eg+ekj3uFx6opPWVruV2sJNWq/Po+HHtO48CA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-menu/-/rc-menu-9.12.0.tgz} + id: registry.npmmirror.com/rc-menu/9.12.0 + name: rc-menu + version: 9.12.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/trigger': registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-overflow: registry.npmmirror.com/rc-overflow@1.3.2(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-motion/-/rc-motion-2.9.0.tgz} + id: registry.npmmirror.com/rc-motion/2.9.0 + name: rc-motion + version: 2.9.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-notification@5.1.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-BPnded/WmWFE57ubqhVCgRSuedfQQNeSOYqdwppyr2B/Wt909gYFKyWAkFJVXuppAjsOGop05a93UaxjmUFdkg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-notification/-/rc-notification-5.1.1.tgz} + id: registry.npmmirror.com/rc-notification/5.1.1 + name: rc-notification + version: 5.1.1 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-overflow@1.3.2(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-overflow/-/rc-overflow-1.3.2.tgz} + id: registry.npmmirror.com/rc-overflow/1.3.2 + name: rc-overflow + version: 1.3.2 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-resize-observer: registry.npmmirror.com/rc-resize-observer@1.3.1(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-pagination@3.6.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-R/sUnKKXx1Nm4kZfUKS3YKa7yEPF1ZkVB/AynQaHt+nMER7h9wPTfliDJFdYo+RM/nk2JD4Yc5QpUq8fIQHeug==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-pagination/-/rc-pagination-3.6.1.tgz} + id: registry.npmmirror.com/rc-pagination/3.6.1 + name: rc-pagination + version: 3.6.1 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-picker@3.14.4(dayjs@1.11.10)(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-5jGhDglT7i2Qv3CfO4LyMp7unhQ1t/IFNO2T+8Iv1k1FYD0hW0ejqCl+rZNFP6vSLzOW9oVcHVy5SEllhYgR+Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-picker/-/rc-picker-3.14.4.tgz} + id: registry.npmmirror.com/rc-picker/3.14.4 + name: rc-picker + version: 3.14.4 + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + luxon: '>= 3.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/trigger': registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + dayjs: registry.npmmirror.com/dayjs@1.11.10 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-progress@3.5.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-progress/-/rc-progress-3.5.1.tgz} + id: registry.npmmirror.com/rc-progress/3.5.1 + name: rc-progress + version: 3.5.1 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-rate@2.12.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-rate/-/rc-rate-2.12.0.tgz} + id: registry.npmmirror.com/rc-rate/2.12.0 + name: rc-rate + version: 2.12.0 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-resize-observer@1.3.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-resize-observer/-/rc-resize-observer-1.3.1.tgz} + id: registry.npmmirror.com/rc-resize-observer/1.3.1 + name: rc-resize-observer + version: 1.3.1 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + resize-observer-polyfill: registry.npmmirror.com/resize-observer-polyfill@1.5.1 + dev: false + + registry.npmmirror.com/rc-segmented@2.2.2(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-segmented/-/rc-segmented-2.2.2.tgz} + id: registry.npmmirror.com/rc-segmented/2.2.2 + name: rc-segmented + version: 2.2.2 + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-select@14.9.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-vbIhK1MBA12MRdxXbiylSCTPKsWV8WmeN7OyATk9I0LsuIVwe/kBAUNH02am1ryjoylbK+AH309a6X1AflGRSw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-select/-/rc-select-14.9.0.tgz} + id: registry.npmmirror.com/rc-select/14.9.0 + name: rc-select + version: 14.9.0 + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/trigger': registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-overflow: registry.npmmirror.com/rc-overflow@1.3.2(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + rc-virtual-list: registry.npmmirror.com/rc-virtual-list@3.11.2(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-slider@10.2.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-l355C/65iV4UFp7mXq5xBTNX2/tF2g74VWiTVlTpNp+6vjE/xaHHNiQq5Af+Uu28uUiqCuH/QXs5HfADL9KJ/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-slider/-/rc-slider-10.2.1.tgz} + id: registry.npmmirror.com/rc-slider/10.2.1 + name: rc-slider + version: 10.2.1 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-steps@6.0.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-steps/-/rc-steps-6.0.1.tgz} + id: registry.npmmirror.com/rc-steps/6.0.1 + name: rc-steps + version: 6.0.1 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-switch@4.1.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-switch/-/rc-switch-4.1.0.tgz} + id: registry.npmmirror.com/rc-switch/4.1.0 + name: rc-switch + version: 4.1.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-table@7.34.4(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-os+i88Y2AO/6dNkOgJkKSHgXYaZZGnuOEEe+nyaq5IRgvAQNhLysUjXt2objtBeFDEZR8TqXrajwBNRUwunmdw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-table/-/rc-table-7.34.4.tgz} + id: registry.npmmirror.com/rc-table/7.34.4 + name: rc-table + version: 7.34.4 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/context': registry.npmmirror.com/@rc-component/context@1.4.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-resize-observer: registry.npmmirror.com/rc-resize-observer@1.3.1(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + rc-virtual-list: registry.npmmirror.com/rc-virtual-list@3.11.2(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-tabs@12.12.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-e10VBjEkECdPl4XZSs9to81SE+mgclBTM7J8/LMsFqmJoi05Tci91bRnmeeDtrcOCx2PuZdJv57XUlC4d8PEIw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-tabs/-/rc-tabs-12.12.1.tgz} + id: registry.npmmirror.com/rc-tabs/12.12.1 + name: rc-tabs + version: 12.12.1 + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-dropdown: registry.npmmirror.com/rc-dropdown@4.1.0(react-dom@18.1.0)(react@18.1.0) + rc-menu: registry.npmmirror.com/rc-menu@9.12.0(react-dom@18.1.0)(react@18.1.0) + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-resize-observer: registry.npmmirror.com/rc-resize-observer@1.3.1(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-textarea@1.4.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-CiqK+uyoJlnfufbC0kwfHJpfElhQacuDSNyNQ/xGnA/QMaJLDbgmqRT8QmX0T0KD/ws/hy6qqRaGJSsrRR5uiQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-textarea/-/rc-textarea-1.4.0.tgz} + id: registry.npmmirror.com/rc-textarea/1.4.0 + name: rc-textarea + version: 1.4.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-input: registry.npmmirror.com/rc-input@1.2.1(react-dom@18.1.0)(react@18.1.0) + rc-resize-observer: registry.npmmirror.com/rc-resize-observer@1.3.1(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-tooltip@6.0.1(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-MdvPlsD1fDSxKp9+HjXrc/CxLmA/s11QYIh1R7aExxfodKP7CZA++DG1AjrW80F8IUdHYcR43HAm0Y2BYPelHA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-tooltip/-/rc-tooltip-6.0.1.tgz} + id: registry.npmmirror.com/rc-tooltip/6.0.1 + name: rc-tooltip + version: 6.0.1 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@rc-component/trigger': registry.npmmirror.com/@rc-component/trigger@1.17.0(react-dom@18.1.0)(react@18.1.0) + classnames: registry.npmmirror.com/classnames@2.3.2 + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-tree-select@5.13.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-g01JU9EdE7j/9KfDKtmvFqJ7ZDNIYDzkpmAXllbTBFoRNhWJBjW1x/dCZLVG+IdZeIz8SKJkgZzCf1CUZrzV/Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-tree-select/-/rc-tree-select-5.13.0.tgz} + id: registry.npmmirror.com/rc-tree-select/5.13.0 + name: rc-tree-select + version: 5.13.0 + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-select: registry.npmmirror.com/rc-select@14.9.0(react-dom@18.1.0)(react@18.1.0) + rc-tree: registry.npmmirror.com/rc-tree@5.7.12(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-tree@5.7.12(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-LXA5nY2hG5koIAlHW5sgXgLpOMz+bFRbnZZ+cCg0tQs4Wv1AmY7EDi1SK7iFXhslYockbqUerQan82jljoaItg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-tree/-/rc-tree-5.7.12.tgz} + id: registry.npmmirror.com/rc-tree/5.7.12 + name: rc-tree + version: 5.7.12 + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-motion: registry.npmmirror.com/rc-motion@2.9.0(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + rc-virtual-list: registry.npmmirror.com/rc-virtual-list@3.11.2(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-upload@4.3.5(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-EHlKJbhkgFSQHliTj9v/2K5aEuFwfUQgZARzD7AmAPOneZEPiCNF3n6PEWIuqz9h7oq6FuXgdR67sC5BWFxJbA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-upload/-/rc-upload-4.3.5.tgz} + id: registry.npmmirror.com/rc-upload/4.3.5 + name: rc-upload + version: 4.3.5 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-util/-/rc-util-5.37.0.tgz} + id: registry.npmmirror.com/rc-util/5.37.0 + name: rc-util + version: 5.37.0 + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + react-is: registry.npmmirror.com/react-is@16.13.1 + dev: false + + registry.npmmirror.com/rc-virtual-list@3.11.2(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-MTFLL2LOHr3+/+r+WjTIs6j8XmJE6EqdOsJvCH8SWig7qyik3aljCEImUtw5tdWR0tQhXUfbv7P7nZaLY91XPg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rc-virtual-list/-/rc-virtual-list-3.11.2.tgz} + id: registry.npmmirror.com/rc-virtual-list/3.11.2 + name: rc-virtual-list + version: 3.11.2 + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + classnames: registry.npmmirror.com/classnames@2.3.2 + rc-resize-observer: registry.npmmirror.com/rc-resize-observer@1.3.1(react-dom@18.1.0)(react@18.1.0) + rc-util: registry.npmmirror.com/rc-util@5.37.0(react-dom@18.1.0)(react@18.1.0) + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + dev: false + + registry.npmmirror.com/react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz} + name: react-is + version: 16.13.1 + dev: false + registry.npmmirror.com/react-router-dom@6.16.0(react-dom@18.1.0)(react@18.1.0): resolution: {integrity: sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.16.0.tgz} id: registry.npmmirror.com/react-router-dom/6.16.0 @@ -3745,3 +6462,279 @@ packages: '@remix-run/router': registry.npmmirror.com/@remix-run/router@1.9.0 react: 18.1.0 dev: false + + registry.npmmirror.com/regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz} + name: regenerator-runtime + version: 0.14.0 + dev: false + + registry.npmmirror.com/resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz} + name: resize-observer-polyfill + version: 1.5.1 + dev: false + + registry.npmmirror.com/safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz} + name: safe-buffer + version: 5.2.1 + dev: true + + registry.npmmirror.com/safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz} + name: safer-buffer + version: 2.1.2 + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz} + name: sax + version: 1.3.0 + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz} + name: schema-utils + version: 3.3.0 + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': registry.npmmirror.com/@types/json-schema@7.0.11 + ajv: registry.npmmirror.com/ajv@6.12.6 + ajv-keywords: registry.npmmirror.com/ajv-keywords@3.5.2(ajv@6.12.6) + dev: true + + registry.npmmirror.com/scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz} + name: scroll-into-view-if-needed + version: 3.1.0 + dependencies: + compute-scroll-into-view: registry.npmmirror.com/compute-scroll-into-view@3.1.0 + dev: false + + registry.npmmirror.com/semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz} + name: semver + version: 5.7.1 + hasBin: true + requiresBuild: true + dev: true + optional: true + + registry.npmmirror.com/serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz} + name: serialize-javascript + version: 6.0.1 + dependencies: + randombytes: registry.npmmirror.com/randombytes@2.1.0 + dev: true + + registry.npmmirror.com/source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz} + name: source-map-js + version: 1.0.2 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmmirror.com/source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz} + name: source-map-support + version: 0.5.21 + dependencies: + buffer-from: registry.npmmirror.com/buffer-from@1.1.2 + source-map: registry.npmmirror.com/source-map@0.6.1 + dev: true + + registry.npmmirror.com/source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz} + name: source-map + version: 0.6.1 + engines: {node: '>=0.10.0'} + dev: true + + registry.npmmirror.com/string-convert@0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string-convert/-/string-convert-0.2.1.tgz} + name: string-convert + version: 0.2.1 + dev: false + + registry.npmmirror.com/stylis@4.3.0: + resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stylis/-/stylis-4.3.0.tgz} + name: stylis + version: 4.3.0 + dev: false + + registry.npmmirror.com/supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz} + name: supports-color + version: 8.1.1 + engines: {node: '>=10'} + dependencies: + has-flag: registry.npmmirror.com/has-flag@4.0.0 + dev: true + + registry.npmmirror.com/tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz} + name: tapable + version: 2.2.1 + engines: {node: '>=6'} + dev: true + + registry.npmmirror.com/terser-webpack-plugin@5.3.9(webpack@5.88.2): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz} + id: registry.npmmirror.com/terser-webpack-plugin/5.3.9 + name: terser-webpack-plugin + version: 5.3.9 + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': registry.npmmirror.com/@jridgewell/trace-mapping@0.3.19 + jest-worker: registry.npmmirror.com/jest-worker@27.5.1 + schema-utils: registry.npmmirror.com/schema-utils@3.3.0 + serialize-javascript: registry.npmmirror.com/serialize-javascript@6.0.1 + terser: registry.npmmirror.com/terser@5.21.0 + webpack: registry.npmmirror.com/webpack@5.88.2 + dev: true + + registry.npmmirror.com/terser@5.21.0: + resolution: {integrity: sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/terser/-/terser-5.21.0.tgz} + name: terser + version: 5.21.0 + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': registry.npmmirror.com/@jridgewell/source-map@0.3.5 + acorn: registry.npmmirror.com/acorn@8.10.0 + commander: registry.npmmirror.com/commander@2.20.3 + source-map-support: registry.npmmirror.com/source-map-support@0.5.21 + dev: true + + registry.npmmirror.com/throttle-debounce@5.0.0: + resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz} + name: throttle-debounce + version: 5.0.0 + engines: {node: '>=12.22'} + dev: false + + registry.npmmirror.com/toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz} + name: toggle-selection + version: 1.0.6 + dev: false + + registry.npmmirror.com/tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz} + name: tslib + version: 2.6.2 + + registry.npmmirror.com/update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz} + id: registry.npmmirror.com/update-browserslist-db/1.0.13 + name: update-browserslist-db + version: 1.0.13 + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: registry.npmmirror.com/browserslist@4.22.1 + escalade: registry.npmmirror.com/escalade@3.1.1 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + dev: true + + registry.npmmirror.com/uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz} + name: uri-js + version: 4.4.1 + dependencies: + punycode: registry.npmmirror.com/punycode@2.1.1 + dev: true + + registry.npmmirror.com/util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz} + name: util-deprecate + version: 1.0.2 + dev: true + + registry.npmmirror.com/wangeditor@4.7.15: + resolution: {integrity: sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz} + name: wangeditor + version: 4.7.15 + dependencies: + '@babel/runtime': registry.npmmirror.com/@babel/runtime@7.23.1 + '@babel/runtime-corejs3': registry.npmmirror.com/@babel/runtime-corejs3@7.23.1 + tslib: registry.npmmirror.com/tslib@2.6.2 + dev: false + + registry.npmmirror.com/watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz} + name: watchpack + version: 2.4.0 + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: registry.npmmirror.com/glob-to-regexp@0.4.1 + graceful-fs: registry.npmmirror.com/graceful-fs@4.2.10 + dev: true + + registry.npmmirror.com/webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz} + name: webpack-sources + version: 3.2.3 + engines: {node: '>=10.13.0'} + dev: true + + registry.npmmirror.com/webpack@5.88.2: + resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/webpack/-/webpack-5.88.2.tgz} + name: webpack + version: 5.88.2 + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': registry.npmmirror.com/@types/eslint-scope@3.7.5 + '@types/estree': registry.npmmirror.com/@types/estree@1.0.2 + '@webassemblyjs/ast': registry.npmmirror.com/@webassemblyjs/ast@1.11.6 + '@webassemblyjs/wasm-edit': registry.npmmirror.com/@webassemblyjs/wasm-edit@1.11.6 + '@webassemblyjs/wasm-parser': registry.npmmirror.com/@webassemblyjs/wasm-parser@1.11.6 + acorn: registry.npmmirror.com/acorn@8.10.0 + acorn-import-assertions: registry.npmmirror.com/acorn-import-assertions@1.9.0(acorn@8.10.0) + browserslist: registry.npmmirror.com/browserslist@4.22.1 + chrome-trace-event: registry.npmmirror.com/chrome-trace-event@1.0.3 + enhanced-resolve: registry.npmmirror.com/enhanced-resolve@5.15.0 + es-module-lexer: registry.npmmirror.com/es-module-lexer@1.3.1 + eslint-scope: registry.npmmirror.com/eslint-scope@5.1.1 + events: registry.npmmirror.com/events@3.3.0 + glob-to-regexp: registry.npmmirror.com/glob-to-regexp@0.4.1 + graceful-fs: registry.npmmirror.com/graceful-fs@4.2.10 + json-parse-even-better-errors: registry.npmmirror.com/json-parse-even-better-errors@2.3.1 + loader-runner: registry.npmmirror.com/loader-runner@4.3.0 + mime-types: registry.npmmirror.com/mime-types@2.1.35 + neo-async: registry.npmmirror.com/neo-async@2.6.2 + schema-utils: registry.npmmirror.com/schema-utils@3.3.0 + tapable: registry.npmmirror.com/tapable@2.2.1 + terser-webpack-plugin: registry.npmmirror.com/terser-webpack-plugin@5.3.9(webpack@5.88.2) + watchpack: registry.npmmirror.com/watchpack@2.4.0 + webpack-sources: registry.npmmirror.com/webpack-sources@3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..d4b9414 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: [ + require('postcss-preset-env') + ] +} \ No newline at end of file diff --git a/src/App.css b/src/App.css deleted file mode 100644 index dbeb7b7..0000000 --- a/src/App.css +++ /dev/null @@ -1,43 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: app-logo-spin infinite 20s linear; - } -} - -.App-header { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - min-height: 100vh; - font-size: calc(10px + 2vmin); - color: white; - background-color: #282c34; -} - -.App-link { - color: #61dafb; -} - -@keyframes app-logo-spin { - from { - transform: rotate(0deg); - } - - to { - transform: rotate(360deg); - } -} - -button { - font-size: calc(10px + 2vmin); -} diff --git a/src/App.less b/src/App.less new file mode 100644 index 0000000..9cd1648 --- /dev/null +++ b/src/App.less @@ -0,0 +1,155 @@ +@import '@assets/base.less'; + +.app-main { + display: flex; + flex-direction: row; + border-radius: 4px; + margin: 0 auto; + position: absolute; + min-width: 1439px; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #f3f4f6; + padding: 66px 16px 32px; + overflow: hidden; + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Chrome/Safari/Opera */ + -khtml-user-select: none; /* Konqueror */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; /* Non-prefixed version, currently not supported by any browser */ +} + +.header-navigator { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 50px; + min-width: 1439px; + background-color: #fff; + border-radius: 4px; +} + +.nav-title { + display: flex; + justify-content: space-between; + cursor: pointer; + width: 1407px; + margin: 0 auto; + line-height: 50px; + color: #1890ff; + font-size: 24px; + // font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", 微软雅黑, + // Arial, sans-serif; +} + +.header-navigator .user { + width: 36px; + height: 36px; + float: right; + /* background: #1890ff; */ + border-radius: 50%; + color: #fff; + margin-top: 7px; + line-height: 36px; + text-align: center; + font-size: 16px; + overflow: hidden; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08); +} + +.jump-box { + font-size: 14px; + margin-right: 20px; +} + +.info-time-box { + display: flex; +} +.time-box { + margin-top: 8px; + margin-right: 120px; +} +.head-navigator-box { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 50px; + background-color: #fff; + border-radius: 4px; +} +.head-navigator { + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; + width: 1435px; +} +.head-navigator-left { + display: flex; + align-items: center; +} +.head-navigator-logo { + margin-right: 20px; + // line-height: 50px; + cursor: pointer; + color: #1890ff; + font-size: 24px; + // font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, 微软雅黑, + // Arial, sans-serif; +} +.head-navigator-select-box { + display: flex; + justify-content: space-between; + align-items: center; + width: 500px; +} + +.head-navigator-menu-box { + display: flex; +} +.head-navigator-menu-box .ant-menu-horizontal { + border-bottom: 0; +} +.ant-menu-horizontal > .ant-menu-item, +.ant-menu-horizontal > .ant-menu-submenu { + padding: 0px; + margin: 0 12px; +} +.head-navigator-input-box { + margin-right: 24px; +} +.head-navigator-input-box .ant-input { + border-radius: 16px; +} + +.head-navigator-user-box { + display: flex; + justify-content: center; + align-items: center; +} +.head-navigator-bell { + display: flex; + justify-content: center; + align-items: center; + margin-right: 24px; + width: 28px; + height: 28px; + border-radius: 50%; + cursor: pointer; +} +.head-navigator-bell:hover { + background-color: rgba(0, 10, 32, 0.03); +} +.head-navigator-user-img { + width: 36px; + height: 36px; + color: #fff; + cursor: pointer; + border-radius: 50%; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08); +} diff --git a/src/App.tsx b/src/App.tsx index bd0df02..5c410cc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,22 +1,113 @@ -import './App.css' -import { BrowserRouter as Router, Route, Outlet, Routes } from 'react-router-dom' +import React, { Component } from 'react'; +import './App.less'; +import { Routes, Route, Link } from "react-router-dom" +import req from '@utils/request.ts'; +import PubSub from 'pubsub-js'; +import { Input } from 'antd'; +import QuestionBank from './views/question-bank'; +import UploadQuestions from './views/upload-questions'; +import Logo from '@views/imgs/logo.jpg' +import Head from '@views/imgs/head.jpg' +import TopMenu from '@components/top-menu' -import Home from './views/home' -import UploadExam from './views/upload-exam' +const { Search } = Input; +class NavTop extends Component { + constructor(props) { + super(props); + this.state = { + userName: '', + intervieweEamil: '', + headImg: '', + isShowTimer: false, + }; + } -function App() { + timerRef = React.createRef(); - return ( -
- - - - - - - -
- ) + componentDidMount() { + // req({ + // method: 'post', + // url: 'admin/interview/peo/getDirectorInfo', + // }).then((re) => { + // this.setState( + // { + // userName: re.data?.name ?? '', + // intervieweEamil: re.data?.email ?? '', + // headImg: '', + // }, + // () => { + // window.localStorage.setItem('interviewerName', re.data?.name ?? 'XXX'); + // window.localStorage.setItem('intervieweEamil', re.data?.email ?? 'XXX'); + // } + // ); + // }); + PubSub.subscribe('handleToRender', () => { + this.setState({}); + }); + } + + render() { + let { headImg, isShowTimer } = this.state; + const { pathname } = window.location; + return ( +
+
+
+
+ (window.location.href = '/question-bank') + }> + +
+ +
+
+
+ {'/question-bank' == pathname && ( +
+ console.log(value)} + style={{ width: 300, borderRadius: '10px' }} + /> +
+ )} +
+ {/* */} +
+
+ +
+
+
+
+ ); + } } +class RouteExample extends Component { + render() { + return ( + <> + + + }> + }> + + -export default App + ); + } +} +export default class App extends Component { + render() { + return ( +
+ +
+ ); + } +} diff --git a/src/assets/base.less b/src/assets/base.less new file mode 100644 index 0000000..becfb70 --- /dev/null +++ b/src/assets/base.less @@ -0,0 +1,61 @@ +@import "normalize.less"; + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body, +html { + font-family: -apple-system, "宋体","微软雅黑"; + width: 100%; + height: 100%; + color: #666666; + background: #ffffff; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +a { + text-decoration: none; + color: #666666; +} + +.clear-fix:after { + font-size: 0; + display: block; + clear: both; + height: 0; + content: ""; +} + +.arrow-right { + display: inline-block; + width: 9px; + height: 9px; + margin-left: 0.1rem; + transform: rotate(135deg); + border-top: 1px solid #999999; + border-left: 1px solid #999999; + background-color: transparent; +} + +//修改input高亮的问题 +.ant-input-affix-wrapper { + &:hover { + border-color: none!important; + } +} + +.ant-input:focus { + box-shadow: none; +} + +.ant-input:focus, .ant-input:hover { + border-color: #d9d9d9; +} + +.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) { + border: 1px solid #d9d9d9; +} + diff --git a/src/assets/normalize.less b/src/assets/normalize.less new file mode 100644 index 0000000..192eb9c --- /dev/null +++ b/src/assets/normalize.less @@ -0,0 +1,349 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/src/components/category-list/constant.js b/src/components/category-list/constant.js new file mode 100644 index 0000000..6cb36b2 --- /dev/null +++ b/src/components/category-list/constant.js @@ -0,0 +1,67 @@ +/** + * 难度筛选 + */ +export const filterDifficulty = [ + { + id: 0, + title: '全部', + }, + { + id: 1, + title: 'T4', + }, + { + id: 2, + title: 'T5', + }, + { + id: 3, + title: 'T6', + }, + { + id: 4, + title: 'T7', + }, + { + id: 5, + title: 'T8', + }, +]; + +export const apiName = { + /** + * 获取二级和三级标签 + */ + getCategoryLabelInfo: '/admin/question/category/getCategoryLabelInfo', +}; + +export const imgObject = { + clickImg: + '../../views/imgs/clickImg.png', + ranking1Img: + 'https://img14.360buyimg.com/imagetools/jfs/t1/206730/39/7751/986/617f4fbaE4e23097a/aa94ca31a9c132b2.png', + ranking2Img: + 'https://img10.360buyimg.com/imagetools/jfs/t1/156125/21/27968/948/617f4fbaEcf1da9a9/722ad0917497697a.png', + ranking3Img: + 'https://img12.360buyimg.com/imagetools/jfs/t1/213197/17/2682/958/617f4fbbE06c277a9/03ef4c389c52ab8d.png', + timeline: + 'https://img13.360buyimg.com/imagetools/jfs/t1/210387/35/7564/555/617f4fbbE0cb305c1/728913d21e650794.png', + backAllImg: + 'https://img11.360buyimg.com/imagetools/jfs/t1/206213/24/13307/2603/617f4fc4E676d448d/622d5287fbf5a919.png', + dataImg: + 'https://img12.360buyimg.com/imagetools/jfs/t1/207558/34/7606/3672/617f4fc4E1ca685fc/3953a92a6072fba4.png', + javaImg: + 'https://img14.360buyimg.com/imagetools/jfs/t1/213752/24/2703/4803/617f4fc4E037da291/5f8050641d4d73d2.png', + npmImg: 'https://img11.360buyimg.com/imagetools/jfs/t1/200551/24/15367/3145/617f4fc4Ea153dc2e/b4bbf2de8807f42d.png', + parallelComputingImg: + 'https://img14.360buyimg.com/imagetools/jfs/t1/207198/23/7638/3037/617f4fc4E0e20ab9d/40197a6c79c5a33f.png', + springbootImg: + 'https://img13.360buyimg.com/imagetools/jfs/t1/171775/10/24915/4127/617f4fc4Eeb3d356e/cfbfe8d7c3155047.png', + sqlImg: 'https://img13.360buyimg.com/imagetools/jfs/t1/208027/11/7347/3074/617f4fc4Ef11e9495/1093903301db1d1d.png', + systemDesignImg: + 'https://img12.360buyimg.com/imagetools/jfs/t1/206967/24/7622/3629/617f4fc4E60a188b3/cb659847c5d4232a.png', + algorithmImg: + 'https://img14.360buyimg.com/imagetools/jfs/t1/215758/34/2633/4128/617f4fc4E5dcdab66/727be155858a06a5.png', + defaultImg: + 'https://img13.360buyimg.com/imagetools/jfs/t1/155957/24/22934/2028/617a147cE8bcbb57a/7a4885e4ae99a895.png', +}; diff --git a/src/components/category-list/index.jsx b/src/components/category-list/index.jsx new file mode 100644 index 0000000..01f0cf2 --- /dev/null +++ b/src/components/category-list/index.jsx @@ -0,0 +1,362 @@ +import React, { Component, Fragment } from 'react'; + +import { + RightOutlined, + UpOutlined, + DownOutlined, + CaretDownOutlined, + CaretUpOutlined, +} from '@ant-design/icons'; +import req from '@utils/request'; +import { Divider } from 'antd'; +import _ from 'lodash'; +import './index.less'; +import { apiName, imgObject } from './constant'; + +/** + * 大分类中的背景图 + */ +export const categoryBackImg = { + 0: imgObject.backAllImg, + 1: imgObject.dataImg, + 2: imgObject.javaImg, + 3: imgObject.npmImg, + 4: imgObject.parallelComputingImg, + 5: imgObject.springbootImg, + 6: imgObject.sqlImg, + 7: imgObject.systemDesignImg, + 8: imgObject.algorithmImg, +}; + +const categoryShowCount = 4; + +export default class CategoryList extends Component { + constructor(props) { + super(props); + this.state = { + secondCategoryList: [], + currentActive: '', + isPutAway: true, // 是否收起 默认收起状态 + }; + } + + componentDidMount() { + // this.initCategoryList(); + } + + /** + * 初始化数据,默认选择第一个 + */ + initCategoryList() { + const { categoryList, primaryCategoryId } = this.props; + let currentActive = primaryCategoryId ?? categoryList[0].primaryCategoryId; + this.props.onChangeCategory(currentActive); + this.getSecondCategoryList(currentActive); + } + + /** + * 获得二级三级分类数据 + */ + getSecondCategoryList(currentActive) { + const { categoryListMap } = this.props; + // 调用接口返回二级三级数据 + let params = { + primaryCategoryId: currentActive, + subjectTypeList: [4], + }; + req({ + method: 'post', + data: params, + url: apiName.getCategoryLabelInfo, + }) + .then((res) => { + if (res.data && res.data.length > 0) { + let secondCategoryList = res.data; + let listLen = + categoryListMap && + categoryListMap[currentActive] && + categoryListMap[currentActive].length; + let objActive = {}; + listLen > 0 && + categoryListMap && + categoryListMap[currentActive] && + categoryListMap[currentActive].forEach((item) => { + objActive[item] = item; + }); + secondCategoryList.forEach((categoryItem) => { + categoryItem.labelInfoList.forEach((item) => { + if (listLen > 0 && objActive[item.assembleId]) { + item.active = true; + } else { + item.active = false; + } + }); + categoryItem.isOpen = false; + }); + this.setState( + { + secondCategoryList, + currentActive, + }, + () => { + let activeList = []; + secondCategoryList.forEach((categoryItem) => { + categoryItem.labelInfoList.forEach((item) => { + if (item.active) { + activeList.push(item.assembleId); + } + }); + }); + secondCategoryList.forEach((item, index) => { + let height = document.getElementById('id_' + index)?.scrollHeight; + let displayHeight = height > 43 ? 'flex' : 'none'; + !this.props.isHideSec && + (document.getElementById('second_id_' + index).style.display = + displayHeight); + }); + } + ); + } + }) + .catch((err) => console.log(err)); + } + + /** + * 切换一级分类 + * @param {*} item + * @returns + */ + onChangeCategory = (primaryCategoryId) => () => { + let { currentActive } = this.state; + if (currentActive === primaryCategoryId) { + return; + } + this.props.isHideSec && + this.setState({ + currentActive: primaryCategoryId, + }); + this.props.onChangeCategory(primaryCategoryId); + !this.props.isHideSec && this.getSecondCategoryList(primaryCategoryId); + }; + + /** + * 选择标签-支持单选(多选) + * @param {*} categoryId 一级分类id + * @param {*} childrenLevelList 二级分类对象的标签列表 + * @param {*} secondCategoryIndex 二级分类对象index + * @param {*} thirdCategoryIndex 三级标签index + * @param {*} active 三级标签当前的选中状态 + * @returns + */ + onChangeLabel = (childrenLevelList, secondCategoryIndex, thirdCategoryIndex, active) => () => { + let { secondCategoryList, currentActive } = this.state; + const { isMultipleChoice } = this.props; + if (isMultipleChoice) { + // 三级标签支持多选 + _.set(childrenLevelList, [thirdCategoryIndex, 'active'], !active); + _.set(secondCategoryList, [secondCategoryIndex, 'labelInfoList'], childrenLevelList); + } else { + // 三级标签支持单选 + let formatLabelList = childrenLevelList.map((item, index) => { + let flag = false; + if (index === thirdCategoryIndex) { + flag = !active; // 将三级标签设置选中/未选中 + } + return { + ...item, + active: flag, + }; + }); + _.set(secondCategoryList, [secondCategoryIndex, 'labelInfoList'], formatLabelList); + } + this.setState( + { + secondCategoryList, + }, + () => { + let activeList = []; + secondCategoryList.forEach((categoryItem) => { + categoryItem.labelInfoList.forEach((item) => { + if (item.active) { + activeList.push(item.assembleId); + } + }); + }); + this.props.onChangeLabel(currentActive, activeList); + } + ); + }; + + /** + * 展开/收起 + * @param {*} secondCategoryIndex + * @returns + */ + onChangeOpenStatus = (secondCategoryIndex, isOpen) => () => { + let { secondCategoryList } = this.state; + _.set(secondCategoryList, [secondCategoryIndex, 'isOpen'], !isOpen); + this.setState({ + secondCategoryList, + }); + }; + + /** + * 展开/收起 + */ + onChangePutAway = () => { + let { isPutAway } = this.state; + this.setState({ + isPutAway: !isPutAway, + }); + }; + + render() { + const { categoryList } = this.props; + const { secondCategoryList } = this.state; + return ( +
+ {categoryList?.length > 0 && this.renderFirstContainer()} + {!this.props.isHideSec && ( + + {secondCategoryList?.length > 0 && this.renderSecondContainer()} + + )} +
+ ); + } + + /** + * 一级分类模块 + * @returns + */ + renderFirstContainer = () => { + const { categoryList } = this.props; + const { currentActive } = this.state; + return ( +
+ {categoryList.slice(0, 7).map((categoryModuleItem, categoryModuleIndex) => { + return ( +
+
+ {categoryModuleItem.levelName} +
+
+ {categoryModuleItem.count}道题 +
+
+ ); + })} + {categoryList.length > 7 && ( +
+ 更多 + +
+ )} +
+ ); + }; + + /** + * 二级分类模块 + * @returns + */ + renderSecondContainer = () => { + const { secondCategoryList, isPutAway } = this.state; + return ( +
+ {secondCategoryList.map((secondCategoryItem, secondCategoryIndex) => { + return ( +
= categoryShowCount && isPutAway + ? 'none' + : 'flex', + }} + className="second-category-item" + key={`second_category_${secondCategoryItem.categoryId}`}> +
+ {secondCategoryItem.categoryName}: +
+ {secondCategoryItem?.labelInfoList?.length > 0 && ( +
+
+ {secondCategoryItem.labelInfoList.map( + (thirdCategoryItem, thirdCategoryIndex) => { + return ( +
+ {thirdCategoryItem.labelName}· + {thirdCategoryItem.subjectCount} +
+ ); + } + )} +
+
+
+ {secondCategoryItem.isOpen ? '收起' : '展开'} +
+
+ {secondCategoryItem.isOpen ? ( + + ) : ( + + )} +
+
+
+ )} +
+ ); + })} + {secondCategoryList?.length >= categoryShowCount && ( + + {isPutAway ? '展开' : '收起'} + {isPutAway ? ( + + ) : ( + + )} + + )} +
+ ); + }; +} + diff --git a/src/components/category-list/index.less b/src/components/category-list/index.less new file mode 100644 index 0000000..e99a1a8 --- /dev/null +++ b/src/components/category-list/index.less @@ -0,0 +1,128 @@ +.category-box { + .first-category-list { + display: flex; + .first-category-item { + flex-shrink: 1; + display: inline-flex; + flex-direction: column; + justify-content: space-between; + margin-right: 18px; + padding: 10px 12px; + width: 120px; + height: 76px; + cursor: pointer; + border-radius: 4px; + background-size: 100% 100%; + background-color: rgba(0, 0, 0, 0.04); + font-weight: 400; + transition: all 0.5s; + .first-category-item-title { + color: #ffffff; + font-size: 14px; + text-overflow: ellipsis; + -webkit-line-clamp: 1; + overflow: hidden; + /* autoprefixer: off */ + -webkit-box-orient: vertical; + display: -webkit-box; + word-wrap: break-word; + word-break: break-all; + } + .first-category-item-count { + font-size: 12px; + color: rgba(255, 255, 255, 0.65); + line-height: 16px; + } + &:hover { + transition: all 0.5s; + transform: translateY(-8px); + } + } + .first-category-item-active { + transform: translateY(-8px); + } + .first-category-more { + display: flex; + justify-content: center; + align-items: center; + width: 88px; + height: 76px; + font-size: 16px; + color: #13b4ff; + line-height: 20px; + cursor: pointer; + border-radius: 4px; + background-color: rgba(19, 180, 255, 0.08); + } + } + .second-category-list { + padding-top: 15px; + border-radius: 4px; + .second-category-item { + display: flex; + .second-category-item-title { + display: flex; + align-items: center; + margin-right: 16px; + min-width: 60px; + height: 40px; + font-size: 14px; + color: rgba(0, 0, 0, 0.85); + font-weight: bold; + } + .second-category-item-box { + flex: 1; + display: flex; + justify-content: space-between; + width: 100%; + .second-category-item-list { + flex: 1; + display: flex; + flex-wrap: wrap; + height: 43px; + overflow: hidden; + .third-category-item { + display: flex; + justify-content: center; + align-items: center; + padding: 2px 8px; + margin: 8px 15px 8px 0; + cursor: pointer; + font-size: 14px; + border: 1px solid rgba(0, 0, 0, 0.04); + border-radius: 4px; + &:hover { + @include box-backgroundColor(0.1); + @include box-border(); + @include font-color(); + } + } + .third-category-item-active { + @include box-backgroundColor(0.1); + @include box-border(); + @include font-color(); + } + } + .second-category-item-status { + display: flex; + margin-top: 8px; + align-items: center; + justify-content: center; + padding: 4px 4px 4px 8px; + width: 54px; + height: 28px; + color: rgba(0, 0, 0, 0.85); + font-size: 14px; + cursor: pointer; + &:hover { + background: rgba(0, 0, 0, 0.04); + border-radius: 4px; + } + } + } + } + .ant-divider-horizontal.ant-divider-with-text-center { + margin: 0; + } + } +} diff --git a/src/components/layout/index.less b/src/components/layout/index.less new file mode 100644 index 0000000..e69de29 diff --git a/src/components/layout/index.tsx b/src/components/layout/index.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/question-list/constant.js b/src/components/question-list/constant.js new file mode 100644 index 0000000..044345e --- /dev/null +++ b/src/components/question-list/constant.js @@ -0,0 +1,82 @@ +/** + * 难度等级 + */ +export const gradeObject = { + 1: { + color: 'rgba(60, 110, 238, 0.5)', + title: '初级', + }, + 2: { + color: 'rgba(60, 110, 238, 0.6)', + title: '中级', + }, + 3: { + color: 'rgba(60, 110, 238, 0.7)', + title: '高级', + }, + 4: { + color: 'rgba(60, 110, 238, 0.8)', + title: '资深', + }, + 5: { + color: 'rgba(60, 110, 238, 0.9)', + title: '专家', + }, +}; + +/** + * 难度筛选 + */ +export const filterDifficulty = [ + { + id: 0, + title: '全部', + }, + { + id: 2, + title: '初级', + }, + { + id: 3, + title: '中级', + }, + { + id: 4, + title: '高级', + }, + { + id: 5, + title: '资深', + }, +]; + +export const imgObject = { + clickImg: + 'https://img13.360buyimg.com/imagetools/jfs/t1/222669/25/807/6590/617f4f06Eb2094586/64c39ce3769b8a16.png', + ranking1Img: + 'https://img14.360buyimg.com/imagetools/jfs/t1/206730/39/7751/986/617f4fbaE4e23097a/aa94ca31a9c132b2.png', + ranking2Img: + 'https://img10.360buyimg.com/imagetools/jfs/t1/156125/21/27968/948/617f4fbaEcf1da9a9/722ad0917497697a.png', + ranking3Img: + 'https://img12.360buyimg.com/imagetools/jfs/t1/213197/17/2682/958/617f4fbbE06c277a9/03ef4c389c52ab8d.png', + timeline: + 'https://img13.360buyimg.com/imagetools/jfs/t1/210387/35/7564/555/617f4fbbE0cb305c1/728913d21e650794.png', + backAllImg: + 'https://img11.360buyimg.com/imagetools/jfs/t1/206213/24/13307/2603/617f4fc4E676d448d/622d5287fbf5a919.png', + dataImg: + 'https://img12.360buyimg.com/imagetools/jfs/t1/207558/34/7606/3672/617f4fc4E1ca685fc/3953a92a6072fba4.png', + javaImg: + '../../views/imgs/javaImg.png', + npmImg: 'https://img11.360buyimg.com/imagetools/jfs/t1/200551/24/15367/3145/617f4fc4Ea153dc2e/b4bbf2de8807f42d.png', + parallelComputingImg: + 'https://img14.360buyimg.com/imagetools/jfs/t1/207198/23/7638/3037/617f4fc4E0e20ab9d/40197a6c79c5a33f.png', + springbootImg: + 'https://img13.360buyimg.com/imagetools/jfs/t1/171775/10/24915/4127/617f4fc4Eeb3d356e/cfbfe8d7c3155047.png', + sqlImg: 'https://img13.360buyimg.com/imagetools/jfs/t1/208027/11/7347/3074/617f4fc4Ef11e9495/1093903301db1d1d.png', + systemDesignImg: + 'https://img12.360buyimg.com/imagetools/jfs/t1/206967/24/7622/3629/617f4fc4E60a188b3/cb659847c5d4232a.png', + algorithmImg: + 'https://img14.360buyimg.com/imagetools/jfs/t1/215758/34/2633/4128/617f4fc4E5dcdab66/727be155858a06a5.png', + defaultImg: + 'https://img13.360buyimg.com/imagetools/jfs/t1/155957/24/22934/2028/617a147cE8bcbb57a/7a4885e4ae99a895.png', +}; diff --git a/src/components/question-list/index.jsx b/src/components/question-list/index.jsx new file mode 100644 index 0000000..0a1fbaa --- /dev/null +++ b/src/components/question-list/index.jsx @@ -0,0 +1,229 @@ +import React, { Component, Fragment } from "react"; + +import { Tag, Table, Pagination, Input } from "antd"; +import { filterDifficulty, gradeObject, imgObject } from "./constant"; +import { splicingQuery } from "@utils"; +import "./index.less"; +const { Search } = Input; + +const colors = ['#ffffb8', '#f4ffb8', '#b5f5ec', '#bae0ff', '#d9f7be', '#efdbff', ' #ffd6e7', '#d6e4ff'] + +class QuestionList extends Component { + constructor(props) { + super(props); + this.state = { + selectValue: "难度", + }; + } + + componentDidMount() { } + + + RandomNumBoth = (Min, Max) => { + //差值 + const Range = Max - Min; + // 随机数 + const Rand = Math.random(); + return Min + Math.round(Rand * Range); //四舍五入 + } + + /** + * 题目列表 + */ + questionColumns = [ + { + title:
题目
+ (当前 + {100} + 道题) +
, + key: "questionNo", + align: "centlefter", + render: (item) => { + return ( +
+
+ {item.questionTitle} + +
+
+ {item?.tags?.length > 0 && + item.tags.map((tagsItem, index) => { + return ( +
+ {tagsItem.name} +
+ ); + })} +
+
+ ); + }, + }, + { + title: "难度", + dataIndex: "grade", + key: "grade", + align: "center", + filters: [ + { + value: 0, + text: '全部', + }, + { + value: 1, + text: '初级', + }, + { + value: 2, + text: '中级', + }, + { + value: 3, + text: '高级', + }, + { + value: 4, + text: '资深', + }, + ], + onFilter: (value, record) => { + return value === 0 ? record : record.grade === value + }, + width: 90, + render: (key) => { + return ( + {gradeObject?.[key]?.title} + ); + }, + }, + ]; + + /** + * 选择标签 + * @param {*} id + */ + handleChangeSelect = (id) => { + console.log(id); + let selectValue = "难度"; + if (id != 0) { + filterDifficulty.forEach((item) => { + if (item.id == id) { + selectValue = item.id; + } + }); + } + this.setState( + { + selectValue, + }, + () => { + this.props.handleChangeSelect(id); + } + ); + }; + + /** + * 进入详情 + * @param {*} item + * @param {*} type + * @returns + */ + onChangeAction = (item, index) => () => { + let { isNotToDetail, difficulty, primaryCategoryId, labelList, pageIndex } = + this.props; + !isNotToDetail && + this.props.history.push( + splicingQuery("/brush-questions", { + id: item?.id, + index: index + (pageIndex - 1) * 10 + 1, + difficulty, + primaryCategoryId, + labelList, + }) + ); + if (!isNotToDetail) return; + this.toChangeSelectRows(item); + }; + + toChangeSelectRows = (record) => { + let newSelectedRows = [...this.props.selectRows]; + const isHas = newSelectedRows.some((rowItem) => rowItem.id === record.id); + if (isHas) { + newSelectedRows = newSelectedRows.filter( + (rowItem) => rowItem.id !== record.id + ); + } else { + newSelectedRows.push(record); + } + this.props.setSelectRows(newSelectedRows); + }; + + onChangePagination = (e) => { + this.props.onChangePagination(e); + }; + + render() { + const { questionList, total, pageIndex, isHideSelect, isMultiple } = + this.props; + return ( + +
+ {!isHideSelect && this.renderFilterContainer()} +
+ { + return { + onClick: this.onChangeAction(record, index), // 点击行 + }; + }} + columns={this.questionColumns} + dataSource={questionList} + rowKey={(record) => record.id} + // bordered={false} + pagination={false} + rowClassName="question-table-row" + /> + {total > 10 && ( + + )} + + + + ); + } + + /** + * 过滤框-搜索框-模块 + * @returns + */ + renderFilterContainer = () => { + const { selectValue } = this.state; + const { total, isShowSearch, setSearchStr } = this.props; + return ( +
+ {isShowSearch && ( + setSearchStr(value)} + style={{ width: 240 }} + allowClear + size="small" + /> + )} +
+ ); + }; +} + + +export default QuestionList; diff --git a/src/components/question-list/index.less b/src/components/question-list/index.less new file mode 100644 index 0000000..3fa4ee2 --- /dev/null +++ b/src/components/question-list/index.less @@ -0,0 +1,82 @@ +.question-list-filter { + padding: 0px 6px 20px 9px; + background-color: #ffffff; + .question-filter-container { + display: flex; + justify-content: space-between; + margin-bottom: 10px; + padding-right: 18px; + padding-left: 5px; + .question-filter-box { + display: flex; + font-size: 14px; + .question-filter-select { + margin-right: 4px; + color: #000; + font-weight: bold; + border: 0; + .ant-select-selection { + border: 0; + } + } + } + .question-count-box { + color: rgba(0, 0, 0, 0.45); + .ant-btn { + margin-left: 16px; + width: 150px; + height: 34px; + font-size: 14px; + font-weight: 500; + color: #fff; + background-color: #13b4ff; + border-color: #13b4ff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.05); + } + } + } + .question-list-container { + .ant-table-tbody > tr > td { + // border-bottom: 0; + padding: 10px 4px 0 14px; + } + .ant-table-thead > tr > th { + background-color: #ffffff; + // border-bottom: 0; + } + .ant-table-row:hover { + cursor: pointer; + } + .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters:hover:before { + // background-color: #fff; + } + .question-info-container { + .question-info-desc { + font-size: 14px; + line-height: 18px; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; + overflow: hidden; + text-overflow: ellipsis; + } + .question-info-tags { + display: flex; + margin-top: 8px; + padding-bottom: 10px; + .question-info-tag { + margin-right: 10px; + padding: 0px 6px; + font-size: 10px !important; + border-radius: 4px; + // @include font-color(); + // border: 1px solid rgba(60, 110, 238, 0.6); + } + } + } + } + .question-type-icon { + width: 24px; + height: 24px; + } +} diff --git a/src/components/tags-editor/constant.js b/src/components/tags-editor/constant.js new file mode 100644 index 0000000..514a415 --- /dev/null +++ b/src/components/tags-editor/constant.js @@ -0,0 +1,30 @@ +/** + * API名称 + */ +export const apiName = { + /** + * 新增二级分类 + */ + addInterviewCategory: '/admin/question/category/add', + /** + * 删除二级分类 + */ + deleteInterviewCategory: '/admin/question/category/delete', + /** + * 新增三级标签 + */ + addInterviewLabel: '/admin/question/label/add', + /** + * 删除三级标签 + */ + deleteInterviewLabel: '/admin/question/label/delete', +}; + +/** + * 模块类型 + */ +export const ModuleType = { + default: 'default', + second: 'second', + third: 'third', +}; diff --git a/src/components/tags-editor/index.jsx b/src/components/tags-editor/index.jsx new file mode 100644 index 0000000..150c15b --- /dev/null +++ b/src/components/tags-editor/index.jsx @@ -0,0 +1,302 @@ +import React, { Component } from 'react'; + +import req from '@utils/request'; +import { Input, Tag, Tooltip, message } from 'antd'; +import { PlusOutlined } from '@ant-design/icons'; +import { apiName, ModuleType } from './constant'; +import './index.less'; + +const apiNameModule = { + [ModuleType.second]: [apiName.addInterviewCategory, apiName.deleteInterviewCategory], + [ModuleType.third]: [apiName.addInterviewLabel, apiName.deleteInterviewLabel], +}; + +export default class TagsEditor extends Component { + saveInputRef = (input) => (this.input = input); + + constructor(props) { + super(props); + this.state = { + inputVisible: false, + inputValue: '', + }; + } + + /** + * 点击X号 + * @param {*} index 当前index + * @param {*} categoryId 当前id + */ + handleClose = (index, categoryId) => { + const { moduleType, categoryList } = this.props; + let params = { + id: categoryId, + }; + let url = apiNameModule[moduleType][1]; + req({ + method: 'post', + data: params, + url: url, + }) + .then((res) => { + if (res.data) { + let list = categoryList.filter((item) => { + return item.categoryId !== categoryId; + }); + this.props.onChangeLabel(list, this.formatList(list)); + } + }) + .catch((err) => { + console.log(err); + }); + }; + + /** + * 展示输入框 + */ + showInput = () => { + this.setState({ inputVisible: true }, () => this.input.focus()); + }; + + /** + * 输入框改变内容 + * @param {*} e + */ + handleInputChange = (e) => { + this.setState({ inputValue: e.target.value }); + }; + + /** + * 增加标签 + */ + handleInputConfirm = () => { + let { categoryList } = this.props; + let { inputValue } = this.state; + let equalList = [], + formatInputValue = inputValue.trim(); + if (!formatInputValue) { + this.setState({ + inputValue: '', + inputVisible: false, + }); + return; + } + if (categoryList.length > 0) { + equalList = categoryList.filter((item) => { + return item.categoryName.toLowerCase() === formatInputValue.toLowerCase(); + }); + } + if (equalList.length <= 0) { + this.postAddInterviewCategory(formatInputValue); + } else { + message.info('所增内容已存在', 0.3); + this.setState({ + inputValue: '', + }); + } + }; + + /** + * 增加标签 + * @param {*} inputValue 当前的值 + */ + postAddInterviewCategory = (inputValue) => { + const { parentCategoryValue, moduleType, categoryList } = this.props; + let params_2 = { + categoryName: inputValue, + categoryType: 2, + parentId: parentCategoryValue[0], + }; + let params_3 = { + labelName: inputValue, + primaryCategoryId: parentCategoryValue[0], + }; + let params = moduleType == ModuleType.third ? params_3 : params_2; + req({ + method: 'post', + data: params, + url: apiNameModule[moduleType][0], + }) + .then((res) => { + if (res.data) { + let id = res.data; + let list = [ + ...categoryList, + { + categoryName: inputValue, + categoryId: id, + isShowClose: true, + }, + ]; + let formatList = this.onHandleLabelSelectState(list, list.length - 1, false); + this.setState( + { + inputVisible: false, + inputValue: '', + }, + () => { + this.props.onChangeLabel(formatList, this.formatList(formatList)); + } + ); + } + }) + .catch((err) => { + console.log(err); + }); + }; + + /** + * 选中/未选中-标签 + * @param {*} tagIndex 选择的标签 + * @param {*} active 选择的标签的当前状态 + * @returns + */ + onChangeLabel = (tagIndex, active) => () => { + let { categoryList, isDisabledReverseSelection } = this.props; + if (active && isDisabledReverseSelection) { + return; + } + let formatLabelList = this.onHandleLabelSelectState(categoryList, tagIndex, active); + this.props.onChangeLabel(formatLabelList, this.formatList(formatLabelList)); + }; + + /** + * 处理数据选中/未选中(单选/多选) + * @param {*} list 分类列表 + * @param {*} tagIndex 当前索引 + * @param {*} active 当前选中状态 + * @returns + */ + onHandleLabelSelectState = (list, tagIndex, active) => { + const { isSingleChoice } = this.props; + let formatLabelList = []; + // 单选 + if (isSingleChoice) { + formatLabelList = list.map((item, index) => { + let flag = false; + if (index == tagIndex) { + flag = !active; // 将三级标签设置选中/未选中 + } + return { + ...item, + active: flag, + }; + }); + } else { + // 多选 + formatLabelList = list.map((item, index) => { + let flag = item.active; + if (index == tagIndex) { + flag = !active; // 将三级标签设置选中/未选中 + } + return { + ...item, + active: flag, + }; + }); + } + return formatLabelList; + }; + + /** + * 格式化数据-获得选中项id列表 + * @param {*} list + * @returns + */ + formatList = (list) => { + let labelList = []; + list.forEach((item) => { + if (item.active) { + labelList.push(item.categoryId); + } + }); + return labelList; + }; + + render() { + const { moduleType, categoryList, isAddTag, isDeleteTag } = this.props; + const { inputVisible, inputValue } = this.state; + let labelList = categoryList; + // 数组中存在 -9999 表示暂无数据,需要支持新增 + if ( + categoryList.filter((item) => { + return item.categoryId === -9999; + }).length > 0 + ) { + labelList = categoryList.slice(1, categoryList.length); + } + return ( +
+ {labelList?.length > 0 && + labelList.map((item, index) => { + const isLongTag = item.categoryName.length > 20; + const tagElem = ( + this.handleClose(index, item.categoryId)}> + {isLongTag + ? `${item.categoryName.slice(0, 20)}...` + : item.categoryName} + + ); + return isLongTag ? ( + + {tagElem} + + ) : ( + tagElem + ); + })} + {inputVisible && ( + + )} + {/* 支持手动增加标签 */} + {!inputVisible && isAddTag && ( + + +  新增{moduleType == ModuleType.third ? '标签' : '分类'} + + )} + {!isAddTag && labelList.length === 0 && ( +
暂无数据呦~
+ )} +
+ ); + } +} diff --git a/src/components/tags-editor/index.less b/src/components/tags-editor/index.less new file mode 100644 index 0000000..24fe416 --- /dev/null +++ b/src/components/tags-editor/index.less @@ -0,0 +1,21 @@ +.tags-editor-box { + width: 100%; + display: flex; + flex-wrap: wrap; + .tag-active { + @include box-backgroundColor(0.1); + @include box-border(); + @include font-color(); + } + .ant-tag .anticon-close { + font-size: 11px; + margin-right: -4px; + border: 1px solid; + border-radius: 50%; + padding: 4px; + } + .tag-empty-tip { + height: 40px; + line-height: 40px; + } +} diff --git a/src/components/top-menu/index.jsx b/src/components/top-menu/index.jsx new file mode 100644 index 0000000..6df0c09 --- /dev/null +++ b/src/components/top-menu/index.jsx @@ -0,0 +1,91 @@ +import React, { Component } from 'react' +import './index.less' +// 顶部tab +const MENULIST = [ + { + key: 'shareIndex', + title: '刷题', + route: '/share-index', + }, + { + key: 'questionBank', + title: '练题', + route: '/question-bank', + }, + { + key: 'practiceQuestions', + title: '鸡圈', + route: '/practice-questions', + }, + { + key: 'interList', + title: '模拟面试', + route: '/inter-list', + // isOpenNewWindow: true, + }, +] + +// 顶部tab映射 +const mapMenu = { + '/cms-supplier/share-index': 'shareIndex', + '/cms-supplier/inter-list': 'interList', + '/cms-supplier/question-bank': 'questionBank', + '/cms-supplier/practice-questions': 'practiceQuestions', +} +class TopMenu extends Component { + constructor(props) { + super(props) + this.state = { + currentKey: 'shareIndex', + } + } + + componentDidMount() { + // this.setState({ + // currentKey: mapMenu[this.props.currentRoute] || '', + // }) + } + + /** + * 切换item + * @param {*} item + * @returns + */ + changeMenu = (item) => () => { + // 打开新窗口 + if (item.isOpenNewWindow) { + window.open('/cms-supplier' + item.route) + return + } + this.setState( + { + currentKey: item.key, + }, + () => { + this.props.history.push(item.route) + } + ) + } + + render() { + const { currentKey } = this.state + return ( +
+ {MENULIST.map((item, index) => { + return ( +
+
{item.title}
+
+
+ ) + })} +
+ ) + } +} + +export default TopMenu diff --git a/src/components/top-menu/index.less b/src/components/top-menu/index.less new file mode 100644 index 0000000..02a8d17 --- /dev/null +++ b/src/components/top-menu/index.less @@ -0,0 +1,35 @@ +.top-menu-list { + display: flex; + height: 100%; + .top-menu-item { + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin: 0 28px; + font-size: 16px; + font-size: 500; + color: rgba(24, 24, 29, 1); + cursor: pointer; + &-active { + color: rgba(60, 110, 238, 1); + } + &:hover { + color: rgba(60, 110, 238, 1); + } + + .top-menu-line { + position: absolute; + bottom: -12px; + left: 0; + right: 0; + &-active { + width: 100%; + height: 4px; + background: rgba(60, 110, 238, 1); + border-radius: 3px; + } + } + } +} diff --git a/src/index.css b/src/index.css deleted file mode 100644 index 60d7054..0000000 --- a/src/index.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Fira Sans', 'Droid Sans', - 'Helvetica Neue', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; -} diff --git a/src/main.less b/src/main.less new file mode 100644 index 0000000..e69de29 diff --git a/src/main.tsx b/src/main.tsx index 4a1b150..632a549 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,10 +1,14 @@ +import './main.less' + import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' -import './index.css' +import { BrowserRouter } from 'react-router-dom'; ReactDOM.createRoot(document.getElementById('root')!).render( - + + + ) diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..04bfdd1 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,16 @@ + +import QuestionBank from '@views/question-bank'; +import UploadQuestions from '@views/upload-questions'; + +export default [ + { + path: '/question-bank', + exact: true, + component: QuestionBank, + }, + { + path: '/upload-questions', + exact: true, + component: UploadQuestions, + }, +]; diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..ede927b --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,129 @@ +//解析查询字符串 +export function queryParse(str) { + if (!str) return {}; + let strParams = decodeURIComponent(str).split('?')[1]; + let paramsObj = {}; + strParams.split('&').forEach((item) => { + let arrParams = item.split('='); + paramsObj[arrParams[0]] = arrParams[1]; + }); + return paramsObj; +} + +//拼接查询字符串 +export function splicingQuery(path, paramsObj = {}) { + let paramsArr = Object.keys(paramsObj); + if (paramsArr.length === 0) return path; + let splicingPath = ''; + for (let i = 0; i < paramsArr.length; i++) { + splicingPath += + paramsArr[i] + + '=' + + (paramsObj[paramsArr[i]] ?? '') + + (i !== paramsArr.length - 1 ? '&' : ''); + } + return path + '?' + encodeURIComponent(splicingPath); +} + +/** + * 防抖函数 + * @param {function} method 回调函数 + * @param {number} wait 表示时间窗口的间隔 + * @param {boolean} immediate 是否立即执行 + * @return {function} 返回客户调用函数 + */ +export function debounce(method, wait = 300, immediate = false) { + let timer, context, args; + const later = () => + setTimeout(() => { + timer = null; + if (!immediate) { + method.apply(context, args); + context = args = null; + } + }, wait); + return function (...params) { + if (!timer) { + timer = later(); + if (immediate) { + method.apply(this, params); + } else { + context = this; + args = params; + } + } else { + clearTimeout(timer); + timer = later(); + } + }; +} + +/** + * 节流函数 + * @param method + * @param delay 延迟执行,只执行最后一次 + * @param duration 间隔时间 + * @param context + */ +export function throttle(method, delay, duration = 0, context = '') { + let timer; + let begin = new Date().getTime(); + return function (...args) { + const current = new Date().getTime(); + clearTimeout(timer); + if (duration) { + if (current - begin > duration) { + method.apply(context || this, args); + begin = current; + return; + } + } + timer = setTimeout(function () { + method.apply(context || this, args); + }, delay); + }; +} + +/** + * 获得当前年月日时分秒 + * @returns + */ +export function getCurrentTime() { + var date = new Date(); + var seperator1 = '-'; + var month = date.getMonth() + 1; + var strDate = date.getDate(); + var hour = date.getHours(); + var minute = date.getMinutes(); + var second = date.getSeconds(); + + if (month >= 1 && month <= 9) { + month = '0' + month; + } + if (strDate >= 0 && strDate <= 9) { + strDate = '0' + strDate; + } + if (hour >= 0 && hour <= 9) { + hour = '0' + hour; + } + if (minute >= 0 && minute <= 9) { + minute = '0' + minute; + } + if (second >= 0 && second <= 9) { + second = '0' + second; + } + var currentdate = + '' + + date.getFullYear() + + seperator1 + + month + + seperator1 + + strDate + + ' ' + + hour + + ':' + + minute + + ':' + + second; + return currentdate; +} diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..02ce577 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,62 @@ +import axios from 'axios'; +import { message } from 'antd'; + +export const baseHttp = () => { + const http = axios.create({ + // baseURL: "/flow", + timeout: 5 * 60 * 1000, // request timeout + withCredentials: true, // send cookies when cross-domain requests + headers: { + 'Content-Type': 'application/json; charset=utf-8', + }, + }); + + return http; +}; + +export default function request(config, url) { + const baseURL = url || '/api'; + // 1.创建axios的实例 + const instance = axios.create({ + baseURL, + timeout: 5 * 60 * 1000, // request timeout + withCredentials: true, // send cookies when cross-domain requests + headers: { + 'Content-Type': 'application/json; charset=utf-8', + }, + }); + + // 2.axios的拦截器 + // 2.1.请求拦截的作用 + instance.interceptors.request.use( + (config) => { + return config; + }, + (err) => { + console.log(err); + } + ); + + // 2.2.响应拦截 + instance.interceptors.response.use( + (res) => { + let { code } = res.data; + if (code === 500) { + message.error(res.data.message); + } + return res.data; + }, + (err) => { + let { status } = err?.response ?? {}; + if (status === 401 || !status) { + message.info('页面异常') + } else if (status === 500 || status === 503) { + message.error('服务器错误'); + } + return Promise.reject(err); + } + ); + + // 3.发送真正的网络请求 + return instance(config); +} diff --git a/src/views/home/index.tsx b/src/views/home/index.tsx deleted file mode 100644 index 7c45a86..0000000 --- a/src/views/home/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -const Home = () => { - return ( -
- home -
- ) -} - - -export default Home \ No newline at end of file diff --git a/src/views/imgs/clickImg.png b/src/views/imgs/clickImg.png new file mode 100644 index 0000000..0a8c136 Binary files /dev/null and b/src/views/imgs/clickImg.png differ diff --git a/src/views/imgs/head.jpg b/src/views/imgs/head.jpg new file mode 100644 index 0000000..97b92be Binary files /dev/null and b/src/views/imgs/head.jpg differ diff --git a/src/views/imgs/javaImg.png b/src/views/imgs/javaImg.png new file mode 100644 index 0000000..2f25b75 Binary files /dev/null and b/src/views/imgs/javaImg.png differ diff --git a/src/views/imgs/logo.jpg b/src/views/imgs/logo.jpg new file mode 100644 index 0000000..475a0b1 Binary files /dev/null and b/src/views/imgs/logo.jpg differ diff --git a/src/views/question-bank/components/contribution-list/index.jsx b/src/views/question-bank/components/contribution-list/index.jsx new file mode 100644 index 0000000..9fedaa4 --- /dev/null +++ b/src/views/question-bank/components/contribution-list/index.jsx @@ -0,0 +1,99 @@ +import React, { Fragment, Component } from 'react'; +import req from '@utils/request'; +import RankingBox from '../ranking-box'; +import { imgObject, apiName, RankingType } from '../../constant'; +import { mockRankingModuleList } from '../../mock'; + +const rankingBackImg = { + 0: imgObject.ranking1Img, + 1: imgObject.ranking2Img, + 2: imgObject.ranking3Img, +}; + +class ContributionList extends Component { + constructor(props) { + super(props); + this.state = { + contributionList: mockRankingModuleList[1].rankingList || [], + contributeType: 1, + isLoading: false, + }; + } + + componentDidMount() { + // this.getContributeList(); + } + + /** + * 获得贡献榜 + */ + getContributeList() { + const { contributeType } = this.state; + let params = { + contributeType: contributeType, + }; + req({ + method: 'post', + data: params, + url: apiName.getContributeList, + }) + .then((res) => { + if (res.data && res.data.length > 0) { + this.setState({ + contributionList: res.data, + isLoading: false, + }); + } else { + this.setState({ + contributionList: [], + isLoading: false, + }); + } + }) + .catch((err) => console.log(err)); + } + + /** + * 切换排行榜 + * @param {*} type + * @returns + */ + onChangeRanking = (type) => { + this.setState( + { + contributeType: type, + isLoading: true, + }, + () => { + this.getContributeList(); + } + ); + }; + + /** + * 去录题 + */ + onChangeJump = () => { + this.props.history.push('/upload-questions'); + }; + + render() { + const { contributionList, isLoading, contributeType } = this.state; + return ( + + {contributionList?.length > 0 && ( + + )} + + ); + } +} + +export default ContributionList; diff --git a/src/views/question-bank/components/contribution-list/index.less b/src/views/question-bank/components/contribution-list/index.less new file mode 100644 index 0000000..d4e423d --- /dev/null +++ b/src/views/question-bank/components/contribution-list/index.less @@ -0,0 +1,151 @@ +.ranking-list-box { + display: flex; + flex-direction: column; + justify-content: center; + margin-bottom: 20px; + padding: 0px 16px 0px; + width: 100%; + background-color: #ffffff; + border-radius: 8px; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08); + .ranking-list-header { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + height: 50px; + font-size: 16px; + color: rgba(0, 0, 0, 0.85); + border-bottom: 1px solid #f3f3f6; + .ranking-list-title { + } + + .ranking-list-btns { + display: flex; + .ranking-list-btn { + display: flex; + justify-content: center; + align-items: center; + margin-right: 4px; + width: 48px; + height: 30px; + font-size: 12px; + cursor: pointer; + transition: all 0.5s; + &:last-child { + margin-right: 0px; + } + &:hover { + @include font-color(); + } + } + .ranking-list-btn-active { + font-weight: 600; + @include font-color(); + border-bottom: 1px solid rgba(60, 110, 238, 1); + } + } + } + .ranking-list { + // height: 326px; + // overflow-y: scroll; + font-size: 14px; + .ranking-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 12px 10px 6px; + color: #999999; + font-size: 14px; + cursor: pointer; + .ranking-left { + display: flex; + align-items: center; + .ranking-icon { + margin-right: 10px; + // margin-top: 14px; + width: 20px; + height: 26px; + line-height: 17px; + text-align: center; + background-size: 100% 100%; + } + .ranking-head-img { + margin-right: 4px; + width: 40px; + height: 40px; + border-radius: 50%; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08); + .ranking-head-icon { + width: 100%; + height: 100%; + border-radius: 50%; + } + } + + .ranking-info { + .ranking-name { + margin-bottom: 2px; + color: #666666; + } + .ranking-department { + font-size: 12px; + } + } + } + .ranking-right { + display: flex; + align-items: center; + color: #c3c3c6; + } + &:hover { + @include box-backgroundColor(0.05); + } + } + } + .ranking-btn-go { + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto; + margin-top: 12px; + margin-bottom: 12px; + cursor: pointer; + width: 230px; + height: 36px; + border-radius: 30px; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.1); + @include box-backgroundColor(0.9); + .ranking-btn-go-icon { + width: 22px; + height: 22px; + background-size: 100% 100%; + margin-right: 4px; + } + .ranking-btn-text { + font-size: 14px; + font-weight: bold; + color: #fff; + } + &:hover { + font-weight: bold; + } + } + &:last-child { + margin-bottom: 0; + } +} +::-webkit-scrollbar { + width: 0; + height: 0; + color: transparent; +} +.tooltip-info { + font-size: 12px; +} +.popover-img { + margin-left: 4px; + cursor: pointer; + width: 16px; + height: 16px; +} diff --git a/src/views/question-bank/components/ranking-box/index.jsx b/src/views/question-bank/components/ranking-box/index.jsx new file mode 100644 index 0000000..8fc7cbc --- /dev/null +++ b/src/views/question-bank/components/ranking-box/index.jsx @@ -0,0 +1,96 @@ +import React from 'react'; +import { Popover, Spin } from 'antd'; +import { debounce } from '@utils'; +import { imgObject, RankingTypeText, RankingTypeBtnText } from '../../constant'; +import './index.less'; + +const rankingBackImg = { + 0: imgObject.ranking1Img, + 1: imgObject.ranking2Img, + 2: imgObject.ranking3Img, +}; + +export default function RankingBox(props) { + const { isLoading, currentActive, rankingList, rankingType } = props; + const onChangeRanking = (type) => + debounce(() => { + props.onHandleRanking && props.onHandleRanking(type); + }); + const onJump = debounce(() => { + props.onHandleJump && props.onHandleJump(); + }); + return ( +
+
+
{RankingTypeText[rankingType]}
+
+
+ 本月排行 +
+
+ 总排行 +
+
+
+ +
+ {rankingList?.length > 0 && + rankingList.map((item, index) => { + return ( +
+
+
+ {index + 1} +
+
+ +
+ + {item.name} +
+ } + content={ +
+
{item.erp}
+
{item.organizationFullName}
+
+ }> +
+
{item.name}
+
+ {item.organizationName} +
+
+ +
+
🔥 {item.count}
+
+ ); + })} +
+ +
+
+
{RankingTypeBtnText[rankingType]}
+
+ + ); +} diff --git a/src/views/question-bank/components/ranking-box/index.less b/src/views/question-bank/components/ranking-box/index.less new file mode 100644 index 0000000..795f4d7 --- /dev/null +++ b/src/views/question-bank/components/ranking-box/index.less @@ -0,0 +1,149 @@ +.ranking-list-box { + display: flex; + flex-direction: column; + justify-content: center; + margin-bottom: 20px; + padding: 0px 16px 0px; + width: 100%; + background-color: #ffffff; + border-radius: 8px; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08); + .ranking-list-header { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + height: 50px; + font-size: 16px; + color: rgba(0, 0, 0, 0.85); + border-bottom: 1px solid #f3f3f6; + + .ranking-list-btns { + display: flex; + .ranking-list-btn { + display: flex; + justify-content: center; + align-items: center; + margin-right: 4px; + width: 48px; + height: 30px; + font-size: 12px; + cursor: pointer; + transition: all 0.5s; + &:last-child { + margin-right: 0px; + } + &:hover { + @include font-color(); + } + } + .ranking-list-btn-active { + font-weight: 600; + // @include font-color(); + border-bottom: 1px solid rgba(60, 110, 238, 1); + } + } + } + .ranking-list { + // height: 326px; + // overflow-y: scroll; + font-size: 14px; + .ranking-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 12px 10px 6px; + color: #999999; + font-size: 14px; + cursor: pointer; + .ranking-left { + display: flex; + align-items: center; + .ranking-icon { + margin-right: 10px; + // margin-top: 14px; + width: 20px; + height: 26px; + line-height: 17px; + text-align: center; + background-size: 100% 100%; + } + .ranking-head-img { + margin-right: 4px; + width: 40px; + height: 40px; + border-radius: 50%; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08); + .ranking-head-icon { + width: 100%; + height: 100%; + border-radius: 50%; + } + } + + .ranking-info { + .ranking-name { + margin-bottom: 2px; + color: #666666; + } + .ranking-department { + font-size: 12px; + } + } + } + .ranking-right { + display: flex; + align-items: center; + color: #c3c3c6; + } + &:hover { + @include box-backgroundColor(0.05); + } + } + } + .ranking-btn-go { + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto; + margin-top: 12px; + margin-bottom: 12px; + cursor: pointer; + width: 230px; + height: 36px; + border-radius: 30px; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.1); + background-color: rgba(60, 110, 238, 0.9); + .ranking-btn-go-icon { + width: 22px; + height: 22px; + background-size: 100% 100%; + margin-right: 4px; + } + .ranking-btn-text { + font-size: 14px; + font-weight: bold; + color: #fff; + } + &:hover { + font-weight: bold; + } + } + &:last-child { + margin-bottom: 0; + } +} +::-webkit-scrollbar { + width: 0; + height: 0; + color: transparent; +} +.tooltip-info { + font-size: 12px; +} +.popover-img { + margin-left: 4px; + cursor: pointer; + width: 16px; + height: 16px; +} diff --git a/src/views/question-bank/components/ranking-list/index.jsx b/src/views/question-bank/components/ranking-list/index.jsx new file mode 100644 index 0000000..cb5778e --- /dev/null +++ b/src/views/question-bank/components/ranking-list/index.jsx @@ -0,0 +1,109 @@ +import React, { Fragment, Component } from 'react'; + +import req from '@utils/request'; +import { mockRankingModuleList } from '../../mock'; +import { imgObject, apiName, RankingType } from '../../constant'; +import RankingBox from '../ranking-box'; + +const rankingBackImg = { + 0: imgObject.ranking1Img, + 1: imgObject.ranking2Img, + 2: imgObject.ranking3Img, +}; +class RankingList extends Component { + constructor(props) { + super(props); + this.state = { + moduleList: [], + contributeType: 2, + isLoading: true, + }; + } + + componentDidMount() { + this.getContributeList(); + } + + /** + * 获得贡献榜 + */ + getContributeList() { + // let params = { + // contributeType: this.contributeType, + // }; + // req({ + // method: 'post', + // data: params, + // url: apiName.getContributeList, + // }) + // .then((res) => { + // if (res.data && res.data.length > 0) { + // this.setState( + // { + // firstCategoryList: res.data, + // isShowSpin: false, + // }, + // () => { + // this.getInterviewSubjectList(); + // } + // ); + // } else { + // this.primaryCategoryId = ''; + // this.setState({ + // isShowSpin: false, + // }); + // } + // }) + // .catch((err) => console.log(err)); + + this.setState({ + moduleList: mockRankingModuleList[0].rankingList, + isLoading: false, + }); + } + + /** + * 切换排行榜 + * @param {*} type + * @returns + */ + onChangeRanking = (type, index) => () => { + let { moduleList } = this.state; + moduleList[index].currentActive = type; + this.setState( + { + moduleList, + isLoading: true, + }, + () => { + this.getData(); + } + ); + }; + + onJump = (e) => () => { + if (e === 2) { + this.props.history.push('/upload-questions'); + } else { + this.props.history.push('/practice-questions'); + } + }; + + render() { + const { moduleList, isLoading, contributeType } = this.state; + return ( + + + + ); + } +} + +export default RankingList; diff --git a/src/views/question-bank/components/ranking-list/index.less b/src/views/question-bank/components/ranking-list/index.less new file mode 100644 index 0000000..d4e423d --- /dev/null +++ b/src/views/question-bank/components/ranking-list/index.less @@ -0,0 +1,151 @@ +.ranking-list-box { + display: flex; + flex-direction: column; + justify-content: center; + margin-bottom: 20px; + padding: 0px 16px 0px; + width: 100%; + background-color: #ffffff; + border-radius: 8px; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08); + .ranking-list-header { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + height: 50px; + font-size: 16px; + color: rgba(0, 0, 0, 0.85); + border-bottom: 1px solid #f3f3f6; + .ranking-list-title { + } + + .ranking-list-btns { + display: flex; + .ranking-list-btn { + display: flex; + justify-content: center; + align-items: center; + margin-right: 4px; + width: 48px; + height: 30px; + font-size: 12px; + cursor: pointer; + transition: all 0.5s; + &:last-child { + margin-right: 0px; + } + &:hover { + @include font-color(); + } + } + .ranking-list-btn-active { + font-weight: 600; + @include font-color(); + border-bottom: 1px solid rgba(60, 110, 238, 1); + } + } + } + .ranking-list { + // height: 326px; + // overflow-y: scroll; + font-size: 14px; + .ranking-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 12px 10px 6px; + color: #999999; + font-size: 14px; + cursor: pointer; + .ranking-left { + display: flex; + align-items: center; + .ranking-icon { + margin-right: 10px; + // margin-top: 14px; + width: 20px; + height: 26px; + line-height: 17px; + text-align: center; + background-size: 100% 100%; + } + .ranking-head-img { + margin-right: 4px; + width: 40px; + height: 40px; + border-radius: 50%; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08); + .ranking-head-icon { + width: 100%; + height: 100%; + border-radius: 50%; + } + } + + .ranking-info { + .ranking-name { + margin-bottom: 2px; + color: #666666; + } + .ranking-department { + font-size: 12px; + } + } + } + .ranking-right { + display: flex; + align-items: center; + color: #c3c3c6; + } + &:hover { + @include box-backgroundColor(0.05); + } + } + } + .ranking-btn-go { + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto; + margin-top: 12px; + margin-bottom: 12px; + cursor: pointer; + width: 230px; + height: 36px; + border-radius: 30px; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.1); + @include box-backgroundColor(0.9); + .ranking-btn-go-icon { + width: 22px; + height: 22px; + background-size: 100% 100%; + margin-right: 4px; + } + .ranking-btn-text { + font-size: 14px; + font-weight: bold; + color: #fff; + } + &:hover { + font-weight: bold; + } + } + &:last-child { + margin-bottom: 0; + } +} +::-webkit-scrollbar { + width: 0; + height: 0; + color: transparent; +} +.tooltip-info { + font-size: 12px; +} +.popover-img { + margin-left: 4px; + cursor: pointer; + width: 16px; + height: 16px; +} diff --git a/src/views/question-bank/constant.js b/src/views/question-bank/constant.js new file mode 100644 index 0000000..2a6db1d --- /dev/null +++ b/src/views/question-bank/constant.js @@ -0,0 +1,133 @@ +import JavaImg from '@views/imgs/javaImg.png' +/** + * 难度等级 + */ +export const gradeObject = { + 1: { + color: 'rgba(60, 110, 238, 0.7)', + title: '初级', + }, + 2: { + color: 'rgba(60, 110, 238, 0.7)', + title: '中级', + }, + 3: { + color: 'rgba(60, 110, 238, 0.7)', + title: '高级', + }, + 4: { + color: 'rgba(60, 110, 238, 0.7)', + title: '资深', + }, + 5: { + color: 'rgba(60, 110, 238, 0.7)', + title: '专家', + }, +}; + +/** + * 难度筛选 + */ +export const filterDifficulty = [ + { + id: 0, + title: '全部', + }, + { + id: 1, + title: '初级', + }, + { + id: 2, + title: '中级', + }, + { + id: 3, + title: '高级', + }, + { + id: 4, + title: '资深', + }, + { + id: 5, + title: '专家', + }, +]; + +export const apiName = { + /** + * 获取一级分类 + */ + getPrimaryCategoryInfo: '/admin/question/category/getPrimaryCategoryInfo', + + /** + * 获取题目列表 + */ + getInterviewSubjectList: '/admin/question/subject/getSubjectList', + + /** + * 获得贡献榜 + */ + getContributeList: '/admin/question/subject/getContributeList', +}; + +export const imgObject = { + clickImg: + 'https://img13.360buyimg.com/imagetools/jfs/t1/222669/25/807/6590/617f4f06Eb2094586/64c39ce3769b8a16.png', + ranking1Img: + 'https://img14.360buyimg.com/imagetools/jfs/t1/206730/39/7751/986/617f4fbaE4e23097a/aa94ca31a9c132b2.png', + ranking2Img: + 'https://img10.360buyimg.com/imagetools/jfs/t1/156125/21/27968/948/617f4fbaEcf1da9a9/722ad0917497697a.png', + ranking3Img: + 'https://img12.360buyimg.com/imagetools/jfs/t1/213197/17/2682/958/617f4fbbE06c277a9/03ef4c389c52ab8d.png', + timeline: + 'https://img13.360buyimg.com/imagetools/jfs/t1/210387/35/7564/555/617f4fbbE0cb305c1/728913d21e650794.png', + backAllImg: + 'https://img11.360buyimg.com/imagetools/jfs/t1/206213/24/13307/2603/617f4fc4E676d448d/622d5287fbf5a919.png', + dataImg: + 'https://img12.360buyimg.com/imagetools/jfs/t1/207558/34/7606/3672/617f4fc4E1ca685fc/3953a92a6072fba4.png', + javaImg: JavaImg, + npmImg: 'https://img11.360buyimg.com/imagetools/jfs/t1/200551/24/15367/3145/617f4fc4Ea153dc2e/b4bbf2de8807f42d.png', + parallelComputingImg: + 'https://img14.360buyimg.com/imagetools/jfs/t1/207198/23/7638/3037/617f4fc4E0e20ab9d/40197a6c79c5a33f.png', + springbootImg: + 'https://img13.360buyimg.com/imagetools/jfs/t1/171775/10/24915/4127/617f4fc4Eeb3d356e/cfbfe8d7c3155047.png', + sqlImg: 'https://img13.360buyimg.com/imagetools/jfs/t1/208027/11/7347/3074/617f4fc4Ef11e9495/1093903301db1d1d.png', + systemDesignImg: + 'https://img12.360buyimg.com/imagetools/jfs/t1/206967/24/7622/3629/617f4fc4E60a188b3/cb659847c5d4232a.png', + algorithmImg: + 'https://img14.360buyimg.com/imagetools/jfs/t1/215758/34/2633/4128/617f4fc4E5dcdab66/727be155858a06a5.png', + defaultImg: + 'https://img13.360buyimg.com/imagetools/jfs/t1/155957/24/22934/2028/617a147cE8bcbb57a/7a4885e4ae99a895.png', +}; + +/** + * 模块类型 + */ +export const RankingType = { + /** + * 贡献榜 + */ + contribution: 1, + /** + * 排行榜 + */ + practice: 2, +}; + +/** + * 模块名称 + */ +export const RankingTypeText = { + [RankingType.contribution]: '贡献榜', + [RankingType.practice]: '综合练习榜', +}; + +/** + * 对应按钮名字 + */ +export const RankingTypeBtnText = { + [RankingType.contribution]: '去出题', + [RankingType.practice]: '去练习', +}; diff --git a/src/views/question-bank/index.less b/src/views/question-bank/index.less new file mode 100644 index 0000000..612c78f --- /dev/null +++ b/src/views/question-bank/index.less @@ -0,0 +1,35 @@ +.question-bank-box { + display: flex; + width: 1439px; + margin: 0 auto; + background-color: #f3f4f6; + border-radius: 5px; + .ant-spin-nested-loading { + flex: 1; + overflow-y: auto; + border-radius: 8px; + .question-box { + // flex: 1; + // overflow-y: auto; + // border-radius: 8px; + .category-list-box { + padding: 24px 24px 6px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; + background-color: #fff; + } + .question-list-box { + margin-top: 1px; + } + } + } + + .ranking-box { + margin-left: 16px; + overflow-y: auto; + width: 310px; + } + .ant-spin-nested-loading { + background-color: #fff; + } +} diff --git a/src/views/question-bank/index.tsx b/src/views/question-bank/index.tsx new file mode 100644 index 0000000..acca889 --- /dev/null +++ b/src/views/question-bank/index.tsx @@ -0,0 +1,177 @@ +import { Component } from 'react'; +import QuestionList from '@components/question-list'; +import CategoryList from '@components/category-list'; +import ContributionList from './components/contribution-list'; +import RankingList from './components/ranking-list' +import { apiName } from './constant'; +import req from '@utils/request'; +import { Spin } from 'antd'; +import { mockTabList, mockDataList } from './mock' +import './index.less'; + +export default class QuestionBank extends Component { + constructor(props) { + super(props); + this.state = { + firstCategoryList: mockTabList || [], + questionList: mockDataList || [], + isShowSpin: false, + }; + } + labelList = []; // 选中的标签列表 + difficulty = 0; //困难度(全部) + total = 0; // 总条数 + pageIndex = 1; + primaryCategoryId = ''; //第一个大类id + + componentDidMount() { + // this.getPrimaryCategoryInfo(); + // console.log(this.props.route); + } + + /** + * 获取一级分类数据 + */ + getPrimaryCategoryInfo() { + req({ + method: 'post', + data: { subjectTypeList: [4] }, + url: apiName.getPrimaryCategoryInfo, + }) + .then((res) => { + if (res.data && res.data.length > 0) { + this.primaryCategoryId = res.data[0].primaryCategoryId; + this.setState( + { + firstCategoryList: res.data, + isShowSpin: false, + }, + () => { + this.getInterviewSubjectList(); + } + ); + } else { + this.primaryCategoryId = ''; + this.setState({ + isShowSpin: false, + }); + } + }) + .catch((err) => console.log(err)); + } + + /** + * 获取题目列表 + */ + getInterviewSubjectList() { + let params = { + pageInfo: { + pageIndex: this.pageIndex, + pageSize: 10, + }, + difficulty: this.difficulty, + primaryCategoryId: this.primaryCategoryId, + assembleIds: this.labelList, + }; + req({ + method: 'post', + data: params, + url: apiName.getInterviewSubjectList, + }) + .then((res) => { + if (res.data && res.data?.pageList?.length > 0) { + this.total = res.data.pageInfo.total; + this.setState({ + questionList: res.data.pageList, + isShowSpin: false, + }); + } else { + this.total = 0; + this.setState({ + questionList: [], + isShowSpin: false, + }); + } + }) + .catch((err) => console.log(err)); + } + + /** + * 选择标签时,请求列表数据 + * @param {*} primaryCategoryId 一级分类id + * @param {*} assembleIds 三级标签 assembleIds + */ + onChangeLabel = (primaryCategoryId, assembleIds) => { + this.labelList = assembleIds; + this.primaryCategoryId = primaryCategoryId; + this.pageIndex = 1; + this.getInterviewSubjectList(); + }; + + /** + * 切换一级分类 + * @param {*} e + */ + onChangeCategory = (e) => { + this.labelList = []; + this.primaryCategoryId = e; + this.pageIndex = 1; + this.getInterviewSubjectList(); + }; + + /** + * 筛选列表数据 + * @param {*} id + */ + handleChangeSelect = (id) => { + this.difficulty = id; + this.pageIndex = 1; + this.getInterviewSubjectList(); + }; + + /** + * 分页功能 + * @param {*} pageIndex 当前页码 + */ + onChangePagination = (pageIndex) => { + this.pageIndex = pageIndex; + this.getInterviewSubjectList(); + }; + + render() { + const { firstCategoryList, questionList, isShowSpin } = this.state; + return ( +
+ +
+
+ {firstCategoryList?.length > 0 && ( + + )} +
+
+ +
+
+
+
+ + +
+
+ ); + } +} diff --git a/src/views/question-bank/mock.ts b/src/views/question-bank/mock.ts new file mode 100644 index 0000000..474a785 --- /dev/null +++ b/src/views/question-bank/mock.ts @@ -0,0 +1,580 @@ +export const mockRankingModuleList = [ + { + id: 1, + title: '综合练习榜', + rankingList: [ + { + id: 1, + wechatName: 'jcdw', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅大王1', + count: 160, + }, + { + id: 2, + wechatName: 'jcdw1', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅大王2', + count: 140, + }, + { + id: 3, + wechatName: 'jcdw2', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅大王', + count: 101, + }, + { + id: 4, + wechatName: 'jcdw3', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅小王', + count: 100, + }, + { + id: 5, + wechatName: 'jcdw4', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅大王5', + count: 99, + }, + ], + }, + { + id: 2, + title: '贡献榜', + rankingList: [ + { + id: 1, + wechatName: 'jcdw5', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅小王', + count: 160, + }, + { + id: 2, + wechatName: 'jcdw6', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅大王2', + count: 150, + }, + { + id: 3, + wechatName: 'jcdw7', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅大王', + count: 101, + }, + { + id: 4, + wechatName: 'jcdw8', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅大王4', + count: 100, + }, + { + id: 5, + wechatName: 'jcdw9', + headImg: + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.doubanio.com%2Fview%2Fnote%2Flarge%2Fpublic%2Fp37015927.jpg&refer=http%3A%2F%2Fimg1.doubanio.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1699286185&t=00db8ff5a1e11783f6c8eba954a5891f', + name: '鸡翅大王5', + count: 99, + }, + ], + }, +]; + +export const mockDataList = [ + { + questionTitle: '什么是防抖和节流?有什么区别?如何实现', + tags: [ + { name: '排序', id: 590 }, + { name: '数学', id: 5050 }, + { name: '穷举', id: 596 }, + { name: '贪心', id: 592 }, + { name: '二分', id: 5058 }, + ], + id: 0, + grade: 1, + questionType: 6, + difficulty: 1 + }, + { + questionTitle: '非空数组,某元素只出现1次,其余出现2次,找到出现1次的元素', + tags: [ + { name: '数学', id: 5050 }, + { name: '穷举', id: 596 }, + ], + id: 1, + grade: 2, + questionType: 6, + difficulty: 1 + }, + { + questionTitle: 'Proxy、Observable的区别', + tags: [ + { name: '贪心', id: 592 }, + { name: '二分', id: 5058 }, + ], + id: 2, + grade: 3, + questionType: 3, + }, + { + questionTitle: '谈谈浏览器的回流与重绘,如何优化dom渲染呢', + tags: [ + { name: '字符串', id: 579 }, + { name: '模拟', id: 595 }, + ], + id: 3, + grade: 1, + questionType: 1, + }, + { + questionTitle: 'API指标有哪些,为什么有白屏现象,考虑哪些方向优化', + tags: [ + { name: '字符串', id: 579 }, + { name: '模拟', id: 595 }, + ], + id: 4, + grade: 2, + questionType: 4, + }, + { + questionTitle: '将两个升序链表合并为一个新的升序链表并返回', + tags: [{ name: '数学', id: 5050 }], + id: 5, + grade: 1, + questionType: 2, + }, + { + questionTitle: '对MVP架构的理解', + tags: [ + { name: '递归', id: 591 }, + { name: '动态规划', id: 593 }, + ], + id: 6, + grade: 3, + questionType: 5, + }, + { + questionTitle: 'SPA页面的前端路由实现方案', + tags: [ + { name: '排序', id: 590 }, + { name: '数组', id: 578 }, + ], + id: 7, + grade: 2, + questionType: 1, + }, + { + questionTitle: '怎么看 nodejs 可支持高并发', + tags: [ + { name: '数学', id: 5050 }, + { name: '模拟', id: 595 }, + ], + id: 8, + grade: 2, + questionType: 2, + }, + { + questionTitle: '二叉树遍历', + tags: [ + { name: '树', id: 583 }, + { name: '搜索', id: 3381 }, + ], + id: 9, + grade: 3, + questionType: 4, + }, + { + questionTitle: '玛雅人的密码', + tags: [ + { name: '图', id: 584 }, + { name: '搜索', id: 3381 }, + ], + id: 10, + grade: 1, + questionType: 3, + }, + { questionTitle: '求最大最小数', tags: [], id: 11, grade: 1, questionType: 1 }, + { + questionTitle: '最小邮票数', + tags: [{ name: '动态规划', id: 593 }], + id: 12, + grade: 1, + questionType: 1, + }, + { questionTitle: 'abc', tags: [{ name: '穷举', id: 596 }], id: 13, grade: 1, questionType: 5 }, + { + questionTitle: '求root(N, k)', + tags: [ + { name: '递归', id: 591 }, + { name: '数学', id: 5050 }, + { name: '二分', id: 5058 }, + ], + id: 14, + grade: 1, + questionType: 3, + }, + { + questionTitle: 'n的阶乘', + tags: [{ name: '数学', id: 5050 }], + id: 15, + grade: 1, + questionType: 3, + }, + { + questionTitle: '特殊乘法', + tags: [ + { name: '模拟', id: 595 }, + { name: '数组', id: 578 }, + { name: '数学', id: 5050 }, + ], + id: 16, + grade: 1, + questionType: 3, + }, + { + questionTitle: '今年的第几天?', + tags: [ + { name: '递归', id: 591 }, + { name: '数学', id: 5050 }, + { name: '穷举', id: 596 }, + ], + id: 17, + grade: 1, + questionType: 2, + }, + { + questionTitle: '完数VS盈数', + tags: [{ name: '数学', id: 5050 }], + id: 18, + grade: 1, + questionType: 3, + }, + { + questionTitle: '递推数列', + tags: [ + { name: '动态规划', id: 593 }, + { name: '数学', id: 5050 }, + ], + id: 19, + grade: 1, + questionType: 1, + }, + { questionTitle: '最大序列和', tags: [{ name: '动态规划', id: 593 }], id: 20, grade: 1 }, + { + questionTitle: '最小花费', + tags: [ + { name: '动态规划', id: 593 }, + { name: '图', id: 584 }, + ], + id: 21, + grade: 1, + questionType: 2, + }, + { questionTitle: 'N的阶乘', tags: [{ name: '数学', id: 5050 }], id: 22, grade: 1 }, + { + questionTitle: '剩下的树', + tags: [ + { name: '数组', id: 578 }, + { name: '数学', id: 5050 }, + { name: '哈希', id: 585 }, + { name: '栈', id: 581 }, + ], + id: 23, + grade: 1, + questionType: 5, + }, + { + questionTitle: '10进制 VS 2进制', + tags: [ + { name: '数学', id: 5050 }, + { name: '位运算', id: 5074 }, + ], + id: 24, + grade: 1, + questionType: 3, + }, + { + questionTitle: '查找学生信息', + tags: [ + { name: '数组', id: 578 }, + { name: '模拟', id: 595 }, + ], + id: 25, + grade: 1, + questionType: 2, + }, +]; +/** + * 一级分类 + */ +export const mockTabList = [ + { id: 1, levelName: '全部', count: 100 }, + { id: 2, levelName: '前端', count: 1001 }, + { id: 3, levelName: '后端', count: 1005 }, + { id: 4, levelName: '测试', count: 1100 }, + { id: 5, levelName: '人工智能', count: 1200 }, + { id: 6, levelName: '产品', count: 1 }, + { id: 7, levelName: '视觉', count: 100 }, + { id: 8, levelName: '产品', count: 1 }, + { id: 9, levelName: '视觉', count: 100 }, + { id: 10, levelName: '产品', count: 1 }, + { id: 11, levelName: '视觉', count: 100 }, +]; + +// 二级数据 +export const mockCategoryList = { + // 全部 + 1: [ + { + id: 1, + levelName: '算法', + childrenLevelList: [ + { id: 1, levelName: '双指针', count: 107 }, + { id: 2, levelName: '同向双指针', count: 57 }, + { id: 3, levelName: '相向双指针', count: 31 }, + { id: 4, levelName: '二分法', count: 95 }, + { id: 5, levelName: '二分答案', count: 28 }, + { id: 6, levelName: '分治法', count: 77 }, + { id: 7, levelName: '宽度优先搜索', count: 135 }, + { id: 8, levelName: '深度优先搜索/回溯法', count: 10 }, + { id: 9, levelName: '背包型动态规划', count: 224 }, + { id: 10, levelName: '状态压缩动态规划', count: 240 }, + { id: 11, levelName: '拓扑排序', count: 28 }, + { id: 12, levelName: '坐标型动态规划', count: 40 }, + { id: 13, levelName: '划分型动态规划', count: 15 }, + { id: 14, levelName: '记忆化搜索', count: 23 }, + { id: 15, levelName: '区间型动态规划', count: 22 }, + { id: 16, levelName: '动态规划', count: 3 }, + { id: 17, levelName: '博弈型动态规划', count: 4 }, + { id: 18, levelName: '匹配型动态规划', count: 15 }, + { id: 19, levelName: '树型动态规划', count: 4 }, + { id: 20, levelName: '排序算法', count: 83 }, + { id: 21, levelName: '外排序算法', count: 2 }, + { id: 22, levelName: '快速选择算法', count: 12 }, + { id: 23, levelName: '欧拉路径', count: 1 }, + { id: 24, levelName: '模拟法', count: 282 }, + { id: 25, levelName: '扫描线算法', count: 19 }, + { id: 26, levelName: '枚举法', count: 109 }, + { id: 27, levelName: '最短路', count: 6 }, + { id: 28, levelName: '贪心法', count: 85 }, + { id: 29, levelName: '最小生成树', count: 3 }, + ], + }, + { + id: 2, + levelName: '数据结构', + childrenLevelList: [ + { id: 1, levelName: '数组', count: 179 }, + { id: 2, levelName: '前缀和数组', count: 41 }, + { id: 3, levelName: '字符串', count: 257 }, + { id: 4, levelName: '链表', count: 52 }, + { id: 5, levelName: '双向链表', count: 1 }, + { id: 6, levelName: '队列', count: 18 }, + { id: 7, levelName: '单调队列', count: 3 }, + { id: 8, levelName: '双向队列', count: 3 }, + { id: 9, levelName: '栈', count: 74 }, + { id: 10, levelName: '单调栈', count: 27 }, + { id: 11, levelName: '二叉树', count: 120 }, + { id: 12, levelName: '树', count: 5 }, + { id: 13, levelName: '二叉搜索树', count: 30 }, + { id: 14, levelName: '迭代器', count: 6 }, + { id: 15, levelName: '堆', count: 45 }, + { id: 16, levelName: '图', count: 17 }, + { id: 17, levelName: '二分图', count: 5 }, + { id: 18, levelName: '哈希表', count: 156 }, + { id: 19, levelName: '字典树', count: 19 }, + { id: 20, levelName: '并查集', count: 36 }, + { id: 21, levelName: '树状数组', count: 7 }, + { id: 22, levelName: '线段树', count: 21 }, + { id: 23, levelName: '平衡树', count: 7 }, + ], + }, + { + id: 3, + levelName: 'SQL 基础语法', + childrenLevelList: [ + { id: 1, levelName: '比较运算符', count: 52 }, + { id: 2, levelName: '嵌套查询', count: 35 }, + { id: 3, levelName: '基础语法', count: 27 }, + { id: 4, levelName: '逻辑运算符', count: 25 }, + { id: 5, levelName: 'GROUP BY', count: 18 }, + { id: 6, levelName: '算术运算符', count: 17 }, + { id: 7, levelName: 'IN', count: 17 }, + { id: 8, levelName: 'ORDER BY', count: 16 }, + { id: 9, levelName: 'AS', count: 15 }, + { id: 10, levelName: 'HAVING', count: 8 }, + { id: 11, levelName: 'SELECT', count: 7 }, + { id: 12, levelName: 'DISTINCT', count: 6 }, + { id: 13, levelName: 'LIKE', count: 5 }, + { id: 14, levelName: 'LIMIT', count: 4 }, + { id: 15, levelName: 'IS NULL', count: 4 }, + { id: 16, levelName: 'UNION', count: 3 }, + { id: 17, levelName: '约束', count: 3 }, + { id: 18, levelName: 'IFNULL/COLLAPSE', count: 2 }, + { id: 19, levelName: 'ANY', count: 2 }, + { id: 20, levelName: 'ALL', count: 2 }, + ], + }, + ], + // 前端 + 2: [ + { + id: 1, + levelName: '移动端', + childrenLevelList: [ + { + id: 1, + levelName: 'IOSIOSIOSIOS', + count: 13, + }, + { + id: 2, + levelName: '安卓', + count: 130, + }, + { + id: 3, + levelName: '鸿蒙', + count: 134, + }, + ], + }, + { + id: 2, + levelName: '框架', + childrenLevelList: [ + { + id: 1, + levelName: 'Vue.js', + count: 13, + }, + { + id: 2, + levelName: 'React.js', + count: 13, + }, + { + id: 3, + levelName: 'Bootstrap', + count: 13, + }, + ], + }, + { + id: 3, + levelName: '小程序', + childrenLevelList: [ + { id: 1, levelName: '微信小程序', count: 13 }, + { id: 2, levelName: '京东小程序', count: 13 }, + { id: 3, levelName: '支付宝小程序', count: 13 }, + { id: 4, levelName: '百度小程序', count: 13 }, + { id: 5, levelName: 'QQ小程序', count: 13 }, + ], + }, + ], + // 后端 + 3: [ + { + id: 1, + levelName: '框架', + childrenLevelList: [ + { + id: 1, + levelName: 'Spring框架', + count: 17, + }, + { + id: 2, + levelName: 'Struts框架', + count: 127, + }, + { + id: 3, + levelName: 'Hibernate框架', + count: 170, + }, + ], + }, + { + id: 2, + levelName: 'SSM框架组合', + childrenLevelList: [ + { + id: 1, + levelName: 'SpringMVC框架', + count: 170, + }, + { + id: 2, + levelName: 'Mybatis框架', + count: 1, + }, + ], + }, + ], + // 测试 + 4: [ + { + id: 1, + levelName: '自动化测试', + childrenLevelList: [ + { + id: 1, + levelName: '管理工具', + count: 16, + }, + { + id: 2, + levelName: 'UI自动化', + count: 16, + }, + { + id: 3, + levelName: '接口自动化', + count: 16, + }, + ], + }, + ], + // 人工智能 + 5: [ + { + id: 1, + levelName: '数据处理', + childrenLevelList: [ + { id: 1, levelName: '工具库', count: 107 }, + { id: 2, levelName: '数据预处理', count: 127 }, + { id: 3, levelName: 'Numpy', count: 170 }, + { id: 4, levelName: 'Matplotlib', count: 170 }, + { id: 5, levelName: 'Pandas', count: 170 }, + ], + }, + { + id: 2, + levelName: '机器学习', + childrenLevelList: [ + { id: 1, levelName: '工具库', count: 170 }, + { id: 2, levelName: '分类', count: 1 }, + { id: 3, levelName: '模型', count: 170 }, + { id: 4, levelName: '决策树', count: 170 }, + ], + }, + ], + // 产品 + 6: [], + // 视觉 + 7: [], +}; diff --git a/src/views/upload-exam/index.tsx b/src/views/upload-exam/index.tsx deleted file mode 100644 index 8105168..0000000 --- a/src/views/upload-exam/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -const UploadExam = () => { - return ( -
- upload exam -
- ) -} - - -export default UploadExam \ No newline at end of file diff --git a/src/views/upload-questions/components/brief-questions/index.jsx b/src/views/upload-questions/components/brief-questions/index.jsx new file mode 100644 index 0000000..f71e012 --- /dev/null +++ b/src/views/upload-questions/components/brief-questions/index.jsx @@ -0,0 +1,360 @@ +import React, { Component, Fragment } from 'react'; +import { Input, Modal, message, Spin } from 'antd'; + +import req from '@utils/request'; +import { debounce } from '@utils'; +import KindEditor from '../kind-editor'; +import RankLabelBox from '../rank-label-box'; +import RepeatContentBox from '../repeat-content-box'; +import { apiName } from '../../constant'; +import './index.less'; + +export default class BriefQuestions extends Component { + constructor(props) { + super(props); + this.state = { + subjectName: '', // 题目 + isDisabledSubmit: true, //是否禁止输入 + isShowModalBox: false, // 是否展示重复率弹框 + isSubmit: true, // 是否支持提交 + }; + } + kindEditor = KindEditor | null; + rankLabelBox = RankLabelBox | null; + rankId = 1; //职级 + subjectAnswer = ''; // 答案 + firstCategoryValue = ''; // 一级分类的值 + secondCategoryValue = []; // 二级分类的值 + thirdCategoryValue = []; // 三级标签的值 + repeatInfo = {}; // 重复率 + + /** + * 输入题目 + * @param {*} e + */ + onChangeSubjectName = (e) => { + let str = e.target.value.trim(); + this.setState( + { + subjectName: str, + }, + () => { + this.rankLabelBox.getThirdCategoryList(); + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + } + ); + }; + + /** + * 富文本编辑器 + * @param {*} e + */ + onChangeEditor = (e) => { + this.subjectAnswer = e; + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + + /** + * 一次确认录入 + */ + onSubmit = debounce(() => { + const { subjectName, isDisabledSubmit, isSubmit } = this.state; + if (isDisabledSubmit || !isSubmit) { + return; + } + // if (!isSubmit) { + // return; + // } + if (!!!subjectName) { + message.warning('请输入题目名称'); + return; + } + if (!!!this.subjectAnswer) { + message.warning('请输入题目答案'); + return; + } + if (!!!this.firstCategoryValue) { + message.warning('请选择一级分类'); + return; + } + if (this.secondCategoryValue.length <= 0) { + message.warning('请选择二级分类'); + return; + } + if (this.thirdCategoryValue.length <= 0) { + message.warning('请选择三级标签'); + return; + } + this.setState({ + isSubmit: false, + }); + let params = { + subjectName: subjectName, + difficulty: this.rankId, + subjectType: 4, + subjectScore: 1, + subjectAnswer: this.subjectAnswer, + categoryIds: this.secondCategoryValue, + labelIds: this.thirdCategoryValue, + }; + console.log('录入 ----', params); + req({ + method: 'post', + data: params, + url: apiName.addInterviewSubject, + }) + .then((res) => { + this.repeatInfo = {}; + if (res.data && res.data.insertStatus) { + this.setState( + { + isSubmit: true, + }, + () => { + this.successModalConfirm(); + } + ); + } else if (!res.data.insertStatus) { + this.repeatInfo = { + repeatDocId: res.data.docId, // 重复题目id + repeatRate: res.data.repeatRate, // 重复率 + repeatSubjectName: res.data.subjectName, // 重复题目 + repeatSubjectAnswe: res.data.subjectAnswer, // 重复答案 + repeatSetterErp: res.data.subjectSetterErp, // 出题人erp + repeatSetterName: res.data.subjectSetterName, // 出题人姓名 + }; + this.setState({ + isShowModalBox: true, + isSubmit: true, + }); + } + }) + .catch((err) => { + this.setState({ + isSubmit: true, + }); + console.log(err); + }); + }); + + /** + * 校验是否支持点击按钮 + * @returns + */ + checkData = () => { + const { subjectName } = this.state; + let isDisabledSubmit = false; + if ( + !!!subjectName || + !!!this.subjectAnswer || + !!!this.firstCategoryValue || + this.secondCategoryValue.length <= 0 || + this.thirdCategoryValue.length <= 0 + ) { + isDisabledSubmit = true; + } + return isDisabledSubmit; + }; + + /** + * 取消 + */ + onCancel = () => { + this.subjectAnswer = ''; // 答案 + this.rankId = 1; + this.firstCategoryValue = ''; + this.secondCategoryValue = []; + this.thirdCategoryValue = []; + this.repeatInfo = {}; + this.kindEditor.onClear(); + this.rankLabelBox.initRankLabel(); + this.setState({ + subjectName: '', + isShowModalBox: false, + isSubmit: true, // 是否支持提交 + }); + }; + + /** + * 重复率弹框-确认录入 + */ + onSubmitRepeatModal = debounce( + () => { + let params = { + docId: this.repeatInfo.repeatDocId, + }; + req({ + method: 'post', + data: params, + url: apiName.addRepeatInterviewSubject, + }) + .then((res) => { + if (res.data) { + this.successModalConfirm(); + } else { + message.info('请再次确认'); + } + }) + .catch((err) => { + console.log(err); + message.error('请再次确认'); + }); + }, + 300, + true + ); + + /** + * 重复率弹框-取消录入 + */ + onCancelRepeatModal = () => { + this.repeatInfo = {}; + this.setState({ + isShowModalBox: false, + }); + }; + + /** + * 录入成功的弹框 + */ + successModalConfirm = () => { + Modal.confirm({ + title: ( +
+ 录入成功!贡献榜火力值 + 1 +
+ ), + closable: false, + maskClosable: false, + icon: ' ', + onOk: this.onAgainSuccessModal, + onCancel: this.onGoHomeSuccessModal, + okText: '再录一题', + cancelText: '去首页', + className: 'questions-success-modal-confirm', + }); + }; + + /** + * 录入成功弹框-再来一题 + */ + onAgainSuccessModal = () => { + this.onCancel(); + }; + + /** + * 录入成功弹框-去首页 + */ + onGoHomeSuccessModal = () => { + window.location.href = '/cms-supplier/question-bank'; + }; + + /** + * 分类选择 + * @param {*} e + */ + onChangeRankLabel = (firstCategoryValue, secondCategoryValue, thirdCategoryValue) => { + this.firstCategoryValue = firstCategoryValue; // 一级分类的值 + this.secondCategoryValue = secondCategoryValue; // 二级分类的值 + this.thirdCategoryValue = thirdCategoryValue; // 三级标签的值 + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + + /** + * 职级选择 + * @param {*} list + */ + handleChangeRank = (list) => { + this.rankId = list[0]; + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + + render() { + const { subjectName, isDisabledSubmit, isSubmit, isShowModalBox } = this.state; + const { questionsType } = this.props; + // this.successModalConfirm(); + + return ( + + +
+
题目名称:
+
+ +
+
+
+
题目答案:
+ {this.reanderAnser()} +
+ { + this.rankLabelBox = ref; + }} + subjectName={subjectName} + onChangeRankLabel={this.onChangeRankLabel} + handleChangeRank={this.handleChangeRank} + /> +
+
+ 清空 +
+
+ 提交 +
+
+ +
+
+ ); + } + + /** + * 问答题-答案 + */ + reanderAnser = () => { + return ( +
+ { + this.kindEditor = ref; + }} + /> +
+ ); + }; +} + diff --git a/src/views/upload-questions/components/brief-questions/index.less b/src/views/upload-questions/components/brief-questions/index.less new file mode 100644 index 0000000..56be9d8 --- /dev/null +++ b/src/views/upload-questions/components/brief-questions/index.less @@ -0,0 +1,58 @@ +.brief-questions-container { + width: 1000px; + display: flex; + align-items: center; + padding: 0 24px; + padding-top: 36px; + .brief-questions-title { + display: flex; + align-items: center; + justify-content: flex-end; + width: 140px; + line-height: 40px; + font-size: 16px; + color: rgba(51, 51, 51, 1); + &:before { + display: inline-block; + margin-right: 4px; + margin-top: 1px; + color: #f5222d; + font-size: 16px; + content: '*'; + } + } + .brief-questions-main { + width: 100%; + // 题目输入框 + .brief-questions-input { + height: 48px; + } + } +} +.brief-questions-btns-container { + display: flex; + justify-content: flex-end; + align-items: center; + margin: 20px auto; + width: 952px; + .brief-questions-btn { + display: flex; + align-items: center; + justify-content: center; + width: 150px; + height: 40px; + font-size: 16px; + cursor: pointer; + border: 1px solid #d9d9d9; + border-radius: 10px; + } + .brief-questions-submit { + margin-left: 40px; + background-color: #4390f7; + color: #fff; + border: 1px solid #4390f7; + } + .brief-questions-disabled-submit { + opacity: 0.5; + } +} diff --git a/src/views/upload-questions/components/judge-questions/index.jsx b/src/views/upload-questions/components/judge-questions/index.jsx new file mode 100644 index 0000000..680c394 --- /dev/null +++ b/src/views/upload-questions/components/judge-questions/index.jsx @@ -0,0 +1,327 @@ +import React, { Component, Fragment } from 'react'; +import { Input, Modal, message, Spin } from 'antd'; +import req from '@utils/request'; +import { debounce } from '@utils'; +import RankLabelBox from '../rank-label-box'; +import OptionInputBox from '../option-input-box'; +import RepeatContentBox from '../repeat-content-box'; +import { apiName } from '../../constant'; +import './index.less'; +export default class JudgeQuestions extends Component { + constructor(props) { + super(props); + this.state = { + subjectName: '', // 题目 + isDisabledSubmit: true, //是否禁止输入 + isShowModalBox: false, // 是否展示重复率弹框 + isSubmit: true, // 是否支持提交 + }; + } + rankLabelBox = RankLabelBox | null; + optionInputBox = OptionInputBox | null; + currentActive = []; // 当前选中的项 + scoreValue = ''; // 分数 + subjectAnalysis = ''; //试题解析 + rankId = 1; //职级 + firstCategoryValue = ''; // 一级分类的值 + secondCategoryValue = []; // 二级分类的值 + thirdCategoryValue = []; // 三级标签的值 + repeatInfo = {}; // 重复率 + + /** + * 输入题目 + * @param {*} e + */ + onChangeSubjectName = (e) => { + let str = e.target.value.trim(); + this.setState( + { + subjectName: str, + }, + () => { + this.rankLabelBox.getThirdCategoryList(); + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + } + ); + }; + + /** + * 一次确认录入 + */ + onSubmit = debounce(() => { + const { subjectName, isDisabledSubmit, isSubmit } = this.state; + if (isDisabledSubmit || !isSubmit) { + return; + } + this.setState({ + isSubmit: false, + }); + let params = { + subjectName: subjectName, + difficulty: this.rankId, + subjectType: 3, + subjectScore: this.scoreValue, + subjectParse: this.subjectAnalysis, + isCorrect: this.currentActive[0], + categoryIds: this.secondCategoryValue, + labelIds: this.thirdCategoryValue, + }; + console.log('判断录入 ----', params); + req({ + method: 'post', + data: params, + url: apiName.addInterviewSubject, + }) + .then((res) => { + this.repeatInfo = {}; + if (res.data && res.data.insertStatus) { + this.setState( + { + isSubmit: true, + }, + () => { + this.successModalConfirm(); + } + ); + } else if (!res.data.insertStatus) { + this.repeatInfo = { + repeatDocId: res.data.docId, // 重复题目id + repeatRate: res.data.repeatRate, // 重复率 + repeatIsCorrect: res.data.isCorrect, // 答案 + repeatSubjectName: res.data.subjectName, // 重复题目 + repeatSetterErp: res.data.subjectSetterErp, // 出题人erp + repeatSetterName: res.data.subjectSetterName, // 出题人姓名 + }; + this.setState({ + isShowModalBox: true, + isSubmit: true, + }); + } + }) + .catch((err) => { + this.setState({ + isSubmit: true, + }); + console.log(err); + }); + }); + + /** + * 校验是否支持点击按钮 + * @returns + */ + checkData = () => { + const { subjectName } = this.state; + let isDisabledSubmit = false; + if ( + !!!subjectName || + this.currentActive?.length <= 0 || + !!!this.firstCategoryValue || + this.secondCategoryValue.length <= 0 || + this.thirdCategoryValue.length <= 0 || + !!!this.scoreValue + ) { + isDisabledSubmit = true; + } + return isDisabledSubmit; + }; + + /** + * 取消 + */ + onCancel = () => { + this.currentActive = []; // 选项列表 + this.scoreValue = ''; // 分数 + this.subjectAnalysis = ''; //试题解析 + this.rankId = 1; + this.firstCategoryValue = ''; // 一级分类的值 + this.secondCategoryValue = []; // 二级分类的值 + this.thirdCategoryValue = []; // 三级标签的值 + this.repeatInfo = {}; + this.rankLabelBox.initRankLabel(); + this.optionInputBox.handleClearOption(); + this.setState({ + subjectName: '', + isShowModalBox: false, + isSubmit: true, // 是否支持提交 + }); + }; + + /** + * 重复率弹框-确认录入 + */ + onSubmitRepeatModal = debounce( + () => { + let params = { + docId: this.repeatInfo.repeatDocId, + }; + req({ + method: 'post', + data: params, + url: apiName.addRepeatInterviewSubject, + }) + .then((res) => { + if (res.data) { + this.successModalConfirm(); + } else { + message.info('请再次确认'); + } + }) + .catch((err) => { + console.log(err); + message.error('请再次确认'); + }); + }, + 300, + true + ); + + /** + * 重复率弹框-取消录入 + */ + onCancelRepeatModal = () => { + this.repeatInfo = {}; + this.setState({ + isShowModalBox: false, + }); + }; + + /** + * 录入成功的弹框 + */ + successModalConfirm = () => { + Modal.confirm({ + title: ( +
+ 录入成功!贡献榜火力值 + 1 +
+ ), + closable: false, + maskClosable: false, + icon: ' ', + onOk: this.onAgainSuccessModal, + onCancel: this.onGoHomeSuccessModal, + okText: '再录一题', + cancelText: '去首页', + className: 'questions-success-modal-confirm', + }); + }; + + /** + * 录入成功弹框-再来一题 + */ + onAgainSuccessModal = () => { + this.onCancel(); + }; + + /** + * 录入成功弹框-去首页 + */ + onGoHomeSuccessModal = () => { + // this.onCancel(); + window.location.href = '/cms-supplier/question-bank'; + }; + + /** + * 分类选择 + * @param {*} e + */ + onChangeRankLabel = (firstCategoryValue, secondCategoryValue, thirdCategoryValue) => { + this.firstCategoryValue = firstCategoryValue; // 一级分类的值 + this.secondCategoryValue = secondCategoryValue; // 二级分类的值 + this.thirdCategoryValue = thirdCategoryValue; // 三级标签的值 + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + + /** + * 职级选择 + * @param {*} list + */ + handleChangeRank = (list) => { + this.rankId = list[0]; + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + /** + * 选项操作 + * @param {*} currentActive 选项列表 + * @param {*} scoreValue 分值 + * @param {*} subjectAnalysis 解析 + */ + handleChangeOption = (currentActive, scoreValue, subjectAnalysis) => { + this.currentActive = currentActive; + this.scoreValue = scoreValue; + this.subjectAnalysis = subjectAnalysis; + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + + render() { + const { subjectName, isDisabledSubmit, isSubmit, isShowModalBox } = this.state; + const { questionsType } = this.props; + return ( + + +
+
题目名称:
+ this.onChangeSubjectName(e)} + /> +
+ { + this.optionInputBox = ref; + }} + isJudge={true} + handleChangeOption={this.handleChangeOption} + /> + { + this.rankLabelBox = ref; + }} + subjectName={subjectName} + onChangeRankLabel={this.onChangeRankLabel} + handleChangeRank={this.handleChangeRank} + /> +
+
+ 清空 +
+
+ 提交 +
+
+ +
+
+ ); + } +} diff --git a/src/views/upload-questions/components/judge-questions/index.less b/src/views/upload-questions/components/judge-questions/index.less new file mode 100644 index 0000000..c556327 --- /dev/null +++ b/src/views/upload-questions/components/judge-questions/index.less @@ -0,0 +1,52 @@ +.judge-questions-container { + width: 1000px; + display: flex; + align-items: center; + padding: 0 24px; + padding-top: 36px; + // label名字title + .judge-questions-title { + display: flex; + align-items: center; + justify-content: flex-end; + width: 140px; + line-height: 40px; + font-size: 16px; + color: rgba(51, 51, 51, 1); + &:before { + display: inline-block; + margin-right: 4px; + margin-top: 1px; + color: #f5222d; + font-size: 16px; + content: '*'; + } + } +} +.judge-questions-btns-container { + display: flex; + justify-content: flex-end; + align-items: center; + margin: 20px auto; + width: 952px; + .judge-questions-btn { + display: flex; + align-items: center; + justify-content: center; + width: 150px; + height: 40px; + font-size: 16px; + cursor: pointer; + border: 1px solid #d9d9d9; + border-radius: 10px; + } + .judge-questions-submit { + margin-left: 40px; + background-color: #4390f7; + color: #fff; + border: 1px solid #4390f7; + } + .judge-questions-disabled-submit { + opacity: 0.5; + } +} diff --git a/src/views/upload-questions/components/kind-editor/index.jsx b/src/views/upload-questions/components/kind-editor/index.jsx new file mode 100644 index 0000000..fdf7c91 --- /dev/null +++ b/src/views/upload-questions/components/kind-editor/index.jsx @@ -0,0 +1,153 @@ +import React, { Component } from 'react'; +import './index.less'; + +import Editor from 'wangeditor'; + +export default class KindEditor extends Component { + defaultValueHead = `
`; + defaultValueFoot = '
'; + editor = Editor; + + constructor(props) { + super(props); + this.state = { editorContent: '', isActive: false }; + } + + /** + * 清空内容 + */ + onClear = () => { + this.editor.txt.clear(); + this.editor.config.focus = false; + this.setState({ + isActive: false, + editorContent: '', + }); + }; + + /** + * 回现代码 + */ + onCashBack = () => { + let { cashBackText } = this.props; + if (!!!cashBackText) { + return; + } + this.editor.txt.html(`${cashBackText}`); + this.editor.config.focus = true; + }; + + /** + * 获得焦点 + */ + onFocus = () => { + this.editor.config.focus = true; + this.setState({ + isActive: true, + }); + }; + + componentDidMount() { + const elemMenu = this.refs.editorElemMenu; + const elemBody = this.refs.editorElemBody; + this.editor = new Editor(elemMenu, elemBody); + // // 使用 onchange 函数监听内容的变化,并实时更新到 state 中 + this.editor.config.onchange = (html) => { + let htmlStr = this.editor.txt.html(); + // console.log('htmlStr ---', htmlStr); + if (htmlStr?.indexOf('
+
+
+
+ ); + } +} + +KindEditor.defaultProps = { + bodyHeight: 320, + bodyWidth: '100%', + borderRadius: '4px', +}; diff --git a/src/views/upload-questions/components/kind-editor/index.less b/src/views/upload-questions/components/kind-editor/index.less new file mode 100644 index 0000000..5ff192c --- /dev/null +++ b/src/views/upload-questions/components/kind-editor/index.less @@ -0,0 +1,32 @@ +.text-area { + background-color: #fff; + font-size: 14px; + .editorelem-menu { + border: 1px solid #d9d9d9; + .w-e-menu-tooltip { + padding: 0px 6px; + line-height: 28px; + } + .w-e-toolbar { + z-index: 2 !important; + border-radius: 12px; + } + } + .editorelem-body { + width: 100%; + height: 100%; + padding: 0 10px 10px; + overflow-y: scroll; + border: 1px solid #d9d9d9; + border-top: none; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +} +.w-e-text-container { + z-index: 1 !important; +} +.kind-editor-active-box { + border: 1px solid #40a9ff; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} diff --git a/src/views/upload-questions/components/multiple-questions/index.jsx b/src/views/upload-questions/components/multiple-questions/index.jsx new file mode 100644 index 0000000..5e1aa98 --- /dev/null +++ b/src/views/upload-questions/components/multiple-questions/index.jsx @@ -0,0 +1,343 @@ +import React, { Component, Fragment } from 'react'; +import { Input, Modal, message, Spin } from 'antd'; +import _ from 'lodash'; +import req from '@utils/request'; +import { debounce } from '@utils'; +import KindEditor from '../kind-editor'; +import RankLabelBox from '../rank-label-box'; +import OptionInputBox from '../option-input-box'; +import RepeatContentBox from '../repeat-content-box'; +import { apiName } from '../../constant'; +import './index.less'; + +const defalutLabel = '请使用富文本编辑器输入选项内容'; +export default class MultipleQuestions extends Component { + constructor(props) { + super(props); + this.state = { + subjectName: '', // 题目 + isDisabledSubmit: true, //是否禁止输入 + isShowModalBox: false, // 是否展示重复率弹框 + isSubmit: true, // 是否支持提交 + }; + } + kindEditor = KindEditor | null; + rankLabelBox = RankLabelBox | null; + optionInputBox = OptionInputBox | null; + currentActive = []; // 选项列表 + scoreValue = ''; // 分数 + subjectAnalysis = ''; //试题解析 + rankId = 1; //职级 + subjectAnswer = ''; // 选项内容 + firstCategoryValue = ''; // 一级分类的值 + secondCategoryValue = []; // 二级分类的值 + thirdCategoryValue = []; // 三级标签的值 + repeatInfo = {}; // 重复率 + + /** + * 输入题目 + * @param {*} e + */ + onChangeSubjectName = (e) => { + let str = e.target.value.trim(); + this.setState( + { + subjectName: str, + }, + () => { + this.rankLabelBox.getThirdCategoryList(); + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + } + ); + }; + + /** + * 一次确认录入 + */ + onSubmit = debounce(() => { + const { subjectName, isDisabledSubmit, isSubmit } = this.state; + if (isDisabledSubmit || !isSubmit) { + return; + } + this.setState({ + isSubmit: false, + }); + let params = { + subjectName: subjectName, + difficulty: this.rankId, + subjectType: 2, + subjectScore: this.scoreValue, + subjectParse: this.subjectAnalysis, + categoryIds: this.secondCategoryValue, + labelIds: this.thirdCategoryValue, + optionList: this.currentActive, + }; + console.log('多选录入 ----', params); + req({ + method: 'post', + data: params, + url: apiName.addInterviewSubject, + }) + .then((res) => { + this.repeatInfo = {}; + if (res.data && res.data.insertStatus) { + this.setState( + { + isSubmit: true, + }, + () => { + this.successModalConfirm(); + } + ); + } else if (!res.data.insertStatus) { + this.repeatInfo = { + repeatDocId: res.data.docId, // 重复题目id + repeatRate: res.data.repeatRate, // 重复率 + repeatSubjectName: res.data.subjectName, // 重复题目 + repeatOptionList: res.data.optionList, // 重复列表项 + repeatSetterErp: res.data.subjectSetterErp, // 出题人erp + repeatSetterName: res.data.subjectSetterName, // 出题人姓名 + }; + this.setState({ + isShowModalBox: true, + isSubmit: true, + }); + } + }) + .catch((err) => { + this.setState({ + isSubmit: true, + }); + console.log(err); + }); + }); + + /** + * 校验是否支持点击按钮 + * @returns + */ + /** + * 校验是否支持点击按钮 + * @returns + */ + checkData = () => { + const { subjectName } = this.state; + let list = this.currentActive.filter((item) => item.optionContent === defalutLabel); + let isDisabledSubmit = false; + if ( + !!!subjectName || + list.length > 0 || + !!!this.firstCategoryValue || + this.secondCategoryValue.length <= 0 || + this.thirdCategoryValue.length <= 0 || + !!!this.scoreValue + ) { + isDisabledSubmit = true; + } + return isDisabledSubmit; + }; + + /** + * 取消 + */ + onCancel = () => { + this.currentActive = []; // 选项列表 + this.scoreValue = ''; // 分数 + this.subjectAnalysis = ''; //试题解析 + this.rankId = 1; + this.subjectAnswer = ''; // 选项内容 + this.firstCategoryValue = ''; // 一级分类的值 + this.secondCategoryValue = []; // 二级分类的值 + this.thirdCategoryValue = []; // 三级标签的值 + this.repeatInfo = {}; + this.kindEditor && this.kindEditor.onClear(); + this.rankLabelBox.initRankLabel(); + this.optionInputBox.handleClearOption(); + this.setState({ + subjectName: '', + isShowModalBox: false, + isSubmit: true, // 是否支持提交 + }); + }; + + /** + * 重复率弹框-确认录入 + */ + onSubmitRepeatModal = debounce( + () => { + let params = { + docId: this.repeatInfo.repeatDocId, + }; + req({ + method: 'post', + data: params, + url: apiName.addRepeatInterviewSubject, + }) + .then((res) => { + if (res.data) { + this.successModalConfirm(); + } else { + message.info('请再次确认'); + } + }) + .catch((err) => { + console.log(err); + message.error('请再次确认'); + }); + }, + 300, + true + ); + + /** + * 重复率弹框-取消录入 + */ + onCancelRepeatModal = () => { + this.repeatInfo = {}; + this.setState({ + isShowModalBox: false, + }); + }; + + /** + * 录入成功的弹框 + */ + successModalConfirm = () => { + Modal.confirm({ + title: ( +
+ 录入成功!贡献榜火力值 + 1 +
+ ), + closable: false, + maskClosable: false, + icon: ' ', + onOk: this.onAgainSuccessModal, + onCancel: this.onGoHomeSuccessModal, + okText: '再录一题', + cancelText: '去首页', + className: 'questions-success-modal-confirm', + }); + }; + + /** + * 录入成功弹框-再来一题 + */ + onAgainSuccessModal = () => { + this.onCancel(); + }; + + /** + * 录入成功弹框-去首页 + */ + onGoHomeSuccessModal = () => { + // this.onCancel(); + window.location.href = '/cms-supplier/question-bank'; + }; + + /** + * 分类选择 + * @param {*} e + */ + onChangeRankLabel = (firstCategoryValue, secondCategoryValue, thirdCategoryValue) => { + this.firstCategoryValue = firstCategoryValue; // 一级分类的值 + this.secondCategoryValue = secondCategoryValue; // 二级分类的值 + this.thirdCategoryValue = thirdCategoryValue; // 三级标签的值 + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + + /** + * 职级选择 + * @param {*} list + */ + handleChangeRank = (list) => { + this.rankId = list[0]; + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + + /** + * 选项操作 + * @param {*} currentActive 选项列表 + * @param {*} scoreValue 分值 + * @param {*} subjectAnalysis 解析 + */ + handleChangeOption = (currentActive, scoreValue, subjectAnalysis) => { + this.currentActive = currentActive; + this.scoreValue = scoreValue; + this.subjectAnalysis = subjectAnalysis; + let isDisabledSubmit = this.checkData(); + this.setState({ + isDisabledSubmit, + }); + }; + + render() { + const { subjectName, isDisabledSubmit, isSubmit, isShowModalBox } = this.state; + const { questionsType } = this.props; + return ( + + +
+
题目名称:
+ this.onChangeSubjectName(e)} + /> +
+ { + this.optionInputBox = ref; + }} + isMultiple={true} + handleChangeOption={this.handleChangeOption} + /> + { + this.rankLabelBox = ref; + }} + subjectName={subjectName} + onChangeRankLabel={this.onChangeRankLabel} + handleChangeRank={this.handleChangeRank} + /> +
+
+ 清空 +
+
+ 提交 +
+
+ +
+
+ ); + } +} + diff --git a/src/views/upload-questions/components/multiple-questions/index.less b/src/views/upload-questions/components/multiple-questions/index.less new file mode 100644 index 0000000..6a56304 --- /dev/null +++ b/src/views/upload-questions/components/multiple-questions/index.less @@ -0,0 +1,52 @@ +.multiple-questions-container { + width: 1000px; + display: flex; + align-items: center; + padding: 0 24px; + padding-top: 36px; + // label名字title + .multiple-questions-title { + display: flex; + align-items: center; + justify-content: flex-end; + width: 140px; + line-height: 40px; + font-size: 16px; + color: rgba(51, 51, 51, 1); + &:before { + display: inline-block; + margin-right: 4px; + margin-top: 1px; + color: #f5222d; + font-size: 16px; + content: '*'; + } + } +} +.multiple-questions-btns-container { + display: flex; + justify-content: flex-end; + align-items: center; + margin: 20px auto; + width: 952px; + .multiple-questions-btn { + display: flex; + align-items: center; + justify-content: center; + width: 150px; + height: 40px; + font-size: 16px; + cursor: pointer; + border: 1px solid #d9d9d9; + border-radius: 10px; + } + .multiple-questions-submit { + margin-left: 40px; + background-color: #4390f7; + color: #fff; + border: 1px solid #4390f7; + } + .multiple-questions-disabled-submit { + opacity: 0.5; + } +} diff --git a/src/views/upload-questions/components/option-input-box/index.jsx b/src/views/upload-questions/components/option-input-box/index.jsx new file mode 100644 index 0000000..de96709 --- /dev/null +++ b/src/views/upload-questions/components/option-input-box/index.jsx @@ -0,0 +1,438 @@ +import React, { Component, Fragment } from 'react'; +import { Input, message, Tooltip, Select } from 'antd'; +import _ from 'lodash'; +import { debounce } from '@utils'; +import { optionLetter } from '../../constant'; +import KindEditor from '../kind-editor'; +import './index.less'; +const { TextArea } = Input; +const { Option } = Select; +const defalutLabel = '请使用富文本编辑器输入选项内容'; +// 判断题 +const judgeList = [ + { + label: '错误', + value: 0, + }, + { + label: '正确', + value: 1, + }, +]; +const optionLetterLength = 7; // ABCD的长度 +const showDeleteLength = 3; // 展示删除icon的最短长度 +export default class OptionInputBox extends Component { + constructor(props) { + super(props); + this.state = { + optionList: [ + { + label: defalutLabel, + value: 1, + }, + { + label: defalutLabel, + value: 2, + }, + { + label: defalutLabel, + value: 3, + }, + { + label: defalutLabel, + value: 4, + }, + ], // 选项列表 + currentActiveList: [], // 当前选中的项 + scoreValue: '', // 分数 + subjectAnalysis: '', //试题解析 + }; + } + + kindEditor = KindEditor | null; + subjectAnswer = ''; // 选项内容 + + /** + * 新增/删除 + * @param {*} len + * @param {*} type add-新增 / del-删除 + * @returns + */ + onChangeAddOption = (len, type) => () => { + let { optionList, currentActiveList } = this.state; + let list = []; + // 新增 + if (type === 'add') { + if (len === optionLetterLength) { + return; + } + optionList.push({ label: defalutLabel, value: optionLetter[len].value }); + } else { + // 删除 + currentActiveList = []; + optionList.splice(len, 1); + // 重新初始化ABCD对应的id + list = optionList.map((item, index) => { + return { + label: item.label, + value: optionLetter[index].value, + }; + }); + } + this.setState( + { + optionList: type === 'add' ? optionList : list, + currentActiveList, + }, + () => { + this.handleChangeOption(); + } + ); + }; + + /** + * 确认/取消 编辑框 + * @param {*} index + * @param {*} type submit/cancel + * @returns + */ + onChangeOptEditor = (index, type) => () => { + let { optionList } = this.state; + this.kindEditor && this.kindEditor.onClear(); + if (type === 'submit') { + _.set( + optionList, + [index, 'label'], + !!this.subjectAnswer ? this.subjectAnswer : defalutLabel + ); + } + _.set(optionList, [index, 'isShowEditor'], false); + this.subjectAnswer = ''; + this.setState( + { + optionList, + }, + () => { + this.handleChangeOption(); + } + ); + }; + + /** + * 展开 编辑项 + * @param {*} index + * @returns + */ + onChangeShowEditor = (index) => + debounce(() => { + let { optionList } = this.state; + if (optionList.filter((item) => item.isShowEditor).length > 0) { + return message.info('请先确认正在编辑的选项内容'); + } + _.set(optionList, [index, 'isShowEditor'], true); + this.setState( + { + optionList, + }, + () => { + this.kindEditor && this.kindEditor.onCashBack(); + } + ); + }); + + /** + * 富文本编辑器 + * @param {*} e + */ + onChangeEditor = (index) => (e) => { + this.subjectAnswer = e; + }; + + /** + * 正确选项 + * @param {*} value + */ + onChangeSelect = (value) => { + const { isMultiple } = this.props; + let str = value; + if (!isMultiple) { + // 单选,格式化成数组 + str = [value]; + } + this.setState( + { + currentActiveList: str, + }, + () => { + this.handleChangeOption(); + } + ); + }; + + /** + * 本题分值 + */ + onChangeScore = (e) => { + this.setState( + { + scoreValue: e.target.value.trim(), + }, + () => { + this.handleChangeOption(); + } + ); + }; + + /** + * 试题解析 + * @param {*} e + */ + onChangeSubjectAnalysis = (e) => { + this.setState( + { + subjectAnalysis: e.target.value.trim(), + }, + () => { + this.handleChangeOption(); + } + ); + }; + + /** + * 清空 + */ + handleClearOption = () => { + this.subjectAnswer = ''; // 选项内容 + this.setState({ + optionList: [ + { + label: defalutLabel, + value: 1, + }, + { + label: defalutLabel, + value: 2, + }, + { + label: defalutLabel, + value: 3, + }, + { + label: defalutLabel, + value: 4, + }, + ], // 选项列表 + currentActiveList: [], // 当前选中的项 + scoreValue: '', // 分数 + subjectAnalysis: '', //试题解析 + }); + }; + + /** + * 向父组件传值 + */ + handleChangeOption = () => { + let { currentActiveList, scoreValue, subjectAnalysis, optionList } = this.state; + const { isJudge } = this.props; + let activeList = []; + if (!isJudge) { + // 单选/多选 + activeList = optionList.map((item) => { + let flag = 0; + if (currentActiveList.includes(item.value)) { + flag = 1; + } + return { + optionType: item.value, + optionContent: item.label, + isCorrect: flag, + }; + }); + } else { + // 判断 + activeList = currentActiveList; + } + console.log('向父组件传值', activeList, scoreValue, subjectAnalysis); + // this.props.handleChangeOption(activeList, scoreValue, subjectAnalysis); + this.props.handleChangeOption(activeList, 1, subjectAnalysis); + }; + + render() { + const { subjectAnalysis } = this.state; + const { isJudge } = this.props; + return ( + + {!isJudge && this.renderOption()} + {this.renderOptionBtn()} +
+
试题解析:
+