diff --git a/package-lock.json b/package-lock.json
index fcbde78d..d349ca7b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -29,6 +29,7 @@
"html2canvas": "^1.4.1",
"i18next": "^22.4.10",
"i18next-browser-languagedetector": "^7.0.1",
+ "jszip": "^3.10.1",
"ktx2-encoder": "^0.0.6",
"load-script": "^1.0.0",
"postprocessing": "^6.29.1",
@@ -36,6 +37,7 @@
"react-color": "^2.19.3",
"react-colorful": "^5.6.1",
"react-dom": "^18.2.0",
+ "react-dropdown": "^1.11.0",
"react-i18next": "^12.1.5",
"react-scripts": "^5.0.0",
"sepia-speechrecognition-polyfill": "^1.0.0",
@@ -85,22 +87,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/@apideck/better-ajv-errors": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
- "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
- "dependencies": {
- "json-schema": "^0.4.0",
- "jsonpointer": "^5.0.0",
- "leven": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "ajv": ">=8"
- }
- },
"node_modules/@babel/code-frame": {
"version": "7.24.2",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
@@ -310,9 +296,9 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
- "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz",
+ "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==",
"dependencies": {
"@babel/helper-compilation-targets": "^7.22.6",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -2447,534 +2433,197 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@esbuild/android-arm": {
+ "node_modules/@esbuild/win32-x64": {
"version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
- "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+ "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
"cpu": [
- "arm"
+ "x64"
],
- "dev": true,
"optional": true,
"os": [
- "android"
+ "win32"
],
"engines": {
"node": ">=12"
}
},
- "node_modules/@esbuild/android-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
- "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
"engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@esbuild/android-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
- "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
"engines": {
- "node": ">=12"
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
- "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz",
+ "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.4.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
"engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
- "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
- "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "node_modules/@eslint/js": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz",
+ "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==",
"engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
- "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
+ "node_modules/@ethersproject/abi": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz",
+ "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
],
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "@ethersproject/address": "^5.7.0",
+ "@ethersproject/bignumber": "^5.7.0",
+ "@ethersproject/bytes": "^5.7.0",
+ "@ethersproject/constants": "^5.7.0",
+ "@ethersproject/hash": "^5.7.0",
+ "@ethersproject/keccak256": "^5.7.0",
+ "@ethersproject/logger": "^5.7.0",
+ "@ethersproject/properties": "^5.7.0",
+ "@ethersproject/strings": "^5.7.0"
}
},
- "node_modules/@esbuild/linux-arm": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
- "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
+ "node_modules/@ethersproject/abstract-provider": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz",
+ "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
],
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.7.0",
+ "@ethersproject/bytes": "^5.7.0",
+ "@ethersproject/logger": "^5.7.0",
+ "@ethersproject/networks": "^5.7.0",
+ "@ethersproject/properties": "^5.7.0",
+ "@ethersproject/transactions": "^5.7.0",
+ "@ethersproject/web": "^5.7.0"
}
},
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
- "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
+ "node_modules/@ethersproject/abstract-signer": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz",
+ "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
],
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "@ethersproject/abstract-provider": "^5.7.0",
+ "@ethersproject/bignumber": "^5.7.0",
+ "@ethersproject/bytes": "^5.7.0",
+ "@ethersproject/logger": "^5.7.0",
+ "@ethersproject/properties": "^5.7.0"
}
},
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
- "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
+ "node_modules/@ethersproject/address": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz",
+ "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
],
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.7.0",
+ "@ethersproject/bytes": "^5.7.0",
+ "@ethersproject/keccak256": "^5.7.0",
+ "@ethersproject/logger": "^5.7.0",
+ "@ethersproject/rlp": "^5.7.0"
}
},
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
- "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
+ "node_modules/@ethersproject/base64": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz",
+ "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
- "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
- "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
- "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
- "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
- "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
- "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
- "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
- "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
- "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
- "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
- "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz",
- "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.4.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.35.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz",
- "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@ethersproject/abi": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz",
- "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==",
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
- }
- },
- "node_modules/@ethersproject/abstract-provider": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz",
- "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/networks": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/web": "^5.7.0"
- }
- },
- "node_modules/@ethersproject/abstract-signer": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz",
- "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==",
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0"
- }
- },
- "node_modules/@ethersproject/address": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz",
- "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==",
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/rlp": "^5.7.0"
- }
- },
- "node_modules/@ethersproject/base64": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz",
- "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==",
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/bytes": "^5.7.0"
+ "dependencies": {
+ "@ethersproject/bytes": "^5.7.0"
}
},
"node_modules/@ethersproject/basex": {
@@ -5196,97 +4845,68 @@
"resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.1.tgz",
"integrity": "sha512-yBcyfKUeZv9wf/ZFrQszvhSPuDx6Py6yMJzpMnS+zxcZmhXPeOCKZSHwqrUz1WxvuRckUhlgb7eNI/x5e1e8CA=="
},
- "node_modules/@rollup/plugin-babel": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
- "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
+ "node_modules/@react-three/fiber": {
+ "version": "8.16.1",
+ "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.16.1.tgz",
+ "integrity": "sha512-Rgjn+xcR+6Do2Ic4b6RROIvCGs3RhoVJEamfmtMSfkgIRH3PeiPdqRxcfJlO9y6KDvYA5fIUGruz9h/sTeLlpw==",
+ "peer": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.10.4",
- "@rollup/pluginutils": "^3.1.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0",
- "@types/babel__core": "^7.1.9",
- "rollup": "^1.20.0||^2.0.0"
+ "@babel/runtime": "^7.17.8",
+ "@types/react-reconciler": "^0.26.7",
+ "@types/webxr": "*",
+ "base64-js": "^1.5.1",
+ "buffer": "^6.0.3",
+ "its-fine": "^1.0.6",
+ "react-reconciler": "^0.27.0",
+ "react-use-measure": "^2.1.1",
+ "scheduler": "^0.21.0",
+ "suspend-react": "^0.1.3",
+ "zustand": "^3.7.1"
+ },
+ "peerDependencies": {
+ "expo": ">=43.0",
+ "expo-asset": ">=8.4",
+ "expo-file-system": ">=11.0",
+ "expo-gl": ">=11.0",
+ "react": ">=18.0",
+ "react-dom": ">=18.0",
+ "react-native": ">=0.64",
+ "three": ">=0.133"
},
"peerDependenciesMeta": {
- "@types/babel__core": {
+ "expo": {
+ "optional": true
+ },
+ "expo-asset": {
+ "optional": true
+ },
+ "expo-file-system": {
+ "optional": true
+ },
+ "expo-gl": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
"optional": true
}
}
},
- "node_modules/@rollup/plugin-node-resolve": {
- "version": "11.2.1",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
- "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
+ "node_modules/@react-three/fiber/node_modules/scheduler": {
+ "version": "0.21.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
+ "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
+ "peer": true,
"dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "@types/resolve": "1.17.1",
- "builtin-modules": "^3.1.0",
- "deepmerge": "^4.2.2",
- "is-module": "^1.0.0",
- "resolve": "^1.19.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- },
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0"
- }
- },
- "node_modules/@rollup/plugin-replace": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
- "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
- "dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "magic-string": "^0.25.7"
- },
- "peerDependencies": {
- "rollup": "^1.20.0 || ^2.0.0"
- }
- },
- "node_modules/@rollup/plugin-replace/node_modules/magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dependencies": {
- "sourcemap-codec": "^1.4.8"
- }
- },
- "node_modules/@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
- "dependencies": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
- },
- "engines": {
- "node": ">= 8.0.0"
- },
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0"
+ "loose-envify": "^1.1.0"
}
},
- "node_modules/@rollup/pluginutils/node_modules/@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
- },
- "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="
- },
"node_modules/@rushstack/eslint-patch": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz",
- "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw=="
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz",
+ "integrity": "sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg=="
},
"node_modules/@sinclair/typebox": {
"version": "0.24.51",
@@ -5561,150 +5181,6 @@
"@swc/core-win32-x64-msvc": "1.3.38"
}
},
- "node_modules/@swc/core-darwin-arm64": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.38.tgz",
- "integrity": "sha512-4ZTJJ/cR0EsXW5UxFCifZoGfzQ07a8s4ayt1nLvLQ5QoB1GTAf9zsACpvWG8e7cmCR0L76R5xt8uJuyr+noIXA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-darwin-x64": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.38.tgz",
- "integrity": "sha512-Kim727rNo4Dl8kk0CR8aJQe4zFFtsT1TZGlNrNMUgN1WC3CRX7dLZ6ZJi/VVcTG1cbHp5Fp3mUzwHsMxEh87Mg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-arm-gnueabihf": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.38.tgz",
- "integrity": "sha512-yaRdnPNU2enlJDRcIMvYVSyodY+Amhf5QuXdUbAj6rkDD6wUs/s9C6yPYrFDmoTltrG+nBv72mUZj+R46wVfSw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-arm64-gnu": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.38.tgz",
- "integrity": "sha512-iNY1HqKo/wBSu3QOGBUlZaLdBP/EHcwNjBAqIzpb8J64q2jEN02RizqVW0mDxyXktJ3lxr3g7VW9uqklMeXbjQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-arm64-musl": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.38.tgz",
- "integrity": "sha512-LJCFgLZoPRkPCPmux+Q5ctgXRp6AsWhvWuY61bh5bIPBDlaG9pZk94DeHyvtiwT0syhTtXb2LieBOx6NqN3zeA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-x64-gnu": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.38.tgz",
- "integrity": "sha512-hRQGRIWHmv2PvKQM/mMV45mVXckM2+xLB8TYLLgUG66mmtyGTUJPyxjnJkbI86WNGqo18k+lAuMG2mn6QmzYwQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-linux-x64-musl": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.38.tgz",
- "integrity": "sha512-PTYSqtsIfPHLKDDNbueI5e0sc130vyHRiFOeeC6qqzA2FAiVvIxuvXHLr0soPvKAR1WyhtYmFB9QarcctemL2w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-win32-arm64-msvc": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.38.tgz",
- "integrity": "sha512-9lHfs5TPNs+QdkyZFhZledSmzBEbqml/J1rqPSb9Fy8zB6QlspixE6OLZ3nTlUOdoGWkcTTdrOn77Sd7YGf1AA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@swc/core-win32-ia32-msvc": {
- "version": "1.3.38",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.38.tgz",
- "integrity": "sha512-SbL6pfA2lqvDKnwTHwOfKWvfHAdcbAwJS4dBkFidr7BiPTgI5Uk8wAPcRb8mBECpmIa9yFo+N0cAFRvMnf+cNw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@swc/core-win32-x64-msvc": {
"version": "1.3.38",
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.38.tgz",
@@ -5784,9 +5260,9 @@
}
},
"node_modules/@types/better-sqlite3": {
- "version": "7.6.10",
- "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.10.tgz",
- "integrity": "sha512-TZBjD+yOsyrUJGmcUj6OS3JADk3+UZcNv3NOBqGkM09bZdi28fNZw8ODqbMOLfKCu7RYCO62/ldq1iHbzxqoPw==",
+ "version": "7.6.9",
+ "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.9.tgz",
+ "integrity": "sha512-FvktcujPDj9XKMJQWFcl2vVl7OdRIqsSRX9b0acWwTmwLK9CF2eqo/FRcmMLNpugKoX/avA6pb7TorDLmpgTnQ==",
"dependencies": {
"@types/node": "*"
}
@@ -5826,9 +5302,9 @@
}
},
"node_modules/@types/eslint": {
- "version": "8.56.10",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
- "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
+ "version": "8.56.7",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz",
+ "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -5933,12 +5409,9 @@
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="
},
"node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
- "dependencies": {
- "undici-types": "~5.26.4"
- }
+ "version": "18.14.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz",
+ "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA=="
},
"node_modules/@types/node-forge": {
"version": "1.3.11",
@@ -5958,21 +5431,46 @@
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
"integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA=="
},
+ "node_modules/@types/prop-types": {
+ "version": "15.7.12",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz",
+ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==",
+ "peer": true
+ },
"node_modules/@types/q": {
"version": "1.5.8",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz",
"integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw=="
},
"node_modules/@types/qs": {
- "version": "6.9.15",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz",
- "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg=="
+ "version": "6.9.14",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz",
+ "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA=="
},
"node_modules/@types/range-parser": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
"integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
},
+ "node_modules/@types/react": {
+ "version": "18.2.74",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz",
+ "integrity": "sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==",
+ "peer": true,
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-reconciler": {
+ "version": "0.26.7",
+ "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz",
+ "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==",
+ "peer": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/resolve": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
@@ -6036,11 +5534,26 @@
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
"integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw=="
},
+ "node_modules/@types/three": {
+ "version": "0.149.0",
+ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.149.0.tgz",
+ "integrity": "sha512-fgNBm9LWc65ER/W0cvoXdC0iMy7Ke9e2CONmEr6Jt8sDSY3sw4DgOubZfmdZ747dkPhbQrgRQAWwDEr2S/7IEg==",
+ "peer": true,
+ "dependencies": {
+ "@types/webxr": "*"
+ }
+ },
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
},
+ "node_modules/@types/webxr": {
+ "version": "0.5.15",
+ "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.15.tgz",
+ "integrity": "sha512-nC9116Gd4N+CqTxqo6gvCfhAMAzgRcfS8ZsciNodHq8uwW4JCVKwhagw8yN0XmC7mHrLnWqniJpoVEiR+72Drw==",
+ "peer": true
+ },
"node_modules/@types/ws": {
"version": "8.5.10",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
@@ -7327,12 +6840,12 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
- "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+ "version": "0.4.10",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz",
+ "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==",
"dependencies": {
"@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "@babel/helper-define-polyfill-provider": "^0.6.1",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -7360,11 +6873,11 @@
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
- "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz",
+ "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2"
+ "@babel/helper-define-polyfill-provider": "^0.6.1"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -7726,9 +7239,9 @@
}
},
"node_modules/builtins": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz",
- "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
+ "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
"dependencies": {
"semver": "^7.0.0"
}
@@ -7856,9 +7369,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001612",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz",
- "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==",
+ "version": "1.0.30001606",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001606.tgz",
+ "integrity": "sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg==",
"funding": [
{
"type": "opencollective",
@@ -8195,9 +7708,9 @@
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"node_modules/core-js": {
- "version": "3.37.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz",
- "integrity": "sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==",
+ "version": "3.36.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz",
+ "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -8205,9 +7718,9 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.37.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz",
- "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==",
+ "version": "3.36.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz",
+ "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==",
"dependencies": {
"browserslist": "^4.23.0"
},
@@ -8217,9 +7730,9 @@
}
},
"node_modules/core-js-pure": {
- "version": "3.37.0",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.0.tgz",
- "integrity": "sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==",
+ "version": "3.36.1",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.36.1.tgz",
+ "integrity": "sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -8333,70 +7846,6 @@
"utrie": "^1.0.2"
}
},
- "node_modules/css-loader": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
- "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==",
- "dependencies": {
- "icss-utils": "^5.1.0",
- "postcss": "^8.4.33",
- "postcss-modules-extract-imports": "^3.1.0",
- "postcss-modules-local-by-default": "^4.0.5",
- "postcss-modules-scope": "^3.2.0",
- "postcss-modules-values": "^4.0.0",
- "postcss-value-parser": "^4.2.0",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": ">= 12.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x",
- "webpack": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- },
- "webpack": {
- "optional": true
- }
- }
- },
- "node_modules/css-loader/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/css-loader/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/css-loader/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/css-minimizer-webpack-plugin": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz",
@@ -8506,18 +7955,14 @@
}
},
"node_modules/css-select": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
- "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
"dependencies": {
"boolbase": "^1.0.0",
- "css-what": "^6.0.1",
- "domhandler": "^4.3.1",
- "domutils": "^2.8.0",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
}
},
"node_modules/css-select-base-adapter": {
@@ -8556,9 +8001,9 @@
}
},
"node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
+ "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
"engines": {
"node": ">= 6"
},
@@ -8722,6 +8167,12 @@
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
},
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "peer": true
+ },
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -8820,6 +8271,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/debounce": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
+ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
+ "peer": true
+ },
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -9050,19 +8507,15 @@
}
},
"node_modules/dom-serializer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
"dependencies": {
"domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
"entities": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
- "node_modules/domelementtype": {
+ "node_modules/dom-serializer/node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
@@ -9073,6 +8526,11 @@
}
]
},
+ "node_modules/domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
+ },
"node_modules/domexception": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
@@ -9107,17 +8565,24 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/domhandler/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
"node_modules/domutils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
"dependencies": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
+ "dom-serializer": "0",
+ "domelementtype": "1"
}
},
"node_modules/dot-case": {
@@ -9158,9 +8623,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/ejs": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
- "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
+ "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
"dependencies": {
"jake": "^10.8.5"
},
@@ -9172,9 +8637,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.750",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz",
- "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA=="
+ "version": "1.4.729",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.729.tgz",
+ "integrity": "sha512-bx7+5Saea/qu14kmPTDHQxkp2UnziG3iajUQu3BxFvCOnpAJdDbMV4rSl+EqFDkkpNNVUFlR1kDfpL59xfy1HA=="
},
"node_modules/elliptic": {
"version": "6.5.4",
@@ -9352,13 +8817,13 @@
}
},
"node_modules/es-iterator-helpers": {
- "version": "1.0.19",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz",
- "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==",
+ "version": "1.0.18",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz",
+ "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.3",
+ "es-abstract": "^1.23.0",
"es-errors": "^1.3.0",
"es-set-tostringtag": "^2.0.3",
"function-bind": "^1.1.2",
@@ -9432,7 +8897,6 @@
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
- "dev": true,
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
@@ -9805,9 +9269,9 @@
}
},
"node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
- "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
+ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
"engines": {
"node": ">=10"
},
@@ -10889,19 +10353,6 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -11440,37 +10891,6 @@
"resolved": "https://registry.npmjs.org/html-rewriter-wasm/-/html-rewriter-wasm-0.4.1.tgz",
"integrity": "sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q=="
},
- "node_modules/html-webpack-plugin": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz",
- "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==",
- "dependencies": {
- "@types/html-minifier-terser": "^6.0.0",
- "html-minifier-terser": "^6.0.2",
- "lodash": "^4.17.21",
- "pretty-error": "^4.0.0",
- "tapable": "^2.0.0"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/html-webpack-plugin"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x",
- "webpack": "^5.20.0"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- },
- "webpack": {
- "optional": true
- }
- }
- },
"node_modules/html2canvas": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
@@ -11501,6 +10921,43 @@
"entities": "^2.0.0"
}
},
+ "node_modules/htmlparser2/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/htmlparser2/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
"node_modules/http-cache-semantics": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
@@ -11695,6 +11152,11 @@
"node": ">= 4"
}
},
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+ },
"node_modules/immer": {
"version": "9.0.21",
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
@@ -11708,7 +11170,7 @@
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
"integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==",
- "dev": true
+ "devOptional": true
},
"node_modules/import-fresh": {
"version": "3.3.0",
@@ -11784,9 +11246,9 @@
}
},
"node_modules/ipaddr.js": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
- "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz",
+ "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==",
"engines": {
"node": ">= 10"
}
@@ -12391,6 +11853,27 @@
"set-function-name": "^2.0.1"
}
},
+ "node_modules/its-fine": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.1.3.tgz",
+ "integrity": "sha512-mncCA+yb6tuh5zK26cHqKlsSyxm4zdm4YgJpxycyx6p9fgxgK5PLu3iDVpKhzTn57Yrv3jk/r0aK0RFTT1OjFw==",
+ "peer": true,
+ "dependencies": {
+ "@types/react-reconciler": "^0.28.0"
+ },
+ "peerDependencies": {
+ "react": ">=18.0"
+ }
+ },
+ "node_modules/its-fine/node_modules/@types/react-reconciler": {
+ "version": "0.28.8",
+ "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.8.tgz",
+ "integrity": "sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==",
+ "peer": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/jackspeak": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
@@ -14214,9 +13697,9 @@
}
},
"node_modules/jest-watch-typeahead/node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
},
"node_modules/jest-watch-typeahead/node_modules/slash": {
"version": "4.0.0",
@@ -14615,18 +14098,61 @@
"node": ">=0.10.0"
}
},
- "node_modules/jsx-ast-utils": {
- "version": "3.3.5",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
- "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dependencies": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "node_modules/jszip/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/jszip/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/jszip/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/jszip/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "object.assign": "^4.1.4",
- "object.values": "^1.1.6"
- },
- "engines": {
- "node": ">=4.0"
+ "safe-buffer": "~5.1.0"
}
},
"node_modules/kind-of": {
@@ -14721,6 +14247,14 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
+ },
"node_modules/lilconfig": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@@ -14981,9 +14515,9 @@
}
},
"node_modules/mini-css-extract-plugin": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz",
- "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==",
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz",
+ "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==",
"dependencies": {
"schema-utils": "^4.0.0",
"tapable": "^2.2.1"
@@ -15457,20 +14991,17 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
"dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
+ "boolbase": "~1.0.0"
}
},
"node_modules/nwsapi": {
- "version": "2.2.9",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz",
- "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg=="
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
+ "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ=="
},
"node_modules/object-assign": {
"version": "4.1.1",
@@ -15725,6 +15256,11 @@
"node": ">=6"
}
},
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@@ -15834,9 +15370,9 @@
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz",
- "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
"engines": {
"node": "14 || >=16.14"
}
@@ -17209,6 +16745,21 @@
"node": ">= 10"
}
},
+ "node_modules/postcss-svgo/node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/postcss-svgo/node_modules/css-tree": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
@@ -17221,11 +16772,70 @@
"node": ">=8.0.0"
}
},
+ "node_modules/postcss-svgo/node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/postcss-svgo/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/postcss-svgo/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/postcss-svgo/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
"node_modules/postcss-svgo/node_modules/mdn-data": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
},
+ "node_modules/postcss-svgo/node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
"node_modules/postcss-svgo/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -17742,6 +17352,18 @@
"react": "^18.2.0"
}
},
+ "node_modules/react-dropdown": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/react-dropdown/-/react-dropdown-1.11.0.tgz",
+ "integrity": "sha512-E2UWetRPxNdIhQahXw6b984ME7WmcgDj9AEAjrtS/oyLCFVo+2qkCfcS06C22JR0Zj+YLnygwv0Ozf6VKKDq7g==",
+ "dependencies": {
+ "classnames": "^2.2.3"
+ },
+ "peerDependencies": {
+ "react": "^0.14.7 || ^15.0.0-0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^0.14.7 || ^15.0.0-0 || ^16.0.0 || ^17.0.0|| ^18.0.0"
+ }
+ },
"node_modules/react-error-overlay": {
"version": "6.0.11",
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
@@ -17773,6 +17395,31 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "node_modules/react-reconciler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz",
+ "integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.21.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0"
+ }
+ },
+ "node_modules/react-reconciler/node_modules/scheduler": {
+ "version": "0.21.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
+ "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
"node_modules/react-refresh": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
@@ -17853,6 +17500,40 @@
}
}
},
+ "node_modules/react-scripts/node_modules/css-loader": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
+ "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==",
+ "dependencies": {
+ "icss-utils": "^5.1.0",
+ "postcss": "^8.4.33",
+ "postcss-modules-extract-imports": "^3.1.0",
+ "postcss-modules-local-by-default": "^4.0.5",
+ "postcss-modules-scope": "^3.2.0",
+ "postcss-modules-values": "^4.0.0",
+ "postcss-value-parser": "^4.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-scripts/node_modules/fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
@@ -17866,6 +17547,37 @@
"node": ">=12"
}
},
+ "node_modules/react-scripts/node_modules/html-webpack-plugin": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz",
+ "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==",
+ "dependencies": {
+ "@types/html-minifier-terser": "^6.0.0",
+ "html-minifier-terser": "^6.0.2",
+ "lodash": "^4.17.21",
+ "pretty-error": "^4.0.0",
+ "tapable": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/html-webpack-plugin"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "webpack": "^5.20.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-scripts/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -17904,6 +17616,19 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
+ "node_modules/react-use-measure": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz",
+ "integrity": "sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==",
+ "peer": true,
+ "dependencies": {
+ "debounce": "^1.2.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.13",
+ "react-dom": ">=16.13"
+ }
+ },
"node_modules/reactcss": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
@@ -18080,16 +17805,90 @@
"node": ">= 0.10"
}
},
- "node_modules/renderkid": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
- "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
+ "node_modules/renderkid": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
+ "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
+ "dependencies": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "node_modules/renderkid/node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/renderkid/node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/renderkid/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/renderkid/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/renderkid/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/renderkid/node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"dependencies": {
- "css-select": "^4.1.3",
- "dom-converter": "^0.2.0",
- "htmlparser2": "^6.1.0",
- "lodash": "^4.17.21",
- "strip-ansi": "^6.0.1"
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
"node_modules/require-directory": {
@@ -18255,7 +18054,6 @@
"version": "3.29.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
"integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
- "dev": true,
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -18294,61 +18092,6 @@
"rollup-plugin-inject": "^3.0.0"
}
},
- "node_modules/rollup-plugin-terser": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
- "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
- "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
- "dependencies": {
- "@babel/code-frame": "^7.10.4",
- "jest-worker": "^26.2.1",
- "serialize-javascript": "^4.0.0",
- "terser": "^5.0.0"
- },
- "peerDependencies": {
- "rollup": "^2.0.0"
- }
- },
- "node_modules/rollup-plugin-terser/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/rollup-plugin-terser/node_modules/jest-worker": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
- "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/rollup-plugin-terser/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/rollup-pluginutils": {
"version": "2.8.2",
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
@@ -18445,7 +18188,7 @@
"version": "1.69.4",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz",
"integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -18758,6 +18501,11 @@
"node": ">= 0.4"
}
},
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+ },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -19497,6 +19245,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/suspend-react": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz",
+ "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==",
+ "peer": true,
+ "peerDependencies": {
+ "react": ">=17.0"
+ }
+ },
"node_modules/svg-parser": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
@@ -19537,51 +19294,6 @@
"sprintf-js": "~1.0.2"
}
},
- "node_modules/svgo/node_modules/css-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
- "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^3.2.1",
- "domutils": "^1.7.0",
- "nth-check": "^1.0.2"
- }
- },
- "node_modules/svgo/node_modules/css-what": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
- "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/svgo/node_modules/dom-serializer": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
- "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
- "dependencies": {
- "domelementtype": "^2.0.1",
- "entities": "^2.0.0"
- }
- },
- "node_modules/svgo/node_modules/domutils": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
- "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
- "dependencies": {
- "dom-serializer": "0",
- "domelementtype": "1"
- }
- },
- "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
- "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
- },
"node_modules/svgo/node_modules/js-yaml": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
@@ -19594,14 +19306,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/svgo/node_modules/nth-check": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
- "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
- "dependencies": {
- "boolbase": "~1.0.0"
- }
- },
"node_modules/symbol-tree": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -19703,9 +19407,9 @@
}
},
"node_modules/terser": {
- "version": "5.30.4",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz",
- "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==",
+ "version": "5.30.3",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz",
+ "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
@@ -20085,6 +19789,19 @@
"is-typedarray": "^1.0.0"
}
},
+ "node_modules/typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
"node_modules/unbox-primitive": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
@@ -20115,11 +19832,6 @@
"node": ">=14.0"
}
},
- "node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
- },
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -20348,7 +20060,6 @@
"version": "4.5.3",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz",
"integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==",
- "dev": true,
"dependencies": {
"esbuild": "^0.18.10",
"postcss": "^8.4.27",
@@ -21019,6 +20730,96 @@
"node": ">=10.0.0"
}
},
+ "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
+ "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
+ "dependencies": {
+ "json-schema": "^0.4.0",
+ "jsonpointer": "^5.0.0",
+ "leven": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "ajv": ">=8"
+ }
+ },
+ "node_modules/workbox-build/node_modules/@rollup/plugin-babel": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
+ "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.10.4",
+ "@rollup/pluginutils": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "@types/babel__core": "^7.1.9",
+ "rollup": "^1.20.0||^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/babel__core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve": {
+ "version": "11.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
+ "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "@types/resolve": "1.17.1",
+ "builtin-modules": "^3.1.0",
+ "deepmerge": "^4.2.2",
+ "is-module": "^1.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/@rollup/plugin-replace": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
+ "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "magic-string": "^0.25.7"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0 || ^2.0.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/@rollup/pluginutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+ "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "dependencies": {
+ "@types/estree": "0.0.39",
+ "estree-walker": "^1.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/@types/estree": {
+ "version": "0.0.39",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
+ },
"node_modules/workbox-build/node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
@@ -21034,6 +20835,11 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/workbox-build/node_modules/estree-walker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="
+ },
"node_modules/workbox-build/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -21048,11 +20854,40 @@
"node": ">=10"
}
},
- "node_modules/workbox-build/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
+ "node_modules/workbox-build/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/workbox-build/node_modules/jest-worker": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+ "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/workbox-build/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
"node_modules/workbox-build/node_modules/rollup": {
"version": "2.79.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
@@ -21067,6 +20902,29 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/workbox-build/node_modules/rollup-plugin-terser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+ "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+ "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "jest-worker": "^26.2.1",
+ "serialize-javascript": "^4.0.0",
+ "terser": "^5.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.0.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
"node_modules/workbox-build/node_modules/source-map": {
"version": "0.8.0-beta.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
@@ -21078,6 +20936,17 @@
"node": ">= 8"
}
},
+ "node_modules/workbox-build/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/workbox-build/node_modules/tr46": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
@@ -21281,321 +21150,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/wrangler/node_modules/@esbuild/android-arm": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.3.tgz",
- "integrity": "sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==",
- "cpu": [
- "arm"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/android-arm64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.3.tgz",
- "integrity": "sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/android-x64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.3.tgz",
- "integrity": "sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/darwin-arm64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.3.tgz",
- "integrity": "sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/darwin-x64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.3.tgz",
- "integrity": "sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.3.tgz",
- "integrity": "sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/freebsd-x64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.3.tgz",
- "integrity": "sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-arm": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.3.tgz",
- "integrity": "sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==",
- "cpu": [
- "arm"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-arm64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.3.tgz",
- "integrity": "sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-ia32": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.3.tgz",
- "integrity": "sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-loong64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.3.tgz",
- "integrity": "sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==",
- "cpu": [
- "loong64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-mips64el": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.3.tgz",
- "integrity": "sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==",
- "cpu": [
- "mips64el"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-ppc64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.3.tgz",
- "integrity": "sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==",
- "cpu": [
- "ppc64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-riscv64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.3.tgz",
- "integrity": "sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==",
- "cpu": [
- "riscv64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-s390x": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.3.tgz",
- "integrity": "sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==",
- "cpu": [
- "s390x"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/linux-x64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.3.tgz",
- "integrity": "sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/netbsd-x64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.3.tgz",
- "integrity": "sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/openbsd-x64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.3.tgz",
- "integrity": "sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/sunos-x64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.3.tgz",
- "integrity": "sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/win32-arm64": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.3.tgz",
- "integrity": "sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/wrangler/node_modules/@esbuild/win32-ia32": {
- "version": "0.16.3",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.3.tgz",
- "integrity": "sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/wrangler/node_modules/@esbuild/win32-x64": {
"version": "0.16.3",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.3.tgz",
diff --git a/package.json b/package.json
index a62e2494..28894edd 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
"html2canvas": "^1.4.1",
"i18next": "^22.4.10",
"i18next-browser-languagedetector": "^7.0.1",
+ "jszip": "^3.10.1",
"ktx2-encoder": "^0.0.6",
"load-script": "^1.0.0",
"postprocessing": "^6.29.1",
@@ -41,6 +42,7 @@
"react-color": "^2.19.3",
"react-colorful": "^5.6.1",
"react-dom": "^18.2.0",
+ "react-dropdown": "^1.11.0",
"react-i18next": "^12.1.5",
"react-scripts": "^5.0.0",
"sepia-speechrecognition-polyfill": "^1.0.0",
diff --git a/public/assets/media/btn_tools.png b/public/assets/media/btn_tools.png
new file mode 100644
index 00000000..35c513a2
Binary files /dev/null and b/public/assets/media/btn_tools.png differ
diff --git a/public/assets/media/generic_button.psd b/public/assets/media/generic_button.psd
new file mode 100644
index 00000000..6d1018ea
Binary files /dev/null and b/public/assets/media/generic_button.psd differ
diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 00000000..3c8b1f2b
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,85 @@
+{
+ "characters":[
+ {
+ "name": "Anata",
+ "description": "Anata",
+ "portrait": "./assets/portraitImages/anata.png",
+ "manifest":"./character-assets/anata/manifest.json",
+ "icon": "./assets/icons/class-neural-hacker.svg",
+ "format": "vrm"
+ },
+ {
+ "name": "Anata Male",
+ "description": "Anata Male",
+ "portrait": "./assets/portraitImages/anata_male.png",
+ "manifest":"./character-assets/anata_male/manifest.json",
+ "icon": "|",
+ "format": "vrm"
+ },
+ {
+ "name": "Anata Male",
+ "description": "Anata Male",
+ "portrait": "./assets/portraitImages/anata_male.png",
+ "manifest":"./character-assets/test.json",
+ "icon": "|",
+ "format": "vrm"
+ }
+ ],
+ "loras":[
+ {
+ "name": "SDXL Lora 728",
+ "description": "Poses and camera positions to create Lora for SDXL 726 x 726",
+ "manifest":"./lora-assets/manifest.json",
+ "icon": "|"
+ }
+ ],
+ "sprites":[
+ {
+ "name": "Multiple Animations",
+ "description": "Multiple definitions for different animations converted to sprites.",
+ "manifest":"./sprite-atlas-assets/manifest.json",
+ "icon": "|"
+ }
+
+ ],
+ "thumbnails":[
+ {
+ "name": "Clothing Thumbnail",
+ "description": "Create thumbnails for Clothing",
+ "manifest":"./thumbnail-assets/manifest.json",
+ "icon": "|"
+ },
+ {
+ "name": "Clothing Thumbnail2",
+ "description": "Create thumbnails for Clothing",
+ "manifest":"./thumbnail-assets/manifest.json",
+ "icon": "|"
+ }
+ ],
+ "defaultAnimations":[
+ {
+ "name": "T-Pose",
+ "description": "T-Pose",
+ "location":"./animations/T-Pose.fbx",
+ "icon": "|"
+ },
+ {
+ "name": "Dancing",
+ "description": "Basic Dance Animation",
+ "location":"./animations/Dancing.fbx",
+ "icon": "|"
+ },
+ {
+ "name": "Walking",
+ "description": "Basic Walk Animation",
+ "location":"./animations/Walking.fbx",
+ "icon": "|"
+ },
+ {
+ "name": "Waving",
+ "description": "Basic Waving Animation",
+ "location":"./animations/Waving.fbx",
+ "icon": "|"
+ }
+ ]
+}
diff --git a/public/sprite-atlas-assets/manifest.json b/public/sprite-atlas-assets/manifest.json
index 92be7f8f..6de487d0 100644
--- a/public/sprite-atlas-assets/manifest.json
+++ b/public/sprite-atlas-assets/manifest.json
@@ -5,8 +5,8 @@
"atlasWidth":128,
"atlasHeight":128,
"screenshotOffset":[-1,0.5],
- "topFrameOffset":0,
- "bottomFrameOffset":0,
+ "topFrameOffset":0.2,
+ "bottomFrameOffset":0.2,
"pixelStyleSize":2,
"spritesCollection":[
{
diff --git a/public/thumbnail-assets/Idle.fbx b/public/thumbnail-assets/Idle.fbx
new file mode 100644
index 00000000..c94734a0
Binary files /dev/null and b/public/thumbnail-assets/Idle.fbx differ
diff --git a/public/thumbnail-assets/manifest.json b/public/thumbnail-assets/manifest.json
new file mode 100644
index 00000000..510426ea
--- /dev/null
+++ b/public/thumbnail-assets/manifest.json
@@ -0,0 +1,27 @@
+{
+ "assetsLocation": "./thumbnail-assets/",
+ "poseAnimation": "/Idle.fbx",
+ "animationTime":0,
+ "backgroundColor":[0,0,0,0],
+ "screenshotOffset":[0,0],
+ "topFrameOffset":0.1,
+ "bottomFrameOffset":0.1,
+ "thumbnailsWidth":512,
+ "thumbnailsHeight":512,
+ "thumbnailsCollection":[
+ {
+ "traitGroup":"CLOTHING",
+ "cameraPosition":"front-left",
+ "cameraFrame":"mediumShot",
+ "groupTopOffset":0.1,
+ "groupBotomOffset":0.1
+ },
+ {
+ "traitGroup":"HAIR",
+ "cameraPosition":"front-left",
+ "cameraFrame":"mediumShot",
+ "groupTopOffset":0.1,
+ "groupBotomOffset":0.1
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/App.jsx b/src/App.jsx
index c8fcefb8..cc5d134b 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -28,6 +28,7 @@ import Wallet from "./pages/Wallet"
// dynamically import the manifest
const assetImportPath = import.meta.env.VITE_ASSET_PATH + "/manifest.json"
+//const assetImportPath = "./manifest.json"
let cameraDistance
const centerCameraTarget = new THREE.Vector3()
@@ -288,7 +289,7 @@ export default function App() {
Character Studio
-
+ {/* */}
0 ? (
-
+
{jsonSelectionArray?.length > 1 ?
{
+ if (manifest?.loras != null){
+ //setDescription(manifest.loras[sel.value].description)
+ setTargetLora(manifest.loras[sel.value]);
+
+ console.log(manifest.loras[sel.value])
+ }
+ }
+
+ const createLoraData = async() =>{
+ const parentScene = sceneElements.parent;
+ parentScene.remove(sceneElements);
+ await loraDataGenerator.createLoraData(targetLora);
+ parentScene.add(sceneElements);
+ }
+
+
+ useEffect(() => {
+ if (manifest?.loras != null){
+ const loraManifestOptions = manifest.loras.map((c,i) => {
+ return {
+ value:i,
+ label:c.name,
+ description: c.description,
+ manifest: c.manifest,
+ }
+ })
+ setOptions(loraManifestOptions);
+ }
+ }, [manifest])
+ return (
+
+
+
+
+
+
+ Lora Manifests
+
+
;
+
+
+ {targetLora?.description || ""}
+
+ {
+ targetLora != null &&
+
+ }
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/MergeOptions.jsx b/src/components/MergeOptions.jsx
index 484d8f02..a31e5a5f 100644
--- a/src/components/MergeOptions.jsx
+++ b/src/components/MergeOptions.jsx
@@ -16,12 +16,18 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
const [twoSidedMaterial, setTwoSidedMaterial] = useState(local["mergeOptions_two_sided_mat"] || false);
const [options] = useState(["Merge to Standard", "Merge to MToon", "Keep Both"])
+ // download vrm
+ const [downloadVRM, setDownloadVRM] = useState(local["mergeOptions_download_vrm"] == null ? true : local["mergeOptions_download_vrm"])
+ const [downloadVRMPreview, setDownloadVRMPreview] = useState(local["mergeOptions_download_vrm_preview"] == null ? true : local["mergeOptions_download_vrm_preview"])
+
// optimizer
const [downloadOnDrop, setDownloadOnDrop] = useState(local["mergeOptions_drop_download"] || false)
const [ktxCompression, setKtxCompression] = useState(local["merge_options_ktx_compression"] || false);
// creator
const [createAtlas, setCreateAtlas] = useState(local["mergeOptions_create_atlas"] == null ? true : local["mergeOptions_create_atlas"])
+ const [downloadLora, setDownloadLora] = useState(local["mergeOptions_download_lora"] == null ? true : local["mergeOptions_download_lora"])
+ const [downloadSprites, setDownloadSprites] = useState(local["mergeOptions_download_sprites"] == null ? true : local["mergeOptions_download_sprites"])
const handleDropDownloadEnable = (event) => {
setDownloadOnDrop(event.target.checked);
@@ -42,7 +48,26 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
setCreateAtlas(event.target.checked)
local["mergeOptions_create_atlas"] = event.target.checked;
}
-
+
+ const handleDownloadVRM = (event) => {
+ setDownloadVRM(event.target.checked)
+ local["mergeOptions_download_vrm"] = event.target.checked;
+ }
+
+ const handleDownloadVRMPreview = (event) => {
+ setDownloadVRMPreview(event.target.checked)
+ local["mergeOptions_download_vrm_preview"] = event.target.checked;
+ }
+
+ const handleDownloadLora = (event) => {
+ setDownloadLora(event.target.checked)
+ local["mergeOptions_download_lora"] = event.target.checked;
+ }
+
+ const handleDownloadSprite = (event) => {
+ setDownloadSprites(event.target.checked)
+ local["mergeOptions_download_sprites"] = event.target.checked;
+ }
const prevOption = () => {
let cur = currentOption;
@@ -102,13 +127,31 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
+
-
- {showCreateAtlas && (
- <>
-
- Create Atlas
+
+ Download Options
+
+ <>
+
+
+
+
+
+
+
+ Download VRM
+
+ >
+ <>
@@ -117,20 +160,81 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
- {createAtlas ? "True": "False"}
-
+ Download VRM Preview
-
+ >
+ <>
+
+
+
+
+
+
+
+ Download Lora Data
+
+
+
+ >
+ <>
+
+
+
+
+
+
+
+ Download Sprites Data
+
+
+
+ >
+ {downloadVRM && (<>
+ {showCreateAtlas && (
+ <>
+
+
+
+
+
+
+
+ Create Atlas
+
+
+
>
)}
{(showCreateAtlas == false || createAtlas)&&(<>
+
Merge Atlas Type
@@ -147,7 +251,7 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
onClick={nextOption}
>
-
+
{(currentOption === 0 || currentOption == 2)&&(
<>
@@ -165,7 +269,7 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
Transparent: {getAtlasSize(atlasStdTransp) + " x " + getAtlasSize(atlasStdTransp)}
handleChangeAtlasSize(value, 'standard transparent')} min={1} max={8} step={1}/>
-
+
>
)}
@@ -185,11 +289,11 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
Transparent: {getAtlasSize(atlasMtoonTransp) + " x " + getAtlasSize(atlasMtoonTransp)}
handleChangeAtlasSize(value, 'mtoon transparent')} min={1} max={8} step={1}/>
-
+
>
)}
- Two Sided Material
+ Options
@@ -205,14 +309,11 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
- {twoSidedMaterial ? "True": "False"}
+ Two Sided Material
{showDropToDownload && (
<>
-
- Drag Drop - Download
-
@@ -227,16 +328,13 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
- {downloadOnDrop ? "True": "False"}
+ Drag Drop - Download
>
)}
<>
-
- KTX Compression
-
@@ -251,12 +349,15 @@ function MergeOptions({showDropToDownload, showCreateAtlas, mergeMenuTitle}) {
- {ktxCompression ? "True": "False"}
+ KTX Compression
>
- >)}
+
+ >)}
+ >) }
+
)
diff --git a/src/components/MergeOptions.module.css b/src/components/MergeOptions.module.css
index 95d8f63b..7956aebd 100644
--- a/src/components/MergeOptions.module.css
+++ b/src/components/MergeOptions.module.css
@@ -14,7 +14,7 @@
color: white;
text-transform: uppercase;
text-shadow: 1px 1px 2px black;
- font-size: 16px;
+ font-size: 14px;
word-spacing: 2px;
margin-bottom: 10px;
text-align: center;
@@ -23,26 +23,26 @@
color: rgb(179, 179, 179);
/* text-transform: uppercase; */
text-shadow: 1px 1px 2px black;
- font-size: 16px;
+ font-size: 14px;
word-spacing: 2px;
- margin-bottom: 10px;
+ margin-bottom: 6px;
display: flex;
- justify-content: center;
+ justify-content: left;
}
.flexSelect{
display: flex;
justify-content: space-between;
width: 100%;
- height:40px;
+ height:20px;
align-items: center;
}
.arrow-button {
cursor: pointer;
overflow: hidden;
opacity: 0.8;
- width: 32px;
- height: 32px;
+ width: 22px;
+ height: 22px;
margin: 2px;
text-align: center;
outline-color: #3b434f;
diff --git a/src/components/ModelInformation.jsx b/src/components/ModelInformation.jsx
index b2f5dd77..4f1c379d 100644
--- a/src/components/ModelInformation.jsx
+++ b/src/components/ModelInformation.jsx
@@ -3,8 +3,13 @@ import styles from "./ModelInformation.module.css"
import MenuTitle from "./MenuTitle"
import { findChildrenByType } from "../library/utils";
import { getMaterialsSortedByArray } from "../library/utils";
+import { SceneContext } from "../context/SceneContext"
+
+export default function ModelInformation({model, name, files, index, nextVrm, previousVrm}){
+ const {
+ characterManager
+ } = React.useContext(SceneContext)
-export default function ModelInformation({model}){
const [meshQty, setMeshQty] = useState(0);
const [skinnedMeshQty, setSkinnedMeshQty] = useState(0);
@@ -16,6 +21,10 @@ export default function ModelInformation({model}){
const [vrmTranspMaterialQty, setVrmTranspMaterialQty] = useState(0);
const [vrmCutoutMaterialQty, setVrmCutoutMaterialQty] = useState(0);
+ const [trianglesCount, setTrianglesCount] = useState(0);
+ const [bonesCount, setBonesCount] = useState(0);
+
+
useEffect(() => {
if (model != null){
const meshes = findChildrenByType(model,"Mesh");
@@ -33,6 +42,13 @@ export default function ModelInformation({model}){
setVrmMaterialQty(mToonMats.length);
setVrmTranspMaterialQty(mToonTranspMats.length);
setVrmCutoutMaterialQty(mToonCutoutMats.length);
+
+ const {
+ triangles,
+ bones
+ } = characterManager.getBoneTriangleCount();
+ setTrianglesCount(triangles);
+ setBonesCount(bones);
}
}, [model])
@@ -43,17 +59,51 @@ export default function ModelInformation({model}){
+
+
+
+ {files?.length > 1 ?
:<>>}
+
+
+ {(name) && (
+
+ )}
+
+
+ {files?.length > 1 ?
:<>>}
+
- Meshes:
+ Geometry info:
- {meshQty}
+ Meshes: {meshQty}
-
- SkinnedMeshes:
+
+ SkinnedMeshes: {skinnedMeshQty}
+
+
+ Triangles: {trianglesCount}
- {skinnedMeshQty}
+ Bones: {bonesCount}
Standard Material Count:
diff --git a/src/components/ModelInformation.module.css b/src/components/ModelInformation.module.css
index 1ca82f5b..312fd212 100644
--- a/src/components/ModelInformation.module.css
+++ b/src/components/ModelInformation.module.css
@@ -65,26 +65,27 @@
.flexSelect{
display: flex;
- justify-content: space-between;
+ justify-content: center;
width: 100%;
- height:40px;
+ height:30px;
align-items: center;
+ margin-top: 10px;
+ margin-bottom: 30px;
}
.arrow-button {
-
+ margin:auto;
cursor: pointer;
overflow: hidden;
opacity: 0.8;
- width: 32px;
- height: 32px;
+ width: 25px;
+ height: 25px;
margin: 2px;
text-align: center;
outline-color: #3b434f;
outline-width: 2px;
outline-style: solid;
align-items: center;
- margin-bottom: 30px;
background-color: #1e2530;
}
.left-button{
diff --git a/src/components/RightPanel.jsx b/src/components/RightPanel.jsx
new file mode 100644
index 00000000..ddba3d74
--- /dev/null
+++ b/src/components/RightPanel.jsx
@@ -0,0 +1,80 @@
+import React, { useContext, useState, useEffect } from "react"
+import styles from "./RightPanel.module.css"
+import MenuTitle from "./MenuTitle"
+import traitsIcon from "../images/t-shirt.png"
+import genSpriteIcon from "../images/users.png"
+import genLoraIcon from "../images/paste.png"
+import genThumbIcon from "../images/portraits.png"
+import { TokenBox } from "../components/token-box/TokenBox"
+import TraitInformation from "../components/TraitInformation"
+import LoraCreation from "./LoraCreation"
+import SpriteCreation from "./SpriteCreation"
+import ThumbnailCreation from "./ThumbnailCreation"
+
+export default function RightPanel({selectedTrait, selectedVRM, traitGroupName}){
+ const [selectedOption, setSelectedOption] = React.useState("")
+ const setSelectedOptionString = (option) => {
+ if (option != selectedOption){
+ setSelectedOption(option);
+ }
+ else{
+ setSelectedOption("");
+ }
+ }
+ return (
+
+ {selectedOption=="Information" &&
}
+ {selectedOption=="LoraCreation" &&
}
+ {selectedOption=="SpriteCreation" &&
}
+ {selectedOption=="ThumbnailCreation" &&
}
+
+
+
+
+
{setSelectedOptionString("Information")}}
+ >
+
+
+
{setSelectedOptionString("LoraCreation")}}
+ >
+
+
+
{setSelectedOptionString("SpriteCreation")}}
+ >
+
+
+
{setSelectedOptionString("ThumbnailCreation")}}
+ >
+
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/RightPanel.module.css b/src/components/RightPanel.module.css
new file mode 100644
index 00000000..9b6b7966
--- /dev/null
+++ b/src/components/RightPanel.module.css
@@ -0,0 +1,31 @@
+
+.InformationContainerPos {
+ position: fixed;
+ right: 32px;
+ top: 98px;
+ width:90px;
+ height: 270px;
+ backdrop-filter: blur(22.5px);
+ background: rgba(5, 11, 14, 0.8);
+ z-index: 1000;
+ user-select: none;
+}
+
+
+.scrollContainer {
+ height: 100%;
+ width: 80%;
+ overflow-y: scroll;
+ position: relative;
+ overflow-x: hidden !important;
+ margin: 16px;
+ height: 270px;
+}
+.options-container {
+ user-select: none;
+ flex: 1;
+ width: 200px;
+ position: relative;
+ text-align: center;
+}
+
diff --git a/src/components/SpriteCreation.jsx b/src/components/SpriteCreation.jsx
new file mode 100644
index 00000000..8e415e5b
--- /dev/null
+++ b/src/components/SpriteCreation.jsx
@@ -0,0 +1,74 @@
+import React, { useContext, useState, useEffect } from "react"
+import styles from "./FloatingMenu.module.css"
+import MenuTitle from "./MenuTitle"
+import { SceneContext } from "../context/SceneContext";
+import Slider from "./Slider";
+import Dropdown from 'react-dropdown';
+import 'react-dropdown/style.css';
+
+export default function SpriteCreation({selectedTrait, selectedVRM}){
+ const { manifest, spriteAtlasGenerator, sceneElements } = React.useContext(SceneContext)
+
+ const [ options, setOptions ] = useState([])
+ const [ description, setDescription ] = useState("");
+ const [ spriteObject, setSpriteObject ] = useState(null);
+
+ const onSelect = (sel) =>{
+ if (manifest?.sprites != null){
+ setDescription(manifest.sprites[sel.value].description)
+ setSpriteObject(manifest.sprites[sel.value]);
+ }
+ }
+
+ const createSpritesData = async() =>{
+ const parentScene = sceneElements.parent;
+ parentScene.remove(sceneElements);
+ await spriteAtlasGenerator.createSpriteAtlas(spriteObject);
+ parentScene.add(sceneElements);
+ }
+
+
+ useEffect(() => {
+ if (manifest?.sprites != null){
+ const manifestOptions = manifest.sprites.map((c,i) => {
+ return {
+ value:i,
+ label:c.name,
+ description: c.description,
+ manifest: c.manifest,
+ }
+ })
+ setOptions(manifestOptions);
+ }
+ }, [manifest])
+ return (
+
+
+
+
+
+
+ Sprite Manifests
+
+
;
+
+
+ {description || ""}
+
+ {
+ spriteObject != null &&
+
+ }
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/ThumbnailCreation.jsx b/src/components/ThumbnailCreation.jsx
new file mode 100644
index 00000000..2b54791c
--- /dev/null
+++ b/src/components/ThumbnailCreation.jsx
@@ -0,0 +1,376 @@
+import React, { useContext, useState, useEffect } from "react"
+import styles from "./FloatingMenu.module.css"
+import MenuTitle from "./MenuTitle"
+import { SceneContext } from "../context/SceneContext";
+import Slider from "./Slider";
+import Dropdown from 'react-dropdown';
+//import 'react-dropdown/style.css';
+
+const maxResolution = 4096;
+
+export default function ThumbnailCreation({selectedTrait, traitGroupName}){
+ const { manifest, thumbnailsGenerator, sceneElements, characterManager } = React.useContext(SceneContext)
+
+ const [ options, setOptions ] = useState([])
+ const [ description, setDescription ] = useState("");
+ const [ selection, setSelection ] = useState("");
+ const [ manifestLocation, setManifestLocation ] = useState("");
+ const [ viewingManifests,setViewingManifests ] = useState(false);
+
+ const [width, setWidth] = useState(512);
+ const [height, setHeight] = useState(512);
+ const [botFrame, setBotFrame] = useState(0.1);
+ const [topFrame, setTopFrame] = useState(0.1);
+
+ const [zCam, setZCam] = useState("center");
+ const [xCam, setXCam] = useState("center");
+ const [yCam, setYCam] = useState("center");
+
+ const [topBone, setTopBone] = useState("head");
+ const [bottomBone, setBottomBone] = useState("chest");
+ const [topVertexMax, setTopVertexMax] = useState(true);
+ const [bottomVertexMax, setBottomVertexMax] = useState(false);
+
+
+ const xCamOpts = [{label:"center"}, {label:"left"}, {label:"right"}];
+ const yCamOpts = [{label:"center"}, {label:"top"}, {label:"bottom"}];
+ const zCamOpts = [{label:"center"}, {label:"front"}, {label:"back"}];
+
+
+
+ const bones = [{label:"head"}, {label:"neck"}, {label:"chest"}, {label:"spine"}, {label:"hips"},
+ {label:"upperLeg"}, {label:"lowerLeg"}, {label:"foot"}];
+
+ const onSelect = (sel) =>{
+ if (manifest?.thumbnails != null){
+ setDescription(manifest.thumbnails[sel.value].description)
+ setManifestLocation(manifest.thumbnails[sel.value].manifest);
+ setSelection(manifest.thumbnails[sel.value].name);
+ }
+ }
+ const validateValue = (value, min, max, fallback) => {
+ if (isNaN(value)) {
+ return fallback;
+ } else if (value > max) {
+ return max;
+ } else if (value < min){
+ return min;
+ }else{
+ return value;
+ }
+ }
+
+ const blurWidth = (event)=>{
+ const val = parseInt(event.target.value);
+ setWidth (validateValue(val,1,maxResolution,512))
+ }
+ const blurHeight = (event)=>{
+ const val = parseInt(event.target.value);
+ setHeight(validateValue(val,1,maxResolution,512));
+ }
+ const blurBotFrame = (event) =>{
+ const val = parseFloat(event.target.value);
+ setBotFrame(validateValue(val,0,1,0.1))
+ }
+ const blurTopFrame = (event) =>{
+ const val = parseFloat(event.target.value);
+ setTopFrame(validateValue(val,0,1,0.1))
+ }
+
+
+
+ const switchAction = (manifestActive) =>{
+ setViewingManifests(manifestActive);
+ }
+
+ const createThumbnails = async () =>{
+ const parentScene = sceneElements.parent;
+ parentScene.remove(sceneElements);
+
+ await thumbnailsGenerator.createThumbnails(manifest.thumbnails[0]);
+ parentScene.add(sceneElements);
+ }
+
+ const getOptions = (exportAll = true) =>{
+ return {
+ topFrameOffset:topFrame,
+ bottomFrameOffset:botFrame,
+ thumbnailsWidth:width,
+ thumbnailsHeight:height,
+ backgroundColor:[0,0,0,0],
+ thumbnailsCollection:[
+ {
+ traitGroup:traitGroupName,
+ cameraPosition:xCam+'-'+yCam+'-'+zCam,
+ topBoneName:(topBone === "upperLeg" || topBone === "lowerLeg" || topBone === "foot") ?
+ "left" + topBone[0].toUpperCase() + topBone.slice(1) :
+ topBone,
+ topBoneMaxVertex:topVertexMax,
+ // cameraFrame:'cowboyShot',
+ bottomBoneName:(bottomBone === "upperLeg" || bottomBone === "lowerLeg" || topBone === "foot") ?
+ "left" + bottomBone[0].toUpperCase() + bottomBone.slice(1) :
+ bottomBone,
+ bottomBoneMaxVertex:bottomVertexMax,
+ saveOnlyIDs:exportAll ? null : selectedTrait.id
+ }
+ ]
+ }
+ }
+
+ const createCustomThumbnails = async (createAll = false) => {
+ characterManager.storeCurrentAvatar();
+ //await characterManager.soloTargetGroupTrait(traitGroupName);
+ const parentScene = sceneElements.parent;
+ parentScene.remove(sceneElements);
+
+ if (createAll)
+ await thumbnailsGenerator.createThumbnailsWithObjectData(getOptions(),false,null,traitGroupName + "_thumbnails");
+ else
+ await thumbnailsGenerator.createThumbnailsWithObjectData(getOptions(false),false);
+ parentScene.add(sceneElements);
+
+ characterManager.loadStoredAvatar();
+ }
+
+
+ useEffect(() => {
+ if (manifest?.thumbnails != null){
+ const manifestOptions = manifest.thumbnails.map((c,i) => {
+ return {
+ value:i,
+ label:c.name,
+ description: c.description,
+ manifest: c.manifest,
+ }
+ })
+ setOptions(manifestOptions);
+ }
+ }, [manifest])
+
+ return (
+
+
+
+
+
+
+
{switchAction(false)}}>
+
{"Custom"}
+
+
{switchAction(true)}}>
+
{"Manifest"}
+
+
+
+
+
+ {viewingManifests ?
+ // manifest section
+ <>
+
+ Thumbnail Manifests
+
+
;
+
+
+
+ {description || ""}
+
+ {
+ manifestLocation != "" &&
+
+ }
+ >:
+ // custom section
+
+ // topFrameOffset = 0.1,
+ // bottomFrameOffset = 0.1,
+ // animationTime,
+ // to do, add bg color
+ // backgroundColor = [1,1,1,0],
+
+ // traitGroup,
+ // cameraPosition = "front",
+ // bottomBoneName,
+ // bottomBoneMaxVertex = false,
+ // topBoneName,
+ // topBoneMaxVertex = true,
+ // groupTopOffset,
+ // groupBotomOffset,
+ // cameraFrame
+ <>
+
+
+
+ Resolution
+
+ Width
{setWidth(e.target.value)}}
+ onBlur={blurWidth}
+ />
+
+ Height
{setHeight(e.target.value)}}
+ onBlur={blurHeight}
+ />
+
+ Top Spacing
{setBotFrame(e.target.value)}}
+ onBlur={blurBotFrame}
+ />
+
+ Bottom Spacing
{setTopFrame(e.target.value)}}
+ onBlur={blurTopFrame}
+ />
+
+
+ Camera Position
+
+
+
+
+ X
+
+
{
+ setXCam(e.label)
+ }}
+ value={xCam}
+
+ />
+
+
+
+ Y
+
+
{
+ setYCam(e.label)
+ }}
+ value={yCam}
+
+ />
+
+
+
+ Z
+
+
{
+ setZCam(e.label)
+ }}
+ value={zCam}
+
+ />
+
+
+ Target Bones
+
+
+
+ Top
+
+
{
+ setTopBone(e.label)
+ }}
+ value={topBone}
+
+ />
+
+
+
+ Bottom
+
+
{
+ setBottomBone(e.label)
+ }}
+ value={bottomBone}
+ />
+
+
+
+
{
+ setTopVertexMax(e.target.checked);
+ }}
+
+ />
+
+ {`Top bone ${topVertexMax ? "uses Top" : "uses Low"} Vertex`}
+
+
+
+
{
+ setBottomVertexMax(e.target.checked);
+ }}
+ />
+
+ {`Bottom bone ${bottomVertexMax ? "uses Top" : "uses Low"} Vertex`}
+
+
+
+ {traitGroupName == "" ?
+
+ Please choose a trait category in the left side menu.
+
:
+ <>
+
+ Generate
+
+
+ {"( " + traitGroupName + " )"}
+
+
+
{createCustomThumbnails(false)}}>
+
Current
+
+
{createCustomThumbnails(true)}}>
+
All
+
+
+ >}
+
+ >
+ }
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/TraitInformation.jsx b/src/components/TraitInformation.jsx
index d575b665..f02aeb24 100644
--- a/src/components/TraitInformation.jsx
+++ b/src/components/TraitInformation.jsx
@@ -1,5 +1,5 @@
import React, { useContext, useState, useEffect } from "react"
-import styles from "./TraitInformation.module.css"
+import styles from "./FloatingMenu.module.css"
import MenuTitle from "./MenuTitle"
import { SceneContext } from "../context/SceneContext";
import Slider from "./Slider";
@@ -53,11 +53,13 @@ export default function TraitInformation({selectedTrait, selectedVRM}){
}
return (
- selectedTrait != null ? (
+
+ {selectedTrait != null ? (
+ <>
Trait ID
@@ -79,6 +81,7 @@ export default function TraitInformation({selectedTrait, selectedVRM}){
Culling Options
+
Culling Layer
-
+
-
+
@@ -104,11 +107,15 @@ export default function TraitInformation({selectedTrait, selectedVRM}){
-
+ >):(<>
+
+ No Trait Selected
+
+
+ >)}
- ):(<>>)
)
}
\ No newline at end of file
diff --git a/src/components/TraitInformation.module.css b/src/components/TraitInformation.module.css
deleted file mode 100644
index 37525479..00000000
--- a/src/components/TraitInformation.module.css
+++ /dev/null
@@ -1,162 +0,0 @@
-
-.InformationContainerPos {
- position: fixed;
- right: 32px;
- top: 98px;
- width:350px;
- height: -webkit-calc(100vh - 176px);
- height: calc(100vh - 176px);
- backdrop-filter: blur(22.5px);
- background: rgba(5, 11, 14, 0.8);
- z-index: 1000;
- user-select: none;
-}
-
-.scrollContainer {
- height: 100%;
- width: 80%;
- overflow-y: scroll;
- position: relative;
- overflow-x: hidden !important;
- margin: 30px;
- height: -webkit-calc(100% - 40px);
- height: calc(100% - 40px);
-}
-
-.traitInfoTitle {
- color: white;
- text-transform: uppercase;
- text-shadow: 1px 1px 2px black;
- font-size: 16px;
- word-spacing: 2px;
- margin-bottom: 10px;
-}
-.traitInfoText {
- color: rgb(179, 179, 179);
- /* text-transform: uppercase; */
- text-shadow: 1px 1px 2px black;
- font-size: 16px;
- word-spacing: 2px;
- margin-bottom: 30px;
-}
-.input-box {
- width: 60px; /* Adjust as needed */
- height: 20px;
- color: #5eb086;
- background-color:rgba(5, 11, 14, 0.5);
- border: none;
- font-size: medium;
- font-weight: 500;
- margin-left: 15px;
-}
-.input-box:focus {
- outline: none;
-}
-
-.input-box::selection {
- background-color: #111f17;
- color: #5eb086;
-}
-
-.flexSelect{
- display: flex;
- justify-content: space-between;
- width: 100%;
- height:40px;
- align-items: center;
-}
-
-.arrow-button {
-
- cursor: pointer;
- overflow: hidden;
- opacity: 0.8;
- width: 32px;
- height: 32px;
- margin: 2px;
- text-align: center;
- outline-color: #3b434f;
- outline-width: 2px;
- outline-style: solid;
- align-items: center;
- margin-bottom: 30px;
- background-color: #1e2530;
-}
-.left-button{
- background: url('./ui/backButton_small.png');
- background-position: center;
- background-repeat: no-repeat;
- background-size: cover;
-}
-
-.right-button{
- background: url('./ui/nextButton_small.png');
- background-position: center;
- background-repeat: no-repeat;
- background-size: cover;
-}
-
-.anim-button:hover {
- opacity: 1;
-}
-
-/* Hide the default checkbox */
-.custom-checkbox input[type="checkbox"] {
- display: none;
-}
-
-/* Style the custom checkbox */
-.custom-checkbox .checkbox-container {
- display: inline-block;
- width: 20px;
- height: 20px;
- border: 2px solid #284b39; /* Change border color as needed */
- border-radius: 5px;
- cursor: pointer;
-}
-
-.custom-checkbox .checkbox-container.checked {
- background-color: #5eb086; /* Change background color when checked */
-}
-
-.custom-checkbox .checkbox-container .checkmark {
- display: none;
-}
-
-/* Style the checkmark when the checkbox is checked */
-.custom-checkbox input[type="checkbox"]:checked + .checkbox-container {
- background-color: #5eb086; /* Change background color when checked */
-}
-
-.custom-checkbox input[type="checkbox"]:checked + .checkbox-container .checkmark {
- display: block;
-}
-
-.checkboxHolder {
- display: flex;
- gap: 30px;
- align-items: center;
- justify-content: center;
- align-content: center;
- height: 40px;
-}
-
-.actionButton{
- margin: 30px auto;
- text-align: center;
- outline-color: #3b434f;
- color: #d1d7df;
- outline-width: 2px;
- outline-style: solid;
- background-color: #1e2530;
- height: 30px;
- width: 80%;
- font-family: "TTSC-Bold";
- text-transform: uppercase !important;
- font-size:x-small;
- display: flex;
- justify-content: center;
- align-items : center;
- user-select: none;
- cursor: pointer;
-}
diff --git a/src/context/SceneContext.jsx b/src/context/SceneContext.jsx
index d2768c06..7efa737f 100644
--- a/src/context/SceneContext.jsx
+++ b/src/context/SceneContext.jsx
@@ -5,6 +5,7 @@ import { local } from "../library/store"
import { sceneInitializer } from "../library/sceneInitializer"
import { LoraDataGenerator } from "../library/loraDataGenerator"
import { SpriteAtlasGenerator } from "../library/spriteAtlasGenerator"
+import { ThumbnailGenerator } from "../library/thumbnailsGenerator"
export const SceneContext = createContext()
@@ -12,7 +13,8 @@ export const SceneProvider = (props) => {
const [characterManager, setCharacterManager] = useState(null)
const [loraDataGenerator, setLoraDataGenerator] = useState(null)
- const [spriteAtlasGenerator, setSrptieAtlasGenerator] = useState(null)
+ const [spriteAtlasGenerator, setSpriteAtlasGenerator] = useState(null)
+ const [thumbnailsGenerator, setThumbnailsGenerator] = useState(null)
const [sceneElements, setSceneElements] = useState(null)
const [animationManager, setAnimationManager] = useState(null)
const [lookAtManager, setLookAtManager] = useState(null)
@@ -46,7 +48,8 @@ export const SceneProvider = (props) => {
setLookAtManager(characterManager.lookAtManager)
setControls(controls);
setLoraDataGenerator(new LoraDataGenerator(characterManager))
- setSrptieAtlasGenerator(new SpriteAtlasGenerator(characterManager))
+ setSpriteAtlasGenerator(new SpriteAtlasGenerator(characterManager))
+ setThumbnailsGenerator(new ThumbnailGenerator(characterManager))
},[])
@@ -63,6 +66,14 @@ export const SceneProvider = (props) => {
}
});
}
+ useEffect(() => {
+ if (manifest != null){
+ if (manifest.defaultAnimations){
+ const locationArray = manifest.defaultAnimations.map(animation => animation.location);
+ animationManager.storeDefaultAnimationPaths(locationArray, "");
+ }
+ }
+ }, [manifest])
const showEnvironmentModels = (display) => {
@@ -124,6 +135,7 @@ export const SceneProvider = (props) => {
characterManager,
loraDataGenerator,
spriteAtlasGenerator,
+ thumbnailsGenerator,
showEnvironmentModels,
debugMode,
toggleDebugMode,
diff --git a/src/images/paste.png b/src/images/paste.png
new file mode 100644
index 00000000..687147c5
Binary files /dev/null and b/src/images/paste.png differ
diff --git a/src/images/portraits.png b/src/images/portraits.png
new file mode 100644
index 00000000..af662ca1
Binary files /dev/null and b/src/images/portraits.png differ
diff --git a/src/images/t-shirt.png b/src/images/t-shirt.png
new file mode 100644
index 00000000..eaa4c57f
Binary files /dev/null and b/src/images/t-shirt.png differ
diff --git a/src/images/users.png b/src/images/users.png
new file mode 100644
index 00000000..36f83360
Binary files /dev/null and b/src/images/users.png differ
diff --git a/src/library/animationManager.js b/src/library/animationManager.js
index 15dc8831..34e9bc37 100644
--- a/src/library/animationManager.js
+++ b/src/library/animationManager.js
@@ -167,15 +167,19 @@ class AnimationControl {
this.mixer.setTime(time);
}
+ getTime(){
+ return this.mixer.time;
+ }
+
dispose(){
this.animationManager.disposeAnimation(this);
- //console.log("todo dispose animation control")
}
}
export class AnimationManager{
constructor (){
- this.animationPaths = null;
+ this.animationPaths = [];
+ this.defaultAnimations = [];
this.lastAnimID = null;
this.mainControl = null;
this.animationControl = null;
@@ -260,19 +264,33 @@ export class AnimationManager{
}
+ getCurrentClipDuration(){
+ return this.currentClip ? this.currentClip.duration : 0;
+ }
+
getCurrentAnimationName(){
return this.currentAnimationName;
}
clearCurrentAnimations(){
- this.animationPaths = null;
+ this.animationPaths = this.defaultAnimations;
this.animationControls = [];
this.mainControl = null;
}
- storeAnimationPaths(pathArray, pathBase){
+ storeAnimationPaths(pathArray, pathBase, addDefaultAnimationPaths = true){
+ const paths = getAsArray(pathArray);
+ if (addDefaultAnimationPaths) {
+ this.animationPaths = [...this.defaultAnimations, ...paths.map(path => `${pathBase}/${path}`)];
+ } else {
+ this.animationPaths = paths.map(path => pathBase != "" ? `${pathBase}/${path}` : path);
+ }
+ }
+
+ storeDefaultAnimationPaths(pathArray, pathBase){
const paths = getAsArray(pathArray);
- this.animationPaths = paths.map(path => `${pathBase}/${path}`);
+ this.defaultAnimations = paths.map(path => pathBase != "" ? `${pathBase}/${path}` : path);
+ this.animationPaths = this.defaultAnimations;
}
loadNextAnimation(){
@@ -333,7 +351,7 @@ export class AnimationManager{
else{
animations = this.animations;
}
- const animationControl = new AnimationControl(this, vrm.scene, vrm, animations, this.curAnimID, this.lastAnimID)
+ const animationControl = new AnimationControl(this, vrm.scene, vrm, animations, this.curAnimID, this.lastAnimID, this.isPaused())
this.animationControls.push(animationControl);
//this.animationControls.push({ vrm: vrm, animationControl: animationControl });
@@ -342,6 +360,16 @@ export class AnimationManager{
this.started = true;
this.animRandomizer(animations[this.curAnimID].duration);
}
+
+ this.update(true);
+ //animationControl.setTime(this.mainControl.getTime());
+ //this.set
+ // this.animationControls.forEach(animationControl => {
+ // animationControl.setAnimations(animationModel.animations, this.mixamoModel, this.mouseLookEnabled, isPose)
+ // });
+ // this.setTime(poseTime);
+ // if(isPose)this.pause();
+ // else this.play();
}
removeVRM(vrmToRemove) {
@@ -423,6 +451,9 @@ export class AnimationManager{
});
}
}
+ setFrame(frame){
+ this.setTime(frame * 30);
+ }
setSpeed(speed){
if (this.mainControl){
this.animationControls.forEach(animControl => {
@@ -431,8 +462,8 @@ export class AnimationManager{
}
}
- update(){
- if (this.mainControl && !this.paused) {
+ update(force=false){
+ if ((this.mainControl && !this.paused)||force) {
this.animationControls.forEach(animControl => {
animControl.update(this.weightIn,this.weightOut);
});
diff --git a/src/library/characterManager.js b/src/library/characterManager.js
index 7a21c549..045afbaa 100644
--- a/src/library/characterManager.js
+++ b/src/library/characterManager.js
@@ -57,7 +57,8 @@ export class CharacterManager {
this.animationManager.setScale(this.manifestData.displayScale)
}
- this.avatar = {}; // Holds information of traits within the avatar
+ this.avatar = {}; // Holds information of traits within the avatar
+ this.storedAvatar = {}; // Holds information of an avatar previously stored
this.traitLoadManager = new TraitLoadingManager();
// XXX actually use the vrm helper
@@ -65,6 +66,8 @@ export class CharacterManager {
helperRoot.renderOrder = 10000;
this.rootModel.add(helperRoot)
this.vrmHelperRoot = helperRoot;
+
+
}
update(){
@@ -271,6 +274,26 @@ export class CharacterManager {
}
return result;
}
+ getBoneTriangleCount(){
+ let indexCount = 0;
+ let boneSet = new Set();
+ for (const prop in this.avatar) {
+ this.avatar[prop].model.traverse((child)=>{
+ if (child.isMesh){
+ indexCount+= child.geometry.index.array.length;
+ }
+ if (child.isSkinnedMesh){
+ child.skeleton.bones.forEach(bone => {
+ boneSet.add(bone.name); // Add bone name to the Set
+ });
+ }
+ })
+ }
+ return {
+ triangles:indexCount/3,
+ bones:boneSet.size
+ }
+ }
getGroupTraits(){
if (this.manifestData){
return this.manifestData.getGroupModelTraits();
@@ -326,6 +349,7 @@ export class CharacterManager {
setRenderCamera(camera){
this.renderCamera = camera;
}
+
/**
* Loads random traits based on manifest data.
@@ -492,10 +516,11 @@ export class CharacterManager {
*
* @param {string} groupTraitID - The ID of the trait group.
* @param {string} traitID - The ID of the specific trait.
+ * @param {boolean} soloView - Should character display only new loaded trait?.
* @returns {Promise
} A Promise that resolves if successful,
* or rejects with an error message if not.
*/
- loadTrait(groupTraitID, traitID) {
+ loadTrait(groupTraitID, traitID, soloView = false) {
return new Promise(async (resolve, reject) => {
// Check if manifest data is available
if (this.manifestData) {
@@ -505,7 +530,7 @@ export class CharacterManager {
// If the trait is found, load it into the avatar using the _loadTraits method
if (selectedTrait) {
- await this._loadTraits(getAsArray(selectedTrait));
+ await this._loadTraits(getAsArray(selectedTrait),soloView);
resolve();
}
} catch (error) {
@@ -794,8 +819,46 @@ export class CharacterManager {
}
});
}
+ /**
+ * Displays only target trait, and removes all others
+ *
+ * @param {string} groupTraitID - The name of the trait that will be solo, (accepts also an array of traits)
+ */
+ async soloTargetGroupTrait(groupTraitID){
+ const groupTraitIDArray = getAsArray(groupTraitID)
+ const options = [];
+ for (const trait in this.avatar){
+ if (groupTraitIDArray.includes(trait)){
+ options.push(this.manifestData.getTraitOption(trait, this.avatar[trait].traitInfo.id));
+ }
+ }
+ await this._loadTraits(options,true);
+ }
+
+ /**
+ * Stores the current selected avatar for later loading
+ *
+ */
+ storeCurrentAvatar(){
+ this.storedAvatar = {...this.avatar}
+ }
+ /**
+ * Loads a previously stored avatar
+ *
+ */
+ async loadStoredAvatar(){
+ const options = [];
+ for (const trait in this.storedAvatar){
+ options.push(this.manifestData.getTraitOption(trait, this.storedAvatar[trait].traitInfo.id));
+ // TO DO, ALSO GET COLOR TRAITS AND TEXTURE TRAITS
+ }
+ console.log(options);
+ this._loadTraits(options,true);
+ //const selectedTrait = this.manifestData.getTraitOption(groupTraitID, traitID);
+ }
async _loadTraits(options, fullAvatarReplace = false){
+ console.log("laoded traits:", options)
await this.traitLoadManager.loadTraitOptions(getAsArray(options)).then(loadedData=>{
if (fullAvatarReplace){
// add null loaded options to existingt traits to remove them;
@@ -932,11 +995,10 @@ export class CharacterManager {
// Rotate model 180 degrees
if (vrm.meta?.metaVersion === '0'){
+ VRMUtils.rotateVRM0( vrm );
+ console.log("Loaded VRM0 file ", vrm);
vrm.scene.traverse((child) => {
if (child.isSkinnedMesh) {
-
- VRMUtils.rotateVRM0( vrm );
- console.log("Loaded VRM0 file ", vrm);
for (let i =0; i < child.skeleton.bones.length;i++){
child.skeleton.bones[i].userData.vrm0RestPosition = { ... child.skeleton.bones[i].position }
}
diff --git a/src/library/loraDataGenerator.js b/src/library/loraDataGenerator.js
index 1616b06c..7581c139 100644
--- a/src/library/loraDataGenerator.js
+++ b/src/library/loraDataGenerator.js
@@ -1,5 +1,6 @@
import * as THREE from "three"
import { getVectorCameraPosition, saveTextFile } from "./utils";
+import { ZipManager } from "./zipManager";
const localVector3 = new THREE.Vector3();
export class LoraDataGenerator {
@@ -9,13 +10,12 @@ export class LoraDataGenerator {
this.blinkManager = characterManager.blinkManager;
this.animationManager = this.characterManager.animationManager;
- console.log(this.characterManager);
- console.log(this.screenshotManager);
-
this.temptime = 0;
}
- async createLoraData(manifestURL, baseText){
+ async createLoraData(loraObject, exsitingZipFile = null, zipName = "", baseText){
+ const manifestURL = loraObject.manifest;
+ const loraFolderName = loraObject.name ? "loraData/" + loraObject.name : "loraData";
const manifest = await this._fetchManifest(manifestURL);
const {
@@ -36,11 +36,12 @@ export class LoraDataGenerator {
this.screenshotManager.setBackground([backgroundGrayscale,backgroundGrayscale,backgroundGrayscale])
this.blinkManager.enableScreenshot();
- this.screenshotManager._setBonesOffset(0.2);
+ await this.screenshotManager.calculateBoneOffsets(0.2);
const delay = ms => new Promise(res => setTimeout(res, ms));
let counter = 0;
const scope = this;
if (Array.isArray(dataCollection)){
+ const zip = exsitingZipFile == null ? new ZipManager() : exsitingZipFile;
const processAnimations = async() =>{
if (Array.isArray(dataCollection)) {
for (let i =0; i < dataCollection.length;i++){
@@ -54,7 +55,6 @@ export class LoraDataGenerator {
cameraFrame,
description
} = dataCollection[i];
- console.log(i);
counter++
const saveName = counter.toString().padStart(4, '0');
const finalAnimationTime = animationFrame ? animationFrame/30 : animationTime
@@ -62,17 +62,24 @@ export class LoraDataGenerator {
const vectorCameraPosition = getVectorCameraPosition(cameraPosition);
scope.screenshotManager.setCameraFrameWithName(cameraFrame,vectorCameraPosition);
-
- // add small delay to avoid skipping saves
- await delay(100);
- scope.screenshotManager.saveScreenshot(saveName, width, height);
- saveTextFile("anata" + " " + description + " " + backgroundDescription,saveName);
+
+ const imgData = scope.screenshotManager.getImageData(width, height, false);
+ // add lora data folder?
+ zip.addData(imgData,saveName, "png", loraFolderName);
+ zip.addData("anata" + " " + description + " " + backgroundDescription,saveName, "txt", loraFolderName)
}
}
}
-
+
// Call the function to start processing animations
await processAnimations();
+
+ // save only if no zipcontainer was provided
+ if (exsitingZipFile == null){
+ if (zipName == "")
+ zipName = "lora_zip";
+ zip.saveZip(zipName);
+ }
}
this.blinkManager.disableScreenshot();
diff --git a/src/library/screenshotManager.js b/src/library/screenshotManager.js
index 8758d6a9..52252c61 100644
--- a/src/library/screenshotManager.js
+++ b/src/library/screenshotManager.js
@@ -102,11 +102,15 @@ export class ScreenshotManager {
this.boneOffsets = {
head:null,
+ neck:null,
chest:null,
hips:null,
+ spine:null,
leftUpperLeg:null,
+ leftLowerLeg:null,
leftFoot:null,
rightUpperLeg:null,
+ rightLowerLeg:null,
rightFoot:null,
}
}
@@ -160,7 +164,6 @@ export class ScreenshotManager {
frameShot(minBoneName, maxBoneName, cameraPosition = null, minGetsMaxVertex = false, maxGetsMaxVertex = true){
const min = this._getBoneWorldPositionWithOffset(minBoneName, minGetsMaxVertex);
const max = this._getBoneWorldPositionWithOffset(maxBoneName, maxGetsMaxVertex);
-
min.y -= this.frameOffset.max;
max.y += this.frameOffset.min;
@@ -177,25 +180,27 @@ export class ScreenshotManager {
}
- _setBonesOffset(minWeight){
+ async calculateBoneOffsets(minWeight) {
for (const boneName in this.boneOffsets) {
- const result = this._getMinMaxOffsetByBone(this.characterManager.characterModel, boneName, minWeight);
-
- // Store the result in the boneOffsets property
- this.boneOffsets[boneName] = result;
+ // Use await to wait for the promise to resolve
+ const result = await this._getMinMaxOffsetByBone(this.characterManager.characterModel, boneName, minWeight);
+
+ // Store the result in the boneOffsets property
+ this.boneOffsets[boneName] = result;
}
- }
+}
_getBoneWorldPositionWithOffset(boneName, getMax) {
const bone = this._getFirstBoneWithName(boneName);
-
if (!bone || !this.boneOffsets[boneName]) {
return new THREE.Vector3();
}
const boneWorldPosition = new THREE.Vector3();
bone.getWorldPosition(boneWorldPosition);
+
const offset = getMax ? this.boneOffsets[boneName].max : this.boneOffsets[boneName].min;
boneWorldPosition.y += offset.y;
+
return boneWorldPosition;
}
@@ -259,75 +264,85 @@ export class ScreenshotManager {
}
}
- _getMinMaxOffsetByBone(parent, boneName, minWeight) {
- // Ensure parent is valid
- if (!parent || !parent.traverse) {
- console.error("Invalid parent object provided.");
- return null;
- }
+async _getMinMaxOffsetByBone(parent, boneName, minWeight) {
+ return new Promise(async(resolve, reject) => {
+ // Ensure parent is valid
+ if (!parent || !parent.traverse) {
+ console.error("Invalid parent object provided.");
+ reject(null);
+ }
- // Initialize min and max offset vectors
- const minOffset = new THREE.Vector3(Infinity, Infinity, Infinity);
- const maxOffset = new THREE.Vector3(-Infinity, -Infinity, -Infinity);
+ // Initialize min and max offset vectors
+ const minOffset = new THREE.Vector3(Infinity, Infinity, Infinity);
+ const maxOffset = new THREE.Vector3(-Infinity, -Infinity, -Infinity);
- // Traverse all children of the parent
- parent.traverse(async (child) => {
+ const prevPos = []
+ parent.traverse(async (child) => {
if (child instanceof THREE.SkinnedMesh) {
- const curPos = this._saveBonesPos(child.skeleton);
- const delay = ms => new Promise(res => setTimeout(res, ms));
-
+ prevPos.push(this._saveBonesPos(child.skeleton));
child.skeleton.pose();
- await delay(10);
-
- // Ensure each skinnedMesh has geometry
- if (!child.geometry) {
- console.error("Invalid skinned mesh found in children.");
- return;
- }
+ }
+ });
+ let prevPosCount = 0;
+
+ const delay = ms => new Promise(res => setTimeout(res, ms));
+ await delay(10);
+ // Traverse all children of the parent
+ parent.traverse((child) => {
+ if (child instanceof THREE.SkinnedMesh) {
+
+ // Ensure each skinnedMesh has geometry
+ if (!child.geometry) {
+ console.error("Invalid skinned mesh found in children.");
+ return;
+ }
- // Find the index of the bone by name
- const boneIndex = child.skeleton.bones.findIndex(bone => bone.name === boneName);
+ // Find the index of the bone by name
+ const boneIndex = child.skeleton.bones.findIndex(bone => bone.name === boneName);
- // Check if the bone with the given name exists
- if (boneIndex === -1) {
- console.error(`Bone with name '${boneName}' not found in one of the skinned meshes.`);
- return;
- }
-
- const positionAttribute = child.geometry.getAttribute("position");
- const skinWeightAttribute = child.geometry.getAttribute("skinWeight");
- const skinIndexAttribute = child.geometry.getAttribute("skinIndex");
-
- // Iterate through each vertex
- for (let i = 0; i < positionAttribute.count; i++) {
- const worldVertex = new THREE.Vector3().fromBufferAttribute(positionAttribute, i).applyMatrix4(child.matrixWorld);
-
- // Check the influence of the bone on the vertex
- const skinIndex = skinIndexAttribute.getX(i);
+ // Check if the bone with the given name exists
+ if (boneIndex === -1) {
+ console.error(`Bone with name '${boneName}' not found in one of the skinned meshes.`);
+ return;
+ }
- if (skinIndex === boneIndex) {
- // Get the weight of the bone influence
- const influence = skinWeightAttribute.getX(i);
-
- // If the influence is above the minimum weight
- if (influence >= minWeight) {
- // Calculate offset from the bone's position difference
- const bone = child.skeleton.bones[boneIndex];
- const bonePosition = new THREE.Vector3().setFromMatrixPosition(bone.matrixWorld);
- const offset = worldVertex.clone().sub(bonePosition);
-
- // Update min and max offset vectors
- minOffset.min(offset);
- maxOffset.max(offset);
+ const positionAttribute = child.geometry.getAttribute("position");
+ const skinWeightAttribute = child.geometry.getAttribute("skinWeight");
+ const skinIndexAttribute = child.geometry.getAttribute("skinIndex");
+
+ // Iterate through each vertex
+ for (let i = 0; i < positionAttribute.count; i++) {
+ const worldVertex = new THREE.Vector3().fromBufferAttribute(positionAttribute, i).applyMatrix4(child.matrixWorld);
+
+ // Check the influence of the bone on the vertex
+ const skinIndex = skinIndexAttribute.getX(i);
+
+ if (skinIndex === boneIndex) {
+ // Get the weight of the bone influence
+ const influence = skinWeightAttribute.getX(i);
+
+ // If the influence is above the minimum weight
+ if (influence >= minWeight) {
+ // Calculate offset from the bone's position difference
+ const bone = child.skeleton.bones[boneIndex];
+ const bonePosition = new THREE.Vector3().setFromMatrixPosition(bone.matrixWorld);
+ const offset = worldVertex.clone().sub(bonePosition);
+
+ // Update min and max offset vectors
+ minOffset.min(offset);
+ maxOffset.max(offset);
+ }
+ }
}
- }
+ this._restoreSavedPose(prevPos[prevPosCount], child.skeleton);
+ prevPosCount++;
}
- this._restoreSavedPose(curPos, child.skeleton);
- }
- });
- //topOffset bottomOffset
- return { min: minOffset, max: maxOffset };
- }
+ });
+
+ // Resolve with min and max offset vectors
+ resolve({ min: minOffset, max: maxOffset });
+ });
+}
_saveBonesPos(skeleton){
let savedPose = [];
@@ -464,15 +479,23 @@ export class ScreenshotManager {
this.scene.remove(this.backgroundPlane);
}
}
+ getImageData(width, height, pixelSize = null){
+ return this._createImage(width, height, pixelSize).split("base64,")[1];
+ }
- _createImage(width, height, pixelStyle = false){
+ _createImage(width, height, pixelSize = null){
const aspectRatio = width / height;
+
+ if (typeof pixelSize === 'number'){
+ this.pixelRenderer.setPixelSize(pixelSize);
+ }
this.renderer.setSize(width, height);
+ this.pixelRenderer.setSize(width,height);
const strMime = "image/png";
this.camera.aspect = aspectRatio;
this.camera.updateProjectionMatrix();
- const renderer = pixelStyle ? this.pixelRenderer : this.renderer;
+ const renderer = typeof pixelSize === 'number' ? this.pixelRenderer : this.renderer;
try {
this._setBackground();
diff --git a/src/library/shaders/PixelatePass.js b/src/library/shaders/PixelatePass.js
index ccc7eeb6..41d8bd99 100644
--- a/src/library/shaders/PixelatePass.js
+++ b/src/library/shaders/PixelatePass.js
@@ -5,7 +5,6 @@ export class PixelatePass extends Pass {
super();
this.resolution = resolution;
this.fsQuad = new FullScreenQuad(this.material());
- console.log( this.fsQuad)
}
setResolution(resolution){
this.resolution = resolution;
diff --git a/src/library/spriteAtlasGenerator.js b/src/library/spriteAtlasGenerator.js
index 5b998d77..5cf40860 100644
--- a/src/library/spriteAtlasGenerator.js
+++ b/src/library/spriteAtlasGenerator.js
@@ -1,5 +1,7 @@
import * as THREE from "three"
import { getVectorCameraPosition } from "./utils";
+import { ZipManager } from "./zipManager";
+
const localVector3 = new THREE.Vector3();
export class SpriteAtlasGenerator {
@@ -10,8 +12,9 @@ export class SpriteAtlasGenerator {
this.animationManager = this.characterManager.animationManager;
}
- async createSpriteAtlas(manifestURL){
-
+ async createSpriteAtlas(spriteObject, exsitingZipFile = null, zipName = ""){
+ const manifestURL = spriteObject.manifest;
+ const spriteFolderName = spriteObject.name ? "spriteData/" + spriteObject.name : "spriteData";
const manifest = await this._fetchManifest(manifestURL);
const {
@@ -35,16 +38,16 @@ export class SpriteAtlasGenerator {
this.screenshotManager.setTopFrameOffset(topFrameOffset);
this.screenshotManager.setBackground(backgroundColor)
this.blinkManager.enableScreenshot();
- this.screenshotManager._setBonesOffset(0.2);
+ await this.screenshotManager.calculateBoneOffsets(0.2);
let counter = 0;
- console.log(manifest);
const scope = this;
if (Array.isArray(spritesCollection)){
- console.log("e");
+ const zip = exsitingZipFile == null ? new ZipManager() : exsitingZipFile;
async function processAnimations() {
if (Array.isArray(spritesCollection)) {
+
for (const spriteInfo of spritesCollection) {
const {
animationName,
@@ -56,29 +59,40 @@ export class SpriteAtlasGenerator {
cameraFrame,
} = spriteInfo;
counter++
- const saveName = animationName ? animationName : counter.toString().padStart(2, '0');
+ const currentAnimationFolder = spriteFolderName + "/" + (animationName ? animationName : counter.toString().padStart(2, '0'));
await scope.animationManager.loadAnimation(animBasePath + animationPath, true, 0);
const vectorCameraPosition = getVectorCameraPosition(cameraPosition);
scope.screenshotManager.setCameraFrameWithName(cameraFrame,vectorCameraPosition);
- const clipDuration = scope.animationManager.getCurrentClip()?.duration;
- if (clipDuration){
- console.log(clipDuration);
- const timeOffsets = clipDuration/framesNumber
- for (let i =0; i < framesNumber ; i++){
-
- scope.animationManager.setTime(i * timeOffsets);
- // delay required as its saving images too fast
- await delay(100);
- pixelStyleSize ?
- scope.screenshotManager.savePixelScreenshot(saveName + "_" +i.toString().padStart(2, '0'), atlasWidth, atlasHeight,pixelStyleSize):
- scope.screenshotManager.saveScreenshot(saveName + "_" +i.toString().padStart(2, '0'), atlasWidth, atlasHeight);
- }
+ const clipDuration = scope.animationManager.getCurrentClipDuration();
+
+ const timeOffsets = clipDuration/framesNumber
+ for (let i =0; i < framesNumber ; i++){
+
+ scope.animationManager.setTime(i * timeOffsets);
+ // delay required as its saving images too fast
+ // await delay(100);
+ // pixelStyleSize ?
+ // scope.screenshotManager.savePixelScreenshot(saveName + "_" +i.toString().padStart(2, '0'), atlasWidth, atlasHeight,pixelStyleSize):
+ // scope.screenshotManager.saveScreenshot(saveName + "_" +i.toString().padStart(2, '0'), atlasWidth, atlasHeight);
+
+
+
+ const imgData = scope.screenshotManager.getImageData(atlasWidth, atlasHeight, pixelStyleSize);
+ // add lora data folder?
+ zip.addData(imgData,i.toString().padStart(2, '0'), "png", currentAnimationFolder);
}
}
}
}
// Call the function to start processing animations
await processAnimations();
+
+ // save only if no zipcontainer was provided
+ if (exsitingZipFile == null){
+ if (zipName == "")
+ zipName = "sprites_zip";
+ zip.saveZip(zipName);
+ }
}
this.blinkManager.disableScreenshot();
diff --git a/src/library/thumbnailsGenerator.js b/src/library/thumbnailsGenerator.js
new file mode 100644
index 00000000..1a926ff0
--- /dev/null
+++ b/src/library/thumbnailsGenerator.js
@@ -0,0 +1,179 @@
+import * as THREE from "three"
+import { getAsArray, getVectorCameraPosition } from "./utils";
+import { ZipManager } from "./zipManager";
+
+const localVector3 = new THREE.Vector3();
+
+
+export class ThumbnailGenerator {
+ constructor(characterManager){
+ this.characterManager = characterManager;
+ this.screenshotManager = characterManager.screenshotManager;
+ this.blinkManager = characterManager.blinkManager;
+ this.animationManager = this.characterManager.animationManager;
+ }
+ //, exsitingZipFile = null, zipName = ""
+ async createThumbnailsWithObjectData(objectData, loadAnimation = true, exsitingZipFile = null, zipName = ""){
+
+ const {
+
+ assetsLocation = "",
+ poseAnimation = "",
+ animationFrame,
+ animationTime,
+ backgroundColor = [1,1,1,0],
+ screenshotOffset,
+ topFrameOffset = 0.1,
+ bottomFrameOffset = 0.1,
+ thumbnailsWidth = 128,
+ thumbnailsHeight = 128,
+
+ thumbnailsCollection
+ } = objectData
+ const animBasePath = assetsLocation + "/";
+
+ let finalAnimationTime = animationFrame || 0;
+ if (animationTime != null){
+ finalAnimationTime = animationTime * 30;
+ }
+
+ if (loadAnimation){
+ await this.animationManager.loadAnimation(animBasePath + poseAnimation, true, finalAnimationTime);
+ }
+
+
+ // const normalizedTopOffset = topFrameOffsetPixels/height;
+ // const normalizedBottomOffset = bottomFrameOffsetPixels/height;
+
+ const delay = ms => new Promise(res => setTimeout(res, ms));
+
+ this.screenshotManager.setBottomFrameOffset(bottomFrameOffset);
+ this.screenshotManager.setTopFrameOffset(topFrameOffset);
+ this.screenshotManager.setBackground(backgroundColor)
+ this.blinkManager.enableScreenshot();
+ await this.screenshotManager.calculateBoneOffsets(0.2);
+
+ const scope = this;
+
+
+ // pose the character
+
+ if (Array.isArray(thumbnailsCollection)){
+
+ const zip = exsitingZipFile == null ? new ZipManager() : exsitingZipFile;
+ let singleSave = false;
+ async function processScreenshots() {
+ for (const thumbnailInfo of thumbnailsCollection) {
+
+ const {
+ traitGroup,
+ cameraPosition = "front",
+ bottomBoneName,
+ bottomBoneMaxVertex = false,
+ topBoneName,
+ topBoneMaxVertex = true,
+ groupTopOffset,
+ groupBotomOffset,
+ cameraFrame,
+ saveOnlyIDs
+ } = thumbnailInfo;
+
+
+
+ if (!bottomBoneName || !topBoneName){
+ if (!cameraFrame){
+ console.warn("missing bonename info or camera frame. Skipping")
+ }
+ }
+ if (!traitGroup){
+ console.warn("missing trait group for thumbnail info. Skipping")
+ continue;
+ }
+
+ const getSaveOnlyIDs = () => {
+ const resultArray = [];
+ const saveOnlyIDArray = getAsArray (saveOnlyIDs);
+ saveOnlyIDArray.forEach(idValue => {
+ resultArray.push({id:idValue})
+ });
+ return resultArray;
+ }
+
+ const modelTraits = saveOnlyIDs == null ?
+ scope.characterManager.getTraits(traitGroup):
+ getSaveOnlyIDs();
+
+
+
+ if (modelTraits == null){
+ console.log("SKipping Thumbnail Generation for trait group " + traitGroup + ", its not present in the character manifest.")
+ continue;
+ }
+
+ const vectorCameraPosition = getVectorCameraPosition(cameraPosition);
+ if (cameraFrame){
+ scope.screenshotManager.setCameraFrameWithName(cameraFrame, vectorCameraPosition);
+ }
+ else{
+
+ scope.screenshotManager.frameShot(bottomBoneName, topBoneName, vectorCameraPosition, bottomBoneMaxVertex, topBoneMaxVertex);
+ }
+
+ //let counter = 0;
+ for (let i=0; i < modelTraits.length;i++){
+
+ const traitId = modelTraits[i].id;
+ let imgName = traitId;
+
+ if (modelTraits[i].fullDirectory != null){
+ const fullDir = modelTraits[i].fullDirectory.split('/');
+ const baseName = fullDir[fullDir.length - 1];
+ imgName = baseName.split('.')[0];
+ }
+ await scope.characterManager.loadTrait(traitGroup, traitId,true);
+
+ if (thumbnailsCollection.length == 1 && modelTraits.length == 1){
+ singleSave = true;
+ scope.screenshotManager.saveScreenshot(imgName,thumbnailsWidth, thumbnailsHeight);
+ }
+ else{
+ const imgData = scope.screenshotManager.getImageData(thumbnailsWidth, thumbnailsHeight);
+ zip.addData(imgData,imgName, "png", traitGroup);
+ }
+
+ // counter++
+ // if (counter >= 10){
+ // break;
+ // }
+ }
+ //const saveName = animationName ? animationName : counter.toString().padStart(2, '0');
+
+ }
+ }
+
+ // Call the function to start processing animations
+ await processScreenshots();
+ if (exsitingZipFile == null && singleSave == false){
+ if (zipName == "")
+ zipName = "thumbnails_zip";
+ zip.saveZip(zipName);
+ }
+ }
+
+ this.blinkManager.disableScreenshot();
+ }
+
+ async createThumbnails(spriteObject, exsitingZipFile = null, zipName = ""){
+ const manifestURL = spriteObject.manifest;
+ const manifest = await this._fetchManifest(manifestURL);
+ await this.createThumbnailsWithObjectData(manifest, true, exsitingZipFile, zipName);
+
+ }
+
+ async _fetchManifest(location) {
+ const response = await fetch(location)
+ const data = await response.json()
+ return data
+ }
+
+}
\ No newline at end of file
diff --git a/src/library/zipManager.js b/src/library/zipManager.js
new file mode 100644
index 00000000..212df476
--- /dev/null
+++ b/src/library/zipManager.js
@@ -0,0 +1,78 @@
+import JSZip from 'jszip';
+
+
+export class ZipManager{
+ constructor() {
+ this.zipContainer = {};
+ }
+
+ addData(data, dataName, extension, zipFolder = ""){
+
+ if (zipFolder == "") zipFolder = "_";
+
+ if ( this.zipContainer[zipFolder] == null){
+ this.zipContainer[zipFolder] = [];
+ }
+
+ this.zipContainer[zipFolder].push({ data: data , name: dataName, extension:extension});
+
+ }
+
+ // Function to save the image array as a zip folder
+ saveZip(zipName, reset = true) {
+ const zipContainer = this.zipContainer;
+ const zip = new JSZip();
+ // zip.file(filename + ".txt", textContent);
+ for (const prop in zipContainer){
+ if (prop == "_"){
+
+ //zip.file(image.name + ".png", image.data.split("base64,")[1], { base64: true });
+ zipContainer[prop].forEach((data, index) => {
+ zip.file(data.name + "." + data.extension, data.data, { base64: true });
+ });
+ }
+ else{
+ const folder = zip.folder(prop);
+
+
+ zipContainer[prop].forEach((data, index) => {
+ const base64 = data.extension != "txt" ? true : false;
+ folder.file(data.name + "." + data.extension, data.data, { base64: base64 });
+ });
+
+ }
+
+ }
+
+ zip.generateAsync({ type: "blob" })
+ .then((content) => {
+ this._saveZipFile(content, zipName+".zip");
+
+ });
+
+ if (reset)
+ this.zipContainer = {}
+
+
+ }
+
+ _saveZipFile(strData, filename) {
+ const blob = new Blob([strData], { type: "application/zip" });
+ if (typeof window.navigator.msSaveBlob !== 'undefined') {
+ // For IE and Edge
+ window.navigator.msSaveBlob(blob, filename);
+ } else {
+ const link = document.createElement('a');
+ if (typeof link.download === 'string') {
+ document.body.appendChild(link); // Firefox requires the link to be in the body
+ link.download = filename;
+ link.href = URL.createObjectURL(blob);
+ link.click();
+ document.body.removeChild(link); // Remove the link when done
+ } else {
+ const win = window.open(strData, "_blank");
+ win.document.write("" + filename + "");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/pages/Appearance.jsx b/src/pages/Appearance.jsx
index 9d7cb37a..be6dcdd9 100644
--- a/src/pages/Appearance.jsx
+++ b/src/pages/Appearance.jsx
@@ -11,13 +11,14 @@ import FileDropComponent from "../components/FileDropComponent"
import { getFileNameWithoutExtension } from "../library/utils"
import MenuTitle from "../components/MenuTitle"
import BottomDisplayMenu from "../components/BottomDisplayMenu"
-import TraitInformation from "../components/TraitInformation"
+
import { TokenBox } from "../components/token-box/TokenBox"
import JsonAttributes from "../components/JsonAttributes"
import cancel from "../images/cancel.png"
import randomizeIcon from "../images/randomize.png"
import colorPicker from "../images/color-palette.png"
import { ChromePicker } from 'react-color'
+import RightPanel from "../components/RightPanel"
function Appearance() {
const { isLoading, setViewMode, setIsLoading } = React.useContext(ViewContext)
@@ -28,6 +29,7 @@ function Appearance() {
moveCamera,
loraDataGenerator,
spriteAtlasGenerator,
+ thumbnailsGenerator,
sceneElements
} = React.useContext(SceneContext)
@@ -91,20 +93,6 @@ function Appearance() {
setLoadedAnimationName(animationManager.getCurrentAnimationName());
}
- const createLora = async() =>{
- const parentScene = sceneElements.parent;
- parentScene.remove(sceneElements);
- await loraDataGenerator.createLoraData('./lora-assets/manifest.json');
- parentScene.add(sceneElements);
- }
-
- const createSpriteAtlas = async () =>{
- const parentScene = sceneElements.parent;
- parentScene.remove(sceneElements);
- await spriteAtlasGenerator.createSpriteAtlas('./sprite-atlas-assets/manifest.json');
- parentScene.add(sceneElements);
- }
-
const handleImageDrop = (file) => {
setIsPickingColor(false);
if (traitGroupName != ""){
@@ -387,8 +375,8 @@ function Appearance() {
)}
-
+
+
}
-
-
{/* {
+ const downloadVRMWithIndex = (index, downloadLora = false) =>{
+ console.log(downloadLora)
+ const saveData = async()=>{
+ await characterManager.loadTraitsFromNFTObject(jsonSelectionArray[index]);
+ const downloadVRM = local["mergeOptions_download_vrm"] == null ? true : local["mergeOptions_download_vrm"];
+ if (downloadVRM){
+ await characterManager.downloadVRM(jsonSelectionArray[index].name, getOptions());
+ }
+
+ const downloadZip = new ZipManager();
+ const parentScene = sceneElements.parent;
+ parentScene.remove(sceneElements);
+ const downloadLora = local["mergeOptions_download_lora"] == null ? true : local["mergeOptions_download_lora"];
+ if (downloadLora === true) {
+ const promises = manifest.loras.map(async lora => {
+ return loraDataGenerator.createLoraData(lora, downloadZip);
+ });
- characterManager.loadTraitsFromNFTObject(jsonSelectionArray[index]).then(()=>{
- characterManager.downloadVRM(jsonSelectionArray[index].name, getOptions()).then(()=>{
- if (index < jsonSelectionArray.length-1 )
- downloadVRMWithIndex(index + 1)
- else
- setIsLoading(false);
- })
- })
+ await Promise.all(promises);
+ }
+
+ const downloadSprites = local["mergeOptions_download_sprites"] == null ? true : local["mergeOptions_download_sprites"];
+ if (downloadSprites === true){
+ const promises = manifest.sprites.map(async sprite => {
+ return spriteAtlasGenerator.createSpriteAtlas(sprite, downloadZip);
+ });
+
+ await Promise.all(promises);
+ }
+
+ if(downloadLora === true || downloadSprites === true){
+ downloadZip.saveZip(jsonSelectionArray[index].name);
+ }
+
+ parentScene.add(sceneElements);
+
+ if (index < jsonSelectionArray.length-1 )
+ downloadVRMWithIndex(index + 1)
+ else{
+ setIsLoading(false);
+ }
+ }
+ saveData();
+ // characterManager.loadTraitsFromNFTObject(jsonSelectionArray[index]).then(async()=>{
+ // if (downloadLora == true){
+ // const parentScene = sceneElements.parent;
+ // parentScene.remove(sceneElements);
+
+ // await loraDataGenerator.createLoraData(manifest.loras[0], null, jsonSelectionArray[index].name);
+ // parentScene.add(sceneElements);
+ // }
+ // characterManager.downloadVRM(jsonSelectionArray[index].name, getOptions()).then( ()=>{
+
+ // if (index < jsonSelectionArray.length-1 )
+ // downloadVRMWithIndex(index + 1)
+ // else{
+ // setIsLoading(false);
+ // }
+ // })
+ // })
}
const download = () => {
setIsLoading(true);
- downloadVRMWithIndex(0);
+ downloadVRMWithIndex(0, true);
}
// Translate hook
diff --git a/src/pages/BatchManifest.jsx b/src/pages/BatchManifest.jsx
index 8bde347c..79b3b8a7 100644
--- a/src/pages/BatchManifest.jsx
+++ b/src/pages/BatchManifest.jsx
@@ -15,14 +15,19 @@ import JsonAttributes from "../components/JsonAttributes"
import ModelInformation from "../components/ModelInformation"
import MergeOptions from "../components/MergeOptions"
import { local } from "../library/store"
+import { ZipManager } from "../library/zipManager"
import { connectWallet } from "../library/mint-utils"
function BatchManifest() {
const { isLoading, setViewMode, setIsLoading } = React.useContext(ViewContext)
const {
+ manifest,
characterManager,
animationManager,
toggleDebugMode,
+ loraDataGenerator,
+ spriteAtlasGenerator,
+ sceneElements
} = React.useContext(SceneContext)
const [model, setModel] = useState(null);
@@ -59,41 +64,68 @@ function BatchManifest() {
}
}
- const downloadLoaded = (index, onlyImage = false) =>{
+ const downloadLoaded = (index) =>{
const downloadName = manifestSelectionArray[index].manifestName;
- characterManager.savePortraitScreenshot(downloadName, 512,1024,1.5,-0.1);
- if (onlyImage){
+
+ const saveData = async()=>{
+ const downloadVRMImage = local["mergeOptions_download_vrm_preview"] == null ? true : local["mergeOptions_download_vrm_preview"];
+ if (downloadVRMImage){
+ characterManager.savePortraitScreenshot(downloadName, 512,1024,1.5,-0.1);
+ }
+ const downloadVRM = local["mergeOptions_download_vrm"] == null ? true : local["mergeOptions_download_vrm"];
+ if (downloadVRM){
+ await characterManager.downloadVRM(downloadName, getOptions());
+ }
+ const downloadZip = new ZipManager();
+ const parentScene = sceneElements.parent;
+ parentScene.remove(sceneElements);
+ const downloadLora = local["mergeOptions_download_lora"] == null ? true : local["mergeOptions_download_lora"];
+ if (downloadLora === true) {
+ const promises = manifest.loras.map(async lora => {
+ return loraDataGenerator.createLoraData(lora, downloadZip);
+ });
+
+ await Promise.all(promises);
+ }
+
+ const downloadSprites = local["mergeOptions_download_sprites"] == null ? true : local["mergeOptions_download_sprites"];
+ if (downloadSprites === true){
+ const promises = manifest.sprites.map(async sprite => {
+ return spriteAtlasGenerator.createSpriteAtlas(sprite, downloadZip);
+ });
+
+ await Promise.all(promises);
+ }
+
+ if(downloadLora === true || downloadSprites === true){
+ downloadZip.saveZip(manifestSelectionArray[index].manifestName);
+ }
+
+ parentScene.add(sceneElements);
if (index < manifestSelectionArray.length-1 ){
console.log("downloaded " + downloadName)
- downloadVRMWithIndex(index + 1, onlyImage)
+ downloadVRMWithIndex(index + 1)
}
- else{
+ else
setIsLoading(false);
- }
- }
- else{
- characterManager.downloadVRM(downloadName, getOptions()).then(()=>{
- if (index < manifestSelectionArray.length-1 ){
- console.log("downloaded " + downloadName)
- downloadVRMWithIndex(index + 1)
- }
- else
- setIsLoading(false);
- })
}
+ saveData();
}
- const downloadVRMWithIndex= async(index, onlyImage = false)=>{
+ const downloadVRMWithIndex= async(index)=>{
if (index == 0){
- downloadLoaded(index, onlyImage)
+ console.log(manifest.loras[0]);
+
+ downloadLoaded(index)
}
else{
await characterManager.setManifest(manifestSelectionArray[index]);
setIsLoading(true);
characterManager.loadInitialTraits().then(async()=>{
- const delay = ms => new Promise(res => setTimeout(res, ms));
+
+ const delay = ms => new Promise(res => setTimeout(res, ms));
await delay(1);
- downloadLoaded(index, onlyImage);
+ downloadLoaded(index);
})
}
}
@@ -103,11 +135,6 @@ function BatchManifest() {
downloadVRMWithIndex(0);
}
- const downloadImage = () => {
- setIsLoading(true);
- downloadVRMWithIndex(0, true);
- }
-
// Translate hook
const { t } = useContext(LanguageContext)
@@ -253,22 +280,6 @@ function BatchManifest() {
size={14}
className={styles.buttonRight}
onClick={download}
- />)}
- {(manifestSelectionArray?.length == 1)&&(
- )}
- {(manifestSelectionArray?.length > 1)&&(
- )}
diff --git a/src/pages/Claim.jsx b/src/pages/Claim.jsx
index 21654c50..e0c62168 100644
--- a/src/pages/Claim.jsx
+++ b/src/pages/Claim.jsx
@@ -21,8 +21,8 @@ function Claim() {
const [ classes, setClasses ] = useState([])
useEffect(() => {
- if (manifest != null){
- const manifestClasses = manifest.map((c) => {
+ if (manifest?.characters != null){
+ const manifestClasses = manifest.characters.map((c) => {
return {
name:c.name,
image:c.portrait,
@@ -45,7 +45,7 @@ function Claim() {
const selectClass = async (index) => {
setIsLoading(true)
// Load manifest first
- characterManager.loadManifest(manifest[index].manifest).then(()=>{
+ characterManager.loadManifest(manifest.characters[index].manifest).then(()=>{
setViewMode(ViewMode.BATCHDOWNLOAD)
// When Manifest is Loaded, load initial traits from given manifest
characterManager.loadInitialTraits().then(()=>{
diff --git a/src/pages/Create.jsx b/src/pages/Create.jsx
index 0f1659c1..e96ba901 100644
--- a/src/pages/Create.jsx
+++ b/src/pages/Create.jsx
@@ -21,8 +21,8 @@ function Create() {
const [ classes, setClasses ] = useState([])
useEffect(() => {
- if (manifest != null){
- const manifestClasses = manifest.map((c) => {
+ if (manifest?.characters != null){
+ const manifestClasses = manifest.characters.map((c) => {
return {
name:c.name,
image:c.portrait,
@@ -45,7 +45,7 @@ function Create() {
const selectClass = async (index) => {
setIsLoading(true)
// Load manifest first
- characterManager.loadManifest(manifest[index].manifest).then(()=>{
+ characterManager.loadManifest(manifest.characters[index].manifest).then(()=>{
setViewMode(ViewMode.APPEARANCE)
// When Manifest is Loaded, load initial traits from given manifest
characterManager.loadInitialTraits().then(()=>{
diff --git a/src/pages/Landing.jsx b/src/pages/Landing.jsx
index 6f2b72c0..51832f17 100644
--- a/src/pages/Landing.jsx
+++ b/src/pages/Landing.jsx
@@ -58,6 +58,9 @@ function Landing() {
}
+ {/*
*/}
{/*
)
diff --git a/yarn.lock b/yarn.lock
index 2bd3043e..8ac96537 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -37,7 +37,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz"
integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
-"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.14.3", "@babel/core@^7.16.0", "@babel/core@^7.20.12", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.14.3", "@babel/core@^7.16.0", "@babel/core@^7.20.12", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
version "7.21.0"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz"
integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==
@@ -126,10 +126,10 @@
regexpu-core "^5.3.1"
semver "^6.3.1"
-"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2":
- version "0.6.2"
- resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz"
- integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==
+"@babel/helper-define-polyfill-provider@^0.6.1":
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz"
+ integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==
dependencies:
"@babel/helper-compilation-targets" "^7.22.6"
"@babel/helper-plugin-utils" "^7.22.5"
@@ -417,7 +417,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
-"@babel/plugin-syntax-flow@^7.24.1":
+"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.24.1":
version "7.24.1"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz"
integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==
@@ -878,7 +878,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.19.0"
-"@babel/plugin-transform-react-jsx@^7.14.3", "@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4":
+"@babel/plugin-transform-react-jsx@^7.14.3", "@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4":
version "7.23.4"
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz"
integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==
@@ -1125,7 +1125,7 @@
resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
-"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.19.4", "@babel/runtime@^7.20.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.19.4", "@babel/runtime@^7.20.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.8.4":
version "7.24.4"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz"
integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==
@@ -1324,15 +1324,15 @@
escape-string-regexp "^4.0.0"
rollup-plugin-node-polyfills "^0.2.1"
-"@esbuild/darwin-arm64@0.16.3":
+"@esbuild/win32-x64@0.16.3":
version "0.16.3"
- resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.3.tgz"
- integrity sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==
+ resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.3.tgz"
+ integrity sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==
-"@esbuild/darwin-arm64@0.18.20":
+"@esbuild/win32-x64@0.18.20":
version "0.18.20"
- resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz"
- integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
+ resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz"
+ integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
"@eslint-community/eslint-utils@^4.2.0":
version "4.4.0"
@@ -2243,7 +2243,7 @@
dependencies:
"@octokit/types" "^9.0.0"
-"@octokit/core@^4.1.0":
+"@octokit/core@^4.1.0", "@octokit/core@>=3", "@octokit/core@>=4":
version "4.2.0"
resolved "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz"
integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==
@@ -2491,6 +2491,23 @@
resolved "https://registry.npmjs.org/@react-spring/types/-/types-9.7.1.tgz"
integrity sha512-yBcyfKUeZv9wf/ZFrQszvhSPuDx6Py6yMJzpMnS+zxcZmhXPeOCKZSHwqrUz1WxvuRckUhlgb7eNI/x5e1e8CA==
+"@react-three/fiber@>=6.0":
+ version "8.16.1"
+ resolved "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.16.1.tgz"
+ integrity sha512-Rgjn+xcR+6Do2Ic4b6RROIvCGs3RhoVJEamfmtMSfkgIRH3PeiPdqRxcfJlO9y6KDvYA5fIUGruz9h/sTeLlpw==
+ dependencies:
+ "@babel/runtime" "^7.17.8"
+ "@types/react-reconciler" "^0.26.7"
+ "@types/webxr" "*"
+ base64-js "^1.5.1"
+ buffer "^6.0.3"
+ its-fine "^1.0.6"
+ react-reconciler "^0.27.0"
+ react-use-measure "^2.1.1"
+ scheduler "^0.21.0"
+ suspend-react "^0.1.3"
+ zustand "^3.7.1"
+
"@rollup/plugin-babel@^5.2.0":
version "5.3.1"
resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz"
@@ -2529,9 +2546,9 @@
picomatch "^2.2.2"
"@rushstack/eslint-patch@^1.1.0":
- version "1.10.2"
- resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz"
- integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==
+ version "1.10.1"
+ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz"
+ integrity sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==
"@sinclair/typebox@^0.24.1":
version "0.24.51"
@@ -2665,10 +2682,10 @@
"@svgr/plugin-svgo" "^5.5.0"
loader-utils "^2.0.0"
-"@swc/core-darwin-arm64@1.3.38":
+"@swc/core-win32-x64-msvc@1.3.38":
version "1.3.38"
- resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.38.tgz"
- integrity sha512-4ZTJJ/cR0EsXW5UxFCifZoGfzQ07a8s4ayt1nLvLQ5QoB1GTAf9zsACpvWG8e7cmCR0L76R5xt8uJuyr+noIXA==
+ resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.38.tgz"
+ integrity sha512-UFveLrL6eGvViOD8OVqUQa6QoQwdqwRvLtL5elF304OT8eCPZa8BhuXnWk25X8UcOyns8gFcb8Fhp3oaLi/Rlw==
"@swc/core@^1.3.35":
version "1.3.38"
@@ -2704,7 +2721,7 @@
resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz"
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
-"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14":
+"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9":
version "7.20.5"
resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
@@ -2738,9 +2755,9 @@
"@babel/types" "^7.20.7"
"@types/better-sqlite3@^7.6.0":
- version "7.6.10"
- resolved "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.10.tgz"
- integrity sha512-TZBjD+yOsyrUJGmcUj6OS3JADk3+UZcNv3NOBqGkM09bZdi28fNZw8ODqbMOLfKCu7RYCO62/ldq1iHbzxqoPw==
+ version "7.6.9"
+ resolved "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.9.tgz"
+ integrity sha512-FvktcujPDj9XKMJQWFcl2vVl7OdRIqsSRX9b0acWwTmwLK9CF2eqo/FRcmMLNpugKoX/avA6pb7TorDLmpgTnQ==
dependencies:
"@types/node" "*"
@@ -2783,9 +2800,9 @@
"@types/estree" "*"
"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1":
- version "8.56.10"
- resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz"
- integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==
+ version "8.56.7"
+ resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz"
+ integrity sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
@@ -2885,12 +2902,10 @@
dependencies:
"@types/node" "*"
-"@types/node@*":
- version "20.12.7"
- resolved "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz"
- integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==
- dependencies:
- undici-types "~5.26.4"
+"@types/node@*", "@types/node@>= 14":
+ version "18.14.6"
+ resolved "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz"
+ integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==
"@types/parse-json@^4.0.0":
version "4.0.2"
@@ -2902,21 +2917,48 @@
resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz"
integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==
+"@types/prop-types@*":
+ version "15.7.12"
+ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz"
+ integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
+
"@types/q@^1.5.1":
version "1.5.8"
resolved "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz"
integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==
"@types/qs@*":
- version "6.9.15"
- resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz"
- integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==
+ version "6.9.14"
+ resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz"
+ integrity sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==
"@types/range-parser@*":
version "1.2.7"
resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz"
integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==
+"@types/react-reconciler@^0.26.7":
+ version "0.26.7"
+ resolved "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz"
+ integrity sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-reconciler@^0.28.0":
+ version "0.28.8"
+ resolved "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.8.tgz"
+ integrity sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*":
+ version "18.2.74"
+ resolved "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz"
+ integrity sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==
+ dependencies:
+ "@types/prop-types" "*"
+ csstype "^3.0.2"
+
"@types/resolve@1.17.1":
version "1.17.1"
resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz"
@@ -2975,11 +3017,23 @@
resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz"
integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
+"@types/three@^0.149.0":
+ version "0.149.0"
+ resolved "https://registry.npmjs.org/@types/three/-/three-0.149.0.tgz"
+ integrity sha512-fgNBm9LWc65ER/W0cvoXdC0iMy7Ke9e2CONmEr6Jt8sDSY3sw4DgOubZfmdZ747dkPhbQrgRQAWwDEr2S/7IEg==
+ dependencies:
+ "@types/webxr" "*"
+
"@types/trusted-types@^2.0.2":
version "2.0.7"
resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz"
integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==
+"@types/webxr@*":
+ version "0.5.15"
+ resolved "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.15.tgz"
+ integrity sha512-nC9116Gd4N+CqTxqo6gvCfhAMAzgRcfS8ZsciNodHq8uwW4JCVKwhagw8yN0XmC7mHrLnWqniJpoVEiR+72Drw==
+
"@types/ws@^8.5.5":
version "8.5.10"
resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz"
@@ -3006,7 +3060,7 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/eslint-plugin@^5.5.0":
+"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0":
version "5.62.0"
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz"
integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==
@@ -3029,7 +3083,7 @@
dependencies:
"@typescript-eslint/utils" "5.62.0"
-"@typescript-eslint/parser@^5.5.0":
+"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0":
version "5.62.0"
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz"
integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==
@@ -3340,16 +3394,16 @@ acorn-walk@^7.1.1:
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2:
+ version "8.8.2"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
+ integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
+
acorn@^7.1.1:
version "7.4.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2:
- version "8.8.2"
- resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
- integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
-
address@^1.0.1, address@^1.1.2:
version "1.2.2"
resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz"
@@ -3394,7 +3448,7 @@ ajv-keywords@^5.1.0:
dependencies:
fast-deep-equal "^3.1.3"
-ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -3414,7 +3468,7 @@ ajv@^8.0.0:
require-from-string "^2.0.2"
uri-js "^4.2.2"
-ajv@^8.6.0:
+ajv@^8.6.0, ajv@>=8:
version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -3424,7 +3478,7 @@ ajv@^8.6.0:
require-from-string "^2.0.2"
uri-js "^4.2.2"
-ajv@^8.9.0:
+ajv@^8.8.2, ajv@^8.9.0:
version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -3754,12 +3808,12 @@ babel-plugin-named-asset-import@^0.3.8:
integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==
babel-plugin-polyfill-corejs2@^0.4.10:
- version "0.4.11"
- resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz"
- integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==
+ version "0.4.10"
+ resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz"
+ integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==
dependencies:
"@babel/compat-data" "^7.22.6"
- "@babel/helper-define-polyfill-provider" "^0.6.2"
+ "@babel/helper-define-polyfill-provider" "^0.6.1"
semver "^6.3.1"
babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4:
@@ -3771,11 +3825,11 @@ babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4:
core-js-compat "^3.36.1"
babel-plugin-polyfill-regenerator@^0.6.1:
- version "0.6.2"
- resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz"
- integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz"
+ integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.6.2"
+ "@babel/helper-define-polyfill-provider" "^0.6.1"
"babel-plugin-styled-components@>= 1.12.0":
version "2.0.7"
@@ -3856,7 +3910,7 @@ base64-arraybuffer@^1.0.2:
resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz"
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
-base64-js@^1.3.1:
+base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -3980,7 +4034,7 @@ browser-process-hrtime@^1.0.0:
resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz"
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
-browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0:
+browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4:
version "4.23.0"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz"
integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
@@ -4016,9 +4070,9 @@ builtin-modules@^3.1.0:
integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
builtins@^5.0.0:
- version "5.1.0"
- resolved "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz"
- integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz"
+ integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==
dependencies:
semver "^7.0.0"
@@ -4094,9 +4148,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599:
- version "1.0.30001612"
- resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz"
- integrity sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==
+ version "1.0.30001606"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001606.tgz"
+ integrity sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg==
case-sensitive-paths-webpack-plugin@^2.4.0:
version "2.4.0"
@@ -4189,7 +4243,7 @@ cjs-module-lexer@^1.0.0:
resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz"
integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==
-classnames@^2.3.2:
+classnames@^2.2.3, classnames@^2.3.2:
version "2.3.2"
resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz"
integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==
@@ -4378,21 +4432,21 @@ cookie@0.6.0:
integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
core-js-compat@^3.31.0, core-js-compat@^3.36.1:
- version "3.37.0"
- resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz"
- integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==
+ version "3.36.1"
+ resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz"
+ integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==
dependencies:
browserslist "^4.23.0"
core-js-pure@^3.23.3:
- version "3.37.0"
- resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.0.tgz"
- integrity sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==
+ version "3.36.1"
+ resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.36.1.tgz"
+ integrity sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==
core-js@^3.19.2:
- version "3.37.0"
- resolved "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz"
- integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==
+ version "3.36.1"
+ resolved "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz"
+ integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==
core-util-is@~1.0.0:
version "1.0.3"
@@ -4654,6 +4708,11 @@ cssstyle@^2.3.0:
dependencies:
cssom "~0.3.6"
+csstype@^3.0.2:
+ version "3.1.3"
+ resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
+ integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
damerau-levenshtein@^1.0.8:
version "1.0.8"
resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz"
@@ -4695,6 +4754,11 @@ data-view-byte-offset@^1.0.0:
es-errors "^1.3.0"
is-data-view "^1.0.1"
+debounce@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
+ integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
+
debug@^2.6.0:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
@@ -4920,7 +4984,16 @@ domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"
-domutils@^2.5.2, domutils@^2.8.0:
+domutils@^2.5.2:
+ version "2.8.0"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+domutils@^2.8.0:
version "2.8.0"
resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
@@ -4963,16 +5036,16 @@ ee-first@1.1.1:
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
ejs@^3.1.6:
- version "3.1.10"
- resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz"
- integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
+ version "3.1.9"
+ resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz"
+ integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==
dependencies:
jake "^10.8.5"
electron-to-chromium@^1.4.668:
- version "1.4.750"
- resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz"
- integrity sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==
+ version "1.4.729"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.729.tgz"
+ integrity sha512-bx7+5Saea/qu14kmPTDHQxkp2UnziG3iajUQu3BxFvCOnpAJdDbMV4rSl+EqFDkkpNNVUFlR1kDfpL59xfy1HA==
elliptic@6.5.4:
version "6.5.4"
@@ -5049,7 +5122,7 @@ error-stack-parser@^2.0.6:
dependencies:
stackframe "^1.3.4"
-es-abstract@^1.17.2, es-abstract@^1.20.4, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3:
+es-abstract@^1.17.2, es-abstract@^1.20.4, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2:
version "1.23.3"
resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz"
integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
@@ -5119,13 +5192,13 @@ es-errors@^1.2.1, es-errors@^1.3.0:
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
es-iterator-helpers@^1.0.15:
- version "1.0.19"
- resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz"
- integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==
+ version "1.0.18"
+ resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz"
+ integrity sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==
dependencies:
call-bind "^1.0.7"
define-properties "^1.2.1"
- es-abstract "^1.23.3"
+ es-abstract "^1.23.0"
es-errors "^1.3.0"
es-set-tostringtag "^2.0.3"
function-bind "^1.1.2"
@@ -5175,7 +5248,7 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
-esbuild@^0.18.10:
+esbuild@*, esbuild@^0.18.10:
version "0.18.20"
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz"
integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
@@ -5386,9 +5459,9 @@ eslint-plugin-no-inline-styles@^1.0.5:
lodash.get "^4.4.2"
eslint-plugin-react-hooks@^4.3.0:
- version "4.6.2"
- resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz"
- integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
+ version "4.6.0"
+ resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz"
+ integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.31.11:
version "7.32.2"
@@ -5475,7 +5548,7 @@ eslint-webpack-plugin@^3.1.1:
normalize-path "^3.0.0"
schema-utils "^4.0.0"
-eslint@^8.3.0, eslint@^8.30.0:
+eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, eslint@^8.30.0, "eslint@>= 6", eslint@>=5, eslint@>=7.0.0:
version "8.35.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz"
integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==
@@ -5998,11 +6071,6 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@^2.3.2, fsevents@~2.3.2:
- version "2.3.2"
- resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
function-bind@^1.1.1, function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -6507,7 +6575,7 @@ i18next-browser-languagedetector@^7.0.1:
dependencies:
"@babel/runtime" "^7.19.4"
-i18next@^22.4.10:
+i18next@^22.4.10, "i18next@>= 19.0.0":
version "22.4.11"
resolved "https://registry.npmjs.org/i18next/-/i18next-22.4.11.tgz"
integrity sha512-ShfTzXVMjXdF2iPiT/wbizOrssLh9Ab6VpuVROihLCAu+u25KbZiEYVgsA0W6g0SgjPa/JmGWcUEV/g6cKzEjQ==
@@ -6555,6 +6623,11 @@ ignore@^5.2.0:
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+immediate@~3.0.5:
+ version "3.0.6"
+ resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz"
+ integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
+
immer@^9.0.7:
version "9.0.21"
resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz"
@@ -6619,9 +6692,9 @@ internal-slot@^1.0.3, internal-slot@^1.0.7:
side-channel "^1.0.4"
ipaddr.js@^2.0.1:
- version "2.2.0"
- resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
- integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz"
+ integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==
ipaddr.js@1.9.1:
version "1.9.1"
@@ -6950,6 +7023,13 @@ iterator.prototype@^1.1.2:
reflect.getprototypeof "^1.0.4"
set-function-name "^2.0.1"
+its-fine@^1.0.6:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/its-fine/-/its-fine-1.1.3.tgz"
+ integrity sha512-mncCA+yb6tuh5zK26cHqKlsSyxm4zdm4YgJpxycyx6p9fgxgK5PLu3iDVpKhzTn57Yrv3jk/r0aK0RFTT1OjFw==
+ dependencies:
+ "@types/react-reconciler" "^0.28.0"
+
jackspeak@^2.3.6:
version "2.3.6"
resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz"
@@ -7232,7 +7312,7 @@ jest-resolve-dependencies@^27.5.1:
jest-regex-util "^27.5.1"
jest-snapshot "^27.5.1"
-jest-resolve@^27.4.2, jest-resolve@^27.5.1:
+jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1:
version "27.5.1"
resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz"
integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==
@@ -7442,7 +7522,7 @@ jest-worker@^28.0.2:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest@^27.4.3:
+"jest@^27.0.0 || ^28.0.0", jest@^27.4.3:
version "27.5.1"
resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz"
integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==
@@ -7599,6 +7679,16 @@ jsonpointer@^5.0.0:
object.assign "^4.1.4"
object.values "^1.1.6"
+jszip@^3.10.1:
+ version "3.10.1"
+ resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz"
+ integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
+ dependencies:
+ lie "~3.3.0"
+ pako "~1.0.2"
+ readable-stream "~2.3.6"
+ setimmediate "^1.0.5"
+
kind-of@^6.0.2:
version "6.0.3"
resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
@@ -7680,6 +7770,13 @@ levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
+lie@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz"
+ integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
+ dependencies:
+ immediate "~3.0.5"
+
lilconfig@^2.0.3, lilconfig@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz"
@@ -7796,9 +7893,9 @@ lower-case@^2.0.2:
tslib "^2.0.3"
lru-cache@^10.2.0:
- version "10.2.1"
- resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz"
- integrity sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==
+ version "10.2.0"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz"
+ integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
lru-cache@^5.1.1:
version "5.1.1"
@@ -7951,9 +8048,9 @@ mimic-fn@^4.0.0:
integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
mini-css-extract-plugin@^2.4.5:
- version "2.9.0"
- resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz"
- integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==
+ version "2.8.1"
+ resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz"
+ integrity sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==
dependencies:
schema-utils "^4.0.0"
tapable "^2.2.1"
@@ -8179,9 +8276,9 @@ nth-check@^2.0.1:
boolbase "^1.0.0"
nwsapi@^2.2.0:
- version "2.2.9"
- resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz"
- integrity sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==
+ version "2.2.7"
+ resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz"
+ integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==
object-assign@^4.0.1, object-assign@^4.1.1:
version "4.1.1"
@@ -8388,6 +8485,11 @@ p-try@^2.0.0:
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+pako@~1.0.2:
+ version "1.0.11"
+ resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
param-case@^3.0.4:
version "3.0.4"
resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz"
@@ -9085,15 +9187,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@^7.0.35:
- version "7.0.39"
- resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
- integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
- dependencies:
- picocolors "^0.2.1"
- source-map "^0.6.1"
-
-postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.33, postcss@^8.4.4:
+"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.1.4, postcss@^8.2, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3, postcss@^8.3.5, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.6, "postcss@>= 8", postcss@>=8, postcss@>=8.0.9:
version "8.4.38"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@@ -9102,6 +9196,14 @@ postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.33, postcss@^8.4.
picocolors "^1.0.0"
source-map-js "^1.2.0"
+postcss@^7.0.35:
+ version "7.0.39"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
postprocessing@^6.29.1:
version "6.30.1"
resolved "https://registry.npmjs.org/postprocessing/-/postprocessing-6.30.1.tgz"
@@ -9317,7 +9419,7 @@ react-dev-utils@^12.0.1:
strip-ansi "^6.0.1"
text-table "^0.2.0"
-react-dom@^18.2.0:
+"react-dom@^0.14.7 || ^15.0.0-0 || ^16.0.0 || ^17.0.0|| ^18.0.0", react-dom@^18.2.0, "react-dom@>= 16.8.0", react-dom@>=16.13, react-dom@>=16.8.0, react-dom@>=18.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
@@ -9325,6 +9427,13 @@ react-dom@^18.2.0:
loose-envify "^1.1.0"
scheduler "^0.23.0"
+react-dropdown@^1.11.0:
+ version "1.11.0"
+ resolved "https://registry.npmjs.org/react-dropdown/-/react-dropdown-1.11.0.tgz"
+ integrity sha512-E2UWetRPxNdIhQahXw6b984ME7WmcgDj9AEAjrtS/oyLCFVo+2qkCfcS06C22JR0Zj+YLnygwv0Ozf6VKKDq7g==
+ dependencies:
+ classnames "^2.2.3"
+
react-error-overlay@^6.0.11:
version "6.0.11"
resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz"
@@ -9338,7 +9447,7 @@ react-i18next@^12.1.5:
"@babel/runtime" "^7.20.6"
html-parse-stringify "^3.0.1"
-react-is@^16.13.1, react-is@^16.7.0:
+react-is@^16.13.1, react-is@^16.7.0, "react-is@>= 16.8.0":
version "16.13.1"
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -9349,16 +9458,24 @@ react-is@^17.0.1:
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
react-is@^18.0.0:
- version "18.3.1"
- resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz"
- integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
+ version "18.2.0"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz"
+ integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
+
+react-reconciler@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz"
+ integrity sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.21.0"
react-refresh@^0.11.0:
version "0.11.0"
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz"
integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
-react-refresh@^0.14.0:
+react-refresh@^0.14.0, "react-refresh@>=0.10.0 <1.0.0":
version "0.14.0"
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz"
integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
@@ -9418,7 +9535,14 @@ react-scripts@^5.0.0:
optionalDependencies:
fsevents "^2.3.2"
-react@^18.2.0:
+react-use-measure@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz"
+ integrity sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==
+ dependencies:
+ debounce "^1.2.1"
+
+react@*, "react@^0.14.7 || ^15.0.0-0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=16.13, react@>=16.8, react@>=16.8.0, react@>=17.0, react@>=18.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
@@ -9461,6 +9585,19 @@ readable-stream@^3.0.6:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+readable-stream@~2.3.6:
+ version "2.3.8"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
+ integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
@@ -9688,7 +9825,7 @@ rollup-pluginutils@^2.8.1:
dependencies:
estree-walker "^0.6.1"
-rollup@^2.43.1:
+"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1:
version "2.79.1"
resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
@@ -9761,7 +9898,7 @@ sass-loader@^12.3.0:
klona "^2.0.4"
neo-async "^2.6.2"
-sass@^1.58.0:
+sass@*, sass@^1.3.0, sass@^1.58.0:
version "1.69.4"
resolved "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz"
integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==
@@ -9782,6 +9919,13 @@ saxes@^5.0.1:
dependencies:
xmlchars "^2.2.0"
+scheduler@^0.21.0:
+ version "0.21.0"
+ resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz"
+ integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
scheduler@^0.23.0:
version "0.23.0"
resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz"
@@ -9873,7 +10017,7 @@ semver@^7.3.2:
dependencies:
lru-cache "^6.0.0"
-semver@^7.3.5:
+semver@^7.3.5, semver@^7.5.4:
version "7.6.0"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz"
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
@@ -9894,13 +10038,6 @@ semver@^7.5.3:
dependencies:
lru-cache "^6.0.0"
-semver@^7.5.4:
- version "7.6.0"
- resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz"
- integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
- dependencies:
- lru-cache "^6.0.0"
-
send@0.18.0:
version "0.18.0"
resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz"
@@ -9989,6 +10126,11 @@ set-function-name@^2.0.1:
functions-have-names "^1.2.3"
has-property-descriptors "^1.0.2"
+setimmediate@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
+ integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
+
setprototypeof@1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz"
@@ -10384,7 +10526,7 @@ style-loader@^3.3.1:
resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz"
integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==
-styled-components@^5.3.1:
+styled-components@^5.3.1, "styled-components@>= 2":
version "5.3.8"
resolved "https://registry.npmjs.org/styled-components/-/styled-components-5.3.8.tgz"
integrity sha512-6jQrlvaJQ16uWVVO0rBfApaTPItkqaG32l3746enNZzpMDxMvzmHzj8rHUg39bvVtom0Y8o8ZzWuchEXKGjVsg==
@@ -10462,6 +10604,11 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+suspend-react@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz"
+ integrity sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==
+
svg-parser@^2.0.2:
version "2.0.4"
resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz"
@@ -10576,10 +10723,10 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10:
serialize-javascript "^6.0.1"
terser "^5.26.0"
-terser@^5.0.0, terser@^5.10.0, terser@^5.26.0:
- version "5.30.4"
- resolved "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz"
- integrity sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==
+terser@^5.0.0, terser@^5.10.0, terser@^5.26.0, terser@^5.4.0:
+ version "5.30.3"
+ resolved "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz"
+ integrity sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==
dependencies:
"@jridgewell/source-map" "^0.3.3"
acorn "^8.8.2"
@@ -10626,7 +10773,7 @@ three-mesh-bvh@^0.5.21:
resolved "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.5.23.tgz"
integrity sha512-nyk+MskdyDgECqkxdv57UjazqqhrMi+Al9PxJN6yFtx1CTW4r0eCQ27FtyYKY5gCIWhxjtNfWYDPVy8lzx6LkA==
-three@^0.146.0:
+three@^0.146.0, three@^0.149.0, "three@>= 0.123.0", "three@>= 0.138.0 < 0.151.0", three@>=0.126, three@>=0.133:
version "0.146.0"
resolved "https://registry.npmjs.org/three/-/three-0.146.0.tgz"
integrity sha512-1lvNfLezN6OJ9NaFAhfX4sm5e9YCzHtaRgZ1+B4C+Hv6TibRMsuBAM5/wVKzxjpYIlMymvgsHEFrrigEfXnb2A==
@@ -10775,7 +10922,7 @@ type-fest@^0.16.0:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz"
integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==
-type-fest@^0.20.2:
+type-fest@^0.20.2, "type-fest@>=0.17.0 <5.0.0":
version "0.20.2"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
@@ -10844,6 +10991,11 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
+"typescript@^3.2.1 || ^4", "typescript@>= 2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta":
+ version "4.9.5"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz"
+ integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+
unbox-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
@@ -10859,11 +11011,6 @@ underscore@1.12.1:
resolved "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz"
integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
undici@5.28.2:
version "5.28.2"
resolved "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz"
@@ -11045,7 +11192,7 @@ vite-react-jsx@1.1.2:
"@babel/plugin-transform-react-jsx" "^7.14.3"
resolve "^1.20.0"
-vite@^4.5.2:
+"vite@^3.0.0 || ^4.0.0", vite@^4, vite@^4.1.0-beta.0, vite@^4.5.2, vite@>=3, vite@>2.0.0-0:
version "4.5.3"
resolved "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz"
integrity sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==
@@ -11128,7 +11275,7 @@ webpack-dev-middleware@^5.3.4:
range-parser "^1.2.1"
schema-utils "^4.0.0"
-webpack-dev-server@^4.6.0:
+webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x":
version "4.15.2"
resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz"
integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==
@@ -11193,7 +11340,7 @@ webpack-sources@^3.2.3:
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@^5.64.4:
+"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0":
version "5.91.0"
resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz"
integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==
@@ -11680,7 +11827,7 @@ youch@^2.2.2:
mustache "^4.2.0"
stack-trace "0.0.10"
-zustand@^3.5.10:
+zustand@^3.5.10, zustand@^3.7.1:
version "3.7.2"
resolved "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz"
integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==