From ea8a4280cd8a6cfcce40a55d9d892b29df60b159 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Mon, 17 Jun 2024 14:20:35 -0600 Subject: [PATCH 01/25] chore: update for the 4.30 Release (#38) * feat: add support for point agol webstyles * feat: add polygon and line 2D web style symbols to lists * chore: add itemType param to handleCustomStyleChange * chore: refactor to add point prefixes * feat: add polyline and polygon support for 2D web styles * fix: symbol not updating where there are no pointItems * fix: list items remaining after tab changes * feat: add filter to lists * chore: remove unused import * chore(deps): update * fix: package-lock.json * fix: symbolLayer not being used * chore(deps): update * chore: run format --- .eslintrc.cjs | 12 + .eslintrc.json | 29 - index.html | 2 +- package-lock.json | 2814 ++++++++++------- package.json | 27 +- .../MeshSymbol3DSymbolLayersForm.tsx | 76 +- src/components/SimpleLineSymbolShell.tsx | 1 + src/components/WebStyleSymbol2DForm.tsx | 351 +- src/components/WebStyleSymbol3DForm.tsx | 80 +- src/components/WebStyleSymbolShell.tsx | 141 +- src/components/lib/types.d.ts | 21 + src/main.tsx | 4 +- tsconfig.json | 22 +- tsconfig.node.json | 6 +- 14 files changed, 2247 insertions(+), 1339 deletions(-) create mode 100644 .eslintrc.cjs delete mode 100644 .eslintrc.json diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..20a3054 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,12 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react-hooks/recommended"], + ignorePatterns: ["dist", ".eslintrc.cjs"], + parser: "@typescript-eslint/parser", + plugins: ["react-refresh"], + rules: { + "react-refresh/only-export-components": ["warn", { allowConstantExport: true }], + "react-hooks/exhaustive-deps": "off" + } +}; diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 1afbc01..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "extends": [ - "eslint:recommended", - "plugin:react/recommended", - "plugin:@typescript-eslint/recommended" - ], - "overrides": [], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": [ - "react", - "@typescript-eslint" - ], - "rules": { - "@typescript-eslint/consistent-type-imports": "error" - }, - "settings": { - "react": { - "version": "detect" - } - } -} diff --git a/index.html b/index.html index 784f1b1..7398a91 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ - + diff --git a/package-lock.json b/package-lock.json index 7296151..d5669ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,101 +8,97 @@ "name": "symbol-builder", "version": "0.0.0", "dependencies": { - "@arcgis/core": "^4.29.0", - "@esri/calcite-components-react": "2.4.0", + "@arcgis/core": "^4.30.0-next.20240617", + "@esri/calcite-components-react": "2.9.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.22.1" + "react-router-dom": "^6.23.1" }, "devDependencies": { + "@eslint/js": "^9.5.0", "@types/node": "^20.14.2", - "@types/react": "^18.2.59", - "@types/react-dom": "^18.2.19", - "@typescript-eslint/eslint-plugin": "^7.1.0", - "@typescript-eslint/parser": "^7.1.0", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", "@vitejs/plugin-react": "^4.2.1", "eslint": "^8.57.0", - "eslint-plugin-react": "^7.33.2", - "prettier": "^3.2.5", - "typescript": "^5.3.3", - "vite": "^5.1.4" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "eslint-plugin-react": "^7.34.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "globals": "^15.6.0", + "prettier": "^3.3.2", + "typescript": "^5.2.2", + "typescript-eslint": "^7.13.1", + "vite": "^5.2.0" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@arcgis/core": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@arcgis/core/-/core-4.29.0.tgz", - "integrity": "sha512-lqf1pWZDOizNDi2aHC3bJ/O7XxQqlb4xg6mf9hPnH7wNpUTm6EERPr9aIsmk4JtBv4bWSxsGPohr2U+pBJS/PA==", + "version": "4.30.0-next.20240617", + "resolved": "https://registry.npmjs.org/@arcgis/core/-/core-4.30.0-next.20240617.tgz", + "integrity": "sha512-InHgrRKZbLC0/ib66OILjP+BC36TirJCiKG3WJLI5bV5+mH1hJTLQA6jVQ6oeJ4FrfNPn3Xm1FglwaWqrClzxg==", "dependencies": { - "@esri/arcgis-html-sanitizer": "~3.0.1", + "@esri/arcgis-html-sanitizer": "~4.0.1", "@esri/calcite-colors": "~6.1.0", - "@esri/calcite-components": "^2.4.0", - "@popperjs/core": "~2.11.8", - "@vaadin/grid": "~24.3.6", - "@zip.js/zip.js": "~2.7.34", + "@esri/calcite-components": "^2.8.5", + "@vaadin/grid": "~24.3.13", + "@zip.js/zip.js": "~2.7.44", "luxon": "~3.4.4", + "marked": "~12.0.2", "sortablejs": "~1.15.2" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -117,15 +113,24 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -133,13 +138,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -148,63 +153,76 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -214,97 +232,98 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -314,12 +333,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -329,12 +348,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -344,33 +363,33 @@ } }, "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -378,14 +397,23 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -393,9 +421,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -409,9 +437,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -425,9 +453,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -441,9 +469,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -457,9 +485,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -473,9 +501,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -489,9 +517,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -505,9 +533,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -521,9 +549,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -537,9 +565,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -553,9 +581,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -569,9 +597,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -585,9 +613,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -601,9 +629,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -617,9 +645,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -633,9 +661,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -649,9 +677,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -665,9 +693,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -681,9 +709,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -697,9 +725,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -713,9 +741,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -729,9 +757,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -745,9 +773,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -776,9 +804,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -807,6 +835,16 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -822,21 +860,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz", + "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@esri/arcgis-html-sanitizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@esri/arcgis-html-sanitizer/-/arcgis-html-sanitizer-3.0.1.tgz", - "integrity": "sha512-cwZJwsYCJZwtBQU2AmaiIVFg5nZcVwInPYja1/OgC9iKYO+ytZRoc5h+0S9/ygbFNoS8Nd0RX9A85stLX/BgiA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@esri/arcgis-html-sanitizer/-/arcgis-html-sanitizer-4.0.1.tgz", + "integrity": "sha512-6m/qIGmmbWWB2RXtyGcCBMIE/FkfM+dF9VzvW+kVH8ddvSjTtWiKcDrQXfDI73OyYPe2fDtANNPP9amu0L4sMQ==", "dependencies": { "xss": "1.0.13" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@esri/calcite-colors": { @@ -845,12 +910,12 @@ "integrity": "sha512-wHQYWFtDa6c328EraXEVZvgOiaQyYr0yuaaZ0G3cB4C3lSkWefW34L/e5TLAhtuG3zJ/wR6pl5X1YYNfBc0/4Q==" }, "node_modules/@esri/calcite-components": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@esri/calcite-components/-/calcite-components-2.5.1.tgz", - "integrity": "sha512-gvmY+xuoB7VUI0mr65/MHC3aRTrqG5cvpEsJqLAnnhvt3QyN1+XGt69QLzMv4iSPa2KvmA7GDhSqvHG9v3ZhsQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@esri/calcite-components/-/calcite-components-2.9.0.tgz", + "integrity": "sha512-caFnI1lTtpHzm4SRx6VHETRKIoe3UeytV7m6DrwTMnwAosIgfv86ttJ2rhxgXXcnqptCesJSf2TxUiOqc/vc+g==", "dependencies": { - "@floating-ui/dom": "1.6.3", - "@stencil/core": "4.9.0", + "@floating-ui/dom": "1.6.5", + "@stencil/core": "4.18.2", "@types/color": "3.0.6", "color": "4.2.3", "composed-offset-position": "0.0.4", @@ -858,15 +923,16 @@ "focus-trap": "7.5.4", "lodash-es": "4.17.21", "sortablejs": "1.15.1", - "timezone-groups": "0.8.0" + "timezone-groups": "0.8.0", + "type-fest": "4.18.2" } }, "node_modules/@esri/calcite-components-react": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@esri/calcite-components-react/-/calcite-components-react-2.4.0.tgz", - "integrity": "sha512-diT32R1wr33mT7B52+AFTC+SbLV8NcEHscvmxgcuyuQqZF9RHHLXknmEx1bwCielPPLoAnzyB+mLJhfi4mkhDQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@esri/calcite-components-react/-/calcite-components-react-2.9.0.tgz", + "integrity": "sha512-12ejLhBjG85KkiV7LqZe6kGLXZrYoYApwBXPyRKWET0F8HW8veHIodCOsY1BRPEIv/HUVt2Iz81KFTPjv0CJqQ==", "dependencies": { - "@esri/calcite-components": "^2.4.0" + "@esri/calcite-components": "^2.9.0" }, "peerDependencies": { "react": ">=16.7", @@ -879,31 +945,32 @@ "integrity": "sha512-P5Cjvb0UG1ZVNiDPj/n4V+DinttXG6K8n7vM/HQf0C25K3YKQTQY6fsr/sEGsJGpQ9exmPxluHxKBc0mLKU1lQ==" }, "node_modules/@floating-ui/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", - "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", "dependencies": { - "@floating-ui/utils": "^0.2.1" + "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", - "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", + "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", "dependencies": { "@floating-ui/core": "^1.0.0", "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", @@ -914,6 +981,28 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -928,38 +1017,39 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -972,9 +1062,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1042,27 +1132,18 @@ "@webcomponents/shadycss": "^1.9.1" } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/@remix-run/router": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.1.tgz", - "integrity": "sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", "engines": { "node": ">=14.0.0" } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", - "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", "cpu": [ "arm" ], @@ -1073,9 +1154,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", - "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", "cpu": [ "arm64" ], @@ -1086,9 +1167,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", - "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", "cpu": [ "arm64" ], @@ -1099,9 +1180,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", - "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", "cpu": [ "x64" ], @@ -1112,9 +1193,22 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", - "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", "cpu": [ "arm" ], @@ -1125,9 +1219,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", - "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", "cpu": [ "arm64" ], @@ -1138,9 +1232,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", - "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", "cpu": [ "arm64" ], @@ -1150,10 +1244,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", - "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", "cpu": [ "riscv64" ], @@ -1163,10 +1270,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", - "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", "cpu": [ "x64" ], @@ -1177,9 +1297,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", - "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", "cpu": [ "x64" ], @@ -1190,9 +1310,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", - "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", "cpu": [ "arm64" ], @@ -1203,9 +1323,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", - "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", "cpu": [ "ia32" ], @@ -1216,9 +1336,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", - "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", "cpu": [ "x64" ], @@ -1229,9 +1349,9 @@ ] }, "node_modules/@stencil/core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.9.0.tgz", - "integrity": "sha512-aWSkhBmk3yPwRAkUwBbzRwmdhb8hKiQ/JMr9m5jthpBZLjtppYbzz6PN2MhSMDfRp6K93eQw5WogSEH4HHuB6w==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.18.2.tgz", + "integrity": "sha512-GLYbzv3Bq/oUbQk3CH09zkjISANccyE5/A1C7+1JZhdnWUx1MRuWQR9/2uzSPR7kF0sdppwzXvArl7VqYCxLOQ==", "bin": { "stencil": "bin/stencil" }, @@ -1273,9 +1393,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -1298,9 +1418,9 @@ } }, "node_modules/@types/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-87W6MJCKZYDhLAx/J1ikW8niMvmGRyY+rpUxWpL1cO7F8Uu5CHuQoFv+R0/L5pgNdW4jTyda42kv60uwVIPjLw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-hulKeREDdLFesGQjl96+4aoJSHY5b2GRjagzzcqCfIrWhe5vkCqIvrLbqzBaI1q94Vg8DNJZZqTR5ocdWmWclg==" }, "node_modules/@types/estree": { "version": "1.0.5", @@ -1308,12 +1428,6 @@ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, "node_modules/@types/node": { "version": "20.14.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", @@ -1324,68 +1438,53 @@ } }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", "dev": true }, "node_modules/@types/react": { - "version": "18.2.59", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.59.tgz", - "integrity": "sha512-DE+F6BYEC8VtajY85Qr7mmhTd/79rJKIHCg99MU9SWPB4xvLb6D1za2vYflgZfmPqQVEr6UqJTnLXEwzpVPuOg==", + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", "dev": true, "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", - "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dev": true, "dependencies": { "@types/react": "*" } }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "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/@typescript-eslint/eslint-plugin": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.0.tgz", - "integrity": "sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", + "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/type-utils": "7.1.0", - "@typescript-eslint/utils": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/type-utils": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1401,53 +1500,20 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/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==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.0.tgz", - "integrity": "sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", + "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/typescript-estree": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1463,16 +1529,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.0.tgz", - "integrity": "sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", + "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0" + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1480,18 +1546,18 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.0.tgz", - "integrity": "sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", + "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.1.0", - "@typescript-eslint/utils": "7.1.0", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/utils": "7.13.1", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1507,12 +1573,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.0.tgz", - "integrity": "sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", + "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1520,22 +1586,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.0.tgz", - "integrity": "sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1547,79 +1613,19 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/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==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/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==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/utils": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.0.tgz", - "integrity": "sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/typescript-estree": "7.1.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1629,50 +1635,17 @@ "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/utils/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==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/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==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.0.tgz", - "integrity": "sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1686,36 +1659,36 @@ "dev": true }, "node_modules/@vaadin/a11y-base": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.3.6.tgz", - "integrity": "sha512-KjNeTIRYsYg4j9oNN8Ye7j+cABLWOXPhCz4A1dbwGsidx4BWEfGPpfktH65tjlgjaMd7pAGJ4xlVZ9q/lbKjMg==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.3.13.tgz", + "integrity": "sha512-7iEbJiJM/+YIC/D7HzQUuU3OX27MhcNoX8k3mWLBQu8SCVGDerCZUlHCHfeFpbJc76aWDNUrvEhAzBVrM/mn+A==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.6", + "@vaadin/component-base": "~24.3.13", "lit": "^3.0.0" } }, "node_modules/@vaadin/checkbox": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.3.6.tgz", - "integrity": "sha512-/3BN+jJ6Lap9rQweM0fubzpxoMEfcZ5sPg432OCklGBwzUZqwesunO8jPHwNBR8qh/RJr0kX5MuExOkuLmYa+Q==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.3.13.tgz", + "integrity": "sha512-YT67/M31Dq7UKwtZ+hEUjOrVHnje+7wpf4aBYAeKoEqa57uw2Q9+lGTwoWgviVzXKtXhoQd/oLiNUaxeOVcNzA==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.3.6", - "@vaadin/component-base": "~24.3.6", - "@vaadin/field-base": "~24.3.6", - "@vaadin/vaadin-lumo-styles": "~24.3.6", - "@vaadin/vaadin-material-styles": "~24.3.6", - "@vaadin/vaadin-themable-mixin": "~24.3.6", + "@vaadin/a11y-base": "~24.3.13", + "@vaadin/component-base": "~24.3.13", + "@vaadin/field-base": "~24.3.13", + "@vaadin/vaadin-lumo-styles": "~24.3.13", + "@vaadin/vaadin-material-styles": "~24.3.13", + "@vaadin/vaadin-themable-mixin": "~24.3.13", "lit": "^3.0.0" } }, "node_modules/@vaadin/component-base": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.6.tgz", - "integrity": "sha512-muSdioQFUhDZFNvvzHQHJ14hwAPkuWDNIQB1mc+TNsOG2H6mvU/JximXHz78EDz5NPX1otk6QjV28DwEnw3GSg==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.13.tgz", + "integrity": "sha512-UjokKlcs3NVnUATmv03Av55dZGCqvRXEaY2N1PO0C5OYATNekF5wlnz2nQ1+j1Tvk9eI+bzZKN28Yu0S3kvl0A==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -1725,115 +1698,115 @@ } }, "node_modules/@vaadin/field-base": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.3.6.tgz", - "integrity": "sha512-I9C2vTr0z6q2A2YoSRLMjhq5hi8pGjrpCuKchKrcuK+iIkcwaUGwKCMSvJzGGGDkuyyEIcIBSQlq7X3iigWfIw==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.3.13.tgz", + "integrity": "sha512-Qc2OUaBDGbskBnnSlDNhQd682tL8QlpqFfoS9lrZhRV286OlkfEiQ06kMZc75Q9fIeVIz3S2BPhtdoxd/8Tc4w==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.3.6", - "@vaadin/component-base": "~24.3.6", + "@vaadin/a11y-base": "~24.3.13", + "@vaadin/component-base": "~24.3.13", "lit": "^3.0.0" } }, "node_modules/@vaadin/grid": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.3.6.tgz", - "integrity": "sha512-mppCisq/0IJmdu8x6eXwav3JAifzbEd6whAvyd/OHt0yQMdjFKQx0L1XFN86te1TET/a6wJEQlAhr5Vn6OohPA==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.3.13.tgz", + "integrity": "sha512-oRNP9V6d7khFlB49wDfPfHG1fHFImc9dagX9Tlatpo3j1TLJ9JlfkrdWsuYY1aYtYnx5huvH3iOAV93fV1CFFg==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.3.6", - "@vaadin/checkbox": "~24.3.6", - "@vaadin/component-base": "~24.3.6", - "@vaadin/lit-renderer": "~24.3.6", - "@vaadin/text-field": "~24.3.6", - "@vaadin/vaadin-lumo-styles": "~24.3.6", - "@vaadin/vaadin-material-styles": "~24.3.6", - "@vaadin/vaadin-themable-mixin": "~24.3.6" + "@vaadin/a11y-base": "~24.3.13", + "@vaadin/checkbox": "~24.3.13", + "@vaadin/component-base": "~24.3.13", + "@vaadin/lit-renderer": "~24.3.13", + "@vaadin/text-field": "~24.3.13", + "@vaadin/vaadin-lumo-styles": "~24.3.13", + "@vaadin/vaadin-material-styles": "~24.3.13", + "@vaadin/vaadin-themable-mixin": "~24.3.13" } }, "node_modules/@vaadin/icon": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.3.6.tgz", - "integrity": "sha512-OR17b1jaPK0zlvB/ZkSAJsh5GRftfMA95eg9QS1K0zFGObaZ9Ub08b0k5J/u+/ufl0FWAkxaWZiNvlCRjOqitw==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.3.13.tgz", + "integrity": "sha512-uH28N3fYJO6FObz+WLNfqHLm2VPbL1hNkmoU/yDiMldfIyTqpbSO2DlwNMXbsm3T8xkJRlHM+LWATheMsIynOw==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.6", - "@vaadin/vaadin-lumo-styles": "~24.3.6", - "@vaadin/vaadin-themable-mixin": "~24.3.6", + "@vaadin/component-base": "~24.3.13", + "@vaadin/vaadin-lumo-styles": "~24.3.13", + "@vaadin/vaadin-themable-mixin": "~24.3.13", "lit": "^3.0.0" } }, "node_modules/@vaadin/input-container": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.3.6.tgz", - "integrity": "sha512-LgorYDTblznJyUptHAjCBxnMh7zoKRQiUFO4Ff38BVlZMlyplWPp6gAm3rIk2UU1aTmePsikX/31Rib/sv04qw==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.3.13.tgz", + "integrity": "sha512-Rg77JYKwxMdnTqxTIQWkaiNCZGiI4sIP3V6sxYJxqn0v1Nwwy80OQ5nzGQj+KyNk4B6SajmAwgHbu+IcFthN1A==", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.6", - "@vaadin/vaadin-lumo-styles": "~24.3.6", - "@vaadin/vaadin-material-styles": "~24.3.6", - "@vaadin/vaadin-themable-mixin": "~24.3.6", + "@vaadin/component-base": "~24.3.13", + "@vaadin/vaadin-lumo-styles": "~24.3.13", + "@vaadin/vaadin-material-styles": "~24.3.13", + "@vaadin/vaadin-themable-mixin": "~24.3.13", "lit": "^3.0.0" } }, "node_modules/@vaadin/lit-renderer": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.3.6.tgz", - "integrity": "sha512-1XZpA6VxsN2gnHfxN8UdNahJvjOj4GsXxJSX+hoV6uRuO51hh9xQlxroO7op4kwGVOvDLIjZxyuORZ7VLB48cw==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.3.13.tgz", + "integrity": "sha512-5/qtyj6YfdM7BjwH9cpA1y0rPRdKQYr2s6Ze/Ocgfb26DUR6n4daXzilB3TceUanvAFFScGx16CqlA/my1cozQ==", "dependencies": { "lit": "^3.0.0" } }, "node_modules/@vaadin/text-field": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.3.6.tgz", - "integrity": "sha512-99baPIr81QVnUcduD+ApUttIdwRsllez30DxhZqU/fiCROYO7GlCXc+O2a1UTRZiIwbwQ1rkze2vCQ9oEoJe5A==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.3.13.tgz", + "integrity": "sha512-+f0DGrD+KmVw6s75Gdprugb01LYhsCdLgc2QLTrNjmyx/kvNfw76jTHZEeUuYYjxTMVyKXVstcWxG/oWt/sZSQ==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.3.6", - "@vaadin/component-base": "~24.3.6", - "@vaadin/field-base": "~24.3.6", - "@vaadin/input-container": "~24.3.6", - "@vaadin/vaadin-lumo-styles": "~24.3.6", - "@vaadin/vaadin-material-styles": "~24.3.6", - "@vaadin/vaadin-themable-mixin": "~24.3.6", + "@vaadin/a11y-base": "~24.3.13", + "@vaadin/component-base": "~24.3.13", + "@vaadin/field-base": "~24.3.13", + "@vaadin/input-container": "~24.3.13", + "@vaadin/vaadin-lumo-styles": "~24.3.13", + "@vaadin/vaadin-material-styles": "~24.3.13", + "@vaadin/vaadin-themable-mixin": "~24.3.13", "lit": "^3.0.0" } }, "node_modules/@vaadin/vaadin-development-mode-detector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-development-mode-detector/-/vaadin-development-mode-detector-2.0.6.tgz", - "integrity": "sha512-N6a5nLT/ytEUlpPo+nvdCKIGoyNjPsj3rzPGvGYK8x9Ceg76OTe1xI/GtN71mRW9e2HUScR0kCNOkl1Z63YDjw==" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-development-mode-detector/-/vaadin-development-mode-detector-2.0.7.tgz", + "integrity": "sha512-9FhVhr0ynSR3X2ao+vaIEttcNU5XfzCbxtmYOV8uIRnUCtNgbvMOIcyGBvntsX9I5kvIP2dV3cFAOG9SILJzEA==" }, "node_modules/@vaadin/vaadin-lumo-styles": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.3.6.tgz", - "integrity": "sha512-o/leBqxXsbASjPOhyrMllyM2LLPbRJFsfJ/F3lnNj5I+kpIPeJUb4sKDBUzDwyx65ng0HukfsfzHqyhxwuyHJw==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.3.13.tgz", + "integrity": "sha512-43h6sKTVdNJ2Gv3mTcD1oVHjrNKj28Zs+VqcTUS5Vn2bxmGsIm3V5qLMdSe5GWNeZPbl+5dFa1VjFUjQWElMYw==", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.6", - "@vaadin/icon": "~24.3.6", - "@vaadin/vaadin-themable-mixin": "~24.3.6" + "@vaadin/component-base": "~24.3.13", + "@vaadin/icon": "~24.3.13", + "@vaadin/vaadin-themable-mixin": "~24.3.13" } }, "node_modules/@vaadin/vaadin-material-styles": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.3.6.tgz", - "integrity": "sha512-+it+K2lyN6isqaUms+1Vp0/zvmRQqPCsNLilXAjzFjyhdAmPfoAyXx+QGcEDIjdqMk8JKDcWvwk8JSiswPdnxw==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.3.13.tgz", + "integrity": "sha512-TG+y/YPI4M2rXkkyzbb6EzLl2dFaf+sNEH7tZXz4RLAUciKC7QHgpEESwQ0mfdonov2xP9Op48eBhkWalhKxDA==", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.3.6", - "@vaadin/vaadin-themable-mixin": "~24.3.6" + "@vaadin/component-base": "~24.3.13", + "@vaadin/vaadin-themable-mixin": "~24.3.13" } }, "node_modules/@vaadin/vaadin-themable-mixin": { - "version": "24.3.6", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.3.6.tgz", - "integrity": "sha512-GwqJ4R4A5Is5fcHiJPmImdbbpFnZeDnYjwhKJA7/JLFr0nAeeaChaoid5aMw5ivESZ5H/dwePzFDcUuLcpQokg==", + "version": "24.3.13", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.3.13.tgz", + "integrity": "sha512-OmDLX92U1tefwgnmlP/OBsf/z/GGjy3IOoEUqEPCgf01+xB6wM6uCRaY1dBU8NgHQeaJq80YzQjP0z5D+SqTkA==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "lit": "^3.0.0" @@ -1852,16 +1825,16 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", "dev": true, "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" + "react-refresh": "^0.14.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -1876,9 +1849,9 @@ "integrity": "sha512-vRq+GniJAYSBmTRnhCYPAPq6THYqovJ/gzGThWbgEZUQaBccndGTi1hdiUP15HzEco0I6t4RCtXyX0rsSmwgPw==" }, "node_modules/@zip.js/zip.js": { - "version": "2.7.34", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.34.tgz", - "integrity": "sha512-SWAK+hLYKRHswhakNUirPYrdsflSFOxykUckfbWDcPvP8tjLuV5EWyd3GHV0hVaJLDps40jJnv8yQVDbWnQDfg==", + "version": "2.7.45", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.45.tgz", + "integrity": "sha512-Mm2EXF33DJQ/3GWWEWeP1UCqzpQ5+fiMvT3QWspsXY05DyqqxWu7a9awSzU4/spHMHVFrTjani1PR0vprgZpow==", "engines": { "bun": ">=0.7.0", "deno": ">=1.0.0", @@ -1886,9 +1859,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1950,28 +1923,32 @@ "dev": true }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -1990,16 +1967,18 @@ "node": ">=8" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2008,31 +1987,34 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2041,20 +2023,64 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, "dependencies": { - "has-symbols": "^1.0.3" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2069,31 +2095,30 @@ "dev": true }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", - "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, "funding": [ { @@ -2110,10 +2135,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -2123,13 +2148,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2145,9 +2176,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001582", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001582.tgz", - "integrity": "sha512-vsJG3V5vgfduaQGVxL53uSX/HUzxyr2eA8xCo36OLal7sRcSZbibJtLeh0qja4sFOr/QQGt4opB4tOy+eOgAxg==", + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", "dev": true, "funding": [ { @@ -2271,20 +2302,71 @@ "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" }, "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dayjs": { "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -2304,12 +2386,30 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -2345,56 +2445,63 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.653", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.653.tgz", - "integrity": "sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA==", + "version": "1.4.803", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.803.tgz", + "integrity": "sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==", "dev": true }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -2403,49 +2510,85 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-iterator-helpers": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz", - "integrity": "sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.3", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.0", - "safe-array-concat": "^1.0.0" + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -2466,9 +2609,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "bin": { @@ -2478,35 +2621,35 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -2577,27 +2720,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "version": "7.34.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", + "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.hasown": "^1.1.4", + "object.values": "^1.2.0", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.11" }, "engines": { "node": ">=4" @@ -2606,6 +2751,37 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz", + "integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -2618,21 +2794,25 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "brace-expansion": "^1.1.7" }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "semver": "bin/semver.js" } }, "node_modules/eslint-scope": { @@ -2663,6 +2843,15 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2678,6 +2867,16 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2725,9 +2924,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2748,6 +2947,18 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2760,6 +2971,18 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/type-fest": { + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -2866,9 +3089,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -2887,9 +3110,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -2915,12 +3138,13 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -2928,9 +3152,9 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/focus-trap": { @@ -2971,21 +3195,24 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -3013,28 +3240,33 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -3047,6 +3279,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -3075,22 +3308,48 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.6.0.tgz", + "integrity": "sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -3131,23 +3390,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/has-bigints": { "version": "1.0.2", @@ -3168,21 +3415,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -3204,12 +3451,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -3218,10 +3465,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -3256,6 +3515,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -3269,13 +3529,13 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -3283,14 +3543,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3357,12 +3619,27 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "dependencies": { - "has": "^1.0.3" + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3432,18 +3709,21 @@ } }, "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -3502,21 +3782,27 @@ } }, "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3553,16 +3839,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -3572,10 +3854,13 @@ } }, "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3593,13 +3878,16 @@ } }, "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3618,16 +3906,16 @@ "dev": true }, "node_modules/iterator.prototype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.0.tgz", - "integrity": "sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "has-tostringtag": "^1.0.0", - "reflect.getprototypeof": "^1.0.3" + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, "node_modules/js-tokens": { @@ -3659,6 +3947,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3684,18 +3978,29 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "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/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3710,9 +4015,9 @@ } }, "node_modules/lit": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.2.tgz", - "integrity": "sha512-VZx5iAyMtX7CV4K8iTLdCkMaYZ7ipjJZ0JcSdJ0zIdGxxyurjIn7yuuSxNBD7QmjvcNJwr0JS4cAdAtsy7gZ6w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz", + "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==", "dependencies": { "@lit/reactive-element": "^2.0.4", "lit-element": "^4.0.4", @@ -3720,9 +4025,9 @@ } }, "node_modules/lit-element": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", - "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz", + "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0", "@lit/reactive-element": "^2.0.4", @@ -3730,9 +4035,9 @@ } }, "node_modules/lit-html": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", - "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz", + "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -3791,6 +4096,17 @@ "node": ">=12" } }, + "node_modules/marked": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3801,12 +4117,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -3814,15 +4130,18 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { @@ -3871,9 +4190,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3889,13 +4208,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -3907,28 +4226,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -3938,27 +4258,31 @@ } }, "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -3977,17 +4301,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -4078,9 +4402,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -4095,10 +4419,19 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -4117,7 +4450,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -4133,9 +4466,9 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -4188,9 +4521,9 @@ ] }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -4199,15 +4532,15 @@ } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-is": { @@ -4217,20 +4550,20 @@ "dev": true }, "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/react-router": { - "version": "6.22.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz", - "integrity": "sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", + "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", "dependencies": { - "@remix-run/router": "1.15.1" + "@remix-run/router": "1.16.1" }, "engines": { "node": ">=14.0.0" @@ -4240,12 +4573,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.1.tgz", - "integrity": "sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", + "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", "dependencies": { - "@remix-run/router": "1.15.1", - "react-router": "6.22.1" + "@remix-run/router": "1.16.1", + "react-router": "6.23.1" }, "engines": { "node": ">=14.0.0" @@ -4256,15 +4589,16 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz", - "integrity": "sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -4276,14 +4610,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -4292,6 +4627,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4315,6 +4667,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -4327,9 +4680,9 @@ } }, "node_modules/rollup": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", - "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -4342,19 +4695,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.6", - "@rollup/rollup-android-arm64": "4.9.6", - "@rollup/rollup-darwin-arm64": "4.9.6", - "@rollup/rollup-darwin-x64": "4.9.6", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", - "@rollup/rollup-linux-arm64-gnu": "4.9.6", - "@rollup/rollup-linux-arm64-musl": "4.9.6", - "@rollup/rollup-linux-riscv64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-musl": "4.9.6", - "@rollup/rollup-win32-arm64-msvc": "4.9.6", - "@rollup/rollup-win32-ia32-msvc": "4.9.6", - "@rollup/rollup-win32-x64-msvc": "4.9.6", + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", "fsevents": "~2.3.2" } }, @@ -4382,13 +4738,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -4400,34 +4756,72 @@ } }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/shebang-command": { @@ -4452,14 +4846,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4488,42 +4886,50 @@ "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==" }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -4533,28 +4939,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4649,9 +5058,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { "node": ">=16" @@ -4673,41 +5082,41 @@ } }, "node_modules/type-fest": { - "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==", - "dev": true, + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.2.tgz", + "integrity": "sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -4717,16 +5126,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -4736,23 +5146,29 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4762,6 +5178,32 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.13.1.tgz", + "integrity": "sha512-pvLEuRs8iS9s3Cnp/Wt//hpK8nKc8hVa3cLljHqzaJJQYP8oys8GUyIFqtlev+2lT/fqMPcyQko+HJ6iYK3nFA==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "7.13.1", + "@typescript-eslint/parser": "7.13.1", + "@typescript-eslint/utils": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -4784,9 +5226,9 @@ "dev": true }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -4803,8 +5245,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -4823,14 +5265,14 @@ } }, "node_modules/vite": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", - "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", + "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==", "dev": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -4935,31 +5377,34 @@ } }, "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4968,6 +5413,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index ae0f064..6896c2a 100644 --- a/package.json +++ b/package.json @@ -11,23 +11,28 @@ "preview": "vite preview" }, "dependencies": { - "@arcgis/core": "^4.29.0", - "@esri/calcite-components-react": "2.4.0", + "@arcgis/core": "^4.30.0-next.20240617", + "@esri/calcite-components-react": "2.9.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.22.1" + "react-router-dom": "^6.23.1" }, "devDependencies": { + "@eslint/js": "^9.5.0", "@types/node": "^20.14.2", - "@types/react": "^18.2.59", - "@types/react-dom": "^18.2.19", - "@typescript-eslint/eslint-plugin": "^7.1.0", - "@typescript-eslint/parser": "^7.1.0", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", "@vitejs/plugin-react": "^4.2.1", "eslint": "^8.57.0", - "eslint-plugin-react": "^7.33.2", - "prettier": "^3.2.5", - "typescript": "^5.3.3", - "vite": "^5.1.4" + "eslint-plugin-react": "^7.34.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "globals": "^15.6.0", + "prettier": "^3.3.2", + "typescript": "^5.2.2", + "typescript-eslint": "^7.13.1", + "vite": "^5.2.0" } } diff --git a/src/components/MeshSymbol3DSymbolLayersForm.tsx b/src/components/MeshSymbol3DSymbolLayersForm.tsx index 3395cef..d391c03 100644 --- a/src/components/MeshSymbol3DSymbolLayersForm.tsx +++ b/src/components/MeshSymbol3DSymbolLayersForm.tsx @@ -161,41 +161,47 @@ const MeshSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { const symbol3DLayerCollectionForm: JSX.Element[] = []; symbolLayers.map((symbolLayer: FillSymbol3DLayer, index: number) => { - symbol3DLayerCollectionForm.push( - - deleteSymbol3DLayer(index)} - slot="control" - text="Delete" - /> - - - ); + if (symbolLayer.type === "fill") { + symbol3DLayerCollectionForm.push( + + deleteSymbol3DLayer(index)} + slot="control" + text="Delete" + /> + + + ); + } }); return symbol3DLayerCollectionForm; } diff --git a/src/components/SimpleLineSymbolShell.tsx b/src/components/SimpleLineSymbolShell.tsx index de2c7d5..ef43e48 100644 --- a/src/components/SimpleLineSymbolShell.tsx +++ b/src/components/SimpleLineSymbolShell.tsx @@ -107,6 +107,7 @@ const SimpleLineSymbolShell = () => { setLineSymbolMarker(newSimpleLineSymbol.marker as LineSymbolMarker); updateGraphics(newSimpleLineSymbol); } else { + //@ts-expect-error marker symbol can to be null newSimpleLineSymbol.marker = null; updateGraphics(newSimpleLineSymbol); } diff --git a/src/components/WebStyleSymbol2DForm.tsx b/src/components/WebStyleSymbol2DForm.tsx index 867a81d..9d22f3d 100644 --- a/src/components/WebStyleSymbol2DForm.tsx +++ b/src/components/WebStyleSymbol2DForm.tsx @@ -1,7 +1,9 @@ +import esriRequest from "@arcgis/core/request"; import { - CalciteButton, CalciteInputText, CalciteLabel, + CalciteList, + CalciteListItem, CalciteOption, CalciteSelect, CalciteTab, @@ -9,41 +11,176 @@ import { CalciteTabs, CalciteTabTitle } from "@esri/calcite-components-react"; -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { ESRI_2D_POINT_SYMBOLS_STYLE_NAME_OPTIONS, WEB_STYLE_SYMBOLS_2D_STYLE_OPTIONS } from "./lib/constants"; import { labelStyles } from "./lib/styles"; +import type { GroupItem, ItemType, WebStyleStymbolItem } from "./lib/types"; interface Props { + groupItems: GroupItem[]; handleNameChange: (value: string) => void; handleStyleNameChange: (value: string) => void; - handleCustomStyleChange: (styleUrl: string, name: string) => void; + handleCustomStyleChange: (styleUrl: string, name: string, itemType: ItemType) => void; } const WebStyleSymbol2DForm = ({ + groupItems, handleNameChange, handleStyleNameChange, handleCustomStyleChange }: Props) => { - const [customName, setCustomName] = useState(""); - const [name, setName] = useState("extent-hollow-gray"); + const [agolStyle, setAgolStyle] = useState("Animals"); + const [lineWebStyleSymbolItems, setLineWebStyleSymbolItems] = useState([]); + const [name, setName] = useState(""); + const [pointWebStyleSymbolItems, setPointWebStyleSymbolItems] = useState( + [] + ); + const [polygonWebStyleSymbolItems, setPolygonWebStyleSymbolItems] = useState< + WebStyleStymbolItem[] + >([]); const [styleName, setStyleName] = useState("Esri2DPointSymbolsStyle"); - const [styleUrl, setStyleUrl] = useState(""); + const [styleUrl, setStyleUrl] = useState( + "https://www.arcgis.com/sharing/rest/content/items/1fbb242c54e4415d9b8e8a343ca7a9d0/data" + ); + + useEffect(() => { + getStyleItemDataFromItem(groupItems[0]); + }, [groupItems]); + + const getStyleItemDataFromItem = async (groupItem: GroupItem) => { + const styleItem = groupItems.find((styleItem) => styleItem.title === groupItem.title); + if (styleItem && styleItem.id) { + const response = await esriRequest( + `https://www.arcgis.com/sharing/rest/content/items/${styleItem.id}/data?f=pjson`, + { + responseType: "json" + } + ); + const items = response.data.items; + const pointItems = items + .filter((item: WebStyleStymbolItem) => item.itemType === "pointSymbol") + .sort((a: WebStyleStymbolItem, b: WebStyleStymbolItem) => { + return a.name.localeCompare(b.name); + }); + + if (pointItems.length > 0) { + setPointWebStyleSymbolItems(pointItems); + handleCustomStyleChange( + `https://www.arcgis.com/sharing/rest/content/items/${groupItem.id}/data`, + pointItems[0].name, + "pointSymbol" + ); + } else { + setPointWebStyleSymbolItems([]); + } + + const lineItems = items + .filter((item: WebStyleStymbolItem) => item.itemType === "lineSymbol") + .sort((a: WebStyleStymbolItem, b: WebStyleStymbolItem) => { + return a.name.localeCompare(b.name); + }); + + if (lineItems.length > 0) { + setLineWebStyleSymbolItems(lineItems); + + if (pointItems.length === 0 && lineItems.length > 0) { + handleCustomStyleChange( + `https://www.arcgis.com/sharing/rest/content/items/${groupItem.id}/data`, + lineItems[0].name, + "lineSymbol" + ); + } + } else { + setLineWebStyleSymbolItems([]); + } + + const polygonItems = items + .filter((item: WebStyleStymbolItem) => item.itemType === "polygonSymbol") + .sort((a: WebStyleStymbolItem, b: WebStyleStymbolItem) => { + return a.name.localeCompare(b.name); + }); + + if (polygonItems.length > 0) { + setPolygonWebStyleSymbolItems(polygonItems); + + if (pointItems.length === 0 && lineItems.length === 0 && polygonItems.length > 0) { + handleCustomStyleChange( + `https://www.arcgis.com/sharing/rest/content/items/${groupItem.id}/data`, + polygonItems[0].name, + "polygonSymbol" + ); + } + } else { + setPolygonWebStyleSymbolItems([]); + } + } + }; - const handleSubmit = () => { - handleCustomStyleChange(styleUrl, customName); + const getStyleItemDataFromUrl = async (url: string) => { + const response = await esriRequest(url, { + responseType: "json" + }); + const items = response.data.items; + const pointItems = items + .filter((item: WebStyleStymbolItem) => item.itemType === "pointSymbol") + .sort((a: WebStyleStymbolItem, b: WebStyleStymbolItem) => { + return a.name.localeCompare(b.name); + }); + + if (pointItems.length > 0) { + setPointWebStyleSymbolItems(pointItems); + handleCustomStyleChange(url, pointItems[0].name, "pointSymbol"); + } + + const lineItems = items + .filter((item: WebStyleStymbolItem) => item.itemType === "lineSymbol") + .sort((a: WebStyleStymbolItem, b: WebStyleStymbolItem) => { + return a.name.localeCompare(b.name); + }); + + if (lineItems.length > 0) { + setLineWebStyleSymbolItems(lineItems); + } + + const polygonItems = items + .filter((item: WebStyleStymbolItem) => item.itemType === "polygonSymbol") + .sort((a: WebStyleStymbolItem, b: WebStyleStymbolItem) => { + return a.name.localeCompare(b.name); + }); + + if (polygonItems.length > 0) { + setPolygonWebStyleSymbolItems(polygonItems); + } + }; + const handleAgolSyleChange = (id: string) => { + const item = groupItems.find((item) => item.id === id); + if (item && item.id) { + const url = `https://www.arcgis.com/sharing/rest/content/items/${item.id}/data`; + setStyleUrl(url); + getStyleItemDataFromItem(item); + } }; const handleTabChange = (event: CustomEvent) => { const tabNav = event.target as HTMLCalciteTabNavElement; - if (tabNav.selectedTitle.tab !== "custom") { - setName(""); - } else { - setStyleName("Esri2DPointSymbolsStyle"); + if (tabNav.selectedTitle.tab === "standard") { setName("extent-hollow-gray"); + setStyleName("Esri2DPointSymbolsStyle"); handleStyleNameChange(styleName); + } else { + setAgolStyle("Animals"); + setName(""); + setLineWebStyleSymbolItems([]); + setPolygonWebStyleSymbolItems([]); + setStyleUrl( + "https://www.arcgis.com/sharing/rest/content/items/1fbb242c54e4415d9b8e8a343ca7a9d0/data" + ); + getStyleItemDataFromUrl( + "https://www.arcgis.com/sharing/rest/content/items/1fbb242c54e4415d9b8e8a343ca7a9d0/data" + ); } }; @@ -51,9 +188,105 @@ const WebStyleSymbol2DForm = ({ + ArcGIS Online Standard Custom + + + Style + { + setAgolStyle(event.target.value); + handleAgolSyleChange(event.target.value); + }} + value={agolStyle} + > + {groupItems.map((option, index) => ( + + {option.title} + + ))} + + + + {pointWebStyleSymbolItems.length > 0 && ( + + + {pointWebStyleSymbolItems.map((item, index) => ( + { + const newName = (event.target as HTMLCalciteListItemElement) + .label as string; + handleCustomStyleChange(styleUrl, newName, "pointSymbol"); + }} + value={item.name} + > + {item.name} + + ))} + + + )} + + {lineWebStyleSymbolItems.length > 0 && ( + + + {lineWebStyleSymbolItems.map((item, index) => ( + { + const newName = (event.target as HTMLCalciteListItemElement) + .label as string; + handleCustomStyleChange(styleUrl, newName, "lineSymbol"); + }} + value={item.name} + > + {item.name} + + ))} + + + )} + + {polygonWebStyleSymbolItems.length > 0 && ( + + + {polygonWebStyleSymbolItems.map((item, index) => ( + { + const newName = (event.target as HTMLCalciteListItemElement) + .label as string; + handleCustomStyleChange(styleUrl, newName, "polygonSymbol"); + }} + value={item.name} + > + {item.name} + + ))} + + + )} + + name @@ -87,29 +320,99 @@ const WebStyleSymbol2DForm = ({ - - - name - { - setCustomName(event.target.value); - }} - value={customName} - > - + styleUrl { setStyleUrl(event.target.value); + getStyleItemDataFromUrl(event.target.value); }} value={styleUrl} > - handleSubmit()}>Submit + + {pointWebStyleSymbolItems.length > 0 && ( + + + {pointWebStyleSymbolItems.map((item, index) => ( + { + const newName = (event.target as HTMLCalciteListItemElement) + .label as string; + handleCustomStyleChange(styleUrl, newName, "pointSymbol"); + }} + value={item.name} + > + {item.name} + + ))} + + + )} + + {lineWebStyleSymbolItems.length > 0 && ( + + + {lineWebStyleSymbolItems.map((item, index) => ( + { + const newName = (event.target as HTMLCalciteListItemElement) + .label as string; + handleCustomStyleChange(styleUrl, newName, "lineSymbol"); + }} + value={item.name} + > + {item.name} + + ))} + + + )} + + {polygonWebStyleSymbolItems.length > 0 && ( + + + {polygonWebStyleSymbolItems.map((item, index) => ( + { + const newName = (event.target as HTMLCalciteListItemElement) + .label as string; + handleCustomStyleChange(styleUrl, newName, "polygonSymbol"); + }} + value={item.name} + > + {item.name} + + ))} + + + )} + diff --git a/src/components/WebStyleSymbol3DForm.tsx b/src/components/WebStyleSymbol3DForm.tsx index a4b7e68..c3ad166 100644 --- a/src/components/WebStyleSymbol3DForm.tsx +++ b/src/components/WebStyleSymbol3DForm.tsx @@ -1,7 +1,9 @@ +import esriRequest from "@arcgis/core/request"; import { - CalciteButton, CalciteInputText, CalciteLabel, + CalciteList, + CalciteListItem, CalciteOption, CalciteSelect, CalciteTab, @@ -23,11 +25,12 @@ import { WEB_STYLE_SYMBOLS_3D_STYLE_OPTIONS } from "./lib/constants"; import { labelStyles } from "./lib/styles"; +import type { ItemType, WebStyleStymbolItem } from "./lib/types"; interface Props { handleNameChange: (value: string) => void; handleStyleNameChange: (value: string) => void; - handleCustomStyleChange: (styleUrl: string, name: string) => void; + handleCustomStyleChange: (styleUrl: string, name: string, itemType: ItemType) => void; } const WebStyleSymbolForm = ({ @@ -35,22 +38,46 @@ const WebStyleSymbolForm = ({ handleStyleNameChange, handleCustomStyleChange }: Props) => { - const [customName, setCustomName] = useState(""); const [name, setName] = useState("Accessibility"); const [names, setNames] = useState(ESRI_ICONS_STYLE_NAME_OPTIONS); + const [pointWebStyleSymbolItems, setPointWebStyleSymbolItems] = useState( + [] + ); const [styleName, setStyleName] = useState("EsriIconsStyle"); const [styleUrl, setStyleUrl] = useState(""); - const handleSubmit = () => { - handleCustomStyleChange(styleUrl, customName); - }; + async function getStyleItemDataFromUrl(url: string) { + const response = await esriRequest(url, { + responseType: "json" + }); + const items = response.data.items; + + const pointItems = items + .filter((item: WebStyleStymbolItem) => item.itemType === "pointSymbol") + .sort((a: WebStyleStymbolItem, b: WebStyleStymbolItem) => { + return a.name.localeCompare(b.name); + }); + + if (pointItems.length > 0) { + setPointWebStyleSymbolItems(pointItems); + handleCustomStyleChange(url, pointItems[0].name, "pointSymbol"); + } + } const handleTabChange = (event: CustomEvent) => { const tabNav = event.target as HTMLCalciteTabNavElement; - if (tabNav.selectedTitle.tab !== "custom") { - setName(""); - } else { + if (tabNav.selectedTitle.tab === "standard") { + setName("Accessibility"); + setStyleName("EsriIconsStyle"); handleStyleNameChange(styleName); + } else { + setName(""); + setStyleUrl( + "https://www.arcgis.com/sharing/rest/content/items/9b8e84d1c01349f28d57502af601e37f/data" + ); + getStyleItemDataFromUrl( + "https://www.arcgis.com/sharing/rest/content/items/9b8e84d1c01349f28d57502af601e37f/data" + ); } }; @@ -149,28 +176,39 @@ const WebStyleSymbolForm = ({ - - name - { - setCustomName(event.target.value); - }} - value={customName} - > - - styleUrl { setStyleUrl(event.target.value); + getStyleItemDataFromUrl(event.target.value); }} value={styleUrl} > - handleSubmit()}>Submit + + {pointWebStyleSymbolItems.length > 0 && ( + + + {pointWebStyleSymbolItems.map((item, index) => ( + { + const newName = (event.target as HTMLCalciteListItemElement) + .label as string; + handleCustomStyleChange(styleUrl, newName, "pointSymbol"); + }} + value={item.name} + > + {item.name} + + ))} + + + )} + diff --git a/src/components/WebStyleSymbolShell.tsx b/src/components/WebStyleSymbolShell.tsx index 707002f..419624b 100644 --- a/src/components/WebStyleSymbolShell.tsx +++ b/src/components/WebStyleSymbolShell.tsx @@ -1,5 +1,6 @@ import Graphic from "@arcgis/core/Graphic"; import Collection from "@arcgis/core/core/Collection"; +import esriRequest from "@arcgis/core/request"; import WebStyleSymbol from "@arcgis/core/symbols/WebStyleSymbol"; import { CalciteLabel, @@ -12,7 +13,7 @@ import { CalciteTabTitle, CalciteTabs } from "@esri/calcite-components-react"; -import React, { useRef, useState } from "react"; +import React, { useEffect, useRef, useState } from "react"; import Header from "./Header"; import MapView from "./MapView"; import SceneView from "./SceneView"; @@ -33,7 +34,7 @@ import { ESRI_THEMATIC_SHAPES_STYLE_NAME_OPTIONS, ESRI_THEMATIC_TREES_STYLE_NAME_OPTIONS } from "./lib/constants"; -import { point } from "./lib/geometry"; +import { point, polyline, polygon } from "./lib/geometry"; import { formStyles, shellPanelStyles, @@ -41,13 +42,27 @@ import { tabNavStyles, viewSwitchLabelStyles } from "./lib/styles"; +import type { GroupItem, ItemType } from "./lib/types"; const WebStyleSymbolShell = () => { const viewSwitchRef = useRef(null); - const defaultWebStyleSymbol2D = new WebStyleSymbol({ - name: "extent-hollow-gray", - styleName: "Esri2DPointSymbolsStyle" + const defaultPointWebStyleSymbol2D = new WebStyleSymbol({ + name: "Armadillo", + styleUrl: + "https://www.arcgis.com/sharing/rest/content/items/1fbb242c54e4415d9b8e8a343ca7a9d0/data" + }); + + const defaultPolygonWebStyleSymbol2D = new WebStyleSymbol({ + name: "A Crosshatch", + styleUrl: + "https://www.arcgis.com/sharing/rest/content/items/807adef8568448318173798e15954ee5/data" + }); + + const defaultPolylineWebStyleSymbol2D = new WebStyleSymbol({ + name: "Aqueduct", + styleUrl: + "https://www.arcgis.com/sharing/rest/content/items/971bd7dfb0684860957ab7844a245bc1/data" }); const defaultWebStyleSymbol3D = new WebStyleSymbol({ @@ -55,11 +70,29 @@ const WebStyleSymbolShell = () => { styleName: "EsriIconsStyle" }); - const [webStyleSymbol, setWebStyleSymbol] = useState(defaultWebStyleSymbol2D); + const [currentWebStyleSymbol, setCurrentWebStyleSymbol] = useState(defaultPointWebStyleSymbol2D); + const [groupItems, setGroupItems] = useState([]); + const [pointWebStyleSymbol, setPointWebStyleSymbol] = useState(defaultPointWebStyleSymbol2D); + const [polygonWebStyleSymbol, setPolygonWebStyleSymbol] = useState( + defaultPolygonWebStyleSymbol2D + ); + const [polylineWebStyleSymbol, setPolylineWebStyleSymbol] = useState( + defaultPolylineWebStyleSymbol2D + ); const pointGraphic = new Graphic({ geometry: point, - symbol: webStyleSymbol + symbol: pointWebStyleSymbol + }); + + const polygonGraphic = new Graphic({ + geometry: polygon, + symbol: polygonWebStyleSymbol + }); + + const polylineGraphic = new Graphic({ + geometry: polyline, + symbol: polylineWebStyleSymbol }); const graphicsCollection = new Collection(); @@ -77,26 +110,53 @@ const WebStyleSymbolShell = () => { if (viewSwitchRef.current) { setSceneView((viewSwitchRef.current as HTMLCalciteSwitchElement).checked); (viewSwitchRef.current as HTMLCalciteSwitchElement).checked - ? updateGraphics(defaultWebStyleSymbol3D) - : updateGraphics(defaultWebStyleSymbol2D); + ? updateGraphics(defaultWebStyleSymbol3D, "pointSymbol") + : updateGraphics(defaultPointWebStyleSymbol2D, "pointSymbol"); } }; - const updateGraphics = (newWebStyleSymbol: WebStyleSymbol) => { - setWebStyleSymbol(newWebStyleSymbol); + const updateGraphics = (newWebStyleSymbol: WebStyleSymbol, itemType: ItemType) => { + if (itemType === "pointSymbol") { + setPointWebStyleSymbol(newWebStyleSymbol); + setCurrentWebStyleSymbol(newWebStyleSymbol); + + const newPointGraphic = pointGraphic.clone(); + newPointGraphic.symbol = newWebStyleSymbol; + + const newGraphics = new Collection(); + newGraphics.add(newPointGraphic); + setGraphics(newGraphics); + } + + if (itemType === "lineSymbol") { + setPolylineWebStyleSymbol(newWebStyleSymbol); + setCurrentWebStyleSymbol(newWebStyleSymbol); - const newPointGraphic = graphics.getItemAt(0).clone(); - newPointGraphic.symbol = newWebStyleSymbol; + const newPolylineGraphic = polylineGraphic.clone(); + newPolylineGraphic.symbol = newWebStyleSymbol; - const newGraphics = new Collection(); - newGraphics.add(newPointGraphic); - setGraphics(newGraphics); + const newGraphics = new Collection(); + newGraphics.add(newPolylineGraphic); + setGraphics(newGraphics); + } + + if (itemType === "polygonSymbol") { + setPolygonWebStyleSymbol(newWebStyleSymbol); + setCurrentWebStyleSymbol(newWebStyleSymbol); + + const newPolygonGraphic = polygonGraphic.clone(); + newPolygonGraphic.symbol = newWebStyleSymbol; + + const newGraphics = new Collection(); + newGraphics.add(newPolygonGraphic); + setGraphics(newGraphics); + } }; const handleNameChange = (currentName: string) => { - const newWebStyleSymbol = webStyleSymbol.clone(); + const newWebStyleSymbol = pointWebStyleSymbol.clone(); newWebStyleSymbol.name = currentName; - updateGraphics(newWebStyleSymbol); + updateGraphics(newWebStyleSymbol, "pointSymbol"); }; const handleStyleNameChange = (currentStyleName: string) => { @@ -144,16 +204,48 @@ const WebStyleSymbolShell = () => { } newWebStyleSymbol.styleName = currentStyleName; - updateGraphics(newWebStyleSymbol); + updateGraphics(newWebStyleSymbol, "pointSymbol"); }; - const handleCustomStyleChange = (currentStyleUrl: string, currentName: string) => { + const handleCustomStyleChange = ( + currentStyleUrl: string, + currentName: string, + itemType: ItemType + ) => { const newWebStyleSymbol = new WebStyleSymbol(); newWebStyleSymbol.name = currentName; newWebStyleSymbol.styleUrl = currentStyleUrl; - updateGraphics(newWebStyleSymbol); + + if (itemType === "pointSymbol") { + updateGraphics(newWebStyleSymbol, "pointSymbol"); + } + + if (itemType === "lineSymbol") { + updateGraphics(newWebStyleSymbol, "lineSymbol"); + } + + if (itemType === "polygonSymbol") { + updateGraphics(newWebStyleSymbol, "polygonSymbol"); + } }; + const requestGroupItems = async (itemId: string) => { + const response = await esriRequest( + `https://www.arcgis.com/sharing/rest/content/groups/${itemId}?f=pjson`, + { + responseType: "json" + } + ); + const sortedGroupItems = response.data.items + .filter((item: GroupItem) => item.type === "Style") + .sort((a: GroupItem, b: GroupItem) => a.title.localeCompare(b.title)); + setGroupItems(sortedGroupItems); + }; + + useEffect(() => { + requestGroupItems("7687bc306b8048a48efd92b3a6da9d88"); + }, []); + return ( @@ -173,6 +265,7 @@ const WebStyleSymbolShell = () => {
{!sceneView ? ( { JSON - + - + - + diff --git a/src/components/lib/types.d.ts b/src/components/lib/types.d.ts index b91a5fb..4789476 100644 --- a/src/components/lib/types.d.ts +++ b/src/components/lib/types.d.ts @@ -12,3 +12,24 @@ export type FontOptions = { style: InstanceType["style"]; weight: InstanceType["weight"]; }; + +export type ItemType = "pointSymbol" | "lineSymbol" | "polygonSymbol"; + +export type GroupItem = { + access: string; + id: string; + snippet: string; + thumbnail: string; + title: string; + type: string; +}; + +export type WebStyleStymbolItem = { + cimRef: string; + dimensionality: string; + formats: string[]; + itemType: ItemType; + name: string; + thumbnail: { href: string }; + title: string; +}; diff --git a/src/main.tsx b/src/main.tsx index 31febf0..a4b06e5 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -12,6 +12,8 @@ import "@esri/calcite-components/dist/components/calcite-input"; import "@esri/calcite-components/dist/components/calcite-input-number"; import "@esri/calcite-components/dist/components/calcite-input-text"; import "@esri/calcite-components/dist/components/calcite-label"; +import "@esri/calcite-components/dist/components/calcite-list"; +import "@esri/calcite-components/dist/components/calcite-list-item"; import "@esri/calcite-components/dist/components/calcite-loader"; import "@esri/calcite-components/dist/components/calcite-option"; import "@esri/calcite-components/dist/components/calcite-panel"; @@ -44,7 +46,7 @@ import SimpleMarkerSymbolPage from "./pages/simple-marker-symbol"; import TextSymbolPage from "./pages/text-symbol"; import WebStyleSymbolPage from "./pages/web-style-symbol"; -setAssetPath("https://js.arcgis.com/calcite-components/2.4.0/assets"); +setAssetPath("https://js.arcgis.com/calcite-components/2.9.0/assets"); const router = createBrowserRouter( [ diff --git a/tsconfig.json b/tsconfig.json index 823e83d..9479566 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,24 +1,24 @@ { "compilerOptions": { - "target": "ESNext", + "target": "ES2020", "useDefineForClassFields": true, "lib": [ + "ES2020", "DOM", - "DOM.Iterable", - "ESNext" + "DOM.Iterable" ], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, "module": "ESNext", - "moduleResolution": "Node", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true }, "include": [ "src" diff --git a/tsconfig.node.json b/tsconfig.node.json index b8afcc8..c7a071e 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -1,9 +1,11 @@ { "compilerOptions": { "composite": true, + "skipLibCheck": true, "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true }, "include": [ "vite.config.ts" From 9bcf06a01b3779224f0f82ff2d117791f412b4ea Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Tue, 18 Jun 2024 08:33:43 -0600 Subject: [PATCH 02/25] chore: improve comment --- src/components/SimpleLineSymbolShell.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/SimpleLineSymbolShell.tsx b/src/components/SimpleLineSymbolShell.tsx index ef43e48..c303073 100644 --- a/src/components/SimpleLineSymbolShell.tsx +++ b/src/components/SimpleLineSymbolShell.tsx @@ -107,7 +107,7 @@ const SimpleLineSymbolShell = () => { setLineSymbolMarker(newSimpleLineSymbol.marker as LineSymbolMarker); updateGraphics(newSimpleLineSymbol); } else { - //@ts-expect-error marker symbol can to be null + //@ts-expect-error strictNullChecks newSimpleLineSymbol.marker = null; updateGraphics(newSimpleLineSymbol); } From c089f7ce77bc6352699df6d0cfdf2bf3d0223833 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Tue, 18 Jun 2024 10:27:46 -0600 Subject: [PATCH 03/25] chore(deps): update --- package-lock.json | 29 +++++++++++++++-------------- package.json | 22 +++++++++++----------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5669ad..f943eec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,27 +10,27 @@ "dependencies": { "@arcgis/core": "^4.30.0-next.20240617", "@esri/calcite-components-react": "2.9.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-router-dom": "^6.23.1" }, "devDependencies": { "@eslint/js": "^9.5.0", - "@types/node": "^20.14.2", - "@types/react": "^18.2.66", - "@types/react-dom": "^18.2.22", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", - "@vitejs/plugin-react": "^4.2.1", + "@types/node": "^20.14.5", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", "eslint": "^8.57.0", "eslint-plugin-react": "^7.34.2", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.6", "globals": "^15.6.0", "prettier": "^3.3.2", - "typescript": "^5.2.2", + "typescript": "^5.4.5", "typescript-eslint": "^7.13.1", - "vite": "^5.2.0" + "vite": "^5.3.1" } }, "node_modules/@ampproject/remapping": { @@ -1429,10 +1429,11 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "20.14.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", + "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } diff --git a/package.json b/package.json index 6896c2a..595a2dc 100644 --- a/package.json +++ b/package.json @@ -13,26 +13,26 @@ "dependencies": { "@arcgis/core": "^4.30.0-next.20240617", "@esri/calcite-components-react": "2.9.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-router-dom": "^6.23.1" }, "devDependencies": { "@eslint/js": "^9.5.0", - "@types/node": "^20.14.2", - "@types/react": "^18.2.66", - "@types/react-dom": "^18.2.22", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", - "@vitejs/plugin-react": "^4.2.1", + "@types/node": "^20.14.5", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", "eslint": "^8.57.0", "eslint-plugin-react": "^7.34.2", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.6", "globals": "^15.6.0", "prettier": "^3.3.2", - "typescript": "^5.2.2", + "typescript": "^5.4.5", "typescript-eslint": "^7.13.1", - "vite": "^5.2.0" + "vite": "^5.3.1" } } From 54c9ed1bf23fad822679c016bbbccb81fe2d6ea4 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Tue, 18 Jun 2024 10:55:19 -0600 Subject: [PATCH 04/25] feat: add rollup-plugin-visualizer --- .eslintrc.cjs | 2 +- .gitignore | 3 + .prettierignore | 3 +- package-lock.json | 255 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + vite.config.ts | 11 +- 6 files changed, 272 insertions(+), 3 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 20a3054..8950f4d 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -2,7 +2,7 @@ module.exports = { root: true, env: { browser: true, es2020: true }, extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react-hooks/recommended"], - ignorePatterns: ["dist", ".eslintrc.cjs"], + ignorePatterns: ["dist", ".eslintrc.cjs", "analyze.html"], parser: "@typescript-eslint/parser", plugins: ["react-refresh"], rules: { diff --git a/.gitignore b/.gitignore index a547bf3..86b774d 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ dist-ssr *.njsproj *.sln *.sw? + +# rollup-plugin-visualizer +analyze.html \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 3a8ec2b..11cec8d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,4 @@ node_modules dist -package-lock.json \ No newline at end of file +package-lock.json +analyze.html \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f943eec..91441a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "eslint-plugin-react-refresh": "^0.4.6", "globals": "^15.6.0", "prettier": "^3.3.2", + "rollup-plugin-visualizer": "^5.12.0", "typescript": "^5.4.5", "typescript-eslint": "^7.13.1", "vite": "^5.3.1" @@ -2210,6 +2211,21 @@ "node": ">=4" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -2404,6 +2420,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -2451,6 +2477,13 @@ "integrity": "sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==", "dev": true }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", @@ -3240,6 +3273,16 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -3661,6 +3704,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3682,6 +3741,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -3894,6 +3963,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -4301,6 +4383,24 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -4628,6 +4728,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -4715,6 +4825,33 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", + "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.4.0", + "picomatch": "^2.3.1", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4886,6 +5023,16 @@ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==" }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, "node_modules/source-map-js": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", @@ -4895,6 +5042,21 @@ "node": ">=0.10.0" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", @@ -5423,6 +5585,60 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5444,12 +5660,51 @@ "node": ">= 0.10.0" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 595a2dc..ebe1e82 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "eslint-plugin-react-refresh": "^0.4.6", "globals": "^15.6.0", "prettier": "^3.3.2", + "rollup-plugin-visualizer": "^5.12.0", "typescript": "^5.4.5", "typescript-eslint": "^7.13.1", "vite": "^5.3.1" diff --git a/vite.config.ts b/vite.config.ts index 2965ae8..7a2757b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,5 +1,6 @@ import { defineConfig, loadEnv } from "vite"; import react from "@vitejs/plugin-react"; +import { visualizer } from "rollup-plugin-visualizer"; export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd()); @@ -8,6 +9,14 @@ export default defineConfig(({ mode }) => { build: { chunkSizeWarningLimit: 2200 }, - plugins: [react()] + plugins: [ + react(), + visualizer({ + template: "treemap", + open: true, + gzipSize: true, + filename: "analyze.html" + }) + ] }; }); From 8e5c0f251c1334fee3f5c266a074d7354cfc7e37 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Tue, 18 Jun 2024 11:38:52 -0600 Subject: [PATCH 05/25] fix: clicking on thumbnail image doesn't change symbol --- src/components/WebStyleSymbol2DForm.tsx | 36 ++++++++++++++++--------- src/components/WebStyleSymbol3DForm.tsx | 6 +++-- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/components/WebStyleSymbol2DForm.tsx b/src/components/WebStyleSymbol2DForm.tsx index 9d22f3d..b2f16e0 100644 --- a/src/components/WebStyleSymbol2DForm.tsx +++ b/src/components/WebStyleSymbol2DForm.tsx @@ -219,8 +219,10 @@ const WebStyleSymbol2DForm = ({ key={index} label={item.name} onClick={(event) => { - const newName = (event.target as HTMLCalciteListItemElement) - .label as string; + const newName = + (event.target as HTMLCalciteListItemElement).label === undefined + ? (event.target as HTMLImageElement).alt + : (event.target as HTMLCalciteListItemElement).label; handleCustomStyleChange(styleUrl, newName, "pointSymbol"); }} value={item.name} @@ -244,8 +246,10 @@ const WebStyleSymbol2DForm = ({ key={index} label={item.name} onClick={(event) => { - const newName = (event.target as HTMLCalciteListItemElement) - .label as string; + const newName = + (event.target as HTMLCalciteListItemElement).label === undefined + ? (event.target as HTMLImageElement).alt + : (event.target as HTMLCalciteListItemElement).label; handleCustomStyleChange(styleUrl, newName, "lineSymbol"); }} value={item.name} @@ -269,8 +273,10 @@ const WebStyleSymbol2DForm = ({ key={index} label={item.name} onClick={(event) => { - const newName = (event.target as HTMLCalciteListItemElement) - .label as string; + const newName = + (event.target as HTMLCalciteListItemElement).label === undefined + ? (event.target as HTMLImageElement).alt + : (event.target as HTMLCalciteListItemElement).label; handleCustomStyleChange(styleUrl, newName, "polygonSymbol"); }} value={item.name} @@ -346,8 +352,10 @@ const WebStyleSymbol2DForm = ({ key={index} label={item.name} onClick={(event) => { - const newName = (event.target as HTMLCalciteListItemElement) - .label as string; + const newName = + (event.target as HTMLCalciteListItemElement).label === undefined + ? (event.target as HTMLImageElement).alt + : (event.target as HTMLCalciteListItemElement).label; handleCustomStyleChange(styleUrl, newName, "pointSymbol"); }} value={item.name} @@ -371,8 +379,10 @@ const WebStyleSymbol2DForm = ({ key={index} label={item.name} onClick={(event) => { - const newName = (event.target as HTMLCalciteListItemElement) - .label as string; + const newName = + (event.target as HTMLCalciteListItemElement).label === undefined + ? (event.target as HTMLImageElement).alt + : (event.target as HTMLCalciteListItemElement).label; handleCustomStyleChange(styleUrl, newName, "lineSymbol"); }} value={item.name} @@ -396,8 +406,10 @@ const WebStyleSymbol2DForm = ({ key={index} label={item.name} onClick={(event) => { - const newName = (event.target as HTMLCalciteListItemElement) - .label as string; + const newName = + (event.target as HTMLCalciteListItemElement).label === undefined + ? (event.target as HTMLImageElement).alt + : (event.target as HTMLCalciteListItemElement).label; handleCustomStyleChange(styleUrl, newName, "polygonSymbol"); }} value={item.name} diff --git a/src/components/WebStyleSymbol3DForm.tsx b/src/components/WebStyleSymbol3DForm.tsx index c3ad166..3713b9c 100644 --- a/src/components/WebStyleSymbol3DForm.tsx +++ b/src/components/WebStyleSymbol3DForm.tsx @@ -196,8 +196,10 @@ const WebStyleSymbolForm = ({ key={index} label={item.name} onClick={(event) => { - const newName = (event.target as HTMLCalciteListItemElement) - .label as string; + const newName = + (event.target as HTMLCalciteListItemElement).label === undefined + ? (event.target as HTMLImageElement).alt + : (event.target as HTMLCalciteListItemElement).label; handleCustomStyleChange(styleUrl, newName, "pointSymbol"); }} value={item.name} From 9ea88dbe687bcbdc82e00bf1cd8aeb19e96e568e Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 08:52:02 -0600 Subject: [PATCH 06/25] fix: old symbols remaining in list on update --- src/components/WebStyleSymbol2DForm.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/WebStyleSymbol2DForm.tsx b/src/components/WebStyleSymbol2DForm.tsx index b2f16e0..ad1b41c 100644 --- a/src/components/WebStyleSymbol2DForm.tsx +++ b/src/components/WebStyleSymbol2DForm.tsx @@ -51,6 +51,10 @@ const WebStyleSymbol2DForm = ({ }, [groupItems]); const getStyleItemDataFromItem = async (groupItem: GroupItem) => { + setPointWebStyleSymbolItems([]); + setLineWebStyleSymbolItems([]); + setPolygonWebStyleSymbolItems([]); + const styleItem = groupItems.find((styleItem) => styleItem.title === groupItem.title); if (styleItem && styleItem.id) { const response = await esriRequest( From 86b3f8b16e350375b7fd983559971dde41d9f634 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 09:33:12 -0600 Subject: [PATCH 07/25] chore(deps): update --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 91441a5..0b89f2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "symbol-builder", "version": "0.0.0", "dependencies": { - "@arcgis/core": "^4.30.0-next.20240617", + "@arcgis/core": "^4.30.0-next.20240620", "@esri/calcite-components-react": "2.9.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -48,9 +48,10 @@ } }, "node_modules/@arcgis/core": { - "version": "4.30.0-next.20240617", - "resolved": "https://registry.npmjs.org/@arcgis/core/-/core-4.30.0-next.20240617.tgz", - "integrity": "sha512-InHgrRKZbLC0/ib66OILjP+BC36TirJCiKG3WJLI5bV5+mH1hJTLQA6jVQ6oeJ4FrfNPn3Xm1FglwaWqrClzxg==", + "version": "4.30.0-next.20240620", + "resolved": "https://registry.npmjs.org/@arcgis/core/-/core-4.30.0-next.20240620.tgz", + "integrity": "sha512-6M1lHyDYr3H78bXJ0tT2bvIHkspALdoC1YW6nIvLguiHKT7Tm94dtpJ2OhxUG6NKY9yM4L0VILpkHNGF4shAJQ==", + "license": "SEE LICENSE IN copyright.txt", "dependencies": { "@esri/arcgis-html-sanitizer": "~4.0.1", "@esri/calcite-colors": "~6.1.0", diff --git a/package.json b/package.json index ebe1e82..54372fe 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "preview": "vite preview" }, "dependencies": { - "@arcgis/core": "^4.30.0-next.20240617", + "@arcgis/core": "^4.30.0-next.20240620", "@esri/calcite-components-react": "2.9.0", "react": "^18.3.1", "react-dom": "^18.3.1", From 7c4a02ed3629f365579fce3322f3fcb44cc66652 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 09:34:33 -0600 Subject: [PATCH 08/25] fix(PlygonSymbol3D): remove deprecated symbol layers --- src/components/PolygonSymbol3DAMDPanel.tsx | 74 ---- src/components/PolygonSymbol3DESMPanel.tsx | 98 ----- src/components/PolygonSymbol3DShell.tsx | 4 - .../PolygonSymbol3DSymbolLayersForm.tsx | 362 +----------------- 4 files changed, 1 insertion(+), 537 deletions(-) diff --git a/src/components/PolygonSymbol3DAMDPanel.tsx b/src/components/PolygonSymbol3DAMDPanel.tsx index 34dbcec..b4db077 100644 --- a/src/components/PolygonSymbol3DAMDPanel.tsx +++ b/src/components/PolygonSymbol3DAMDPanel.tsx @@ -80,48 +80,6 @@ require(["esri/symbols/PolygonSymbol3D"], (PolygonSymbol3D) => { `; } - if (symbolLayer.type === "line") { - if (symbolLayer.material.color && symbolLayer.marker) { - codeSnippet += ` - { - type: "line", - cap: "${symbolLayer.cap}", - join: "${symbolLayer.join}", - marker: { - type: "style", - color: [${symbolLayer.marker.color.toRgba()}], - placement: "${symbolLayer.marker.placement}", - style: "${symbolLayer.marker.style}" - }, - material: { - color: [${symbolLayer.material.color.toRgba()}], - }, - pattern: { - type: "style", - style: "${symbolLayer.pattern.style}" - }, - size: ${symbolLayer.size} - }, - `; - } else if (symbolLayer.material.color) { - codeSnippet += ` - { - type: "line", - cap: "${symbolLayer.cap}", - join: "${symbolLayer.join}", - material: { - color: [${symbolLayer.material.color.toRgba()}], - }, - pattern: { - type: "style", - style: "${symbolLayer.pattern.style}" - }, - size: ${symbolLayer.size} - }, - `; - } - } - if (symbolLayer.type === "icon") { if (symbolLayer.material.color && symbolLayer.outline.color && symbolLayer.resource.href) { codeSnippet += ` @@ -227,38 +185,6 @@ require(["esri/symbols/PolygonSymbol3D"], (PolygonSymbol3D) => { `; } } - - if (symbolLayer.type === "text") { - if (symbolLayer.background.color && symbolLayer.halo.color && symbolLayer.material.color) { - codeSnippet += ` - { - type: "text", - background: { - color: [${symbolLayer.background.color.toRgba()}], - }, - font: { - decoration: "${symbolLayer.font.decoration}", - family: "${symbolLayer.font.family}", - size: ${symbolLayer.font.size}, - style: "${symbolLayer.font.style}", - weight: "${symbolLayer.font.weight}" - }, - halo: { - color: [${symbolLayer.halo.color.toRgba()}], - size: ${symbolLayer.halo.size} - }, - horizontalAlignment: "${symbolLayer.horizontalAlignment}", - lineHeight: ${symbolLayer.lineHeight}, - material: { - color: [${symbolLayer.material.color.toRgba()}], - }, - size: ${symbolLayer.size}, - text: "${symbolLayer.text}", - verticalAlignment: "${symbolLayer.verticalAlignment}" - }, - `; - } - } }); codeSnippet += ` diff --git a/src/components/PolygonSymbol3DESMPanel.tsx b/src/components/PolygonSymbol3DESMPanel.tsx index 790e368..0f8338e 100644 --- a/src/components/PolygonSymbol3DESMPanel.tsx +++ b/src/components/PolygonSymbol3DESMPanel.tsx @@ -15,13 +15,9 @@ const PolygonSymbol3DESMPanel = ({ polygonSymbol3D }: Props) => { let colorImport = false; let extrudeSymbol3DLayerImport = false; let fillSymbol3DLayerImport = false; - let fontImport = false; let iconSymbol3DLayerImport = false; - let lineStyleMarker3DImport = false; - let lineSymbol3DLayerImport = false; let objectSymbol3DLayerImport = false; const polygonSymbol3DImport = true; - let textSymbol3DLayerImport = false; let waterSymbol3DLayerImport = false; let lineStylePattern3DImport = false; let solidEdges3DImport = false; @@ -46,15 +42,6 @@ const PolygonSymbol3DESMPanel = ({ polygonSymbol3D }: Props) => { waterSymbol3DLayerImport = true; } - if (symbolLayer.type === "line") { - colorImport = true; - lineSymbol3DLayerImport = true; - lineStylePattern3DImport = true; - if (symbolLayer.marker) { - lineStyleMarker3DImport = true; - } - } - if (symbolLayer.type === "icon") { colorImport = true; iconSymbol3DLayerImport = true; @@ -64,12 +51,6 @@ const PolygonSymbol3DESMPanel = ({ polygonSymbol3D }: Props) => { colorImport = true; objectSymbol3DLayerImport = true; } - - if (symbolLayer.type === "text") { - colorImport = true; - fontImport = true; - textSymbol3DLayerImport = true; - } }); let codeSnippet = `\n`; @@ -81,26 +62,15 @@ const PolygonSymbol3DESMPanel = ({ polygonSymbol3D }: Props) => { fillSymbol3DLayerImport && (codeSnippet += `import FillSymbol3DLayer from "@arcgis/core/symbols/FillSymbol3DLayer.js";\n`); - fontImport && (codeSnippet += `import Font from "@arcgis/core/symbols/Font.js";\n`); - iconSymbol3DLayerImport && (codeSnippet += `import IconSymbol3DLayer from "@arcgis/core/symbols/IconSymbol3DLayer.js";\n`); - lineStyleMarker3DImport && - (codeSnippet += `import LineStyleMarker3D from "@arcgis/core/symbols/LineStyleMarker3D.js";\n`); - - lineSymbol3DLayerImport && - (codeSnippet += `import LineSymbol3DLayer from "@arcgis/core/symbols/LineSymbol3DLayer.js";\n`); - objectSymbol3DLayerImport && (codeSnippet += `import ObjectSymbol3DLayer from "@arcgis/core/symbols/ObjectSymbol3DLayer.js";\n`); polygonSymbol3DImport && (codeSnippet += `import PolygonSymbol3D from "@arcgis/core/symbols/PolygonSymbol3D.js";\n`); - textSymbol3DLayerImport && - (codeSnippet += `import TextSymbol3DLayer from "@arcgis/core/symbols/TextSymbol3DLayer.js";\n`); - waterSymbol3DLayerImport && (codeSnippet += `import WaterSymbol3DLayer from "@arcgis/core/symbols/WaterSymbol3DLayer.js";\n`); @@ -173,43 +143,6 @@ const polygonSymbol3D = new PolygonSymbol3D({ `; } - if (symbolLayer.type === "line") { - if (symbolLayer.material.color && symbolLayer.marker) { - codeSnippet += ` - new LineSymbol3DLayer({ - cap: "${symbolLayer.cap}", - join: "${symbolLayer.join}", - marker: new LineStyleMarker3D({ - color: new Color([${symbolLayer.marker.color.toRgba()}]), - placement: "${symbolLayer.marker.placement}", - style: "${symbolLayer.marker.style}" - }), - material: { - color: new Color([${symbolLayer.material.color.toRgba()}]), - }, - pattern: new LineStylePattern3D({ - style: "${symbolLayer.pattern.style}" - }), - size: ${symbolLayer.size} - }), - `; - } else if (symbolLayer.material.color) { - codeSnippet += ` - new LineSymbol3DLayer({ - cap: "${symbolLayer.cap}", - join: "${symbolLayer.join}", - material: { - color: new Color([${symbolLayer.material.color.toRgba()}]), - }, - pattern: new LineStylePattern3D({ - style: "${symbolLayer.pattern.style}" - }), - size: ${symbolLayer.size} - }), - `; - } - } - if (symbolLayer.type === "icon") { if (symbolLayer.material.color && symbolLayer.outline.color) { codeSnippet += ` @@ -299,37 +232,6 @@ const polygonSymbol3D = new PolygonSymbol3D({ `; } } - - if (symbolLayer.type === "text") { - if (symbolLayer.background.color && symbolLayer.halo.color && symbolLayer.material.color) { - codeSnippet += ` - new TextSymbol3DLayer({ - background: { - color: new Color([${symbolLayer.background.color.toRgba()}]), - }, - font: new Font({ - decoration: "${symbolLayer.font.decoration}", - family: "${symbolLayer.font.family}", - size: ${symbolLayer.font.size}, - style: "${symbolLayer.font.style}", - weight: "${symbolLayer.font.weight}" - }), - halo: { - color: new Color([${symbolLayer.halo.color.toRgba()}]), - size: ${symbolLayer.halo.size} - }, - horizontalAlignment: "${symbolLayer.horizontalAlignment}", - lineHeight: ${symbolLayer.lineHeight}, - material: { - color: new Color([${symbolLayer.material.color.toRgba()}]), - }, - size: ${symbolLayer.size}, - text: "${symbolLayer.text}", - verticalAlignment: "${symbolLayer.verticalAlignment}" - }), - `; - } - } }); codeSnippet += ` diff --git a/src/components/PolygonSymbol3DShell.tsx b/src/components/PolygonSymbol3DShell.tsx index 8e9409d..58769a0 100644 --- a/src/components/PolygonSymbol3DShell.tsx +++ b/src/components/PolygonSymbol3DShell.tsx @@ -3,10 +3,8 @@ import Collection from "@arcgis/core/core/Collection"; import type ExtrudeSymbol3DLayer from "@arcgis/core/symbols/ExtrudeSymbol3DLayer"; import type FillSymbol3DLayer from "@arcgis/core/symbols/FillSymbol3DLayer"; import type IconSymbol3DLayer from "@arcgis/core/symbols/IconSymbol3DLayer"; -import type LineSymbol3DLayer from "@arcgis/core/symbols/LineSymbol3DLayer"; import type ObjectSymbol3DLayer from "@arcgis/core/symbols/ObjectSymbol3DLayer"; import PolygonSymbol3D from "@arcgis/core/symbols/PolygonSymbol3D"; -import type TextSymbol3DLayer from "@arcgis/core/symbols/TextSymbol3DLayer"; import type WaterSymbol3DLayer from "@arcgis/core/symbols/WaterSymbol3DLayer"; import { CalcitePanel, @@ -58,10 +56,8 @@ const PolygonSymbol3DShell = () => { | FillSymbol3DLayer | ExtrudeSymbol3DLayer | WaterSymbol3DLayer - | LineSymbol3DLayer | IconSymbol3DLayer | ObjectSymbol3DLayer - | TextSymbol3DLayer > ) => { const newPolygonSymbol3D = polygonSymbol3D.clone(); diff --git a/src/components/PolygonSymbol3DSymbolLayersForm.tsx b/src/components/PolygonSymbol3DSymbolLayersForm.tsx index 1524f7e..876831b 100644 --- a/src/components/PolygonSymbol3DSymbolLayersForm.tsx +++ b/src/components/PolygonSymbol3DSymbolLayersForm.tsx @@ -2,12 +2,8 @@ import Color from "@arcgis/core/Color"; import Collection from "@arcgis/core/core/Collection"; import ExtrudeSymbol3DLayer from "@arcgis/core/symbols/ExtrudeSymbol3DLayer"; import FillSymbol3DLayer from "@arcgis/core/symbols/FillSymbol3DLayer"; -import Font from "@arcgis/core/symbols/Font"; import IconSymbol3DLayer from "@arcgis/core/symbols/IconSymbol3DLayer"; -import LineStyleMarker3D from "@arcgis/core/symbols/LineStyleMarker3D"; -import LineSymbol3DLayer from "@arcgis/core/symbols/LineSymbol3DLayer"; import ObjectSymbol3DLayer from "@arcgis/core/symbols/ObjectSymbol3DLayer"; -import TextSymbol3DLayer from "@arcgis/core/symbols/TextSymbol3DLayer"; import WaterSymbol3DLayer from "@arcgis/core/symbols/WaterSymbol3DLayer"; import SolidEdges3D from "@arcgis/core/symbols/edges/SolidEdges3D"; import LineStylePattern3D from "@arcgis/core/symbols/patterns/LineStylePattern3D"; @@ -22,9 +18,7 @@ import React, { useState } from "react"; import ExtrudeSymbol3DLayerForm from "./ExtrudeSymbol3DLayerForm"; import FillSymbol3DLayerForm from "./FillSymbol3DLayerForm"; import IconSymbol3DLayerForm from "./IconSymbol3DLayerForm"; -import LineSymbol3DLayerForm from "./LineSymbol3DLayerForm"; import ObjectSymbol3DLayerForm from "./ObjectSymbol3DLayerForm"; -import TextSymbol3DLayerForm from "./TextSymbol3DLayerForm"; import WaterSymbol3DLayerForm from "./WaterSymbol3DLayerForm"; import { blockStyles, chipStyles } from "./lib/styles"; @@ -70,15 +64,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { return newIconSymbol3DLayer; }; - const createNewLineSymbol3DLayer = (): LineSymbol3DLayer => { - const newLineSymbol3DLayer = new LineSymbol3DLayer({ - material: { color: "#007ac2" }, - pattern: new LineStylePattern3D(), - size: 3 - }); - return newLineSymbol3DLayer; - }; - const createNewObjectSymbol3DLayer = (): ObjectSymbol3DLayer => { const newObjectSymbol3DLayer = new ObjectSymbol3DLayer(); newObjectSymbol3DLayer.anchor = "center"; @@ -95,20 +80,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { return newObjectSymbol3DLayer; }; - const createNewTextSymbol3DLayer = (): TextSymbol3DLayer => { - const newTextSymbol3DLayer = new TextSymbol3DLayer(); - newTextSymbol3DLayer.background = { color: new Color("#aaaaaa") }; - newTextSymbol3DLayer.font = new Font(); - newTextSymbol3DLayer.halo = { color: new Color("#000000"), size: 0 }; - newTextSymbol3DLayer.horizontalAlignment = "center"; - newTextSymbol3DLayer.lineHeight = 1; - newTextSymbol3DLayer.material = { color: new Color("#ffffff") }; - newTextSymbol3DLayer.size = 9; - newTextSymbol3DLayer.text = "Hello World!"; - newTextSymbol3DLayer.verticalAlignment = "baseline"; - return newTextSymbol3DLayer; - }; - const createNewWaterSymbol3DLayer = (): WaterSymbol3DLayer => { const newWaterSymbol3DLayer = new WaterSymbol3DLayer({ waveDirection: 0 }); return newWaterSymbol3DLayer; @@ -140,14 +111,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { updateSymbolLayers(newSymbolLayers); }; - const addLineSymbol3DLayer = () => { - const newSymbolLayers = symbolLayers.clone(); - const lineSymbol3DLayer = createNewLineSymbol3DLayer(); - newSymbolLayers.add(lineSymbol3DLayer); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - const addObjectSymbol3DLayer = () => { const newSymbolLayers = symbolLayers.clone(); const objectSymbol3DLayer = createNewObjectSymbol3DLayer(); @@ -156,14 +119,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { updateSymbolLayers(newSymbolLayers); }; - const addTextSymbol3DLayer = () => { - const newSymbolLayers = symbolLayers.clone(); - const textSymbol3DLayer = createNewTextSymbol3DLayer(); - newSymbolLayers.add(textSymbol3DLayer); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - const addWaterSymbol3DLayer = () => { const newSymbolLayers = symbolLayers.clone(); const waterSymbol3DLayer = createNewWaterSymbol3DLayer(); @@ -408,102 +363,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { updateSymbolLayers(newSymbolLayers); }; - const handleLineSymbol3DLayerCapChange = ( - layerIndex: number, - value: InstanceType["cap"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - symbolLayer.cap = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleLineSymbol3DLayerJoinChange = ( - layerIndex: number, - value: InstanceType["join"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - symbolLayer.join = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleLineSymbol3DLayerMarkerBlockToggle = ( - layerIndex: number, - currentMarkerBlock: HTMLCalciteBlockElement - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - if (currentMarkerBlock.open && !symbolLayer.marker) { - symbolLayer.marker = new LineStyleMarker3D({ - color: "#007ac2", - placement: "begin-end", - style: "arrow" - }); - } - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleLineSymbol3DLayerMarkerColorChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - symbolLayer.marker.color = new Color(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleLineSymbol3DLayerMarkerPlacementChange = ( - layerIndex: number, - value: InstanceType["placement"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - symbolLayer.marker.placement = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleLineSymbol3DLayerMarkerStyleChange = ( - layerIndex: number, - value: InstanceType["style"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - symbolLayer.marker.style = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleLineSymbol3DLayerMaterialColorChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - symbolLayer.material.color = new Color(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleLineSymbol3DLayerPatternStyleChange = ( - layerIndex: number, - value: InstanceType["style"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - symbolLayer.pattern.style = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleLineSymbol3DLayerSizeChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; - symbolLayer.size = Number(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - const handleObjectSymbol3DLayerAnchorChange = ( layerIndex: number, value: InstanceType["anchor"] @@ -622,133 +481,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { updateSymbolLayers(newSymbolLayers); }; - const handleTextSymbol3DLayerBackgroundColorChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.background.color = new Color(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerFontDecorationChange = ( - layerIndex: number, - value: InstanceType["decoration"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.font.decoration = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerFontFamilyChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.font.family = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerFontSizeChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.font.size = Number(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerFontStyleChange = ( - layerIndex: number, - value: InstanceType["style"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.font.style = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerFontWeightChange = ( - layerIndex: number, - value: InstanceType["weight"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.font.weight = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerHaloColorChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.halo.color = new Color(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerHaloSizeChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.halo.size = Number(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerHorizontalAlignmentChange = ( - layerIndex: number, - value: InstanceType["horizontalAlignment"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.horizontalAlignment = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerLineHeightChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.lineHeight = Number(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerMaterialColorChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.material.color = new Color(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerSizeChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.size = Number(value); - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerTextChange = (layerIndex: number, value: string) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.text = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - - const handleTextSymbol3DLayerVerticalAlignmentChange = ( - layerIndex: number, - value: InstanceType["verticalAlignment"] - ) => { - const newSymbolLayers = symbolLayers.clone(); - const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as TextSymbol3DLayer; - symbolLayer.verticalAlignment = value; - setSymbolLayers(newSymbolLayers); - updateSymbolLayers(newSymbolLayers); - }; - const handleWaterSymbol3DLayerColorChange = (layerIndex: number, value: string) => { const newSymbolLayers = symbolLayers.clone(); const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as WaterSymbol3DLayer; @@ -797,10 +529,8 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { | FillSymbol3DLayer | ExtrudeSymbol3DLayer | WaterSymbol3DLayer - | LineSymbol3DLayer | IconSymbol3DLayer - | ObjectSymbol3DLayer - | TextSymbol3DLayer, + | ObjectSymbol3DLayer, index: number ) => { if (symbolLayer.type === "extrude") { @@ -916,43 +646,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { ); } - if (symbolLayer.type === "line") { - symbol3DLayerCollectionForm.push( - - deleteSymbol3DLayer(index)} - slot="control" - text="Delete" - /> - - - ); - } - if (symbolLayer.type === "object") { symbol3DLayerCollectionForm.push( @@ -995,42 +688,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { ); } - if (symbolLayer.type === "text") { - symbol3DLayerCollectionForm.push( - - deleteSymbol3DLayer(index)} - slot="control" - text="Delete" - /> - - - ); - } - if (symbolLayer.type === "water") { symbol3DLayerCollectionForm.push( @@ -1094,14 +751,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { text="Add WaterSymbol3DLayer" > - addLineSymbol3DLayer()} - slot="header-menu-actions" - icon="line" - text-enabled - text="Add LineSymbol3DLayer" - > - addIconSymbol3DLayer()} slot="header-menu-actions" @@ -1117,15 +766,6 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { text-enabled text="Add ObjectSymbol3DLayer" > - - addTextSymbol3DLayer()} - slot="header-menu-actions" - icon="text" - text-enabled - text="Add TextSymbol3DLayer" - > - {createSymbol3DLayerCollectionForm()} From b3b5662a9cecc60e2d272ffae46457afc0cab3e6 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 09:57:02 -0600 Subject: [PATCH 09/25] fix: remove deprecated label attribute from calcite tooltips --- src/components/Header.tsx | 4 +--- src/components/LineSymbol3DSymbolLayersForm.tsx | 2 +- src/components/MeshSymbol3DSymbolLayersForm.tsx | 2 +- .../PointSymbol3DSymbolLayersForm.tsx | 2 +- .../PolygonSymbol3DSymbolLayersForm.tsx | 2 +- src/pages/index.tsx | 17 +++++++---------- 6 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 856ece7..0024a78 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -23,9 +23,7 @@ const Header = ({ title, backButton }: Props) => { history.back(); }} > - - Back - + Back )}

{title}

diff --git a/src/components/LineSymbol3DSymbolLayersForm.tsx b/src/components/LineSymbol3DSymbolLayersForm.tsx index 5a77400..548c741 100644 --- a/src/components/LineSymbol3DSymbolLayersForm.tsx +++ b/src/components/LineSymbol3DSymbolLayersForm.tsx @@ -297,7 +297,7 @@ const LineSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { value="Information" style={chipStyles} > - + Add symbol layer by opening the dropdown menu on the right diff --git a/src/components/MeshSymbol3DSymbolLayersForm.tsx b/src/components/MeshSymbol3DSymbolLayersForm.tsx index d391c03..46ed8a0 100644 --- a/src/components/MeshSymbol3DSymbolLayersForm.tsx +++ b/src/components/MeshSymbol3DSymbolLayersForm.tsx @@ -217,7 +217,7 @@ const MeshSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { value="Information" style={chipStyles} > - + Add symbol layer by opening the dropdown menu on the right diff --git a/src/components/PointSymbol3DSymbolLayersForm.tsx b/src/components/PointSymbol3DSymbolLayersForm.tsx index cce7c0e..4e879e7 100644 --- a/src/components/PointSymbol3DSymbolLayersForm.tsx +++ b/src/components/PointSymbol3DSymbolLayersForm.tsx @@ -557,7 +557,7 @@ const PointSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { value="Information" style={chipStyles} > - + Add symbol layer by opening the dropdown menu on the right diff --git a/src/components/PolygonSymbol3DSymbolLayersForm.tsx b/src/components/PolygonSymbol3DSymbolLayersForm.tsx index 876831b..323d79f 100644 --- a/src/components/PolygonSymbol3DSymbolLayersForm.tsx +++ b/src/components/PolygonSymbol3DSymbolLayersForm.tsx @@ -723,7 +723,7 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { value="Information" style={chipStyles} > - + Add symbol layer by opening the dropdown menu on the right diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 0fbdfe6..6d30eed 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -24,10 +24,7 @@ const cards = SYMBOLS.map((symbol) => { icon="layers" scale="s" /> - + Symbol Layers @@ -41,7 +38,7 @@ const cards = SYMBOLS.map((symbol) => { icon="point" scale="s" /> - + Point @@ -55,7 +52,7 @@ const cards = SYMBOLS.map((symbol) => { icon="line" scale="s" /> - + Line @@ -69,7 +66,7 @@ const cards = SYMBOLS.map((symbol) => { icon="polygon" scale="s" /> - + Polygon @@ -83,7 +80,7 @@ const cards = SYMBOLS.map((symbol) => { icon="cube" scale="s" /> - + Mesh @@ -92,7 +89,7 @@ const cards = SYMBOLS.map((symbol) => { {symbol.mapView && ( - + 2D Map View @@ -106,7 +103,7 @@ const cards = SYMBOLS.map((symbol) => { icon="globe" scale="s" > - + 3D Scene View From 9ecc3435403d304d0856144d876bb18d6eb6c6b5 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 10:35:52 -0600 Subject: [PATCH 10/25] fix(LineSymbol3D): allow setting the marker to null Refs: #2 --- src/components/LineSymbol3DSymbolLayersForm.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/LineSymbol3DSymbolLayersForm.tsx b/src/components/LineSymbol3DSymbolLayersForm.tsx index 548c741..8b5b8b9 100644 --- a/src/components/LineSymbol3DSymbolLayersForm.tsx +++ b/src/components/LineSymbol3DSymbolLayersForm.tsx @@ -93,6 +93,10 @@ const LineSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { placement: "begin-end", style: "arrow" }); + } else { + // @ts-expect-error strictNullChecks + symbolLayer.marker = null; + updateSymbolLayers(newSymbolLayers); } setSymbolLayers(newSymbolLayers); updateSymbolLayers(newSymbolLayers); From 3d954c95c2eb74eb24dea5a5a5f1d3f8727f2c20 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 10:51:39 -0600 Subject: [PATCH 11/25] fix: Use `React.JSX` instead of the global `JSX` namespace --- src/components/LineSymbol3DSymbolLayersForm.tsx | 2 +- src/components/MeshSymbol3DSymbolLayersForm.tsx | 2 +- src/components/PointSymbol3DSymbolLayersForm.tsx | 2 +- src/components/PolygonSymbol3DSymbolLayersForm.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/LineSymbol3DSymbolLayersForm.tsx b/src/components/LineSymbol3DSymbolLayersForm.tsx index 8b5b8b9..954bf6f 100644 --- a/src/components/LineSymbol3DSymbolLayersForm.tsx +++ b/src/components/LineSymbol3DSymbolLayersForm.tsx @@ -226,7 +226,7 @@ const LineSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { const createSymbol3DLayerCollectionForm = () => { if (symbolLayers.length > 0) { - const symbol3DLayerCollectionForm: JSX.Element[] = []; + const symbol3DLayerCollectionForm: React.JSX.Element[] = []; symbolLayers.map((symbolLayer: LineSymbol3DLayer | PathSymbol3DLayer, index: number) => { if (symbolLayer.type === "line") { diff --git a/src/components/MeshSymbol3DSymbolLayersForm.tsx b/src/components/MeshSymbol3DSymbolLayersForm.tsx index 46ed8a0..5fd6e03 100644 --- a/src/components/MeshSymbol3DSymbolLayersForm.tsx +++ b/src/components/MeshSymbol3DSymbolLayersForm.tsx @@ -158,7 +158,7 @@ const MeshSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { const createSymbol3DLayerCollectionForm = () => { if (symbolLayers.length > 0) { - const symbol3DLayerCollectionForm: JSX.Element[] = []; + const symbol3DLayerCollectionForm: React.JSX.Element[] = []; symbolLayers.map((symbolLayer: FillSymbol3DLayer, index: number) => { if (symbolLayer.type === "fill") { diff --git a/src/components/PointSymbol3DSymbolLayersForm.tsx b/src/components/PointSymbol3DSymbolLayersForm.tsx index 4e879e7..cfabfdd 100644 --- a/src/components/PointSymbol3DSymbolLayersForm.tsx +++ b/src/components/PointSymbol3DSymbolLayersForm.tsx @@ -419,7 +419,7 @@ const PointSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { const createSymbol3DLayerCollectionForm = () => { if (symbolLayers.length > 0) { - const symbol3DLayerCollectionForm: JSX.Element[] = []; + const symbol3DLayerCollectionForm: React.JSX.Element[] = []; symbolLayers.map( ( diff --git a/src/components/PolygonSymbol3DSymbolLayersForm.tsx b/src/components/PolygonSymbol3DSymbolLayersForm.tsx index 323d79f..e8a18f6 100644 --- a/src/components/PolygonSymbol3DSymbolLayersForm.tsx +++ b/src/components/PolygonSymbol3DSymbolLayersForm.tsx @@ -521,7 +521,7 @@ const PolygonSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { const createSymbol3DLayerCollectionForm = () => { if (symbolLayers.length > 0) { - const symbol3DLayerCollectionForm: JSX.Element[] = []; + const symbol3DLayerCollectionForm: React.JSX.Element[] = []; symbolLayers.map( ( From 4231245bff325c70aa7d378427f67db6a0b08ea8 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 11:32:08 -0600 Subject: [PATCH 12/25] chore: use calcite navigation Refs: #27 --- src/components/Header.tsx | 12 +++++++----- src/components/lib/styles.ts | 4 ---- src/main.tsx | 1 + src/pages/index.tsx | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 0024a78..3690624 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,6 +1,6 @@ +import { CalciteButton, CalciteNavigation, CalciteTooltip } from "@esri/calcite-components-react"; import React from "react"; import { headerStyles } from "./lib/styles"; -import { CalciteButton, CalciteTooltip } from "@esri/calcite-components-react"; interface Props { title: string; @@ -10,11 +10,10 @@ interface Props { const Header = ({ title, backButton }: Props) => { return ( -
+ {backButton && ( { onClick={() => { history.back(); }} + slot="content-start" > Back )} -

{title}

-
+

+ {title} +

+
); }; diff --git a/src/components/lib/styles.ts b/src/components/lib/styles.ts index fce25df..1ff4b9c 100644 --- a/src/components/lib/styles.ts +++ b/src/components/lib/styles.ts @@ -32,10 +32,6 @@ export const formStyles = { }; export const headerStyles = { - alignItems: "center", - display: "flex", - flexgap: "1em", - gap: "1em", paddingLeft: "1em" }; diff --git a/src/main.tsx b/src/main.tsx index a4b06e5..bea4cdf 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -15,6 +15,7 @@ import "@esri/calcite-components/dist/components/calcite-label"; import "@esri/calcite-components/dist/components/calcite-list"; import "@esri/calcite-components/dist/components/calcite-list-item"; import "@esri/calcite-components/dist/components/calcite-loader"; +import "@esri/calcite-components/dist/components/calcite-navigation"; import "@esri/calcite-components/dist/components/calcite-option"; import "@esri/calcite-components/dist/components/calcite-panel"; import "@esri/calcite-components/dist/components/calcite-select"; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 6d30eed..0418ffd 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -6,9 +6,9 @@ import { } from "@esri/calcite-components-react"; import React from "react"; import { Link } from "react-router-dom"; +import Header from "../components/Header"; import { SYMBOLS } from "../components/lib/constants"; import { cardContainerStyles, cardFooterStyles, cardStyles } from "../components/lib/styles"; -import Header from "../components/Header"; const cards = SYMBOLS.map((symbol) => { return ( From 791bb2ea83fac2775ec77cbdf35903554d3cf747 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 14:39:15 -0600 Subject: [PATCH 13/25] feat: add an alert when a snippet is copied to the clipboard Refs: #8 --- src/components/LineSymbol3DAMDPanel.tsx | 21 +++++++++++++++---- src/components/LineSymbol3DESMPanel.tsx | 21 +++++++++++++++---- src/components/LineSymbol3DJSONPanel.tsx | 21 +++++++++++++++---- src/components/MeshSymbol3DAMDPanel.tsx | 21 +++++++++++++++---- src/components/MeshSymbol3DESMPanel.tsx | 21 +++++++++++++++---- src/components/MeshSymbol3DJSONPanel.tsx | 21 +++++++++++++++---- src/components/PictureFillSymbolAMDPanel.tsx | 21 +++++++++++++++---- src/components/PictureFillSymbolESMPanel.tsx | 21 +++++++++++++++---- src/components/PictureFillSymbolJSONPanel.tsx | 21 +++++++++++++++---- .../PictureMarkerSymbolAMDPanel.tsx | 21 +++++++++++++++---- .../PictureMarkerSymbolESMPanel.tsx | 21 +++++++++++++++---- .../PictureMarkerSymbolJSONPanel.tsx | 21 +++++++++++++++---- src/components/PointSymbol3DAMDPanel.tsx | 21 +++++++++++++++---- src/components/PointSymbol3DESMPanel.tsx | 21 +++++++++++++++---- src/components/PointSymbol3DJSONPanel.tsx | 21 +++++++++++++++---- src/components/PolygonSymbol3DAMDPanel.tsx | 21 +++++++++++++++---- src/components/PolygonSymbol3DESMPanel.tsx | 21 +++++++++++++++---- src/components/PolygonSymbol3DJSONPanel.tsx | 21 +++++++++++++++---- src/components/SimpleFillSymbolAMDPanel.tsx | 21 +++++++++++++++---- src/components/SimpleFillSymbolESMPanel.tsx | 21 +++++++++++++++---- src/components/SimpleFillSymbolJSONPanel.tsx | 21 +++++++++++++++---- src/components/SimpleLineSymbolAMDPanel.tsx | 21 +++++++++++++++---- src/components/SimpleLineSymbolESMPanel.tsx | 21 +++++++++++++++---- src/components/SimpleLineSymbolJSONPanel.tsx | 21 +++++++++++++++---- src/components/SimpleMarkerSymbolAMDPanel.tsx | 21 +++++++++++++++---- src/components/SimpleMarkerSymbolESMPanel.tsx | 21 +++++++++++++++---- .../SimpleMarkerSymbolJSONPanel.tsx | 21 +++++++++++++++---- src/components/TextSymbolAMDPanel.tsx | 21 +++++++++++++++---- src/components/TextSymbolESMPanel.tsx | 21 +++++++++++++++---- src/components/TextSymbolJSONPanel.tsx | 21 +++++++++++++++---- src/components/WebStyleSymbolAMDPanel.tsx | 21 +++++++++++++++---- src/components/WebStyleSymbolESMPanel.tsx | 21 +++++++++++++++---- src/components/WebStyleSymbolJSONPanel.tsx | 21 +++++++++++++++---- src/main.tsx | 1 + 34 files changed, 562 insertions(+), 132 deletions(-) diff --git a/src/components/LineSymbol3DAMDPanel.tsx b/src/components/LineSymbol3DAMDPanel.tsx index 8d18ab6..b8b22a8 100644 --- a/src/components/LineSymbol3DAMDPanel.tsx +++ b/src/components/LineSymbol3DAMDPanel.tsx @@ -1,6 +1,6 @@ import type LineSymbol3D from "@arcgis/core/symbols/LineSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const LineSymbol3DAMDPanel = ({ lineSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ` @@ -105,6 +108,16 @@ require(["esri/symbols/LineSymbol3D"], (LineSymbol3D) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/LineSymbol3DESMPanel.tsx b/src/components/LineSymbol3DESMPanel.tsx index 66d843e..b4b52b2 100644 --- a/src/components/LineSymbol3DESMPanel.tsx +++ b/src/components/LineSymbol3DESMPanel.tsx @@ -1,6 +1,6 @@ import type LineSymbol3D from "@arcgis/core/symbols/LineSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const LineSymbol3DESMPanel = ({ lineSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let colorImport = false; @@ -126,6 +129,16 @@ const lineSymbol3D = new LineSymbol3D({
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/LineSymbol3DJSONPanel.tsx b/src/components/LineSymbol3DJSONPanel.tsx index 9f25b15..ed040c1 100644 --- a/src/components/LineSymbol3DJSONPanel.tsx +++ b/src/components/LineSymbol3DJSONPanel.tsx @@ -1,6 +1,6 @@ import type LineSymbol3D from "@arcgis/core/symbols/LineSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const LineSymbol3DJSONPanel = ({ lineSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(lineSymbol3D.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/MeshSymbol3DAMDPanel.tsx b/src/components/MeshSymbol3DAMDPanel.tsx index b899865..832040b 100644 --- a/src/components/MeshSymbol3DAMDPanel.tsx +++ b/src/components/MeshSymbol3DAMDPanel.tsx @@ -1,6 +1,6 @@ import type MeshSymbol3D from "@arcgis/core/symbols/MeshSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const MeshSymbol3DAMDPanel = ({ meshSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ` @@ -67,6 +70,16 @@ require(["esri/symbols/MeshSymbol3D"], (MeshSymbol3D) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/MeshSymbol3DESMPanel.tsx b/src/components/MeshSymbol3DESMPanel.tsx index efa01d5..336d8f7 100644 --- a/src/components/MeshSymbol3DESMPanel.tsx +++ b/src/components/MeshSymbol3DESMPanel.tsx @@ -1,6 +1,6 @@ import type MeshSymbol3D from "@arcgis/core/symbols/MeshSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const MeshSymbol3DESMPanel = ({ meshSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ` @@ -67,6 +70,16 @@ const meshSymbol3D = new MeshSymbol3D({
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/MeshSymbol3DJSONPanel.tsx b/src/components/MeshSymbol3DJSONPanel.tsx index ede9de4..efce380 100644 --- a/src/components/MeshSymbol3DJSONPanel.tsx +++ b/src/components/MeshSymbol3DJSONPanel.tsx @@ -1,6 +1,6 @@ import type MeshSymbol3D from "@arcgis/core/symbols/MeshSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const MeshSymbol3DJSONPanel = ({ meshSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(meshSymbol3D.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PictureFillSymbolAMDPanel.tsx b/src/components/PictureFillSymbolAMDPanel.tsx index 08f8afe..b5ab3be 100644 --- a/src/components/PictureFillSymbolAMDPanel.tsx +++ b/src/components/PictureFillSymbolAMDPanel.tsx @@ -1,6 +1,6 @@ import type PictureFillSymbol from "@arcgis/core/symbols/PictureFillSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PictureFillSymbolAMDPanel = ({ pictureFillSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -48,6 +51,16 @@ require(["esri/symbols/PictureFillSymbol"], (PictureFillSymbol) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PictureFillSymbolESMPanel.tsx b/src/components/PictureFillSymbolESMPanel.tsx index bc6532f..24796dc 100644 --- a/src/components/PictureFillSymbolESMPanel.tsx +++ b/src/components/PictureFillSymbolESMPanel.tsx @@ -1,6 +1,6 @@ import type PictureFillSymbol from "@arcgis/core/symbols/PictureFillSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PictureFillSymbolESMPanel = ({ pictureFillSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -50,6 +53,16 @@ const PictureFillSymbolESMPanel = ({ pictureFillSymbol }: Props) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PictureFillSymbolJSONPanel.tsx b/src/components/PictureFillSymbolJSONPanel.tsx index 25dbb92..4e447c7 100644 --- a/src/components/PictureFillSymbolJSONPanel.tsx +++ b/src/components/PictureFillSymbolJSONPanel.tsx @@ -1,6 +1,6 @@ import type PictureFillSymbol from "@arcgis/core/symbols/PictureFillSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PictureFillSymbolJSONPanel = ({ pictureFillSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(pictureFillSymbol.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PictureMarkerSymbolAMDPanel.tsx b/src/components/PictureMarkerSymbolAMDPanel.tsx index 7986e4e..5407011 100644 --- a/src/components/PictureMarkerSymbolAMDPanel.tsx +++ b/src/components/PictureMarkerSymbolAMDPanel.tsx @@ -1,6 +1,6 @@ import type PictureMarkerSymbol from "@arcgis/core/symbols/PictureMarkerSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PictureMarkerSymbolAMDPanel = ({ pictureMarkerSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -39,6 +42,16 @@ require(["esri/symbols/PictureMarkerSymbol"], (PictureMarkerSymbol) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PictureMarkerSymbolESMPanel.tsx b/src/components/PictureMarkerSymbolESMPanel.tsx index b45ad8a..5398091 100644 --- a/src/components/PictureMarkerSymbolESMPanel.tsx +++ b/src/components/PictureMarkerSymbolESMPanel.tsx @@ -1,6 +1,6 @@ import type PictureMarkerSymbol from "@arcgis/core/symbols/PictureMarkerSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PictureMarkerSymbolESMPanel = ({ pictureMarkerSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -39,6 +42,16 @@ const PictureMarkerSymbolESMPanel = ({ pictureMarkerSymbol }: Props) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PictureMarkerSymbolJSONPanel.tsx b/src/components/PictureMarkerSymbolJSONPanel.tsx index a1b59da..87d1153 100644 --- a/src/components/PictureMarkerSymbolJSONPanel.tsx +++ b/src/components/PictureMarkerSymbolJSONPanel.tsx @@ -1,6 +1,6 @@ import type PictureMarkerSymbol from "@arcgis/core/symbols/PictureMarkerSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PictureMarkerSymbolJSONPanel = ({ pictureMarkerSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(pictureMarkerSymbol.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PointSymbol3DAMDPanel.tsx b/src/components/PointSymbol3DAMDPanel.tsx index f21d3fb..a437e1e 100644 --- a/src/components/PointSymbol3DAMDPanel.tsx +++ b/src/components/PointSymbol3DAMDPanel.tsx @@ -1,6 +1,6 @@ import type PointSymbol3D from "@arcgis/core/symbols/PointSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PointSymbol3DAMDPanel = ({ pointSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ` @@ -190,6 +193,16 @@ require(["esri/symbols/PointSymbol3D"], (PointSymbol3D) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PointSymbol3DESMPanel.tsx b/src/components/PointSymbol3DESMPanel.tsx index 7c2ec41..76bbc55 100644 --- a/src/components/PointSymbol3DESMPanel.tsx +++ b/src/components/PointSymbol3DESMPanel.tsx @@ -1,6 +1,6 @@ import type PointSymbol3D from "@arcgis/core/symbols/PointSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PointSymbol3DESMPanel = ({ pointSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let colorImport = false; @@ -223,6 +226,16 @@ const pointSymbol3D = new PointSymbol3D({
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PointSymbol3DJSONPanel.tsx b/src/components/PointSymbol3DJSONPanel.tsx index 1d4760f..09ae93d 100644 --- a/src/components/PointSymbol3DJSONPanel.tsx +++ b/src/components/PointSymbol3DJSONPanel.tsx @@ -1,6 +1,6 @@ import type PointSymbol3D from "@arcgis/core/symbols/PointSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PointSymbol3DJSONPanel = ({ pointSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(pointSymbol3D.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PolygonSymbol3DAMDPanel.tsx b/src/components/PolygonSymbol3DAMDPanel.tsx index b4db077..ca6e73f 100644 --- a/src/components/PolygonSymbol3DAMDPanel.tsx +++ b/src/components/PolygonSymbol3DAMDPanel.tsx @@ -1,6 +1,6 @@ import type PolygonSymbol3D from "@arcgis/core/symbols/PolygonSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PolygonSymbol3DAMDPanel = ({ polygonSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ` @@ -208,6 +211,16 @@ require(["esri/symbols/PolygonSymbol3D"], (PolygonSymbol3D) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PolygonSymbol3DESMPanel.tsx b/src/components/PolygonSymbol3DESMPanel.tsx index 0f8338e..00c6634 100644 --- a/src/components/PolygonSymbol3DESMPanel.tsx +++ b/src/components/PolygonSymbol3DESMPanel.tsx @@ -1,6 +1,6 @@ import type PolygonSymbol3D from "@arcgis/core/symbols/PolygonSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PolygonSymbol3DESMPanel = ({ polygonSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let colorImport = false; @@ -253,6 +256,16 @@ const polygonSymbol3D = new PolygonSymbol3D({
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/PolygonSymbol3DJSONPanel.tsx b/src/components/PolygonSymbol3DJSONPanel.tsx index b8b3fa3..49fb7c1 100644 --- a/src/components/PolygonSymbol3DJSONPanel.tsx +++ b/src/components/PolygonSymbol3DJSONPanel.tsx @@ -1,6 +1,6 @@ import type PolygonSymbol3D from "@arcgis/core/symbols/PolygonSymbol3D"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const PolygonSymbol3DJSONPanel = ({ polygonSymbol3D }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(polygonSymbol3D.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleFillSymbolAMDPanel.tsx b/src/components/SimpleFillSymbolAMDPanel.tsx index e0b7c62..0dd9e71 100644 --- a/src/components/SimpleFillSymbolAMDPanel.tsx +++ b/src/components/SimpleFillSymbolAMDPanel.tsx @@ -1,6 +1,6 @@ import type SimpleFillSymbol from "@arcgis/core/symbols/SimpleFillSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleFillSymbolAMDPanel = ({ simpleFillSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -43,6 +46,16 @@ require(["esri/symbols/SimpleFillSymbol"], (SimpleFillSymbol) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleFillSymbolESMPanel.tsx b/src/components/SimpleFillSymbolESMPanel.tsx index d6ec5e6..2919f75 100644 --- a/src/components/SimpleFillSymbolESMPanel.tsx +++ b/src/components/SimpleFillSymbolESMPanel.tsx @@ -1,6 +1,6 @@ import type SimpleFillSymbol from "@arcgis/core/symbols/SimpleFillSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleFillSymbolESMPanel = ({ simpleFillSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -45,6 +48,16 @@ const simpleFillSymbol = new SimpleFillSymbol({
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleFillSymbolJSONPanel.tsx b/src/components/SimpleFillSymbolJSONPanel.tsx index 160592f..544ad68 100644 --- a/src/components/SimpleFillSymbolJSONPanel.tsx +++ b/src/components/SimpleFillSymbolJSONPanel.tsx @@ -1,6 +1,6 @@ import type SimpleFillSymbol from "@arcgis/core/symbols/SimpleFillSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleFillSymbolJSONPanel = ({ simpleFillSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(simpleFillSymbol.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleLineSymbolAMDPanel.tsx b/src/components/SimpleLineSymbolAMDPanel.tsx index 1b8c878..5ec6c0f 100644 --- a/src/components/SimpleLineSymbolAMDPanel.tsx +++ b/src/components/SimpleLineSymbolAMDPanel.tsx @@ -1,6 +1,6 @@ import type SimpleLineSymbol from "@arcgis/core/symbols/SimpleLineSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleLineSymbolAMDPanel = ({ simpleLineSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ``; @@ -60,6 +63,16 @@ require(["esri/symbols/SimpleLineSymbol"], (SimpleLineSymbol) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleLineSymbolESMPanel.tsx b/src/components/SimpleLineSymbolESMPanel.tsx index f8fe6bd..7278107 100644 --- a/src/components/SimpleLineSymbolESMPanel.tsx +++ b/src/components/SimpleLineSymbolESMPanel.tsx @@ -1,6 +1,6 @@ import type SimpleLineSymbol from "@arcgis/core/symbols/SimpleLineSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleLineSymbolESMPanel = ({ simpleLineSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ``; @@ -63,6 +66,16 @@ const simpleLineSymbol = new SimpleLineSymbol({
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleLineSymbolJSONPanel.tsx b/src/components/SimpleLineSymbolJSONPanel.tsx index 1d5d146..594c942 100644 --- a/src/components/SimpleLineSymbolJSONPanel.tsx +++ b/src/components/SimpleLineSymbolJSONPanel.tsx @@ -1,6 +1,6 @@ import type SimpleLineSymbol from "@arcgis/core/symbols/SimpleLineSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleLineSymbolJSONPanel = ({ simpleLineSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(simpleLineSymbol.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleMarkerSymbolAMDPanel.tsx b/src/components/SimpleMarkerSymbolAMDPanel.tsx index b5e3289..0f2be4b 100644 --- a/src/components/SimpleMarkerSymbolAMDPanel.tsx +++ b/src/components/SimpleMarkerSymbolAMDPanel.tsx @@ -1,6 +1,6 @@ import type SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleMarkerSymbolAMDPanel = ({ simpleMarkerSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -48,6 +51,16 @@ require(["esri/symbols/SimpleMarkerSymbol"], (SimpleMarkerSymbol) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleMarkerSymbolESMPanel.tsx b/src/components/SimpleMarkerSymbolESMPanel.tsx index 4065529..5544152 100644 --- a/src/components/SimpleMarkerSymbolESMPanel.tsx +++ b/src/components/SimpleMarkerSymbolESMPanel.tsx @@ -1,6 +1,6 @@ import type SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleMarkerSymbolESMPanel = ({ simpleMarkerSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -50,6 +53,16 @@ const SimpleMarkerSymbolESMPanel = ({ simpleMarkerSymbol }: Props) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/SimpleMarkerSymbolJSONPanel.tsx b/src/components/SimpleMarkerSymbolJSONPanel.tsx index 04923a0..1802e05 100644 --- a/src/components/SimpleMarkerSymbolJSONPanel.tsx +++ b/src/components/SimpleMarkerSymbolJSONPanel.tsx @@ -1,6 +1,6 @@ import type SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleMarkerSymbolJSONPanel = ({ simpleMarkerSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(simpleMarkerSymbol.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/TextSymbolAMDPanel.tsx b/src/components/TextSymbolAMDPanel.tsx index 33387a6..a0e27c1 100644 --- a/src/components/TextSymbolAMDPanel.tsx +++ b/src/components/TextSymbolAMDPanel.tsx @@ -1,6 +1,6 @@ import type TextSymbol from "@arcgis/core/symbols/TextSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const TextSymbolAMDPanel = ({ textSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -55,6 +58,16 @@ require(["esri/symbols/TextSymbol"], (TextSymbol) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/TextSymbolESMPanel.tsx b/src/components/TextSymbolESMPanel.tsx index 8d50781..7ccce36 100644 --- a/src/components/TextSymbolESMPanel.tsx +++ b/src/components/TextSymbolESMPanel.tsx @@ -1,6 +1,6 @@ import type TextSymbol from "@arcgis/core/symbols/TextSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const TextSymbolESMPanel = ({ textSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -57,6 +60,16 @@ const TextSymbolESMPanel = ({ textSymbol }: Props) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/TextSymbolJSONPanel.tsx b/src/components/TextSymbolJSONPanel.tsx index 47211fd..05357a0 100644 --- a/src/components/TextSymbolJSONPanel.tsx +++ b/src/components/TextSymbolJSONPanel.tsx @@ -1,6 +1,6 @@ import type TextSymbol from "@arcgis/core/symbols/TextSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const TextSymbolJSONPanel = ({ textSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(textSymbol.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/WebStyleSymbolAMDPanel.tsx b/src/components/WebStyleSymbolAMDPanel.tsx index 1c088c1..33455cd 100644 --- a/src/components/WebStyleSymbolAMDPanel.tsx +++ b/src/components/WebStyleSymbolAMDPanel.tsx @@ -1,6 +1,6 @@ import type WebStyleSymbol from "@arcgis/core/symbols/WebStyleSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const WebStyleSymbolAMDPanel = ({ webStyleSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ``; @@ -47,6 +50,16 @@ require(["esri/symbols/WebStyleSymbol"], (WebStyleSymbol) => {
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/WebStyleSymbolESMPanel.tsx b/src/components/WebStyleSymbolESMPanel.tsx index f9ea494..c9dd0c4 100644 --- a/src/components/WebStyleSymbolESMPanel.tsx +++ b/src/components/WebStyleSymbolESMPanel.tsx @@ -1,6 +1,6 @@ import type WebStyleSymbol from "@arcgis/core/symbols/WebStyleSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const WebStyleSymbolESMPanel = ({ webStyleSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; let codeSnippet = ``; @@ -47,6 +50,16 @@ const webStyleSymbol = new WebStyleSymbol({
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/components/WebStyleSymbolJSONPanel.tsx b/src/components/WebStyleSymbolJSONPanel.tsx index e13ce09..254aa1a 100644 --- a/src/components/WebStyleSymbolJSONPanel.tsx +++ b/src/components/WebStyleSymbolJSONPanel.tsx @@ -1,6 +1,6 @@ import type WebStyleSymbol from "@arcgis/core/symbols/WebStyleSymbol"; -import { CalciteAction, CalcitePanel } from "@esri/calcite-components-react"; -import React from "react"; +import { CalciteAction, CalciteAlert, CalcitePanel } from "@esri/calcite-components-react"; +import React, { useRef } from "react"; import { jsonStyles } from "./lib/styles"; interface Props { @@ -8,8 +8,11 @@ interface Props { } const SimpleFillSymbolJSONPanel = ({ webStyleSymbol }: Props) => { - const handleCopyClick = () => { - navigator.clipboard.writeText(codeSnippet); + const alertRef = useRef(null); + + const handleCopyClick = async () => { + await navigator.clipboard.writeText(codeSnippet); + alertRef.current && (alertRef.current.open = true); }; const codeSnippet = ` @@ -33,6 +36,16 @@ ${JSON.stringify(webStyleSymbol.toJSON(), null, 2)});`;
{codeSnippet}
+ +
Copied to clipboard
+
); }; diff --git a/src/main.tsx b/src/main.tsx index bea4cdf..3ed706a 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -2,6 +2,7 @@ import "@arcgis/core/assets/esri/themes/light/main.css"; import "@esri/calcite-components/dist/calcite/calcite.css"; import { setAssetPath } from "@esri/calcite-components/dist/components"; import "@esri/calcite-components/dist/components/calcite-action"; +import "@esri/calcite-components/dist/components/calcite-alert"; import "@esri/calcite-components/dist/components/calcite-block"; import "@esri/calcite-components/dist/components/calcite-button"; import "@esri/calcite-components/dist/components/calcite-card"; From 3bcab8e07c74bac23216ad5e212cd436514b6885 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 15:12:50 -0600 Subject: [PATCH 14/25] fix: deprecated onCalciteBlockToggle --- src/components/LineSymbol3DLayerForm.tsx | 5 ++++- src/components/SimpleLineSymbolForm.tsx | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/LineSymbol3DLayerForm.tsx b/src/components/LineSymbol3DLayerForm.tsx index 7a8a70b..bd21969 100644 --- a/src/components/LineSymbol3DLayerForm.tsx +++ b/src/components/LineSymbol3DLayerForm.tsx @@ -112,7 +112,10 @@ const LineSymbol3DLayerForm = ({ style={blockStyles} collapsible heading={"marker"} - onCalciteBlockToggle={(event) => { + onCalciteBlockClose={(event) => { + handleLineSymbol3DLayerMarkerBlockToggle(layerIndex, event.target); + }} + onCalciteBlockOpen={(event) => { handleLineSymbol3DLayerMarkerBlockToggle(layerIndex, event.target); }} > diff --git a/src/components/SimpleLineSymbolForm.tsx b/src/components/SimpleLineSymbolForm.tsx index 21d46e4..c2fea70 100644 --- a/src/components/SimpleLineSymbolForm.tsx +++ b/src/components/SimpleLineSymbolForm.tsx @@ -65,7 +65,12 @@ const SimpleLineSymbolForm = ({ style={blockStyles} collapsible heading={"marker"} - onCalciteBlockToggle={(event) => { + onCalciteBlockClose={(event) => { + if (handleMarkerBlockToggle) { + handleMarkerBlockToggle(event.target); + } + }} + onCalciteBlockOpen={(event) => { if (handleMarkerBlockToggle) { handleMarkerBlockToggle(event.target); } From 9d02dd14399e4976bf2c34392706cc46ef42b4c9 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Thu, 20 Jun 2024 15:35:34 -0600 Subject: [PATCH 15/25] fix: lineStyleMarker3D getting reset --- .../LineSymbol3DSymbolLayersForm.tsx | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/components/LineSymbol3DSymbolLayersForm.tsx b/src/components/LineSymbol3DSymbolLayersForm.tsx index 954bf6f..db0fed9 100644 --- a/src/components/LineSymbol3DSymbolLayersForm.tsx +++ b/src/components/LineSymbol3DSymbolLayersForm.tsx @@ -42,12 +42,32 @@ const LineSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { const [symbolLayers, setSymbolLayers] = useState(new Collection()); + const [lineStyleMarker3Ds, setLineStyleMarker3Ds] = useState( + new Collection([ + new LineStyleMarker3D({ + color: "#007ac2", + placement: "begin-end", + style: "arrow" + }) + ]) + ); + const addLineSymbol3DLayer = () => { const newSymbolLayers = symbolLayers.clone(); const lineSymbol3DLayer = createNewLineSymbol3DLayer(); newSymbolLayers.add(lineSymbol3DLayer); setSymbolLayers(newSymbolLayers); updateSymbolLayers(newSymbolLayers); + + const newLineStyleMarker3Ds = lineStyleMarker3Ds.clone(); + newLineStyleMarker3Ds.add( + new LineStyleMarker3D({ + color: "#007ac2", + placement: "begin-end", + style: "arrow" + }) + ); + setLineStyleMarker3Ds(newLineStyleMarker3Ds); }; const addPathSymbol3DLayer = () => { @@ -88,12 +108,12 @@ const LineSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { const newSymbolLayers = symbolLayers.clone(); const symbolLayer = newSymbolLayers.getItemAt(layerIndex) as LineSymbol3DLayer; if (currentMarkerBlock.open && !symbolLayer.marker) { - symbolLayer.marker = new LineStyleMarker3D({ - color: "#007ac2", - placement: "begin-end", - style: "arrow" - }); + symbolLayer.marker = lineStyleMarker3Ds.getItemAt(layerIndex); } else { + const newLineStyleMarker3Ds = lineStyleMarker3Ds.clone(); + newLineStyleMarker3Ds.removeAt(layerIndex); + newLineStyleMarker3Ds.add(symbolLayer.marker as LineStyleMarker3D, layerIndex); + setLineStyleMarker3Ds(newLineStyleMarker3Ds); // @ts-expect-error strictNullChecks symbolLayer.marker = null; updateSymbolLayers(newSymbolLayers); From bc69329b40be97c510577cbe21cae2cc08138955 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Fri, 21 Jun 2024 07:57:39 -0600 Subject: [PATCH 16/25] fix: symbol layer forms not updating on delete Refs: #39 --- src/components/LineSymbol3DSymbolLayersForm.tsx | 15 +++++++++------ src/components/MeshSymbol3DSymbolLayersForm.tsx | 14 ++++++++------ src/components/PointSymbol3DSymbolLayersForm.tsx | 14 ++++++++------ .../PolygonSymbol3DSymbolLayersForm.tsx | 14 ++++++++------ 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/components/LineSymbol3DSymbolLayersForm.tsx b/src/components/LineSymbol3DSymbolLayersForm.tsx index db0fed9..9f9c07e 100644 --- a/src/components/LineSymbol3DSymbolLayersForm.tsx +++ b/src/components/LineSymbol3DSymbolLayersForm.tsx @@ -81,6 +81,7 @@ const LineSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { const deleteSymbol3DLayer = (index: number) => { const newSymbolLayers = symbolLayers.clone(); newSymbolLayers.removeAt(index); + lineStyleMarker3Ds.removeAt(index); setSymbolLayers(newSymbolLayers); updateSymbolLayers(newSymbolLayers); }; @@ -252,12 +253,14 @@ const LineSymbol3DSymbolLayersForm = ({ updateSymbolLayers }: PageProps) => { if (symbolLayer.type === "line") { symbol3DLayerCollectionForm.push( - deleteSymbol3DLayer(index)} - slot="control" - text="Delete" - /> + {index === symbolLayers.length - 1 && ( + deleteSymbol3DLayer(index)} + slot="control" + text="Delete" + /> + )} { if (symbolLayer.type === "fill") { symbol3DLayerCollectionForm.push( - deleteSymbol3DLayer(index)} - slot="control" - text="Delete" - /> + {index === symbolLayers.length - 1 && ( + deleteSymbol3DLayer(index)} + slot="control" + text="Delete" + /> + )} { if (symbolLayer.type === "icon") { symbol3DLayerCollectionForm.push( - deleteSymbol3DLayer(index)} - slot="control" - text="Delete" - /> + {index === symbolLayers.length - 1 && ( + deleteSymbol3DLayer(index)} + slot="control" + text="Delete" + /> + )} { if (symbolLayer.type === "extrude") { symbol3DLayerCollectionForm.push( - deleteSymbol3DLayer(index)} - slot="control" - text="Delete" - /> + {index === symbolLayers.length - 1 && ( + deleteSymbol3DLayer(index)} + slot="control" + text="Delete" + /> + )} Date: Fri, 21 Jun 2024 08:31:39 -0600 Subject: [PATCH 17/25] feat: add zoom to graphics action Refs: #19 --- src/components/lib/mapview.ts | 10 ++++++++++ src/components/lib/sceneview.ts | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/components/lib/mapview.ts b/src/components/lib/mapview.ts index bed7cc2..cca7752 100644 --- a/src/components/lib/mapview.ts +++ b/src/components/lib/mapview.ts @@ -18,6 +18,16 @@ const view = new ArcMapView({ viewpoint }); +const zoomToGraphicsAction = document.createElement("calcite-action"); +zoomToGraphicsAction.icon = "zoom-to-object"; +zoomToGraphicsAction.text = "Zoom to Graphics"; +zoomToGraphicsAction.textEnabled = true; +zoomToGraphicsAction.scale = "s"; +zoomToGraphicsAction.addEventListener("click", () => { + view.goTo(view.graphics); +}); +view.ui.add(zoomToGraphicsAction, "top-right"); + export const createMapView = async (parentElement: HTMLDivElement, graphics?: Collection) => { view.container = parentElement; view.graphics = graphics as Collection; diff --git a/src/components/lib/sceneview.ts b/src/components/lib/sceneview.ts index 62476d0..cbc229b 100644 --- a/src/components/lib/sceneview.ts +++ b/src/components/lib/sceneview.ts @@ -18,6 +18,16 @@ const view = new ArcSceneView({ viewpoint }); +const zoomToGraphicsAction = document.createElement("calcite-action"); +zoomToGraphicsAction.icon = "zoom-to-object"; +zoomToGraphicsAction.text = "Zoom to Graphics"; +zoomToGraphicsAction.textEnabled = true; +zoomToGraphicsAction.scale = "s"; +zoomToGraphicsAction.addEventListener("click", () => { + view.goTo(view.graphics); +}); +view.ui.add(zoomToGraphicsAction, "top-right"); + export const createSceneView = async (parentElement: HTMLDivElement, graphics?: Collection) => { view.container = parentElement; view.viewpoint = viewpoint; From 635f97dfb9a4ca7d78b06c4734bdb48abea79bfa Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Fri, 21 Jun 2024 09:35:26 -0600 Subject: [PATCH 18/25] chore(deps): update dev dependencies --- .eslintrc.cjs | 12 ------------ eslint.config.js | 14 ++++++++++++++ package-lock.json | 39 ++++++++++++++++++++++++++++----------- package.json | 9 ++++----- tsconfig.app.json | 29 +++++++++++++++++++++++++++++ tsconfig.json | 28 ++++------------------------ tsconfig.node.json | 4 +++- vite.config.ts | 2 +- 8 files changed, 83 insertions(+), 54 deletions(-) delete mode 100644 .eslintrc.cjs create mode 100644 eslint.config.js create mode 100644 tsconfig.app.json diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 8950f4d..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react-hooks/recommended"], - ignorePatterns: ["dist", ".eslintrc.cjs", "analyze.html"], - parser: "@typescript-eslint/parser", - plugins: ["react-refresh"], - rules: { - "react-refresh/only-export-components": ["warn", { allowConstantExport: true }], - "react-hooks/exhaustive-deps": "off" - } -}; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..a3ffead --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,14 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; +import pluginReactConfig from "eslint-plugin-react/configs/recommended.js"; + +export default [ + { files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"] }, + { languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } } }, + { languageOptions: { globals: globals.browser } }, + { settings: { react: { version: "detect" } } }, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, + pluginReactConfig +]; diff --git a/package-lock.json b/package-lock.json index 0b89f2c..881b220 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,20 +16,19 @@ }, "devDependencies": { "@eslint/js": "^9.5.0", - "@types/node": "^20.14.5", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "@vitejs/plugin-react": "^4.3.1", "eslint": "^8.57.0", - "eslint-plugin-react": "^7.34.2", + "eslint-plugin-react": "^7.34.3", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-react-refresh": "^0.4.6", + "eslint-plugin-react-refresh": "^0.4.7", "globals": "^15.6.0", "prettier": "^3.3.2", "rollup-plugin-visualizer": "^5.12.0", - "typescript": "^5.4.5", + "typescript": "^5.4.0", "typescript-eslint": "^7.13.1", "vite": "^5.3.1" } @@ -891,6 +890,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz", "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -899,6 +899,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@esri/arcgis-html-sanitizer/-/arcgis-html-sanitizer-4.0.1.tgz", "integrity": "sha512-6m/qIGmmbWWB2RXtyGcCBMIE/FkfM+dF9VzvW+kVH8ddvSjTtWiKcDrQXfDI73OyYPe2fDtANNPP9amu0L4sMQ==", + "license": "Apache-2.0", "dependencies": { "xss": "1.0.13" }, @@ -1436,6 +1437,8 @@ "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "undici-types": "~5.26.4" } @@ -2281,7 +2284,8 @@ "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, "node_modules/composed-offset-position": { "version": "0.0.4", @@ -2317,7 +2321,8 @@ "node_modules/cssfilter": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", + "license": "MIT" }, "node_modules/csstype": { "version": "3.1.3", @@ -2704,6 +2709,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -2755,16 +2761,17 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.34.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", - "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", + "version": "7.34.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz", + "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.2", "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", @@ -2791,6 +2798,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2803,6 +2811,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz", "integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==", "dev": true, + "license": "MIT", "peerDependencies": { "eslint": ">=7" } @@ -3380,6 +3389,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-15.6.0.tgz", "integrity": "sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -4184,6 +4194,7 @@ "version": "12.0.2", "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -4572,6 +4583,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -5334,6 +5346,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5347,6 +5360,7 @@ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.13.1.tgz", "integrity": "sha512-pvLEuRs8iS9s3Cnp/Wt//hpK8nKc8hVa3cLljHqzaJJQYP8oys8GUyIFqtlev+2lT/fqMPcyQko+HJ6iYK3nFA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "7.13.1", "@typescript-eslint/parser": "7.13.1", @@ -5387,7 +5401,9 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/update-browserslist-db": { "version": "1.0.16", @@ -5650,6 +5666,7 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.13.tgz", "integrity": "sha512-clu7dxTm1e8Mo5fz3n/oW3UCXBfV89xZ72jM8yzo1vR/pIS0w3sgB3XV2H8Vm6zfGnHL0FzvLJPJEBhd86/z4Q==", + "license": "MIT", "dependencies": { "commander": "^2.20.3", "cssfilter": "0.0.10" diff --git a/package.json b/package.json index 54372fe..08abf99 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "build": "tsc && vite build", "dev": "vite", "format": "prettier --plugin-search-dir . --write .", - "lint": "npx eslint --ext .ts,.tsx src/", + "lint": "npx eslint src/", "preview": "vite preview" }, "dependencies": { @@ -19,20 +19,19 @@ }, "devDependencies": { "@eslint/js": "^9.5.0", - "@types/node": "^20.14.5", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "@vitejs/plugin-react": "^4.3.1", "eslint": "^8.57.0", - "eslint-plugin-react": "^7.34.2", + "eslint-plugin-react": "^7.34.3", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-react-refresh": "^0.4.6", + "eslint-plugin-react-refresh": "^0.4.7", "globals": "^15.6.0", "prettier": "^3.3.2", "rollup-plugin-visualizer": "^5.12.0", - "typescript": "^5.4.5", + "typescript": "^5.4.0", "typescript-eslint": "^7.13.1", "vite": "^5.3.1" } diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..82ae62e --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": [ + "ES2020", + "DOM", + "DOM.Iterable" + ], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src" + ] +} diff --git a/tsconfig.json b/tsconfig.json index 9479566..ea9d0cd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,29 +1,9 @@ { - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": [ - "ES2020", - "DOM", - "DOM.Iterable" - ], - "module": "ESNext", - "skipLibCheck": true, - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": [ - "src" - ], + "files": [], "references": [ + { + "path": "./tsconfig.app.json" + }, { "path": "./tsconfig.node.json" } diff --git a/tsconfig.node.json b/tsconfig.node.json index c7a071e..387a89e 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -1,11 +1,13 @@ { "compilerOptions": { "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", "skipLibCheck": true, "module": "ESNext", "moduleResolution": "bundler", "allowSyntheticDefaultImports": true, - "strict": true + "strict": true, + "noEmit": true }, "include": [ "vite.config.ts" diff --git a/vite.config.ts b/vite.config.ts index 7a2757b..35d8954 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,6 @@ -import { defineConfig, loadEnv } from "vite"; import react from "@vitejs/plugin-react"; import { visualizer } from "rollup-plugin-visualizer"; +import { defineConfig, loadEnv } from "vite"; export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd()); From 86b7273f6fa7975714203855d4b6bb24a21b502d Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Fri, 21 Jun 2024 14:12:27 -0600 Subject: [PATCH 19/25] chore: adjust chunkSizeWarningLimit --- vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index 35d8954..b8e7206 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,7 +7,7 @@ export default defineConfig(({ mode }) => { return { base: env.VITE_BASE_NAME, build: { - chunkSizeWarningLimit: 2200 + chunkSizeWarningLimit: 2500 }, plugins: [ react(), From 351cadc1f7ec60a795482d9ea77fa9f630352688 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Fri, 21 Jun 2024 14:12:52 -0600 Subject: [PATCH 20/25] chore(deps): update @arcgis/core to 4.30 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 881b220..ef4948d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "symbol-builder", "version": "0.0.0", "dependencies": { - "@arcgis/core": "^4.30.0-next.20240620", + "@arcgis/core": "^4.30.0", "@esri/calcite-components-react": "2.9.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -47,9 +47,9 @@ } }, "node_modules/@arcgis/core": { - "version": "4.30.0-next.20240620", - "resolved": "https://registry.npmjs.org/@arcgis/core/-/core-4.30.0-next.20240620.tgz", - "integrity": "sha512-6M1lHyDYr3H78bXJ0tT2bvIHkspALdoC1YW6nIvLguiHKT7Tm94dtpJ2OhxUG6NKY9yM4L0VILpkHNGF4shAJQ==", + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/@arcgis/core/-/core-4.30.0.tgz", + "integrity": "sha512-qjYgla48vGhbHKTZwCVL+iDFcp9zlFybLstlU2ufYkXkDCIDwvYrV0O69caaoUsrecNcchgIQtEFX7bDKXqMwA==", "license": "SEE LICENSE IN copyright.txt", "dependencies": { "@esri/arcgis-html-sanitizer": "~4.0.1", diff --git a/package.json b/package.json index 08abf99..afb3a5f 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "preview": "vite preview" }, "dependencies": { - "@arcgis/core": "^4.30.0-next.20240620", + "@arcgis/core": "^4.30.0", "@esri/calcite-components-react": "2.9.0", "react": "^18.3.1", "react-dom": "^18.3.1", From c2348c51af9f2c03ac11921f9a51edf043cecf00 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Mon, 24 Jun 2024 11:39:27 -0600 Subject: [PATCH 21/25] feat: use map components --- package-lock.json | 137 +++++++++++++++++++++++++++++--- package.json | 2 +- src/components/MapView.tsx | 55 ++++++++----- src/components/SceneView.tsx | 55 ++++++++----- src/components/lib/mapview.ts | 35 -------- src/components/lib/sceneview.ts | 36 --------- src/main.tsx | 3 + vite.config.ts | 2 +- 8 files changed, 203 insertions(+), 122 deletions(-) delete mode 100644 src/components/lib/mapview.ts delete mode 100644 src/components/lib/sceneview.ts diff --git a/package-lock.json b/package-lock.json index ef4948d..c7116d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "symbol-builder", "version": "0.0.0", "dependencies": { - "@arcgis/core": "^4.30.0", + "@arcgis/map-components-react": "^4.30.0", "@esri/calcite-components-react": "2.9.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -46,11 +46,41 @@ "node": ">=6.0.0" } }, + "node_modules/@arcgis/components-controllers": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/@arcgis/components-controllers/-/components-controllers-4.30.0.tgz", + "integrity": "sha512-utxUHv569lXpUR3w+5x05giaZwAKXrNop9S+tDNDoilugh4iAagiHwG6kZd51oLLgh1xQApzDnx0Ty0houJRxA==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@arcgis/components-utils": "4.30.0", + "estraverse": "^5.3.0", + "magic-string": "^0.30.0" + }, + "peerDependencies": { + "@arcgis/core": "~4.30.0", + "@arcgis/core-adapter": "~4.30.0" + }, + "peerDependenciesMeta": { + "@arcgis/core": { + "optional": true + }, + "@arcgis/core-adapter": { + "optional": true + } + } + }, + "node_modules/@arcgis/components-utils": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/@arcgis/components-utils/-/components-utils-4.30.0.tgz", + "integrity": "sha512-cuUx9oMU9M78RIADuOEL48+wefubJ3iYQA1pI6cOQweu0GNyAfRiwU7pNqqVWLyO2OG//Mg57pKM0hC/BdxSVg==", + "license": "SEE LICENSE IN LICENSE.md" + }, "node_modules/@arcgis/core": { "version": "4.30.0", "resolved": "https://registry.npmjs.org/@arcgis/core/-/core-4.30.0.tgz", "integrity": "sha512-qjYgla48vGhbHKTZwCVL+iDFcp9zlFybLstlU2ufYkXkDCIDwvYrV0O69caaoUsrecNcchgIQtEFX7bDKXqMwA==", "license": "SEE LICENSE IN copyright.txt", + "peer": true, "dependencies": { "@esri/arcgis-html-sanitizer": "~4.0.1", "@esri/calcite-colors": "~6.1.0", @@ -62,6 +92,48 @@ "sortablejs": "~1.15.2" } }, + "node_modules/@arcgis/map-components": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/@arcgis/map-components/-/map-components-4.30.0.tgz", + "integrity": "sha512-SlbT/17rxOOFYkVlTWTLC2Gu48E9px9v4+f0iG4ZPsFF+p9OfWaq1yb8cE2ZieXEZ30BiJnjOlQ8PHWHXWb6XA==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@arcgis/components-controllers": "4.30.0", + "@arcgis/components-utils": "4.30.0", + "@stencil/core": "4.17.1" + }, + "peerDependencies": { + "@arcgis/core": "~4.30.0", + "@esri/calcite-components": "^2.8.0" + } + }, + "node_modules/@arcgis/map-components-react": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/@arcgis/map-components-react/-/map-components-react-4.30.0.tgz", + "integrity": "sha512-fn1lR8fRh7RRV2KvfHc2mwnfXGi1VoxMH/rC6rseaibwoQE4vSV7XW/1EeACYXPw0cjWigefOU7hooyzc31gNQ==", + "license": "SEE LICENSE.md", + "dependencies": { + "@arcgis/map-components": "4.30.0" + }, + "peerDependencies": { + "@arcgis/core": "~4.30.0", + "react": ">=18.0.0 <19.0.0", + "react-dom": ">=18.0.0 <19.0.0" + } + }, + "node_modules/@arcgis/map-components/node_modules/@stencil/core": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.17.1.tgz", + "integrity": "sha512-nlARe1QtK5abnCG8kPQKJMWiELg39vKabvf3ebm6YEhQA35CgrxC1pVYTsYq3yktJKoY+k+VzGRnATLKyaLbvA==", + "license": "MIT", + "bin": { + "stencil": "bin/stencil" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.10.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", @@ -900,6 +972,7 @@ "resolved": "https://registry.npmjs.org/@esri/arcgis-html-sanitizer/-/arcgis-html-sanitizer-4.0.1.tgz", "integrity": "sha512-6m/qIGmmbWWB2RXtyGcCBMIE/FkfM+dF9VzvW+kVH8ddvSjTtWiKcDrQXfDI73OyYPe2fDtANNPP9amu0L4sMQ==", "license": "Apache-2.0", + "peer": true, "dependencies": { "xss": "1.0.13" }, @@ -910,7 +983,8 @@ "node_modules/@esri/calcite-colors": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@esri/calcite-colors/-/calcite-colors-6.1.0.tgz", - "integrity": "sha512-wHQYWFtDa6c328EraXEVZvgOiaQyYr0yuaaZ0G3cB4C3lSkWefW34L/e5TLAhtuG3zJ/wR6pl5X1YYNfBc0/4Q==" + "integrity": "sha512-wHQYWFtDa6c328EraXEVZvgOiaQyYr0yuaaZ0G3cB4C3lSkWefW34L/e5TLAhtuG3zJ/wR6pl5X1YYNfBc0/4Q==", + "peer": true }, "node_modules/@esri/calcite-components": { "version": "2.9.0", @@ -1061,8 +1135,7 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", @@ -1077,12 +1150,14 @@ "node_modules/@lit-labs/ssr-dom-shim": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", - "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==", + "peer": true }, "node_modules/@lit/reactive-element": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "peer": true, "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0" } @@ -1125,12 +1200,14 @@ "node_modules/@open-wc/dedupe-mixin": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz", - "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==" + "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==", + "peer": true }, "node_modules/@polymer/polymer": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.5.1.tgz", "integrity": "sha512-JlAHuy+1qIC6hL1ojEUfIVD58fzTpJAoCxFwV5yr0mYTXV1H8bz5zy0+rC963Cgr9iNXQ4T9ncSjC2fkF9BQfw==", + "peer": true, "dependencies": { "@webcomponents/shadycss": "^1.9.1" } @@ -1471,7 +1548,8 @@ "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==" + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "peer": true }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.13.1", @@ -1668,6 +1746,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.3.13.tgz", "integrity": "sha512-7iEbJiJM/+YIC/D7HzQUuU3OX27MhcNoX8k3mWLBQu8SCVGDerCZUlHCHfeFpbJc76aWDNUrvEhAzBVrM/mn+A==", + "peer": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -1679,6 +1758,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.3.13.tgz", "integrity": "sha512-YT67/M31Dq7UKwtZ+hEUjOrVHnje+7wpf4aBYAeKoEqa57uw2Q9+lGTwoWgviVzXKtXhoQd/oLiNUaxeOVcNzA==", + "peer": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -1695,6 +1775,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.13.tgz", "integrity": "sha512-UjokKlcs3NVnUATmv03Av55dZGCqvRXEaY2N1PO0C5OYATNekF5wlnz2nQ1+j1Tvk9eI+bzZKN28Yu0S3kvl0A==", + "peer": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -1707,6 +1788,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.3.13.tgz", "integrity": "sha512-Qc2OUaBDGbskBnnSlDNhQd682tL8QlpqFfoS9lrZhRV286OlkfEiQ06kMZc75Q9fIeVIz3S2BPhtdoxd/8Tc4w==", + "peer": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -1719,6 +1801,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.3.13.tgz", "integrity": "sha512-oRNP9V6d7khFlB49wDfPfHG1fHFImc9dagX9Tlatpo3j1TLJ9JlfkrdWsuYY1aYtYnx5huvH3iOAV93fV1CFFg==", + "peer": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -1736,6 +1819,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.3.13.tgz", "integrity": "sha512-uH28N3fYJO6FObz+WLNfqHLm2VPbL1hNkmoU/yDiMldfIyTqpbSO2DlwNMXbsm3T8xkJRlHM+LWATheMsIynOw==", + "peer": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -1749,6 +1833,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.3.13.tgz", "integrity": "sha512-Rg77JYKwxMdnTqxTIQWkaiNCZGiI4sIP3V6sxYJxqn0v1Nwwy80OQ5nzGQj+KyNk4B6SajmAwgHbu+IcFthN1A==", + "peer": true, "dependencies": { "@polymer/polymer": "^3.0.0", "@vaadin/component-base": "~24.3.13", @@ -1762,6 +1847,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.3.13.tgz", "integrity": "sha512-5/qtyj6YfdM7BjwH9cpA1y0rPRdKQYr2s6Ze/Ocgfb26DUR6n4daXzilB3TceUanvAFFScGx16CqlA/my1cozQ==", + "peer": true, "dependencies": { "lit": "^3.0.0" } @@ -1770,6 +1856,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.3.13.tgz", "integrity": "sha512-+f0DGrD+KmVw6s75Gdprugb01LYhsCdLgc2QLTrNjmyx/kvNfw76jTHZEeUuYYjxTMVyKXVstcWxG/oWt/sZSQ==", + "peer": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", @@ -1786,12 +1873,14 @@ "node_modules/@vaadin/vaadin-development-mode-detector": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@vaadin/vaadin-development-mode-detector/-/vaadin-development-mode-detector-2.0.7.tgz", - "integrity": "sha512-9FhVhr0ynSR3X2ao+vaIEttcNU5XfzCbxtmYOV8uIRnUCtNgbvMOIcyGBvntsX9I5kvIP2dV3cFAOG9SILJzEA==" + "integrity": "sha512-9FhVhr0ynSR3X2ao+vaIEttcNU5XfzCbxtmYOV8uIRnUCtNgbvMOIcyGBvntsX9I5kvIP2dV3cFAOG9SILJzEA==", + "peer": true }, "node_modules/@vaadin/vaadin-lumo-styles": { "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.3.13.tgz", "integrity": "sha512-43h6sKTVdNJ2Gv3mTcD1oVHjrNKj28Zs+VqcTUS5Vn2bxmGsIm3V5qLMdSe5GWNeZPbl+5dFa1VjFUjQWElMYw==", + "peer": true, "dependencies": { "@polymer/polymer": "^3.0.0", "@vaadin/component-base": "~24.3.13", @@ -1803,6 +1892,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.3.13.tgz", "integrity": "sha512-TG+y/YPI4M2rXkkyzbb6EzLl2dFaf+sNEH7tZXz4RLAUciKC7QHgpEESwQ0mfdonov2xP9Op48eBhkWalhKxDA==", + "peer": true, "dependencies": { "@polymer/polymer": "^3.0.0", "@vaadin/component-base": "~24.3.13", @@ -1813,6 +1903,7 @@ "version": "24.3.13", "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.3.13.tgz", "integrity": "sha512-OmDLX92U1tefwgnmlP/OBsf/z/GGjy3IOoEUqEPCgf01+xB6wM6uCRaY1dBU8NgHQeaJq80YzQjP0z5D+SqTkA==", + "peer": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "lit": "^3.0.0" @@ -1823,6 +1914,7 @@ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-usage-statistics/-/vaadin-usage-statistics-2.1.2.tgz", "integrity": "sha512-xKs1PvRfTXsG0eWWcImLXWjv7D+f1vfoIvovppv6pZ5QX8xgcxWUdNgERlOOdGt3CTuxQXukTBW3+Qfva+OXSg==", "hasInstallScript": true, + "peer": true, "dependencies": { "@vaadin/vaadin-development-mode-detector": "^2.0.0" }, @@ -1852,12 +1944,14 @@ "node_modules/@webcomponents/shadycss": { "version": "1.11.2", "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.11.2.tgz", - "integrity": "sha512-vRq+GniJAYSBmTRnhCYPAPq6THYqovJ/gzGThWbgEZUQaBccndGTi1hdiUP15HzEco0I6t4RCtXyX0rsSmwgPw==" + "integrity": "sha512-vRq+GniJAYSBmTRnhCYPAPq6THYqovJ/gzGThWbgEZUQaBccndGTi1hdiUP15HzEco0I6t4RCtXyX0rsSmwgPw==", + "peer": true }, "node_modules/@zip.js/zip.js": { "version": "2.7.45", "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.45.tgz", "integrity": "sha512-Mm2EXF33DJQ/3GWWEWeP1UCqzpQ5+fiMvT3QWspsXY05DyqqxWu7a9awSzU4/spHMHVFrTjani1PR0vprgZpow==", + "peer": true, "engines": { "bun": ">=0.7.0", "deno": ">=1.0.0", @@ -2285,7 +2379,8 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/composed-offset-position": { "version": "0.0.4", @@ -2322,7 +2417,8 @@ "version": "0.0.10", "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/csstype": { "version": "3.1.3", @@ -3072,7 +3168,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -4112,6 +4207,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz", "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==", + "peer": true, "dependencies": { "@lit/reactive-element": "^2.0.4", "lit-element": "^4.0.4", @@ -4122,6 +4218,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz", "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==", + "peer": true, "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0", "@lit/reactive-element": "^2.0.4", @@ -4132,6 +4229,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz", "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==", + "peer": true, "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -4186,15 +4284,26 @@ "version": "3.4.4", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "peer": true, "engines": { "node": ">=12" } }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, "node_modules/marked": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "license": "MIT", + "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -5034,7 +5143,8 @@ "node_modules/sortablejs": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", - "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==" + "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==", + "peer": true }, "node_modules/source-map": { "version": "0.7.4", @@ -5667,6 +5777,7 @@ "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.13.tgz", "integrity": "sha512-clu7dxTm1e8Mo5fz3n/oW3UCXBfV89xZ72jM8yzo1vR/pIS0w3sgB3XV2H8Vm6zfGnHL0FzvLJPJEBhd86/z4Q==", "license": "MIT", + "peer": true, "dependencies": { "commander": "^2.20.3", "cssfilter": "0.0.10" diff --git a/package.json b/package.json index afb3a5f..1981bb2 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "preview": "vite preview" }, "dependencies": { - "@arcgis/core": "^4.30.0", + "@arcgis/map-components-react": "^4.30.0", "@esri/calcite-components-react": "2.9.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/src/components/MapView.tsx b/src/components/MapView.tsx index 110677c..3ed14c4 100644 --- a/src/components/MapView.tsx +++ b/src/components/MapView.tsx @@ -1,7 +1,11 @@ import type Graphic from "@arcgis/core/Graphic"; import type Collection from "@arcgis/core/core/Collection"; +import Point from "@arcgis/core/geometry/Point"; import type ArcMapView from "@arcgis/core/views/MapView"; -import React, { useEffect, useRef, useState } from "react"; +import type { ArcgisMapCustomEvent } from "@arcgis/map-components"; +import { ArcgisMap, ArcgisPlacement } from "@arcgis/map-components-react"; +import { CalciteAction } from "@esri/calcite-components-react"; +import React, { useEffect, useState } from "react"; const viewStyles = { height: "100%", @@ -15,24 +19,8 @@ interface MapViewProps { const MapView = ({ graphics }: MapViewProps) => { const isSSR = typeof window === "undefined"; - const viewDivRef = useRef(null); - const [view, setView] = useState(null); - useEffect(() => { - if (viewDivRef.current) { - const loadMapView = async () => { - const { createMapView } = await import("./lib/mapview"); - setView(await createMapView(viewDivRef.current as HTMLDivElement, graphics)); - }; - loadMapView(); - - return () => { - view && view.destroy(); - }; - } - }, []); - useEffect(() => { if (view) { const loadGraphics = async () => { @@ -44,8 +32,39 @@ const MapView = ({ graphics }: MapViewProps) => { } }, [view, graphics]); + const handleArcgisViewReadyChange = (event: ArcgisMapCustomEvent) => { + const { view } = event.target; + if (view) { + view.center = new Point({ longitude: -117.1957098, latitude: 34.0564505 }); + view.zoom = 18; + setView(view); + } + }; + return ( - {!isSSR &&
}
+ + {!isSSR && ( + { + handleArcgisViewReadyChange(event); + }} + style={viewStyles} + > + + { + view?.goTo(view.graphics); + }} + > + + + )} + ); }; diff --git a/src/components/SceneView.tsx b/src/components/SceneView.tsx index 723ff22..658d957 100644 --- a/src/components/SceneView.tsx +++ b/src/components/SceneView.tsx @@ -1,7 +1,11 @@ import type Graphic from "@arcgis/core/Graphic"; import type Collection from "@arcgis/core/core/Collection"; +import Point from "@arcgis/core/geometry/Point"; import type ArcSceneView from "@arcgis/core/views/SceneView"; -import React, { useEffect, useRef, useState } from "react"; +import type { ArcgisSceneCustomEvent } from "@arcgis/map-components"; +import { ArcgisPlacement, ArcgisScene } from "@arcgis/map-components-react"; +import { CalciteAction } from "@esri/calcite-components-react"; +import React, { useEffect, useState } from "react"; const viewStyles = { height: "100%", @@ -15,24 +19,8 @@ interface SceneViewProps { const SceneView = ({ graphics }: SceneViewProps) => { const isSSR = typeof window === "undefined"; - const viewDivRef = useRef(null); - const [view, setView] = useState(null); - useEffect(() => { - if (viewDivRef.current) { - const loadSceneView = async () => { - const { createSceneView } = await import("./lib/sceneview"); - setView(await createSceneView(viewDivRef.current as HTMLDivElement, graphics)); - }; - loadSceneView(); - - return () => { - view && view.destroy(); - }; - } - }, []); - useEffect(() => { if (view) { const loadGraphics = async () => { @@ -44,8 +32,39 @@ const SceneView = ({ graphics }: SceneViewProps) => { } }, [view, graphics]); + const handleArcgisViewReadyChange = (event: ArcgisSceneCustomEvent) => { + const { view } = event.target; + if (view) { + view.center = new Point({ longitude: -117.1957098, latitude: 34.0564505 }); + view.scale = 2257; + setView(view); + } + }; + return ( - {!isSSR &&
}
+ + {!isSSR && ( + { + handleArcgisViewReadyChange(event); + }} + style={viewStyles} + > + + { + view?.goTo(view.graphics); + }} + > + + + )} + ); }; diff --git a/src/components/lib/mapview.ts b/src/components/lib/mapview.ts deleted file mode 100644 index cca7752..0000000 --- a/src/components/lib/mapview.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type Graphic from "@arcgis/core/Graphic"; -import ArcMap from "@arcgis/core/Map"; -import Viewpoint from "@arcgis/core/Viewpoint"; -import type Collection from "@arcgis/core/core/Collection"; -import ArcMapView from "@arcgis/core/views/MapView"; -import { targetGeometry } from "./geometry"; - -const map = new ArcMap({ - basemap: "gray-vector" -}); - -const viewpoint = new Viewpoint({ - targetGeometry: targetGeometry.extent.expand(2) -}); - -const view = new ArcMapView({ - map, - viewpoint -}); - -const zoomToGraphicsAction = document.createElement("calcite-action"); -zoomToGraphicsAction.icon = "zoom-to-object"; -zoomToGraphicsAction.text = "Zoom to Graphics"; -zoomToGraphicsAction.textEnabled = true; -zoomToGraphicsAction.scale = "s"; -zoomToGraphicsAction.addEventListener("click", () => { - view.goTo(view.graphics); -}); -view.ui.add(zoomToGraphicsAction, "top-right"); - -export const createMapView = async (parentElement: HTMLDivElement, graphics?: Collection) => { - view.container = parentElement; - view.graphics = graphics as Collection; - return view; -}; diff --git a/src/components/lib/sceneview.ts b/src/components/lib/sceneview.ts deleted file mode 100644 index cbc229b..0000000 --- a/src/components/lib/sceneview.ts +++ /dev/null @@ -1,36 +0,0 @@ -import type Graphic from "@arcgis/core/Graphic"; -import ArcMap from "@arcgis/core/Map"; -import Viewpoint from "@arcgis/core/Viewpoint"; -import type Collection from "@arcgis/core/core/Collection"; -import ArcSceneView from "@arcgis/core/views/SceneView"; -import { targetGeometry } from "./geometry"; - -const map = new ArcMap({ - basemap: "gray-vector" -}); - -const viewpoint = new Viewpoint({ - targetGeometry: targetGeometry.extent.expand(2) -}); - -const view = new ArcSceneView({ - map, - viewpoint -}); - -const zoomToGraphicsAction = document.createElement("calcite-action"); -zoomToGraphicsAction.icon = "zoom-to-object"; -zoomToGraphicsAction.text = "Zoom to Graphics"; -zoomToGraphicsAction.textEnabled = true; -zoomToGraphicsAction.scale = "s"; -zoomToGraphicsAction.addEventListener("click", () => { - view.goTo(view.graphics); -}); -view.ui.add(zoomToGraphicsAction, "top-right"); - -export const createSceneView = async (parentElement: HTMLDivElement, graphics?: Collection) => { - view.container = parentElement; - view.viewpoint = viewpoint; - view.graphics = graphics as Collection; - return view; -}; diff --git a/src/main.tsx b/src/main.tsx index 3ed706a..aaf018f 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,4 +1,7 @@ import "@arcgis/core/assets/esri/themes/light/main.css"; +import "@arcgis/map-components/dist/components/arcgis-map"; +import "@arcgis/map-components/dist/components/arcgis-placement"; +import "@arcgis/map-components/dist/components/arcgis-scene"; import "@esri/calcite-components/dist/calcite/calcite.css"; import { setAssetPath } from "@esri/calcite-components/dist/components"; import "@esri/calcite-components/dist/components/calcite-action"; diff --git a/vite.config.ts b/vite.config.ts index b8e7206..be6d805 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,7 +7,7 @@ export default defineConfig(({ mode }) => { return { base: env.VITE_BASE_NAME, build: { - chunkSizeWarningLimit: 2500 + chunkSizeWarningLimit: 2600 }, plugins: [ react(), From 7f88df1314f9a9cd0559a8b1e6f210814002d54f Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Mon, 24 Jun 2024 11:47:54 -0600 Subject: [PATCH 22/25] fix: set zoom level on scene --- src/components/SceneView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/SceneView.tsx b/src/components/SceneView.tsx index 658d957..c44057e 100644 --- a/src/components/SceneView.tsx +++ b/src/components/SceneView.tsx @@ -36,7 +36,7 @@ const SceneView = ({ graphics }: SceneViewProps) => { const { view } = event.target; if (view) { view.center = new Point({ longitude: -117.1957098, latitude: 34.0564505 }); - view.scale = 2257; + view.zoom = 18; setView(view); } }; From 73e1567b77146e97fc9cc2d5220a11dd6e49c9cb Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Tue, 25 Jun 2024 14:16:29 -0600 Subject: [PATCH 23/25] chore: update geometry types for web style symbols --- src/components/lib/constants.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/lib/constants.ts b/src/components/lib/constants.ts index 64c5327..6aac770 100644 --- a/src/components/lib/constants.ts +++ b/src/components/lib/constants.ts @@ -888,13 +888,13 @@ export const SYMBOLS = [ { description: "WebStyleSymbol is a class used to conveniently create vector 2D symbols and realistic and thematic 3D symbols.", - line: false, + line: true, link: "/web-style-symbol/", mapView: true, mesh: false, name: "WebStyleSymbol", point: true, - polygon: false, + polygon: true, sceneView: true, symbolLayers: false } From fd02b2977fddbde190a09df4a234d7972d35b3f7 Mon Sep 17 00:00:00 2001 From: Sage Wall Date: Tue, 25 Jun 2024 14:59:04 -0600 Subject: [PATCH 24/25] chore: update clipboard security policy --- src/components/CIMSymbolShell.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/CIMSymbolShell.tsx b/src/components/CIMSymbolShell.tsx index 4e834f0..26b50c4 100644 --- a/src/components/CIMSymbolShell.tsx +++ b/src/components/CIMSymbolShell.tsx @@ -9,7 +9,7 @@ const CIMSymbolShell = () => {