diff --git a/chenxuan1/package-lock.json b/chenxuan1/package-lock.json index a6fb66e69..0f1b873fb 100644 --- a/chenxuan1/package-lock.json +++ b/chenxuan1/package-lock.json @@ -39,6 +39,7 @@ "jest-resolve": "^27.4.2", "jest-watch-typeahead": "^1.0.0", "mini-css-extract-plugin": "^2.4.5", + "nanoid": "^5.0.7", "postcss": "^8.4.4", "postcss-flexbugs-fixes": "^5.0.2", "postcss-loader": "^6.2.1", @@ -2467,6 +2468,21 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", "resolved": "http://218.61.196.156:11694/argparse/-/argparse-2.0.1.tgz", @@ -2497,6 +2513,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/@eslint/js": { "version": "8.57.0", "resolved": "http://218.61.196.156:11694/@eslint/js/-/js-8.57.0.tgz", @@ -5644,13 +5665,13 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.12.0", + "resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" }, "funding": { @@ -5674,34 +5695,6 @@ } } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "http://218.61.196.156:11694/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -6289,6 +6282,34 @@ "webpack": ">=2" } }, + "node_modules/babel-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/babel-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/babel-loader/node_modules/schema-utils": { "version": "2.7.1", "resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-2.7.1.tgz", @@ -7269,21 +7290,6 @@ } } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -7295,11 +7301,6 @@ "ajv": "^8.8.2" } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { "version": "4.2.0", "resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz", @@ -8748,21 +8749,6 @@ "webpack": "^5.0.0" } }, - "node_modules/eslint-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -8795,11 +8781,6 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { "version": "4.2.0", "resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz", @@ -8832,6 +8813,21 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "http://218.61.196.156:11694/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8926,6 +8922,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/eslint/node_modules/levn": { "version": "0.4.1", "resolved": "http://218.61.196.156:11694/levn/-/levn-0.4.1.tgz", @@ -9505,6 +9506,29 @@ } } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "http://218.61.196.156:11694/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -9587,6 +9611,11 @@ "node": ">=8" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", "resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-2.7.0.tgz", @@ -14726,9 +14755,9 @@ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "version": "1.0.0", + "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -15169,21 +15198,6 @@ "webpack": "^5.0.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -15195,11 +15209,6 @@ "ajv": "^8.8.2" } }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { "version": "4.2.0", "resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz", @@ -15297,9 +15306,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "http://218.61.196.156:11694/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "5.0.7", + "resolved": "http://218.61.196.156:11694/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", "funding": [ { "type": "github", @@ -15307,10 +15316,10 @@ } ], "bin": { - "nanoid": "bin/nanoid.cjs" + "nanoid": "bin/nanoid.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^18 || >=20" } }, "node_modules/natural-compare": { @@ -17274,6 +17283,23 @@ "resolved": "http://218.61.196.156:11694/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "http://218.61.196.156:11694/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "http://218.61.196.156:11694/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -18970,6 +18996,34 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/scroll-into-view-if-needed": { "version": "2.2.31", "resolved": "http://218.61.196.156:11694/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", @@ -20283,6 +20337,19 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "http://218.61.196.156:11694/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "http://218.61.196.156:11694/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -20625,21 +20692,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.12.0", - "resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -20651,11 +20703,6 @@ "ajv": "^8.8.2" } }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { "version": "4.2.0", "resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz", @@ -20732,21 +20779,6 @@ } } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", - "resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/webpack-dev-server/node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -20758,11 +20790,6 @@ "ajv": "^8.8.2" } }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/webpack-dev-server/node_modules/schema-utils": { "version": "4.2.0", "resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz", @@ -21069,21 +21096,6 @@ "node": ">=10.0.0" } }, - "node_modules/workbox-build/node_modules/ajv": { - "version": "8.12.0", - "resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/workbox-build/node_modules/fs-extra": { "version": "9.1.0", "resolved": "http://218.61.196.156:11694/fs-extra/-/fs-extra-9.1.0.tgz", @@ -21098,11 +21110,6 @@ "node": ">=10" } }, - "node_modules/workbox-build/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/workbox-build/node_modules/source-map": { "version": "0.8.0-beta.0", "resolved": "http://218.61.196.156:11694/source-map/-/source-map-0.8.0-beta.0.tgz", diff --git a/chenxuan1/package.json b/chenxuan1/package.json index 75249dfd3..5a99ce6ca 100644 --- a/chenxuan1/package.json +++ b/chenxuan1/package.json @@ -34,6 +34,7 @@ "jest-resolve": "^27.4.2", "jest-watch-typeahead": "^1.0.0", "mini-css-extract-plugin": "^2.4.5", + "nanoid": "^5.0.7", "postcss": "^8.4.4", "postcss-flexbugs-fixes": "^5.0.2", "postcss-loader": "^6.2.1", diff --git a/chenxuan1/src/pages/todo/Footer/index.jsx b/chenxuan1/src/pages/todo/Footer/index.jsx index cbaf013ba..df6b007ba 100644 --- a/chenxuan1/src/pages/todo/Footer/index.jsx +++ b/chenxuan1/src/pages/todo/Footer/index.jsx @@ -1,5 +1,12 @@ import React from "react"; +import PropTypes from 'prop-types' class Footer extends React.Component { + static propTypes={ + todos:PropTypes.array.isRequired + } + static dfaultProps={ + todos:[] + } handleCheckAll=()=>{ } @@ -8,11 +15,16 @@ class Footer extends React.Component { } render(){ const {todos}=this.props + const doneCount = todos.reduce((pre,todo)=> pre + (todo.done ? 1 : 0),0) + const total = todos.length return (
+
  • + 已完成{doneCount} / 全部{total} +
  • ) diff --git a/chenxuan1/src/pages/todo/Item/index.jsx b/chenxuan1/src/pages/todo/Item/index.jsx index 1e3fab74c..4e8384cd5 100644 --- a/chenxuan1/src/pages/todo/Item/index.jsx +++ b/chenxuan1/src/pages/todo/Item/index.jsx @@ -1,9 +1,18 @@ import React from "react"; class Footer extends React.Component { + state={mouse:false} + handleMouse=(flag)=>{ + this.setState({mouse:flag}) + } render(){ + const {done,name,id}=this.props; return ( -
    -

    Item

    +
    + +
    ) } diff --git a/chenxuan1/src/pages/todo/List/index.jsx b/chenxuan1/src/pages/todo/List/index.jsx index b300fae10..48054c0fa 100644 --- a/chenxuan1/src/pages/todo/List/index.jsx +++ b/chenxuan1/src/pages/todo/List/index.jsx @@ -1,9 +1,27 @@ import React from "react"; +import Item from "../Item/index" +import PropTypes from 'prop-types' class Footer extends React.Component { + static propTypes={ + todos:PropTypes.array.isRequired, + deleteTodo:PropTypes.func.isRequired, + updateTodo:PropTypes.func.isRequired + } + static defaultProps={ + todos:[], + deleteTodo:()=>{}, + updateTodo:()=>{} + } render(){ + const {todos,deleteTodo,updateTodo}=this.props + console.log(todos) return ( -
    -

    List

    +
    + {/* { + todos.map((i)=>{ + return + }) + } */}
    ) } diff --git a/chenxuan1/src/pages/todo/dist/style.css b/chenxuan1/src/pages/todo/dist/style.css index beed7a917..912b752c9 100644 --- a/chenxuan1/src/pages/todo/dist/style.css +++ b/chenxuan1/src/pages/todo/dist/style.css @@ -5,25 +5,24 @@ border: 1px solid #eee; margin: 100px auto 0; } - -.todo-footer { +.todo .todo-footer { height: 40px; line-height: 40px; padding-left: 6px; margin-top: 5px; } -.todo-footer label { +.todo .todo-footer label { display: inline-block; margin-right: 20px; cursor: pointer; } -.todo-footer label input { +.todo .todo-footer label input { position: relative; top: -1px; vertical-align: middle; margin-right: 5px; } -.todo-footer button { +.todo .todo-footer button { float: right; margin-top: 5px; } \ No newline at end of file diff --git a/chenxuan1/src/pages/todo/header/index.jsx b/chenxuan1/src/pages/todo/header/index.jsx index a77fb655e..0e7f5390d 100644 --- a/chenxuan1/src/pages/todo/header/index.jsx +++ b/chenxuan1/src/pages/todo/header/index.jsx @@ -1,9 +1,32 @@ import React from "react"; +import { Input } from 'antd'; +import {nanoid} from 'nanoid'; +import PropTypes from 'prop-types' class Footer extends React.Component { + static propTypes={ + addTodo:PropTypes.func.isRequired + } + static defaultProps={ + addTodo:()=>{} + } + componentDidMount(){ + // this.props.addTodo({id:nanoid(),name:"测试",done:false}); + } + handleKeyUp=(e)=>{ + const {keyCode,target} = e; + if(keyCode !== 13) return + if(target.value.trim() === ''){ + alert('输入不能为空') + return + } + const todoObj={id:nanoid(),name:target.value,done:false} + this.props.addTodo(todoObj); + target.value='' + } render(){ return ( -
    -

    header

    +
    +
    ) } diff --git a/chenxuan1/src/pages/todo/index.jsx b/chenxuan1/src/pages/todo/index.jsx index 2a9b5256c..fcd27251b 100644 --- a/chenxuan1/src/pages/todo/index.jsx +++ b/chenxuan1/src/pages/todo/index.jsx @@ -2,17 +2,29 @@ import React from "react"; import Footer from "./Footer/index"; import Headers from "./header/index"; import List from "./List/index"; -import Item from "./Item/index"; import "./style.scss"; class App extends React.Component { + state = {todos:[ + {id:'001',name:'吃饭',done:true}, + {id:'002',name:'睡觉',done:true}, + {id:'003',name:'打代码',done:false}, + {id:'004',name:'逛街',done:false} + ]} + updateTodo=()=>{ + + } + deleteTodo=()=>{ + + } + addTodo=()=>{ + + } render() { return (
    - - - - -
    + + +
    ); } diff --git a/chenxuan1/src/pages/todo/style.css b/chenxuan1/src/pages/todo/style.css index 50d4dcfe9..65ea32c7a 100644 --- a/chenxuan1/src/pages/todo/style.css +++ b/chenxuan1/src/pages/todo/style.css @@ -6,27 +6,27 @@ margin: 100px auto 0; } -.todo-footer { +.todo .todo-footer { height: 40px; line-height: 40px; padding-left: 6px; margin-top: 5px; } -.todo-footer label { +.todo .todo-footer label { display: inline-block; margin-right: 20px; cursor: pointer; } -.todo-footer label input { +.todo .todo-footer label input { position: relative; top: -1px; vertical-align: middle; margin-right: 5px; } -.todo-footer button { +.todo .todo-footer button { float: right; margin-top: 5px; } diff --git a/chenxuan1/src/pages/todo/style.min.css b/chenxuan1/src/pages/todo/style.min.css index 23fb2349a..8bb767d92 100644 --- a/chenxuan1/src/pages/todo/style.min.css +++ b/chenxuan1/src/pages/todo/style.min.css @@ -1 +1 @@ -.todo{box-sizing:border-box;width:660px;padding:12px;border:1px solid #eee;margin:100px auto 0}.todo-footer{height:40px;line-height:40px;padding-left:6px;margin-top:5px}.todo-footer label{display:inline-block;margin-right:20px;cursor:pointer}.todo-footer label input{position:relative;top:-1px;vertical-align:middle;margin-right:5px}.todo-footer button{float:right;margin-top:5px} +.todo{box-sizing:border-box;width:660px;padding:12px;border:1px solid #eee;margin:100px auto 0}.todo .todo-footer{height:40px;line-height:40px;padding-left:6px;margin-top:5px}.todo .todo-footer label{display:inline-block;margin-right:20px;cursor:pointer}.todo .todo-footer label input{position:relative;top:-1px;vertical-align:middle;margin-right:5px}.todo .todo-footer button{float:right;margin-top:5px} diff --git a/chenxuan1/src/pages/todo/style.scss b/chenxuan1/src/pages/todo/style.scss index 1a47fa3d0..fd302b782 100644 --- a/chenxuan1/src/pages/todo/style.scss +++ b/chenxuan1/src/pages/todo/style.scss @@ -5,26 +5,30 @@ padding: 12px; border: 1px solid #eee; margin: 100px auto 0; -} -.todo-footer { - height: 40px; - line-height: 40px; - padding-left: 6px; - margin-top: 5px; - label{ - display: inline-block; - margin-right: 20px; - cursor: pointer; - input{ - position: relative; - top: -1px; - vertical-align: middle; - margin-right: 5px; + .todo-header{ + + } + .todo-footer { + height: 40px; + line-height: 40px; + padding-left: 6px; + margin-top: 5px; + label{ + display: inline-block; + margin-right: 20px; + cursor: pointer; + input{ + position: relative; + top: -1px; + vertical-align: middle; + margin-right: 5px; + } + } + button{ + float: right; + margin-top: 5px; } } - button{ - float: right; - margin-top: 5px; - } } + \ No newline at end of file