diff --git a/.npmignore b/.npmignore index db4a801..8b1be47 100644 --- a/.npmignore +++ b/.npmignore @@ -1,4 +1,5 @@ node_modules/* +test/ .DS_Store .idea/ .vscode/ diff --git a/README.md b/README.md index 6ac6bd2..de43311 100644 --- a/README.md +++ b/README.md @@ -4,19 +4,37 @@ [![Coverage Status](https://coveralls.io/repos/github/bento-platform/Bento-Charts/badge.svg?branch=master)](https://coveralls.io/github/bento-platform/Bento-Charts?branch=master) [![npm version](https://badge.fury.io/js/bento-charts.svg)](https://badge.fury.io/js/bento-charts) -This repository hosts the code for Bento-Charts, a library in React, TypeScript and Recharts. +This repository hosts the code for `bento-charts`, a library written in TypeScript for React projects, which wraps +Recharts and Leaflet in easy-to-use components compatible with the Bento platform. + +The following components are currently available: + +* Bar chart +* Pie chart +* Choropleth map +* Point map + -Bento charts offers Bar and Pie charts for Bento project UI web applications in React. ## Installation -Add Bento-Charts as a dependency to another project: + +Add `bento-charts` as a dependency to another project: ```bash npm install bento-charts ``` +To install `bento-charts` with map support: + +```bash +npm install bento-charts leaflet react-leaflet +``` + + + ## Usage -Wrap your app in the ChartConfigProvider and pass in the Language of your site. + +Wrap your app in the `ChartConfigProvider` and pass in the Language of your site. ```jsx import { ChartConfigProvider } from 'bento-charts'; @@ -40,26 +58,60 @@ You also can provide your own theme and translation dictionary. ``` -refer to [theme](https://github.com/bento-platform/Bento-Charts/blob/eee46541eec68e2dd7f62f8d786148480ce5105f/src/types/chartTypes.ts#L20) and [translations](https://github.com/bento-platform/Bento-Charts/blob/eee46541eec68e2dd7f62f8d786148480ce5105f/src/types/chartTypes.ts#L47) for more information. -## Using a Chart +refer to [theme](https://github.com/bento-platform/Bento-Charts/blob/main/src/types/chartTypes.ts#L20) +and [translations](https://github.com/bento-platform/Bento-Charts/blob/main/src/types/chartTypes.ts#L47) +for more information. + +Right now, no properties from `ChartConfigProvider` are used for any map components, but they may do so in the future. + + +## Usage + +### Using a Chart ```jsx import { BarChart, PieChart } from 'bento-charts'; ``` -Refer to [Props](https://github.com/bento-platform/Bento-Charts/blob/eee46541eec68e2dd7f62f8d786148480ce5105f/src/types/chartTypes.ts#L51) for information on their props. +Refer to [Props](https://github.com/bento-platform/Bento-Charts/blob/main/src/types/chartTypes.ts#L51) +for information on their props. + + +### Using a Map + +Maps can be imported using a command like the following: + +```jsx +import { ChoroplethMap } from 'bento-charts/maps'; +``` + +Here, note the sub-path on the import - this separation allows us to have the +map-related peer dependencies marked as "optional". + +The following map components are available: + +* `ChoroplethMap` for showing a choropleth map, coloured by +* `PointMap` (for showing a list of point coordinates; this uses a different data structure than the other components) + +See [map component properties](https://github.com/bento-platform/bento_charts/blob/main/src/types/mapTypes.ts) +for more information. + + ## Release procedure -A commit on the `main` branch will trigger a build and release of the package to the npm Registry, no need to manually create tags thanks to semantic-release. +A commit on the `main` branch will trigger a build and release of the package to the npm Registry, no need to manually +create tags thanks to semantic-release. **Please follow the instructions bellow when writing your commits.** + ### Semantic release Bento-Charts adheres to the [semver](https://semver.org/) versioning convention (Semantic Versioning). This repository uses the [semantic-release](https://github.com/semantic-release/semantic-release) library to automate the release of semver compliant packages to the npm Registry. -Semantic-release parses the commit messages in the release branch in order to determine the versioning changes. It does not rely on magic to work, but rather on specific commit message formats, which are described bellow. +Semantic-release parses the commit messages in the release branch in order to determine the versioning changes. It does +not rely on magic to work, but rather on specific commit message formats, which are described bellow. ### Commit message guidelines Semantic-release uses the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification in order to parse relevant information. @@ -93,9 +145,12 @@ After adding unit tests to the charts test(charts): add unit tests for mixbarchart ``` -## Commit with commitlint -[Commitlint](https://commitlint.js.org/#/) is a safeguard for commit message formats, which you can use to help write semver -compliant commits. [Husky](https://github.com/typicode/husky) is a git hooks tool that binds commitlint to the `git commit` command. + + +## Commit with `commitlint` + +[Commitlint](https://commitlint.js.org/#/) is a safeguard for commit message formats, which you can use to help write +semver-compliant commits. [Husky](https://github.com/typicode/husky) is a git hooks tool that binds commitlint to the `git commit` command. ### Installation Run these steps once to setup commitlint + husky. @@ -116,24 +171,40 @@ Example: git commit -m "ci(semantic-release): add commitlint and husky as dev tools to write valid commits" ``` + + ## Local development + For local development in a React/Recharts app that uses bento-charts, you can follow these steps for your setup: 1. `build` and `pack` bento-charts -```bash -# Builds package and creates a pack file in the "./packs" dir -npm run buildpack -``` + ```bash + # Builds package and creates a pack file in the "./packs" dir + npm run buildpack + ``` 2. In the project using bento-charts, modify the bento-charts dependency in package.json so that the version number is now the absolute path to the pack file. -```diff -- "bento-charts": "2.0.0", -+ "bento-charts": "file:~/bento-charts/packs/bento-charts-2.0.0.tgz", -``` + ```diff + - "bento-charts": "2.0.0", + + "bento-charts": "file:~/bento-charts/packs/bento-charts-2.0.0.tgz", + ``` 3. Install the dependencies in the project + ```bash + npm install + ``` + +**Note: you will need to repeat steps 1 and 3 everytime you want the changes to be applied to the app using +`bento-charts`** + + + +## Testing + +A small web application is included in the `test` folder to provide an easy manual testing bed for components. + +This application can be launched with the following command: + ```bash -npm install +npm test ``` - -**Note: you will need to repeat steps 1 and 3 everytime you want the changes to be applied to the app using bento-charts** \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f4cc194..6fdd5d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,27 +8,122 @@ "name": "bento-charts", "version": "2.3.0", "license": "MIT", + "dependencies": { + "d3-interpolate": "^3.0.1" + }, "devDependencies": { "@commitlint/cli": "^17.4.4", "@commitlint/config-conventional": "^17.4.4", "@semantic-release/git": "^10.0.1", + "@types/leaflet": "^1.9.3", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.10", + "@types/react-leaflet": "^3.0.0", "@types/recharts": "^1.8.24", "@typescript-eslint/eslint-plugin": "^5.56.0", "@typescript-eslint/parser": "^5.56.0", + "@webpack-cli/serve": "^2.0.5", + "antd": "^5.9.2", + "css-loader": "^6.8.1", "eslint": "^8.36.0", "eslint-plugin-react": "^7.32.2", + "file-loader": "^6.2.0", + "geojson": "^0.5.0", + "html-webpack-plugin": "^5.5.3", "husky": "^8.0.3", "prettier": "2.7.1", "semantic-release": "^20.1.3", + "style-loader": "^3.3.3", "ts-loader": "^9.4.2", - "typescript": "^4.9.5" + "typescript": "^4.9.5", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" }, "peerDependencies": { + "leaflet": "^1.9.4", "react": ">=16.0.0", "react-dom": ">=14.0.0", + "react-leaflet": "^4.2.1", "recharts": "^2.4.3" + }, + "peerDependenciesMeta": { + "leaflet": { + "optional": true + }, + "react-leafet": { + "optional": true + } + } + }, + "node_modules/@ant-design/colors": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz", + "integrity": "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==", + "dev": true, + "dependencies": { + "@ctrl/tinycolor": "^3.4.0" + } + }, + "node_modules/@ant-design/cssinjs": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.17.0.tgz", + "integrity": "sha512-MgGCZ6sfD3yQB0XW0hN4jgixMxApTlDYyct+pc7fRZNO4CaqWWm/9iXkkljNR27lyWLZmm+XiDfcIOo1bnrnMA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.11.1", + "@emotion/hash": "^0.8.0", + "@emotion/unitless": "^0.7.5", + "classnames": "^2.3.1", + "csstype": "^3.0.10", + "rc-util": "^5.35.0", + "stylis": "^4.0.13" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/icons": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.2.6.tgz", + "integrity": "sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw==", + "dev": true, + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.3.0", + "@babel/runtime": "^7.11.2", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/icons-svg": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz", + "integrity": "sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g==", + "dev": true + }, + "node_modules/@ant-design/react-slick": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.0.2.tgz", + "integrity": "sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.4", + "classnames": "^2.2.5", + "json2mq": "^0.2.0", + "resize-observer-polyfill": "^1.5.1", + "throttle-debounce": "^5.0.0" + }, + "peerDependencies": { + "react": ">=16.9.0" } }, "node_modules/@babel/code-frame": { @@ -123,7 +218,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", - "peer": true, "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -437,6 +531,36 @@ "node": ">=12" } }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "dev": true, @@ -544,7 +668,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -567,7 +690,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "peer": true, "engines": { "node": ">=6.0.0" } @@ -577,7 +699,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -597,6 +718,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "dev": true, @@ -809,6 +936,136 @@ "node": ">=12" } }, + "node_modules/@rc-component/color-picker": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.4.1.tgz", + "integrity": "sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "@ctrl/tinycolor": "^3.6.0", + "classnames": "^2.2.6", + "rc-util": "^5.30.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/context": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz", + "integrity": "sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mini-decimal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz", + "integrity": "sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.0" + }, + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@rc-component/mutate-observer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz", + "integrity": "sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.0", + "classnames": "^2.3.2", + "rc-util": "^5.24.4" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/portal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz", + "integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.0", + "classnames": "^2.3.2", + "rc-util": "^5.24.4" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tour": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.10.0.tgz", + "integrity": "sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.0", + "@rc-component/portal": "^1.0.0-9", + "@rc-component/trigger": "^1.3.6", + "classnames": "^2.3.2", + "rc-util": "^5.24.4" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/trigger": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-1.15.6.tgz", + "integrity": "sha512-Tl19KaGsShf4yzqxumsXVT4c7j0l20Dxe5hgP5S0HmxyhCg3oKen28ntGavRCIPW7cl7wgsGotntqcIokgDHzg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@rc-component/portal": "^1.1.0", + "classnames": "^2.3.2", + "rc-align": "^4.0.0", + "rc-motion": "^2.0.0", + "rc-resize-observer": "^1.3.1", + "rc-util": "^5.33.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/@semantic-release/commit-analyzer": { "version": "9.0.2", "dev": true, @@ -957,6 +1214,44 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, "node_modules/@types/d3-array": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz", @@ -1022,7 +1317,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", "dev": true, - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -1033,7 +1327,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, - "peer": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -1043,14 +1336,79 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, - "peer": true + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==", + "dev": true + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/json-schema": { "version": "7.0.12", "dev": true, "license": "MIT" }, + "node_modules/@types/leaflet": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.3.tgz", + "integrity": "sha512-Caa1lYOgKVqDkDZVWkto2Z5JtVo09spEaUt2S69LiugbBpoqQu92HYFMGUbYezZbnBkyOxMNPXHSgRrRY5UyIA==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "dev": true, @@ -1071,6 +1429,18 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, "node_modules/@types/react": { "version": "18.2.9", "dev": true, @@ -1089,6 +1459,16 @@ "@types/react": "*" } }, + "node_modules/@types/react-leaflet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/react-leaflet/-/react-leaflet-3.0.0.tgz", + "integrity": "sha512-p8R9mVKbCDDqOdW+M6GyJJuFn6q+IgDFYavFiOIvaWHuOe5kIHZEtCy1pfM43JIA6JiB3D/aDoby7C51eO+XSg==", + "deprecated": "This is a stub types definition. react-leaflet provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "react-leaflet": "*" + } + }, "node_modules/@types/recharts": { "version": "1.8.24", "dev": true, @@ -1098,6 +1478,12 @@ "@types/react": "*" } }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, "node_modules/@types/scheduler": { "version": "0.16.3", "dev": true, @@ -1108,6 +1494,54 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.59.9", "dev": true, @@ -1293,7 +1727,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, - "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -1303,29 +1736,25 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, - "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -1336,15 +1765,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -1357,7 +1784,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, - "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -1367,7 +1793,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, - "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -1376,15 +1801,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -1401,7 +1824,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -1415,7 +1837,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -1428,7 +1849,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -1443,25 +1863,79 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, - "peer": true + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } }, "node_modules/acorn": { "version": "8.8.2", @@ -1479,7 +1953,6 @@ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, - "peer": true, "peerDependencies": { "acorn": "^8" } @@ -1538,17 +2011,46 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-escapes": { - "version": "6.2.0", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "license": "MIT", "dependencies": { - "type-fest": "^3.0.0" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=14.16" + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-escapes": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, @@ -1563,6 +2065,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "dev": true, @@ -1590,6 +2104,83 @@ "dev": true, "license": "MIT" }, + "node_modules/antd": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.9.2.tgz", + "integrity": "sha512-+ecGt8nDCjvNvKkalJQc4eBGtfdQuZ/WLXrk7X4FbhAhMplctrey4/SOvHeXjEjBnyNC/KSdF4EzKYKq01egbA==", + "dev": true, + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/cssinjs": "^1.16.0", + "@ant-design/icons": "^5.2.2", + "@ant-design/react-slick": "~1.0.0", + "@babel/runtime": "^7.18.3", + "@ctrl/tinycolor": "^3.6.0", + "@rc-component/color-picker": "~1.4.1", + "@rc-component/mutate-observer": "^1.1.0", + "@rc-component/tour": "~1.10.0", + "@rc-component/trigger": "^1.15.6", + "classnames": "^2.2.6", + "copy-to-clipboard": "^3.2.0", + "dayjs": "^1.11.1", + "qrcode.react": "^3.1.0", + "rc-cascader": "~3.16.0", + "rc-checkbox": "~3.1.0", + "rc-collapse": "~3.7.1", + "rc-dialog": "~9.2.0", + "rc-drawer": "~6.4.1", + "rc-dropdown": "~4.1.0", + "rc-field-form": "~1.38.0", + "rc-image": "~7.2.0", + "rc-input": "~1.1.1", + "rc-input-number": "~8.0.4", + "rc-mentions": "~2.7.0", + "rc-menu": "~9.12.0", + "rc-motion": "^2.9.0", + "rc-notification": "~5.1.1", + "rc-pagination": "~3.6.1", + "rc-picker": "~3.14.1", + "rc-progress": "~3.5.1", + "rc-rate": "~2.12.0", + "rc-resize-observer": "^1.3.1", + "rc-segmented": "~2.2.2", + "rc-select": "~14.8.1", + "rc-slider": "~10.2.1", + "rc-steps": "~6.0.1", + "rc-switch": "~4.1.0", + "rc-table": "~7.34.0", + "rc-tabs": "~12.12.1", + "rc-textarea": "~1.3.4", + "rc-tooltip": "~6.0.1", + "rc-tree": "~5.7.10", + "rc-tree-select": "~5.12.1", + "rc-upload": "~4.3.4", + "rc-util": "^5.37.0", + "scroll-into-view-if-needed": "^3.0.3", + "throttle-debounce": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ant-design" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/arg": { "version": "4.1.3", "dev": true, @@ -1617,6 +2208,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, "node_modules/array-ify": { "version": "1.0.0", "dev": true, @@ -1640,6 +2237,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==", + "dev": true + }, "node_modules/array-union": { "version": "2.1.0", "dev": true, @@ -1685,6 +2288,12 @@ "node": ">=0.10.0" } }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "dev": true + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "dev": true, @@ -1701,11 +2310,101 @@ "dev": true, "license": "MIT" }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, "node_modules/before-after-hook": { "version": "2.2.3", "dev": true, "license": "Apache-2.0" }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "node_modules/bottleneck": { "version": "2.19.5", "dev": true, @@ -1750,7 +2449,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001502", "electron-to-chromium": "^1.4.428", @@ -1768,8 +2466,16 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, - "peer": true + "engines": { + "node": ">= 0.8" + } }, "node_modules/call-bind": { "version": "1.0.2", @@ -1791,6 +2497,22 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camel-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/camelcase": { "version": "5.3.1", "dev": true, @@ -1833,8 +2555,7 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "peer": true + ] }, "node_modules/cardinal": { "version": "2.1.1", @@ -1863,12 +2584,38 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "peer": true, "engines": { "node": ">=6.0" } @@ -1876,8 +2623,19 @@ "node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", - "peer": true + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } }, "node_modules/clean-stack": { "version": "2.2.0", @@ -1914,6 +2672,32 @@ "node": ">=12" } }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "dev": true, @@ -1930,12 +2714,17 @@ "dev": true, "license": "MIT" }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, "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==", - "dev": true, - "peer": true + "dev": true }, "node_modules/compare-func": { "version": "2.0.0", @@ -1946,6 +2735,63 @@ "dot-prop": "^5.1.0" } }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.0.3.tgz", + "integrity": "sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "dev": true, @@ -1960,6 +2806,36 @@ "proto-list": "~1.2.1" } }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/conventional-changelog-angular": { "version": "5.0.13", "dev": true, @@ -2046,6 +2922,30 @@ "node": ">=10" } }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "dev": true, + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "dev": true, @@ -2109,12 +3009,84 @@ "node": ">=8" } }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/css-unit-converter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", "peer": true }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/csstype": { "version": "3.1.2", "dev": true, @@ -2136,7 +3108,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "peer": true, "engines": { "node": ">=12" } @@ -2163,7 +3134,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "peer": true, "dependencies": { "d3-color": "1 - 3" }, @@ -2257,6 +3227,12 @@ "node": "*" } }, + "node_modules/dayjs": { + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", + "dev": true + }, "node_modules/debug": { "version": "4.3.4", "dev": true, @@ -2323,6 +3299,27 @@ "dev": true, "license": "MIT" }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/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, + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.0", "dev": true, @@ -2373,11 +3370,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deprecation": { + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecation": { "version": "2.3.1", "dev": true, "license": "ISC" }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, "node_modules/diff": { "version": "4.0.2", "dev": true, @@ -2397,6 +3419,24 @@ "node": ">=8" } }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/doctrine": { "version": "3.0.0", "dev": true, @@ -2408,6 +3448,21 @@ "node": ">=6.0.0" } }, + "node_modules/dom-align": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz", + "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==", + "dev": true + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, "node_modules/dom-helpers": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", @@ -2417,6 +3472,77 @@ "@babel/runtime": "^7.1.2" } }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/dot-prop": { "version": "5.3.0", "dev": true, @@ -2463,22 +3589,46 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, "node_modules/electron-to-chromium": { "version": "1.4.430", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.430.tgz", "integrity": "sha512-FytjTbGwz///F+ToZ5XSeXbbSaXalsVRXsz2mHityI5gfxft7ieW3HqFLkU5V1aIrY42aflICqbmFoDxW10etg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", "dev": true, "license": "MIT" }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/enhanced-resolve": { - "version": "5.14.1", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -2487,6 +3637,15 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-ci": { "version": "8.0.0", "dev": true, @@ -2601,6 +3760,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/error-ex": { "version": "1.3.2", "dev": true, @@ -2660,8 +3831,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/es-set-tostringtag": { "version": "2.0.1", @@ -2708,6 +3878,12 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "dev": true, @@ -3069,18 +4245,25 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "peer": true + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "peer": true, "engines": { "node": ">=0.8.x" } @@ -3107,6 +4290,69 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "dev": true, @@ -3146,6 +4392,15 @@ "dev": true, "license": "MIT" }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, "node_modules/fastq": { "version": "1.15.0", "dev": true, @@ -3154,6 +4409,18 @@ "reusify": "^1.0.4" } }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/figures": { "version": "5.0.0", "dev": true, @@ -3191,6 +4458,26 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, "node_modules/fill-range": { "version": "7.0.1", "dev": true, @@ -3202,6 +4489,39 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/find-up": { "version": "4.1.0", "dev": true, @@ -3245,6 +4565,26 @@ "dev": true, "license": "ISC" }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "dev": true, @@ -3253,6 +4593,24 @@ "is-callable": "^1.1.3" } }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/from2": { "version": "2.3.0", "dev": true, @@ -3302,11 +4660,31 @@ "node": ">=14.14" } }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "dev": true, @@ -3337,6 +4715,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/geojson": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/geojson/-/geojson-0.5.0.tgz", + "integrity": "sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "dev": true, @@ -3494,8 +4881,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/global-dirs": { "version": "0.1.1", @@ -3592,6 +4978,12 @@ "dev": true, "license": "MIT" }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, "node_modules/handlebars": { "version": "4.7.7", "dev": true, @@ -3694,6 +5086,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, "node_modules/hook-std": { "version": "3.0.0", "dev": true, @@ -3716,58 +5117,290 @@ "node": ">=10" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.0", + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, - "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.0", + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/human-signals": { - "version": "2.1.0", + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/husky": { - "version": "8.0.3", + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, "bin": { - "husky": "lib/bin.js" + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" + "node": ">=12" } }, - "node_modules/ignore": { - "version": "5.2.4", + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "dev": true, + "license": "MIT", + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/import-fresh": { @@ -3804,6 +5437,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "dev": true, @@ -3861,6 +5513,15 @@ "node": ">=12" } }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/into-stream": { "version": "6.0.0", "dev": true, @@ -3876,6 +5537,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/is-array-buffer": { "version": "3.0.2", "dev": true, @@ -3905,6 +5575,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-boolean-object": { "version": "1.1.2", "dev": true, @@ -3956,6 +5638,21 @@ "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, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "dev": true, @@ -4172,6 +5869,18 @@ "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, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "1.0.0", "dev": true, @@ -4182,6 +5891,15 @@ "dev": true, "license": "ISC" }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/issue-parser": { "version": "6.0.0", "dev": true, @@ -4210,7 +5928,6 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -4225,7 +5942,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4276,6 +5992,27 @@ "dev": true, "license": "ISC" }, + "node_modules/json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", + "dev": true, + "dependencies": { + "string-convert": "^0.2.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "dev": true, @@ -4330,6 +6067,22 @@ "node": ">=0.10.0" } }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", + "peer": true + }, "node_modules/levn": { "version": "0.4.1", "dev": true, @@ -4378,11 +6131,24 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "peer": true, "engines": { "node": ">=6.11.5" } }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/locate-path": { "version": "5.0.0", "dev": true, @@ -4488,6 +6254,21 @@ "loose-envify": "cli.js" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/lru-cache": { "version": "6.0.0", "dev": true, @@ -4556,6 +6337,27 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/meow": { "version": "8.1.2", "dev": true, @@ -4580,6 +6382,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, "node_modules/merge-stream": { "version": "2.0.0", "dev": true, @@ -4593,6 +6401,15 @@ "node": ">= 8" } }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromatch": { "version": "4.0.5", "dev": true, @@ -4621,7 +6438,6 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -4631,7 +6447,6 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -4655,6 +6470,12 @@ "node": ">=4" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, "node_modules/minimatch": { "version": "3.1.2", "dev": true, @@ -4700,16 +6521,56 @@ "dev": true, "license": "MIT" }, - "node_modules/natural-compare": { - "version": "1.4.0", + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare-lite": { + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare-lite": { "version": "1.4.0", "dev": true, "license": "MIT" }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "dev": true, @@ -4720,6 +6581,22 @@ "dev": true, "license": "MIT" }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/no-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/node-emoji": { "version": "1.11.0", "dev": true, @@ -4747,12 +6624,20 @@ } } }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/node-releases": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/normalize-package-data": { "version": "3.0.3", @@ -4768,6 +6653,15 @@ "node": ">=10" } }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/normalize-url": { "version": "6.1.0", "dev": true, @@ -7360,6 +9254,18 @@ "inBundle": true, "license": "ISC" }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/object-assign": { "version": "4.1.1", "license": "MIT", @@ -7457,6 +9363,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "dev": true, @@ -7479,6 +9412,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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, + "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.1", "dev": true, @@ -7566,6 +9516,19 @@ "node": ">=8" } }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/p-try": { "version": "2.2.0", "dev": true, @@ -7574,6 +9537,22 @@ "node": ">=6" } }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/param-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "dev": true, @@ -7602,6 +9581,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/path-exists": { "version": "4.0.0", "dev": true, @@ -7631,6 +9635,12 @@ "dev": true, "license": "MIT" }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, "node_modules/path-type": { "version": "4.0.0", "dev": true, @@ -7643,8 +9653,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", @@ -7738,6 +9747,124 @@ "node": ">=4" } }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", @@ -7747,110 +9874,819 @@ "node_modules/prelude-ls": { "version": "1.2.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qrcode.react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz", + "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-align": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.15.tgz", + "integrity": "sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "dom-align": "^1.7.0", + "rc-util": "^5.26.0", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-cascader": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.16.0.tgz", + "integrity": "sha512-c62glOhm66T0/Y8vOfIgZwHHTbqCyC7FvBTcNDuwbXZc8Dfbz6fB1yIuCB55z5rPA7nsUfMyNNuS8shReZWM+A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "array-tree-filter": "^2.1.0", + "classnames": "^2.3.1", + "rc-select": "~14.8.0", + "rc-tree": "~5.7.0", + "rc-util": "^5.35.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-checkbox": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.1.0.tgz", + "integrity": "sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.3.2", + "rc-util": "^5.25.2" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-collapse": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.7.1.tgz", + "integrity": "sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.3.4", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-dialog": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.2.0.tgz", + "integrity": "sha512-dL2tklMou/QfK77+0CTH3FTnKCvIiYv9Df7PfFfg8YVXhYAGmuIkV4ooQYHAIR4juL3Ywcm5oQflF2vDDuGlUg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/portal": "^1.0.0-8", + "classnames": "^2.2.6", + "rc-motion": "^2.3.0", + "rc-util": "^5.21.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-drawer": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.4.1.tgz", + "integrity": "sha512-QIbNMjiZy322o9uEpJHsSZ5rS/zuxqam3lYVPDzjztoqsoDzTNNxWN77QVpOfQ0UC9/87+qu25zocJ+O9bK2Tg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/portal": "^1.1.1", + "classnames": "^2.2.6", + "rc-motion": "^2.6.1", + "rc-util": "^5.36.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-dropdown": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.1.0.tgz", + "integrity": "sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@rc-component/trigger": "^1.7.0", + "classnames": "^2.2.6", + "rc-util": "^5.17.0" + }, + "peerDependencies": { + "react": ">=16.11.0", + "react-dom": ">=16.11.0" + } + }, + "node_modules/rc-field-form": { + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.38.1.tgz", + "integrity": "sha512-94MswI+I1/RtSg1j4z64dWopGYkSWVfRKLMaZtN6UfHcVfNiXqGPIs/cDf7I2fraRdbxLsXQb6caZ2olfqXdGg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.0", + "async-validator": "^4.1.0", + "rc-util": "^5.32.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-image": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.2.0.tgz", + "integrity": "sha512-5Ug2hCVl6VcT0osR5XaZQ4zclTMEWPnbn3b4/TS/MR1QjRpEACLNFUzBGwr5mbAVhzvLWX5YZf4vO10xUA5IUA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.11.2", + "@rc-component/portal": "^1.0.2", + "classnames": "^2.2.6", + "rc-dialog": "~9.2.0", + "rc-motion": "^2.6.2", + "rc-util": "^5.34.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-input": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.1.1.tgz", + "integrity": "sha512-NTR1Z4em681L8/ewb2KR80RykSmN8I2mzqzJDCoUmTrV1BB9Hk5d7ha4TnfgdEPPL148N+603sW2LExSXk1IbA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.18.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/rc-input-number": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-8.0.4.tgz", + "integrity": "sha512-TP+G5b7mZtbwXJ/YEZXF/OgbEZ6iqD4+RSuxZJ8VGKGXDcdt0FKIvpFoNQr/knspdFC4OxA0OfsWfFWfN4XSyA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/mini-decimal": "^1.0.1", + "classnames": "^2.2.5", + "rc-input": "~1.1.0", + "rc-util": "^5.28.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-mentions": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.7.0.tgz", + "integrity": "sha512-tn0x79cpnVYP+MA+jyBqalmEni9Ct7xHuA9QHIf5vwd25FU+hngGZ8n6Dfua7XCr4LhkZYjfD/rZTGrvY2C1Xg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.22.5", + "@rc-component/trigger": "^1.5.0", + "classnames": "^2.2.6", + "rc-input": "~1.1.0", + "rc-menu": "~9.12.0", + "rc-textarea": "~1.3.0", + "rc-util": "^5.34.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-menu": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.12.0.tgz", + "integrity": "sha512-Apr/fRf5EcqWJ4nphHV6dTGZcLPaPzwY44q9hAtLJysY4rkC9Eg+ekj3uFx6opPWVruV2sJNWq/Po+HHtO48CA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^1.6.2", + "classnames": "2.x", + "rc-motion": "^2.4.3", + "rc-overflow": "^1.3.1", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-motion": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.0.tgz", + "integrity": "sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.21.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-notification": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.1.1.tgz", + "integrity": "sha512-BPnded/WmWFE57ubqhVCgRSuedfQQNeSOYqdwppyr2B/Wt909gYFKyWAkFJVXuppAjsOGop05a93UaxjmUFdkg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.6.0", + "rc-util": "^5.20.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-overflow": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.3.2.tgz", + "integrity": "sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.37.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-pagination": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.6.1.tgz", + "integrity": "sha512-R/sUnKKXx1Nm4kZfUKS3YKa7yEPF1ZkVB/AynQaHt+nMER7h9wPTfliDJFdYo+RM/nk2JD4Yc5QpUq8fIQHeug==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1", + "rc-util": "^5.32.2" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-picker": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-3.14.2.tgz", + "integrity": "sha512-+jKWhKydU2z5hgY0yenHQRx2nRLrHiRdPD8f2+Yg5ld6+Ah/mh1tV9ya1OPcEMqbqXCZXnKqqBv4mAEQm1oAyQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^1.5.0", + "classnames": "^2.2.1", + "rc-util": "^5.30.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "date-fns": ">= 2.x", + "dayjs": ">= 1.x", + "luxon": ">= 3.x", + "moment": ">= 2.x", + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/rc-progress": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.5.1.tgz", + "integrity": "sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6", + "rc-util": "^5.16.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-rate": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.12.0.tgz", + "integrity": "sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.0.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-resize-observer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.3.1.tgz", + "integrity": "sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.7", + "classnames": "^2.2.1", + "rc-util": "^5.27.0", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-segmented": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.2.2.tgz", + "integrity": "sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-motion": "^2.4.4", + "rc-util": "^5.17.0" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/rc-select": { + "version": "14.8.1", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.8.1.tgz", + "integrity": "sha512-+MDaHteiKRL4iID9Osm8zAZTe+g7/t5CjIfJJ4QhPAvwGUaNCa2kvkMqiXfOfGevscVa+agha1Ov938MeAotfQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^1.5.0", + "classnames": "2.x", + "rc-motion": "^2.0.1", + "rc-overflow": "^1.3.1", + "rc-util": "^5.16.1", + "rc-virtual-list": "^3.5.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/rc-slider": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.2.1.tgz", + "integrity": "sha512-l355C/65iV4UFp7mXq5xBTNX2/tF2g74VWiTVlTpNp+6vjE/xaHHNiQq5Af+Uu28uUiqCuH/QXs5HfADL9KJ/A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.27.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-steps": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz", + "integrity": "sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.7", + "classnames": "^2.2.3", + "rc-util": "^5.16.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-switch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz", + "integrity": "sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0", + "classnames": "^2.2.1", + "rc-util": "^5.30.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/prettier": { - "version": "2.7.1", + "node_modules/rc-table": { + "version": "7.34.2", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.34.2.tgz", + "integrity": "sha512-btFZOC0ZdtDXoUuFgQkmID9o8XJvpt1PRUKZZ5Nec0lXp6E5rcUZ/+ZDbnXlq17Fwz+8+3wr2O0aZ7kihJd5Nw==", "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/context": "^1.4.0", + "classnames": "^2.2.5", + "rc-resize-observer": "^1.1.0", + "rc-util": "^5.36.0", + "rc-virtual-list": "^3.10.7" }, "engines": { - "node": ">=10.13.0" + "node": ">=8.x" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", + "node_modules/rc-tabs": { + "version": "12.12.1", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.12.1.tgz", + "integrity": "sha512-e10VBjEkECdPl4XZSs9to81SE+mgclBTM7J8/LMsFqmJoi05Tci91bRnmeeDtrcOCx2PuZdJv57XUlC4d8PEIw==", "dev": true, - "license": "MIT" - }, - "node_modules/prop-types": { - "version": "15.8.1", - "license": "MIT", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "@babel/runtime": "^7.11.2", + "classnames": "2.x", + "rc-dropdown": "~4.1.0", + "rc-menu": "~9.12.0", + "rc-motion": "^2.6.2", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.34.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/proto-list": { - "version": "1.2.4", + "node_modules/rc-textarea": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.3.4.tgz", + "integrity": "sha512-wn0YjTpvcVolcfXa0HtzL+jgV2QcwtfB29RwNAKj8hMgZOju1V24M3TfEDjABeQEAQbUGbjMbISREOX/YSVKhg==", "dev": true, - "license": "ISC" + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1", + "rc-input": "~1.1.0", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } }, - "node_modules/punycode": { - "version": "2.3.0", + "node_modules/rc-tooltip": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.0.1.tgz", + "integrity": "sha512-MdvPlsD1fDSxKp9+HjXrc/CxLmA/s11QYIh1R7aExxfodKP7CZA++DG1AjrW80F8IUdHYcR43HAm0Y2BYPelHA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@babel/runtime": "^7.11.2", + "@rc-component/trigger": "^1.0.4", + "classnames": "^2.3.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/q": { - "version": "1.5.1", + "node_modules/rc-tree": { + "version": "5.7.12", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.12.tgz", + "integrity": "sha512-LXA5nY2hG5koIAlHW5sgXgLpOMz+bFRbnZZ+cCg0tQs4Wv1AmY7EDi1SK7iFXhslYockbqUerQan82jljoaItg==", "dev": true, - "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.0.1", + "rc-util": "^5.16.1", + "rc-virtual-list": "^3.5.1" + }, "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node": ">=10.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", + "node_modules/rc-tree-select": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.12.1.tgz", + "integrity": "sha512-/IC6gRgRoUBCOwZASOiF3onp1484fb+Gke5zuxgsi3ViP+O2UTUByS1jTZzjNooidRgdwiQJksq1zVaVYw2TPg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-select": "~14.8.0", + "rc-tree": "~5.7.0", + "rc-util": "^5.16.1" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } }, - "node_modules/quick-lru": { - "version": "4.0.1", + "node_modules/rc-upload": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz", + "integrity": "sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@babel/runtime": "^7.18.3", + "classnames": "^2.2.5", + "rc-util": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/rc-util": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.37.0.tgz", + "integrity": "sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ==", "dev": true, - "peer": true, "dependencies": { - "safe-buffer": "^5.1.0" + "@babel/runtime": "^7.18.3", + "react-is": "^16.12.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/rc": { - "version": "1.2.8", + "node_modules/rc-virtual-list": { + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.10.8.tgz", + "integrity": "sha512-QUdQ09KVz60KULJaFF51dDA3hpVAMtN9M+qbTDIARKhBb0TPG8s3ifQUuuhbe4I4lQ3G11wB5qJudN1zi8sgkA==", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "@babel/runtime": "^7.20.0", + "classnames": "^2.2.6", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.36.0" }, - "bin": { - "rc": "cli.js" + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" } }, "node_modules/rc/node_modules/strip-json-comments": { @@ -7890,6 +10726,19 @@ "version": "16.13.1", "license": "MIT" }, + "node_modules/react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "dependencies": { + "@react-leaflet/core": "^2.1.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", @@ -8023,6 +10872,18 @@ "node": ">= 6" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/recharts": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.6.2.tgz", @@ -8057,6 +10918,18 @@ "decimal.js-light": "^2.4.1" } }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/redent": { "version": "3.0.0", "dev": true, @@ -8090,8 +10963,7 @@ "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "peer": true + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/regexp.prototype.flags": { "version": "1.5.0", @@ -8120,6 +10992,28 @@ "node": ">=14" } }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, "node_modules/require-directory": { "version": "2.1.1", "dev": true, @@ -8136,6 +11030,18 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true + }, "node_modules/resolve": { "version": "1.22.2", "dev": true, @@ -8152,6 +11058,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "dev": true, @@ -8171,6 +11089,15 @@ "node": ">=8" } }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.0.4", "dev": true, @@ -8248,6 +11175,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -8262,7 +11195,6 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.2.0.tgz", "integrity": "sha512-0zTyLGyDJYd/MBxG1AhJkKa6fpEBds4OQO2ut0w7OYG+ZGhGea09lijvzsqegYSik88zc7cUtIlnnO+/BvD6gQ==", "dev": true, - "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -8281,7 +11213,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -8298,7 +11229,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "peer": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -8307,8 +11237,34 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", "dev": true, - "peer": true + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } }, "node_modules/semantic-release": { "version": "20.1.3", @@ -8682,25 +11638,192 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver-regex": { - "version": "4.0.5", + "node_modules/semver-regex": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "peer": true, "dependencies": { - "randombytes": "^2.1.0" + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" } }, "node_modules/shebang-command": { @@ -8722,6 +11845,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "dev": true, @@ -8828,6 +11960,17 @@ "node": ">=8" } }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, "node_modules/source-map": { "version": "0.6.1", "dev": true, @@ -8836,12 +11979,20 @@ "node": ">=0.10.0" } }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -8880,6 +12031,36 @@ "dev": true, "license": "CC0-1.0" }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, "node_modules/split": { "version": "1.0.1", "dev": true, @@ -8899,6 +12080,15 @@ "readable-stream": "^3.0.0" } }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/stream-combiner2": { "version": "1.1.1", "dev": true, @@ -8943,6 +12133,12 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==", + "dev": true + }, "node_modules/string-width": { "version": "4.2.3", "dev": true, @@ -9065,6 +12261,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylis": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==", + "dev": true + }, "node_modules/supports-color": { "version": "7.2.0", "dev": true, @@ -9149,7 +12367,6 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.0.tgz", "integrity": "sha512-pdL757Ig5a0I+owA42l6tIuEycRuM7FPY4n62h44mRLRfnOxJkkOHd6i89dOpwZlpF6JXBwaAHF6yWzFrt+QyA==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -9168,7 +12385,6 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -9203,7 +12419,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, - "peer": true, "engines": { "node": ">=6.0.0" } @@ -9212,15 +12427,13 @@ "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/terser-webpack-plugin/node_modules/@jridgewell/trace-mapping": { "version": "0.3.18", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -9239,6 +12452,15 @@ "dev": true, "license": "MIT" }, + "node_modules/throttle-debounce": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.0.tgz", + "integrity": "sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==", + "dev": true, + "engines": { + "node": ">=12.22" + } + }, "node_modules/through": { "version": "2.3.8", "dev": true, @@ -9252,6 +12474,12 @@ "readable-stream": "3" } }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, "node_modules/to-regex-range": { "version": "5.0.1", "dev": true, @@ -9263,6 +12491,21 @@ "node": ">=8.0" } }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "dev": true + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/tr46": { "version": "0.0.3", "dev": true, @@ -9385,6 +12628,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", "dev": true, @@ -9460,6 +12716,15 @@ "node": ">= 10.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", @@ -9479,7 +12744,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -9509,6 +12773,30 @@ "dev": true, "license": "MIT" }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "dev": true, @@ -9523,6 +12811,15 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/victory-vendor": { "version": "36.6.11", "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.6.11.tgz", @@ -9559,7 +12856,6 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, - "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -9568,17 +12864,25 @@ "node": ">=10.13.0" } }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "dev": true, "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.86.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.86.0.tgz", - "integrity": "sha512-3BOvworZ8SO/D4GVP+GoRC3fVeg5MO4vzmq8TJJEkdmopxyazGDxN8ClqN12uzrZW9Tv8EED8v5VSb6Sqyi0pg==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -9589,7 +12893,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -9599,7 +12903,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -9621,16 +12925,225 @@ } } }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "peer": true, "engines": { "node": ">=10.13.0" } }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "dev": true, @@ -9688,6 +13201,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, "node_modules/word-wrap": { "version": "1.2.3", "dev": true, @@ -9722,6 +13241,27 @@ "dev": true, "license": "ISC" }, + "node_modules/ws": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xtend": { "version": "4.0.2", "dev": true, diff --git a/package.json b/package.json index 148b3ea..43d6c46 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,9 @@ "scripts": { "build": "npx tsc", "prepublishOnly": "npm run build", - "lint": "npx eslint src/**", - "buildpack": "rm ./packs/*.tgz && tsc && npm pack --pack-destination ./packs" + "lint": "npx eslint src", + "buildpack": "rm ./packs/*.tgz && tsc && npm pack --pack-destination ./packs", + "test": "npx webpack-dev-server" }, "release": { "branches": [ @@ -37,26 +38,48 @@ }, "homepage": "https://github.com/bento-platform/Bento-Charts#readme", "peerDependencies": { + "leaflet": "^1.9.4", "react": ">=16.0.0", "react-dom": ">=14.0.0", + "react-leaflet": "^4.2.1", "recharts": "^2.4.3" }, + "peerDependenciesMeta": { + "leaflet": { + "optional": true + }, + "react-leafet": { + "optional": true + } + }, "devDependencies": { "@commitlint/cli": "^17.4.4", "@commitlint/config-conventional": "^17.4.4", "@semantic-release/git": "^10.0.1", + "@types/leaflet": "^1.9.3", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.10", + "@types/react-leaflet": "^3.0.0", "@types/recharts": "^1.8.24", "@typescript-eslint/eslint-plugin": "^5.56.0", "@typescript-eslint/parser": "^5.56.0", + "@webpack-cli/serve": "^2.0.5", + "antd": "^5.9.2", + "css-loader": "^6.8.1", "eslint": "^8.36.0", "eslint-plugin-react": "^7.32.2", + "file-loader": "^6.2.0", + "geojson": "^0.5.0", + "html-webpack-plugin": "^5.5.3", "husky": "^8.0.3", "prettier": "2.7.1", "semantic-release": "^20.1.3", + "style-loader": "^3.3.3", "ts-loader": "^9.4.2", - "typescript": "^4.9.5" + "typescript": "^4.9.5", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" }, "prettier": { "trailingComma": "es5", @@ -64,5 +87,8 @@ "semi": true, "singleQuote": true, "printWidth": 120 + }, + "dependencies": { + "d3-interpolate": "^3.0.1" } } diff --git a/src/ChartConfigProvider.tsx b/src/ChartConfigProvider.tsx index 6044f0a..8cbbcf0 100644 --- a/src/ChartConfigProvider.tsx +++ b/src/ChartConfigProvider.tsx @@ -1,7 +1,7 @@ import React, { useContext } from 'react'; import { DEFAULT_CHART_THEME, defaultTranslationObject } from './constants/chartConstants'; -import { ChartTheme, LngDictionary, SupportedLng, TranslationObject } from './types/chartTypes'; +import type { ChartTheme, LngDictionary, SupportedLng, TranslationObject } from './types/chartTypes'; type ChartContextType = { theme: ChartTheme; @@ -35,7 +35,14 @@ export function useChartMaxLabelChars() { return useContext(ChartContext).maxLabelChars; } -const ChartConfigProvider = ({ theme, Lng, translationMap, children, globalThreshold, maxLabelChars }: ChartConfigProviderProps) => { +const ChartConfigProvider = ({ + theme, + Lng, + translationMap, + children, + globalThreshold, + maxLabelChars, +}: ChartConfigProviderProps) => { let lang: SupportedLng = 'en'; try { lang = Lng as SupportedLng; diff --git a/src/Components/Charts/BentoBarChart.tsx b/src/Components/Charts/BentoBarChart.tsx index 08d9342..f58dbd6 100644 --- a/src/Components/Charts/BentoBarChart.tsx +++ b/src/Components/Charts/BentoBarChart.tsx @@ -13,7 +13,7 @@ import { TICK_MARGIN, } from '../../constants/chartConstants'; -import type { BarChartProps, ChartDataItem, TooltipPayload } from '../../types/chartTypes'; +import type { BarChartProps, CategoricalChartDataItem, TooltipPayload } from '../../types/chartTypes'; import { useChartTheme, useChartTranslation } from '../../ChartConfigProvider'; import NoData from '../NoData'; @@ -39,7 +39,7 @@ const BentoBarChart = ({ const t = useChartTranslation(); const { fill: chartFill, missing } = useChartTheme().bar[colorTheme]; - const fill = (entry: ChartDataItem) => (entry.x === 'missing' ? missing : chartFill); + const fill = (entry: CategoricalChartDataItem) => (entry.x === 'missing' ? missing : chartFill); data = [...data]; if (preFilter) data = data.filter(preFilter); diff --git a/src/Components/Charts/BentoPie.tsx b/src/Components/Charts/BentoPie.tsx index 04fa139..23f0c87 100644 --- a/src/Components/Charts/BentoPie.tsx +++ b/src/Components/Charts/BentoPie.tsx @@ -19,8 +19,8 @@ import { useChartTheme, useChartTranslation, useChartThreshold, - useChartMaxLabelChars -} from "../../ChartConfigProvider"; + useChartMaxLabelChars, +} from '../../ChartConfigProvider'; import { polarToCartesian } from '../../util/chartUtils'; import NoData from '../NoData'; @@ -144,64 +144,66 @@ const toNumber = (val: number | string | undefined, defaultValue?: number): numb return defaultValue || 0; }; -const RenderLabel = (maxLabelChars: number): PieProps['label'] => (params: PieLabelRenderProps ) => { // eslint-disable-line - const { fill, payload, index, activeIndex } = params; - const percent = params.percent || 0; - const midAngle = params.midAngle || 0; +const RenderLabel = + (maxLabelChars: number): PieProps['label'] => + (params: PieLabelRenderProps) => { // eslint-disable-line + const { fill, payload, index, activeIndex } = params; + const percent = params.percent || 0; + const midAngle = params.midAngle || 0; - // skip rendering this static label if the sector is selected. - // this will let the 'renderActiveState' draw without overlapping. - // also, skip rendering if segment is too small a percentage (avoids label clutter) - if (index === activeIndex || percent < LABEL_THRESHOLD) { - return; - } + // skip rendering this static label if the sector is selected. + // this will let the 'renderActiveState' draw without overlapping. + // also, skip rendering if segment is too small a percentage (avoids label clutter) + if (index === activeIndex || percent < LABEL_THRESHOLD) { + return; + } - const outerRadius = toNumber(params.outerRadius); - const cx = toNumber(params.cx); - const cy = toNumber(params.cy); + const outerRadius = toNumber(params.outerRadius); + const cx = toNumber(params.cx); + const cy = toNumber(params.cy); - const name = payload.name === 'null' ? '(Empty)' : payload.name; + const name = payload.name === 'null' ? '(Empty)' : payload.name; - const sin = Math.sin(-RADIAN * midAngle); - const cos = Math.cos(-RADIAN * midAngle); - const sx = cx + (outerRadius + 10) * cos; - const sy = cy + (outerRadius + 10) * sin; - const mx = cx + (outerRadius + 20) * cos; - const my = cy + (outerRadius + 20) * sin; - const ex = mx + (cos >= 0 ? 1 : -1) * 22; - const ey = my; - const textAnchor = cos >= 0 ? 'start' : 'end'; + const sin = Math.sin(-RADIAN * midAngle); + const cos = Math.cos(-RADIAN * midAngle); + const sx = cx + (outerRadius + 10) * cos; + const sy = cy + (outerRadius + 10) * sin; + const mx = cx + (outerRadius + 20) * cos; + const my = cy + (outerRadius + 20) * sin; + const ex = mx + (cos >= 0 ? 1 : -1) * 22; + const ey = my; + const textAnchor = cos >= 0 ? 'start' : 'end'; - const currentTextStyle: CSS.Properties = { - ...TEXT_STYLE, - fontWeight: payload.selected ? 'bold' : 'normal', - fontStyle: payload.name === 'null' ? 'italic' : 'normal', - }; + const currentTextStyle: CSS.Properties = { + ...TEXT_STYLE, + fontWeight: payload.selected ? 'bold' : 'normal', + fontStyle: payload.name === 'null' ? 'italic' : 'normal', + }; - const offsetRadius = 20; - const startPoint = polarToCartesian(cx, cy, outerRadius, midAngle); - const endPoint = polarToCartesian(cx, cy, outerRadius + offsetRadius, midAngle); - const lineProps = { - ...params, - fill: 'none', - stroke: fill, - points: [startPoint, endPoint], - }; + const offsetRadius = 20; + const startPoint = polarToCartesian(cx, cy, outerRadius, midAngle); + const endPoint = polarToCartesian(cx, cy, outerRadius + offsetRadius, midAngle); + const lineProps = { + ...params, + fill: 'none', + stroke: fill, + points: [startPoint, endPoint], + }; - return ( - - - - - = 0 ? 1 : -1) * 12} y={ey + 3} textAnchor={textAnchor} style={currentTextStyle}> - {labelShortName(name, maxLabelChars)} - - = 0 ? 1 : -1) * 12} y={ey} dy={14} textAnchor={textAnchor} style={COUNT_TEXT_STYLE}> - {`(${payload.value})`} - - - ); -}; + return ( + + + + + = 0 ? 1 : -1) * 12} y={ey + 3} textAnchor={textAnchor} style={currentTextStyle}> + {labelShortName(name, maxLabelChars)} + + = 0 ? 1 : -1) * 12} y={ey} dy={14} textAnchor={textAnchor} style={COUNT_TEXT_STYLE}> + {`(${payload.value})`} + + + ); + }; const RenderActiveLabel: PieProps['activeShape'] = (params) => { const { cx, cy, innerRadius, outerRadius, startAngle, endAngle, fill } = params; diff --git a/src/Components/Maps/BentoChoroplethMap.tsx b/src/Components/Maps/BentoChoroplethMap.tsx new file mode 100644 index 0000000..de57bfc --- /dev/null +++ b/src/Components/Maps/BentoChoroplethMap.tsx @@ -0,0 +1,137 @@ +import React, { Ref, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { GeoJSON, Popup } from 'react-leaflet'; +import { interpolateRgb } from 'd3-interpolate'; +import type { Feature as GeoJSONFeatureType } from 'geojson'; +import type { + ControlPosition, + GeoJSON as LeafletGeoJSON, + LeafletMouseEvent, + LeafletEventHandlerFnMap, + PathOptions, +} from 'leaflet'; + +import type { ChoroplethMapProps } from '../../types/mapTypes'; + +import BentoMapContainer from './BentoMapContainer'; +import MapLegendContinuous from './controls/MapLegendContinuous'; +import MapLegendDiscrete from './controls/MapLegendDiscrete'; + +const DEFAULT_CATEGORY = ''; +const POS_BOTTOM_RIGHT: ControlPosition = 'bottomright'; + +const BentoChoroplethMap = ({ + height, + data: originalData, + preFilter, + dataMap, + postFilter, + center, + zoom, + tileLayer, + colorMode, + features, + categoryProp, + onClick, + renderPopupBody, +}: ChoroplethMapProps) => { + const data = useMemo(() => { + let data = [...originalData]; + if (preFilter) data = data.filter(preFilter); + if (dataMap) data = data.map(dataMap); + if (postFilter) data = data.filter(postFilter); + return data; + }, [originalData]); + + const dataByFeatureCat = useMemo(() => Object.fromEntries(data.map((d) => [d.x, d.y])), [data]); + + const minYVal = useMemo(() => Math.min(...data.map((d) => d.y)), [data]); + const maxYVal = useMemo(() => Math.max(...data.map((d) => d.y)), [data]); + + const calculateColor = useCallback( + (v: number | undefined): string => + colorMode.mode === 'continuous' + ? interpolateRgb(colorMode.minColor, colorMode.maxColor)(((v ?? minYVal) - minYVal) / (maxYVal - minYVal)) + : colorMode.colorFunction(v), + [colorMode, minYVal, maxYVal] + ); + + const shapeStyle = useCallback( + (f: GeoJSONFeatureType): PathOptions => { + const fProps = f.properties ?? {}; + if (!Object.keys(fProps).includes(categoryProp)) { + console.warn(`Feature is missing category prop ${categoryProp}`, f); + } + const cat: string = fProps[categoryProp] ?? DEFAULT_CATEGORY; + return { + color: 'white', + weight: 2, + fillColor: calculateColor(dataByFeatureCat[cat]), + fillOpacity: 1, // actual opacity set by fillColor + }; + }, + [data, features] + ); + + const [popupContents, setPopupContents] = useState(null); + + const eventHandlers = useMemo( + () => + ({ + click: (e: LeafletMouseEvent) => { + const feature = e.sourceTarget.feature as GeoJSONFeatureType; + const fProps = feature.properties ?? {}; + const title = fProps.title ? `${fProps.title} (${fProps[categoryProp]})` : fProps[categoryProp]; + setPopupContents( +
+

+ {onClick ? ( + { + if (onClick) onClick(feature); + }} + > + {title} + + ) : ( + {title} + )} +

+ {renderPopupBody ? renderPopupBody(feature, dataByFeatureCat[fProps[categoryProp]]) : null} +
+ ); + }, + } as LeafletEventHandlerFnMap), + [onClick, categoryProp, renderPopupBody] + ); + + const geoJsonLayer: Ref = useRef(null); + useEffect(() => { + // Bizarre workaround needed for react-leaflet when handling `features` change: + // See https://github.com/PaulLeCam/react-leaflet/issues/332#issuecomment-731379795 + if (geoJsonLayer.current) { + geoJsonLayer.current.clearLayers().addData(features); + } + }, [features]); + + return ( + + + {popupContents} + + {colorMode.mode === 'continuous' ? ( + + ) : ( + + )} + + ); +}; + +export default BentoChoroplethMap; diff --git a/src/Components/Maps/BentoMapContainer.tsx b/src/Components/Maps/BentoMapContainer.tsx new file mode 100644 index 0000000..9a125b8 --- /dev/null +++ b/src/Components/Maps/BentoMapContainer.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import type { ReactNode } from 'react'; +import { MapContainer } from 'react-leaflet'; +import L, { Point } from 'leaflet'; + +import BentoOSMTileLayer from './BentoOSMTileLayer'; +import type { BaseMapProps } from '../../types/mapTypes'; + +import iconPng from 'leaflet/dist/images/marker-icon.png'; +import icon2XPng from 'leaflet/dist/images/marker-icon-2x.png'; +import iconShadowPng from 'leaflet/dist/images/marker-shadow.png'; + +const defaultIcon = L.icon({ + iconUrl: iconPng, + iconRetinaUrl: icon2XPng, + iconSize: new Point(25, 41), + iconAnchor: new Point(12, 41), + popupAnchor: new Point(1, -41), + shadowUrl: iconShadowPng, +}); + +L.Marker.prototype.options.icon = defaultIcon; + +interface MapContainerProps extends BaseMapProps { + children: ReactNode; +} + +const BentoMapContainer = ({ height, center, zoom, children, tileLayer }: MapContainerProps) => ( + + {tileLayer ?? } + {children} + +); + +export default BentoMapContainer; diff --git a/src/Components/Maps/BentoOSMTileLayer.tsx b/src/Components/Maps/BentoOSMTileLayer.tsx new file mode 100644 index 0000000..7c820fe --- /dev/null +++ b/src/Components/Maps/BentoOSMTileLayer.tsx @@ -0,0 +1,7 @@ +import React from 'react'; +import { TileLayer } from 'react-leaflet'; +import { OSM_TILE_LAYER_ATTRIBUTION, OSM_TILE_LAYER_TEMPLATE } from '../../constants/mapConstants'; + +const BentoOSMTileLayer = () => ; + +export default BentoOSMTileLayer; diff --git a/src/Components/Maps/BentoPointMap.tsx b/src/Components/Maps/BentoPointMap.tsx new file mode 100644 index 0000000..7c90620 --- /dev/null +++ b/src/Components/Maps/BentoPointMap.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Marker, Popup } from 'react-leaflet'; +import BentoMapContainer from './BentoMapContainer'; +import type { PointMapProps } from '../../types/mapTypes'; + +const BentoPointMap = ({ height, center, zoom, tileLayer, data, onClick, renderPopupBody }: PointMapProps) => { + return ( + + {data.map((point, i) => { + const { coordinates, title } = point; + + // We expect points in [long, lat] order (consistent with GeoJSON), but Leaflet wants them in [lat, long]. + const coordinatesLatLongOrder: [number, number] = [coordinates[1], coordinates[0]]; + + return ( + + +

+ {onClick ? onClick(point)}>{title} : <>{title}} +

+ {renderPopupBody ? renderPopupBody(point) : null} +
+
+ ); + })} +
+ ); +}; + +export default BentoPointMap; diff --git a/src/Components/Maps/controls/MapLegendContinuous.tsx b/src/Components/Maps/controls/MapLegendContinuous.tsx new file mode 100644 index 0000000..8810276 --- /dev/null +++ b/src/Components/Maps/controls/MapLegendContinuous.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import type { ControlPosition } from 'leaflet'; +import { controlPositionClasses } from './utils'; + +export interface MapLegendDiscreteProps { + position: ControlPosition; + minValue: number; + minColor: string; + maxValue: number; + maxColor: string; +} + +const MapLegendContinuous = ({ position, minValue, minColor, maxValue, maxColor }: MapLegendDiscreteProps) => { + return ( +
+
+
+
+
+ {maxValue} + {minValue} +
+
+
+
+ ); +}; + +export default MapLegendContinuous; diff --git a/src/Components/Maps/controls/MapLegendDiscrete.tsx b/src/Components/Maps/controls/MapLegendDiscrete.tsx new file mode 100644 index 0000000..69879da --- /dev/null +++ b/src/Components/Maps/controls/MapLegendDiscrete.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import type { ControlPosition } from 'leaflet'; +import type { MapDiscreteLegendItem } from '../../../types/mapTypes'; +import { controlPositionClasses } from './utils'; + +export interface MapLegendDiscreteProps { + position: ControlPosition; + legendItems: MapDiscreteLegendItem[]; +} + +const MapLegendDiscrete = ({ position, legendItems }: MapLegendDiscreteProps) => { + return ( +
+
+
    + {legendItems.map(({ label, color }, i) => ( +
  • + + {label} +
  • + ))} +
+
+
+ ); +}; + +export default MapLegendDiscrete; diff --git a/src/Components/Maps/controls/utils.ts b/src/Components/Maps/controls/utils.ts new file mode 100644 index 0000000..30f5e55 --- /dev/null +++ b/src/Components/Maps/controls/utils.ts @@ -0,0 +1,8 @@ +import type { ControlPosition } from 'leaflet'; + +export const controlPositionClasses: { [x in ControlPosition]: string } = { + bottomleft: 'leaflet-bottom leaflet-left', + bottomright: 'leaflet-bottom leaflet-right', + topleft: 'leaflet-top leaflet-left', + topright: 'leaflet-bottom leaflet-right', +}; diff --git a/src/constants/mapConstants.ts b/src/constants/mapConstants.ts new file mode 100644 index 0000000..25019a7 --- /dev/null +++ b/src/constants/mapConstants.ts @@ -0,0 +1,4 @@ +export const OSM_TILE_LAYER_ATTRIBUTION = ` +© OpenStreetMap contributors +`; +export const OSM_TILE_LAYER_TEMPLATE = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; diff --git a/src/index.ts b/src/index.ts index 0af66b4..06b1a60 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,12 @@ +// Disable unused item linting in WebStorm: +// noinspection JSUnusedGlobalSymbols + +// Categorical charts export { default as BarChart } from './Components/Charts/BentoBarChart'; export { default as PieChart } from './Components/Charts/BentoPie'; +// Maps are not included in index.ts - instead, they need to be included from `bento-charts/maps`. +// This way, we can have optional peer dependencies. + export { default as ChartConfigProvider } from './ChartConfigProvider'; export * from './types/chartTypes'; diff --git a/src/maps.ts b/src/maps.ts new file mode 100644 index 0000000..2737ddc --- /dev/null +++ b/src/maps.ts @@ -0,0 +1,4 @@ +// Maps +export { default as PointMap } from './Components/Maps/BentoPointMap'; +export { default as ChoroplethMap } from './Components/Maps/BentoChoroplethMap'; +export * from './types/mapTypes'; diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts new file mode 100644 index 0000000..e2937d4 --- /dev/null +++ b/src/react-app-env.d.ts @@ -0,0 +1 @@ +declare module '*.png'; diff --git a/src/styles.css b/src/styles.css new file mode 100644 index 0000000..1c733f1 --- /dev/null +++ b/src/styles.css @@ -0,0 +1,48 @@ +.bento-charts--map--legend { + background-color: white; + padding: 12px; + border-radius: 12px; + border: 1px solid rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.07); +} +.leaflet-bottom .bento-charts--map--legend { + margin-bottom: 28px; +} + +.bento-charts--map--legend ul { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 6px; +} + +.bento-charts--map--legend--patch { + display: inline-block; + width: 1rem; + height: 1rem; + border: 1px solid white; + vertical-align: top; + margin-right: 12px; + border-radius: 3px; +} + +.bento-charts--map--legend--scale { + height: 100px; + display: flex; + gap: 12px; +} + +.bento-charts--continuous-scale { + width: 1rem; + height: 100%; +} + +.bento-charts--map--legend--values { + display: flex; + flex-direction: column; +} +.bento-charts--map--legend--values > span:first-of-type { + flex: 1; +} diff --git a/src/types/chartTypes.ts b/src/types/chartTypes.ts index 77950f4..0cd2a1a 100644 --- a/src/types/chartTypes.ts +++ b/src/types/chartTypes.ts @@ -1,8 +1,8 @@ -import { PieProps, BarProps } from 'recharts'; +import type { PieProps, BarProps } from 'recharts'; -export type ChartDataType = ChartDataItem[]; +export type CategoricalChartDataType = CategoricalChartDataItem[]; -export interface ChartDataItem { +export interface CategoricalChartDataItem { x: string; y: number; } @@ -36,7 +36,7 @@ export type FilterCallback = (value: T, index: number, array: T[]) => boolean export type UnitaryMapCallback = (value: T, index: number, array: T[]) => T; // export type BinaryMapCallback = (value: T, index: number, array: T[]) => U; -export type ChartFilterCallback = FilterCallback; +export type ChartFilterCallback = FilterCallback; export type SupportedLng = 'en' | 'fr'; @@ -51,16 +51,19 @@ export type TranslationObject = { }; // ################### COMPONENT PROPS ##################### -interface BaseChartProps { - data: ChartDataType; +export interface BaseChartComponentProps { height: number; preFilter?: ChartFilterCallback; - dataMap?: UnitaryMapCallback; + dataMap?: UnitaryMapCallback; postFilter?: ChartFilterCallback; +} + +interface BaseCategoricalChartProps extends BaseChartComponentProps { + data: CategoricalChartDataType; removeEmpty?: boolean; } -export interface PieChartProps extends BaseChartProps { +export interface PieChartProps extends BaseCategoricalChartProps { colorTheme?: keyof ChartTheme['pie']; sort?: boolean; onClick?: PieProps['onClick']; @@ -68,7 +71,7 @@ export interface PieChartProps extends BaseChartProps { maxLabelChars?: number; } -export interface BarChartProps extends BaseChartProps { +export interface BarChartProps extends BaseCategoricalChartProps { colorTheme?: keyof ChartTheme['bar']; title?: string; units: string; diff --git a/src/types/geoJSONTypes.ts b/src/types/geoJSONTypes.ts new file mode 100644 index 0000000..c4bae88 --- /dev/null +++ b/src/types/geoJSONTypes.ts @@ -0,0 +1,21 @@ +export interface GeoJSONGeomPolygon { + type: 'Polygon'; + coordinates: number[][][]; +} + +export interface BentoGeoJSONProperties { + title: string; + [x: string]: unknown; +} + +export interface GeoJSONPolygonFeature { + type: 'Feature'; + geometry: GeoJSONGeomPolygon; + properties: BentoGeoJSONProperties; +} + +export interface GeoJSONPolygonOnlyFeatureCollection { + type: 'FeatureCollection'; + features: GeoJSONPolygonFeature[]; + [x: string]: unknown; +} diff --git a/src/types/mapTypes.ts b/src/types/mapTypes.ts new file mode 100644 index 0000000..2de9ab7 --- /dev/null +++ b/src/types/mapTypes.ts @@ -0,0 +1,52 @@ +import { ReactElement, ReactNode } from 'react'; +import type { Feature as GeoJSONFeatureType } from 'geojson'; + +import { BaseChartComponentProps, CategoricalChartDataType } from './chartTypes'; +import type { GeoJSONPolygonOnlyFeatureCollection } from './geoJSONTypes'; + +export interface GeoPointDataItem { + coordinates: [number, number]; + title: string; +} + +type PointMapOnClick = (point: GeoPointDataItem) => void; + +type GeoJSONShapeOnClick = (shape: GeoJSONFeatureType) => void; + +export interface BaseMapProps extends BaseChartComponentProps { + center: [number, number]; + zoom: number; + tileLayer?: ReactElement; +} + +export interface PointMapProps extends BaseMapProps { + data: GeoPointDataItem[]; + onClick?: PointMapOnClick; + renderPopupBody?: (p: GeoPointDataItem) => ReactNode; +} + +export interface MapDiscreteLegendItem { + color: string | undefined; + label: string; +} + +export interface ChoroplethMapColorModeContinuous { + mode: 'continuous'; + minColor: string; + maxColor: string; +} + +export interface ChoroplethMapColorModeDiscrete { + mode: 'discrete'; + colorFunction: (x: number | undefined) => string; + legendItems: MapDiscreteLegendItem[]; +} + +export interface ChoroplethMapProps extends BaseMapProps { + data: CategoricalChartDataType; // heatmaps are 'categorical' + geographical + features: GeoJSONPolygonOnlyFeatureCollection; + colorMode: ChoroplethMapColorModeContinuous | ChoroplethMapColorModeDiscrete; + categoryProp: string; + onClick?: GeoJSONShapeOnClick; + renderPopupBody?: (f: GeoJSONFeatureType, d: number | undefined) => ReactNode; +} diff --git a/test/index.ejs b/test/index.ejs new file mode 100644 index 0000000..f81a4b5 --- /dev/null +++ b/test/index.ejs @@ -0,0 +1,15 @@ + + + + + + + Bento Charts + <%= htmlWebpackPlugin.tags.headTags %> + + + +
+<%= htmlWebpackPlugin.tags.bodyTags %> + + diff --git a/test/js/index.tsx b/test/js/index.tsx new file mode 100644 index 0000000..3ad8350 --- /dev/null +++ b/test/js/index.tsx @@ -0,0 +1,76 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; + +import { Card, Layout, Tabs, TabsProps, Typography } from 'antd'; + +import 'antd/dist/reset.css'; +import 'leaflet/dist/leaflet.css'; +import '../../src/styles.css'; + +import { ChartConfigProvider } from '../../src'; +import { ChoroplethMap, PointMap } from '../../src/maps'; +import { TEST_HEATMAP_GEOJSON_FEATURES } from './testData'; + +const items: TabsProps['items'] = [ + { + key: 'choropleth', + label: 'Map: Choropleth', + children: ( + { + console.log(f); + alert(JSON.stringify(f, null, 2)); + }} + height={600} + center={[74.0694163, -112.7217838]} + zoom={2.75} + renderPopupBody={(_f, d) => <>{d} samples} + /> + ), + }, + { + key: 'points', + label: 'Map: Points', + children: ( + { + return { + title: `point ${i}`, + coordinates: c as [number, number], + }; + })} + height={600} + center={[74.0694163, -112.7217838]} + zoom={2.75} + /> + ), + } +] + +const BentoChartsTestApp = () => { + return ( + + + + + Bento Charts Test App + + + + + + ); +}; + +const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); +root.render( + +); diff --git a/test/js/testData.ts b/test/js/testData.ts new file mode 100644 index 0000000..13c4b59 --- /dev/null +++ b/test/js/testData.ts @@ -0,0 +1,43 @@ +import { GeoJSONPolygonOnlyFeatureCollection } from '../../src/types/geoJSONTypes'; + +export const TEST_HEATMAP_GEOJSON_FEATURES: GeoJSONPolygonOnlyFeatureCollection = { + 'type': 'FeatureCollection', + 'features': [ + { + 'type': 'Feature', + 'properties': { + 'title': 'Arctic Basin', + 'pop': 'AB', + 'source': 'Environment Canada for the Arctic Biodiversity Assessment (caffis\/aba)', + }, + 'geometry': { + 'type': 'Polygon', + 'coordinates': [[[114.781740188598945, 80.782754898070891], [113.877534866333193, 80.868181228637326], [112.956636428833079, 80.95125770568815], [112.019067764282426, 81.031915664672582], [111.06488227844244, 81.110086441039783], [110.094179153442639, 81.185716629027979], [109.10709571838396, 81.258737564086701], [108.605459213257063, 81.293909072875735], [108.103822708130281, 81.329080581664712], [107.594202041626374, 81.362890243530074], [107.084581375122013, 81.39669990539528], [106.567117691039542, 81.429105758666708], [106.049654006958178, 81.461511611938178], [105.524505615234503, 81.49249076843239], [104.999357223510742, 81.523469924926488], [104.466716766357379, 81.552988052367965], [103.934076309204173, 81.582506179809315], [103.394155502319236, 81.610532760619847], [102.854234695434812, 81.638559341430508], [102.307275772095196, 81.66507148742653], [101.760316848755082, 81.691583633422667], [101.206590652465707, 81.71654319763158], [100.6528644561768, 81.741502761840664], [100.092655181885306, 81.764890670776182], [99.532445907592859, 81.788278579711687], [98.966091156006598, 81.810064315795699], [98.399736404419485, 81.831850051879712], [97.827569961548093, 81.852006912231246], [97.255403518676857, 81.872163772582894], [96.677803039551236, 81.890676498412958], [96.100202560425075, 81.909189224242994], [95.517570495605582, 81.926027297973434], [94.934938430786517, 81.94286537170386], [94.350889205932774, 81.957826614379627], [93.766839981079059, 81.972787857055465], [93.174913406371758, 81.986410140990984], [92.582986831664996, 82.000032424926559], [91.994680404662731, 82.012128829955842], [91.406373977661517, 82.024225234985138], [90.550806045532724, 82.105600357055479], [89.677728652954187, 82.185144424438363], [88.787027359008817, 82.262811660766445], [87.878595352172965, 82.338548660278164], [86.952371597290266, 82.412294387817283], [86.008333206176957, 82.483995437622013], [85.046480178833363, 82.553590774536019], [84.066865921020621, 82.621026992797695], [83.069581985473704, 82.686250686645408], [82.562168121337962, 82.717721939086815], [82.05475425720212, 82.749193191528207], [81.538671493530629, 82.779497146606374], [81.022588729858469, 82.809801101684457], [80.497955322265724, 82.838907241821232], [79.973321914672937, 82.868013381957894], [79.440279006958235, 82.895895004272376], [78.90723609924332, 82.923776626586786], [78.365957260132063, 82.950407028198214], [77.824678421020877, 82.977037429809485], [77.275373458862518, 83.002386093139634], [76.726068496704329, 83.027734756469599], [76.168962478638164, 83.051771163940273], [75.611856460571573, 83.075807571411019], [75.047216415405558, 83.098508834838839], [74.482576370239542, 83.121210098266559], [73.910692214966204, 83.142400741577077], [73.338808059692511, 83.163591384887681], [72.760011672973548, 83.183576583862234], [72.181215286255267, 83.2035617828368], [71.595853805542177, 83.222139358520423], [71.010492324829144, 83.240716934204002], [70.418958663940359, 83.257856369018526], [69.827425003051857, 83.274995803832908], [69.230123519897916, 83.290697097778192], [68.632822036743676, 83.306398391723505], [67.664712905884173, 83.355699539184471], [67.158903121948313, 83.379743576049705], [66.65309333801288, 83.403787612915025], [66.140054702759201, 83.426782608032127], [65.627016067505338, 83.449777603149329], [65.106920242309911, 83.47170066833489], [64.586824417114599, 83.493623733520408], [64.059881210327617, 83.514451980590692], [63.532938003540202, 83.535280227661133], [62.999370574950959, 83.554998397827134], [62.465803146362511, 83.57471656799305], [61.925865173339886, 83.593297958374023], [61.385927200318179, 83.611879348754755], [60.839893341064581, 83.629304885864229], [60.293859481811815, 83.646730422973576], [59.742027282715128, 83.662988662719684], [59.190195083618555, 83.679246902465735], [58.632892608643182, 83.694311141967688], [58.075590133667227, 83.709375381469698], [57.513158798218086, 83.723234176635629], [56.950727462768498, 83.737092971801715], [56.383537292480561, 83.749727249145479], [55.816347122192298, 83.762361526489201], [55.244787216186673, 83.773759841918888], [54.673227310181275, 83.785158157348519], [54.097705841064787, 83.795305252075124], [53.522184371949209, 83.805452346801658], [52.943130493163984, 83.814336776733356], [52.364076614380132, 83.823221206664925], [51.781934738159457, 83.830831527709961], [51.199792861938484, 83.838441848754812], [50.61502075195385, 83.844766616821218], [50.030248641967766, 83.851091384887724], [49.443321228027521, 83.85612678527832], [48.856393814087006, 83.861162185668917], [48.267793655395479, 83.864900588989229], [47.679193496705025, 83.868638992309485], [47.089408874512365, 83.871076583862262], [46.499624252319371, 83.873514175415053], [45.909156799317252, 83.874643325805607], [45.318689346314052, 83.875772476196218], [44.728038787842088, 83.875597000122042], [44.137388229370089, 83.875421524047823], [43.547054290771705, 83.873941421508775], [42.956720352173093, 83.872461318969698], [42.367206573486698, 83.869672775268484], [41.777692794800224, 83.86688423156734], [41.18949317932109, 83.86279869079587], [40.601293563842802, 83.858713150024371], [40.014898300171318, 83.853330612182575], [39.428503036499649, 83.847948074340778], [38.844392776489535, 83.841276168823214], [38.260282516479663, 83.83460426330565], [37.678924560547436, 83.826650619506751], [37.097566604614826, 83.818696975707965], [36.519418716430899, 83.809473037719684], [35.941270828247362, 83.800249099731374], [35.366771697998743, 83.789766311645437], [34.792272567749762, 83.779283523559471], [34.221845626831417, 83.767549514770465], [33.651418685913718, 83.755815505981374], [33.085470199585252, 83.742853164672809], [32.519521713257213, 83.729890823364201], [31.958431243896928, 83.71570396423337], [31.397340774536584, 83.701517105102482], [30.841474533080991, 83.686132431030231], [30.285608291625774, 83.670747756957965], [29.735303878784659, 83.654172897338796], [29.184999465942578, 83.637598037719698], [28.640573501587596, 83.619859695434471], [28.096147537231978, 83.6021213531494], [27.557893753051424, 83.58323478698729], [27.019639968872252, 83.564348220825124], [26.487829208373892, 83.544328689575195], [25.956018447876239, 83.524309158325138], [25.43089103698739, 83.50318336486815], [24.905763626098402, 83.48205757141109], [24.387544631957834, 83.459848403930664], [23.869325637817653, 83.437639236450153], [23.358211517334627, 83.414358139038001], [22.847097396850341, 83.391077041625977], [22.343259811401627, 83.366754531860337], [21.839422225952109, 83.34243202209467], [20.846601486206474, 83.291749954223562], [19.868894577026559, 83.239061355590763], [18.906515121459996, 83.184419631957979], [17.959634780884091, 83.127870559692298], [17.028383255004769, 83.069467544555607], [16.112863540649883, 83.009241104125891], [15.21313285827685, 82.947244644165011], [14.329214096069528, 82.883516311645451], [13.46111106872643, 82.818117141723548], [12.608789443970192, 82.751077651977482], [11.772188186645343, 82.682443618774343], [10.951219558715531, 82.612253189086886], [10.145784378051818, 82.54056739807119], [9.355749130249235, 82.467409133911048], [8.5809726715088, 82.392824172973519], [7.82129096984903, 82.316850662231332], [7.076524734497671, 82.239534378051658], [6.346483230591464, 82.160913467407113], [5.630968093872423, 82.081018447875877], [4.929765701294481, 81.999895095825082], [4.242650985718185, 81.91756629943832], [3.569395065307855, 81.83407783508288], [2.909769058227702, 81.749460220336786], [2.263528823852961, 81.663743972778164], [1.577707290649889, 81.774087905883633], [0.873468399047812, 81.883180618285991], [0.167421340942702, 81.990961074828988], [-0.577129364013742, 82.097505569457923], [-1.341762542724444, 82.202638626098562], [-2.12702369689923, 82.306306838989158], [-2.933439254760723, 82.408456802368093], [-3.76155471801763, 82.509035110473562], [-4.611892700195157, 82.607973098754783], [-5.484972000122032, 82.70520210266109], [-6.381296157836871, 82.800668716430621], [-7.301342010498024, 82.89429664611815], [-8.245578765869071, 82.986009597778263], [-9.214435577392658, 83.07574653625484], [-10.208309173583968, 83.163423538208008], [-10.717938423156705, 83.206193923950153], [-11.227567672729416, 83.248964309692326], [-11.750044822692498, 83.290624618530231], [-12.272521972656037, 83.332284927368136], [-12.807978630065907, 83.372800827026339], [-13.343435287475415, 83.413316726684542], [-13.89196968078576, 83.45263862609859], [-14.440504074096657, 83.491960525512638], [-15.002188682555952, 83.530054092407184], [-15.563873291015822, 83.568147659301729], [-16.138737678527569, 83.604959487915011], [-16.713602066040046, 83.641771316528263], [-17.301635742187436, 83.677267074584947], [-17.88966941833484, 83.712762832641545], [-18.473998069762924, 83.746881484985323], [-19.058326721190994, 83.781000137329087], [-19.689258575439588, 83.814702987670856], [-20.320190429687148, 83.848405838012667], [-20.947205543517818, 83.879751205444322], [-21.574220657348814, 83.911096572875948], [-22.213880538940373, 83.94094657897945], [-22.853540420532173, 83.970796585083022], [-23.505573272704751, 83.999101638793931], [-24.157606124878058, 84.02740669250484], [-24.821682929992328, 84.05412483215332], [-25.485759735107045, 84.080842971801744], [-26.135438919067052, 84.105043411254883], [-26.785118103027379, 84.129243850707951], [-26.836341857909922, 84.121767044067369], [-27.504454612732115, 84.024259567260728], [-28.172567367553622, 83.926752090454059], [-28.324224472045614, 83.902681350708008], [-28.897333145141673, 83.812894821166978], [-29.47044181823718, 83.723108291625934], [-29.708513259887468, 83.68168830871582], [-30.685134887695376, 83.51298713684082], [-30.997510910034173, 83.454538345336857], [-31.823694229126044, 83.299592971801729], [-32.199890136718601, 83.224245071411104], [-32.892307281493963, 83.083635330200138], [-33.323219299316229, 82.991456985473576], [-33.896560668945412, 82.86550331115717], [-34.374298095703246, 82.75649452209467], [-34.841567993163977, 82.645494461059542], [-35.359279632568324, 82.519586563110281], [-35.731990814209091, 82.423883438110266], [-36.283714294433608, 82.280878067016516], [-36.572067260742244, 82.200891494750906], [-37.152605056762923, 82.040468215942283], [-37.36567306518559, 81.97665596008288], [-37.970462799072124, 81.798402786254741], [-38.116321563720646, 81.751291275024286], [-38.741359710693089, 81.554697036742994], [-38.827213287353715, 81.524835586547681], [-39.466629028320327, 81.302423477172653], [-40.446155299310902, 81.260122299194137], [-41.425681570301848, 81.217821121215593], [-42.405207841292615, 81.175519943237092], [-43.384734112283553, 81.133218765258576], [-44.364260383274328, 81.090917587280003], [-45.343786654265209, 81.048616409301488], [-46.323312925255813, 81.006315231323015], [-47.302839196246438, 80.964014053344442], [-48.282365467237398, 80.921712875365913], [-49.261891738228101, 80.879411697387397], [-50.241418009219018, 80.837110519408853], [-51.220944280209785, 80.794809341430351], [-52.200470551200496, 80.752508163451793], [-53.179996822191214, 80.710206985473306], [-54.159523093182287, 80.667905807494762], [-55.139049364172919, 80.625604629516261], [-56.118575635163587, 80.583303451537745], [-57.098101906154312, 80.541002273559201], [-58.07762817714535, 80.498701095580671], [-59.057154448136089, 80.456399917602141], [-60.036680719126906, 80.414098739623583], [-61.016206990117887, 80.371797561645067], [-61.995733261108327, 80.329496383666552], [-62.51709651947035, 80.331249237060135], [-63.03845977783206, 80.333002090453661], [-63.557689666748033, 80.333002090453689], [-64.076919555664261, 80.333002090453661], [-64.596152305603084, 80.333002090453647], [-65.115385055542134, 80.333002090453675], [-65.634615898132296, 80.333002090453647], [-66.153846740722528, 80.333002090453661], [-66.673076629638928, 80.333002090453661], [-67.19230651855473, 80.333002090453675], [-67.711536407470561, 80.333002090453661], [-68.230766296386875, 80.333002090453689], [-68.749999046325797, 80.333002090453661], [-69.269231796264691, 80.333002090453647], [-69.788461685180678, 80.333002090453675], [-70.307691574096765, 80.333002090453704], [-70.826922416687054, 80.333002090453647], [-71.346153259277429, 80.333002090453661], [-71.865383148193274, 80.333002090453647], [-72.384613037109375, 80.333002090453647], [-72.903845787048226, 80.333002090453661], [-73.423078536987433, 80.333002090453689], [-73.942308425903562, 80.333002090453661], [-74.461538314819251, 80.333002090453689], [-74.980769157409611, 80.333002090453661], [-75.5, 80.333002090453689], [-76.008425712585591, 80.224729537963398], [-76.516851425170827, 80.116456985473079], [-77.025282859802417, 80.008188247680138], [-77.533714294433722, 79.899919509887127], [-78.042140960693217, 79.791646957396836], [-78.550567626953168, 79.68337440490653], [-79.058994293212891, 79.575105667113519], [-79.567420959472855, 79.466836929320522], [-80.094089508056612, 79.470914840697418], [-80.620758056640682, 79.474992752074385], [-81.147427558899082, 79.479070663451353], [-81.674097061157397, 79.483148574828292], [-82.200760841369842, 79.487226486205287], [-82.727424621581989, 79.491304397582212], [-83.254093170165888, 79.495386123656445], [-83.780761718750043, 79.499467849730664], [-84.307426452636903, 79.503545761107631], [-84.834091186523366, 79.507623672484598], [-85.360758781433063, 79.511701583861523], [-85.88742637634283, 79.51577949523849], [-86.414091110229592, 79.519861221312695], [-86.940755844116126, 79.523942947386942], [-87.467425346374455, 79.528020858763853], [-87.994094848632798, 79.532098770140877], [-88.520759582519716, 79.536176681517816], [-89.047424316406207, 79.540254592894726], [-89.574092864990419, 79.544336318968973], [-90.100761413574403, 79.548418045043178], [-90.627425193786806, 79.552495956420159], [-91.154088973999279, 79.556573867797141], [-91.680758476257125, 79.560651779174066], [-92.207427978515554, 79.564729690551005], [-92.734092712402287, 79.568811416625209], [-93.260757446289503, 79.572893142699428], [-93.787425994873217, 79.576971054076381], [-94.314094543457415, 79.581048965453334], [-94.840759277343579, 79.585126876830344], [-95.367424011230767, 79.589204788207269], [-95.894092559814439, 79.593286514281473], [-96.420761108398438, 79.597368240355706], [-96.945911407471186, 79.47590827941815], [-97.47106170654321, 79.354448318480593], [-97.996212005615789, 79.232992172240259], [-98.521362304687898, 79.111536026], [-99.046511650085407, 78.990079879759634], [-99.571660995483612, 78.868623733519314], [-100.096811294555948, 78.747167587279023], [-100.621961593628171, 78.625711441038717], [-101.147110939025708, 78.504255294798341], [-101.672260284424155, 78.382799148558007], [-102.197412490844783, 78.261339187622042], [-102.722564697265938, 78.139879226684513], [-103.247714996338161, 78.018423080444279], [-103.772865295410028, 77.896966934204116], [-104.298014640808461, 77.775510787963839], [-104.823163986206467, 77.654054641723647], [-105.348315238952694, 77.532598495483413], [-105.873466491699403, 77.411142349243121], [-106.398616790771442, 77.289682388305707], [-106.923767089843977, 77.16822242736815], [-107.457278251648248, 77.163763046264648], [-107.990789413452333, 77.159303665161104], [-108.524302482605222, 77.154840469360295], [-109.057815551757869, 77.150377273559585], [-110.003124237060689, 77.14361381530756], [-109.997436523437358, 77.32344245910646], [-109.997892379760714, 77.584222793579102], [-109.989889144897305, 77.937654495239258], [-110.045340538024774, 78.510053634642105], [-110.1007919311525, 79.082452774046814], [-110.631251335144086, 79.144872665404279], [-111.161710739136169, 79.207292556761715], [-111.731680870056294, 79.267660140990301], [-112.30165100097642, 79.328027725218888], [-112.884269714355753, 79.386182785033313], [-113.466888427734347, 79.444337844847851], [-114.090060234070265, 79.499887466429882], [-114.713232040405174, 79.555437088011928], [-115.364253044128588, 79.605985641478725], [-116.01527404785152, 79.656534194945579], [-116.678656578064306, 79.704320907592034], [-117.34203910827641, 79.75210762023859], [-117.964262962341465, 79.800699234008135], [-118.586486816406534, 79.849290847777709], [-119.186687469482436, 79.90340614318788], [-119.786888122558565, 79.957521438598064], [-120.399757385254318, 80.009347915648803], [-121.012626647949219, 80.061174392699627], [-121.624252319336421, 80.1137104034418], [-122.23587799072277, 80.166246414184073], [-122.771716117859285, 80.211790084838356], [-123.307554244995288, 80.257333755492667], [-123.853213310241742, 80.301111221312979], [-124.398872375488565, 80.344888687133292], [-124.94330596923804, 80.382528305053285], [-125.487739562988168, 80.420167922973178], [-126.040512084961023, 80.456026077270124], [-126.593284606933864, 80.491884231566956], [-127.167369842529652, 80.532934188842376], [-127.741455078125398, 80.57398414611778], [-128.31516265869115, 80.606592178344371], [-128.888870239257699, 80.639200210570962], [-129.470321655273409, 80.669885635375607], [-130.051773071288977, 80.700571060180309], [-130.655136108398466, 80.729864120483072], [-131.258499145507784, 80.759157180785778], [-131.884155273437614, 80.790925979613903], [-132.509811401367529, 80.822694778442056], [-133.143798828125256, 80.852220535277993], [-133.777786254882898, 80.881746292113988], [-134.436065673828523, 80.913446426391275], [-135.094345092773409, 80.945146560668675], [-135.711936950684077, 80.973581314086587], [-136.329528808594034, 81.002016067504556], [-136.954620361328239, 81.028314590453832], [-137.579711914062869, 81.054613113403008], [-138.135192871094091, 81.083341598510458], [-138.690673828125085, 81.112070083617894], [-139.253105163574077, 81.139093399047596], [-139.81553649902375, 81.166116714477255], [-140.504295349121008, 81.214895248412844], [-141.193054199219091, 81.263673782348334], [-141.155609130859148, 80.532426834106076], [-141.101285934448157, 80.04432868957467], [-141.047315597534407, 79.576295852660394], [-141.000000000000398, 79.127870559691345], [-140.998764038086222, 78.547182083128448], [-140.99752807617179, 77.966493606567383], [-140.996299743652486, 77.385805130004854], [-140.995071411132898, 76.805116653442312], [-140.993835449218921, 76.224431991577148], [-140.992599487304801, 75.643747329711886], [-140.991363525390653, 75.063058853149386], [-140.990127563476591, 74.4823703765869], [-140.988899230957145, 73.901681900024329], [-140.987670898437671, 73.320993423461829], [-140.966094970703182, 72.75914192199707], [-141.555885314941378, 72.772127151489258], [-142.145675659179744, 72.785112380981403], [-142.671691894531335, 72.791872024536147], [-143.197708129882756, 72.798631668090778], [-143.724372863769673, 72.802652359008732], [-144.251037597656278, 72.806673049926715], [-144.778007507324332, 72.807947158813377], [-145.30497741699233, 72.809221267700138], [-145.831947326660213, 72.807752609252844], [-146.358917236328239, 72.806283950805636], [-146.885543823242102, 72.80206871032712], [-147.412170410156421, 72.797853469848576], [-147.938133239746122, 72.790899276733427], [-148.464096069335966, 72.783945083618079], [-148.989067077636889, 72.774259567260643], [-149.514038085937557, 72.764574050903335], [-150.059683799743624, 72.758146286010756], [-150.605329513550004, 72.751718521118093], [-151.15000057220459, 72.742341995239201], [-151.694671630859347, 72.732965469360309], [-152.238021850586023, 72.720651626586914], [-152.7813720703125, 72.708337783813406], [-153.32303619384777, 72.69309806823729], [-153.86470031738304, 72.677858352661048], [-154.404334068298368, 72.65970420837391], [-154.943967819213952, 72.6415500640869], [-155.481245994567757, 72.620508193969727], [-156.018524169921875, 72.599466323852525], [-156.576316833496008, 72.582639694213853], [-157.134109497070369, 72.565813064575082], [-157.689620971679744, 72.545881271362248], [-158.245132446289148, 72.525949478149343], [-158.797988891601619, 72.502935409545827], [-159.350845336914205, 72.479921340942298], [-159.900703430175753, 72.453844070434542], [-160.450561523437528, 72.427766799926687], [-160.997070312500142, 72.398656845092702], [-161.543579101562528, 72.369546890258704], [-162.084846496582088, 72.351724624633732], [-162.626113891601733, 72.333902359008704], [-163.165077209472798, 72.31312370300283], [-163.704040527343778, 72.292345046996999], [-164.240379333496037, 72.268621444702106], [-164.776718139648466, 72.244897842407156], [-165.310104370117301, 72.218259811401325], [-165.843490600585994, 72.191621780395423], [-165.901809692382898, 72.201082229614272], [-165.959106445312472, 72.209787368774315], [-166.016464233398466, 72.218477249145451], [-166.073867797851619, 72.227144241332923], [-166.131315231323271, 72.235795974731346], [-166.188827514648381, 72.244432449340763], [-166.246398925781307, 72.253038406371985], [-166.304016113281222, 72.261636734008704], [-166.361692428588867, 72.270212173461886], [-166.419418334961023, 72.278764724731431], [-166.477203369140568, 72.287302017211871], [-166.535047531127987, 72.295816421508718], [-166.592937469482536, 72.304315567016531], [-166.65087890625, 72.312799453735309], [-166.708875656128043, 72.321260452270437], [-166.766923904418945, 72.329698562621999], [-166.825025558471737, 72.338121414184585], [-166.883193969726534, 72.346529006958008], [-166.94140625, 72.354906082153207], [-166.999679565429744, 72.363275527954087], [-167.057996749877901, 72.371622085571289], [-167.116359710693473, 72.379945755004783], [-167.174789428710994, 72.388254165649315], [-167.233278274536161, 72.396539688110323], [-167.291809082031136, 72.404809951782227], [-167.350385665893583, 72.413057327270508], [-167.409025192260685, 72.42128944396967], [-167.467727661132756, 72.429498672485295], [-167.52647399902358, 72.437685012817269], [-167.585264205932759, 72.445856094360266], [-167.644119262695227, 72.454011917114201], [-167.703020095825167, 72.46214485168457], [-167.761980056762724, 72.470254898071175], [-167.820983886718807, 72.478349685668874], [-167.880050659179659, 72.486421585083022], [-167.93916130065918, 72.494478225707908], [-167.998334884643668, 72.502511978149386], [-168.057556152343835, 72.510522842407212], [-168.116838455200309, 72.518518447875906], [-168.176162719726562, 72.526491165161033], [-168.235532760620174, 72.53444862365717], [-168.294969558715792, 72.542383193969627], [-168.354446411132955, 72.550302505493079], [-168.413986206054773, 72.558198928832908], [-168.473571777343778, 72.566072463989201], [-168.533203125000028, 72.57393074035646], [-168.592895507812642, 72.58176612853994], [-168.652648925781392, 72.589586257934528], [-168.712446212768469, 72.597383499145522], [-168.772293090820398, 72.605157852172809], [-168.832181930542021, 72.612916946411133], [-168.89213562011733, 72.620653152465678], [-168.952146530151367, 72.628374099731374], [-169.012193679809627, 72.63607215881342], [-169.072298049926758, 72.643747329711843], [-169.132459640502987, 72.651407241821161], [-169.192670822143612, 72.659044265747056], [-169.2529296875, 72.666658401489158], [-169.313232421875028, 72.674257278442326], [-169.373594284057759, 72.681833267211871], [-169.43402099609375, 72.689393997192312], [-169.494474411010714, 72.696924209594627], [-169.554994583130025, 72.70444679260244], [-169.615568161010685, 72.71193885803217], [-169.676177978515739, 72.719415664672823], [-169.736845016479577, 72.726869583129854], [-169.797576904296932, 72.734308242797766], [-169.858337402343778, 72.74172401428217], [-169.919157028198214, 72.749116897582937], [-169.980024337768668, 72.756494522094684], [-170.040954589843665, 72.763841629028335], [-170.101926803589009, 72.771181106567312], [-170.162948608398381, 72.778490066528335], [-170.224014282226648, 72.785783767700124], [-170.285140991210909, 72.79305458068842], [-170.346313476562528, 72.800310134887653], [-170.40753173828125, 72.807542800903306], [-170.468811035156222, 72.814752578735252], [-170.530136108398381, 72.821939468383732], [-170.591506958007926, 72.829111099243136], [-170.652923583984347, 72.83625984191896], [-170.714403152465735, 72.843385696411119], [-170.775907516479521, 72.850496292114158], [-170.837493896484347, 72.857583999633732], [-170.899108886718778, 72.864648818969627], [-170.960767745971737, 72.871690750122056], [-171.022491455078182, 72.878717422485281], [-171.084259033203068, 72.885721206665025], [-171.14607429504386, 72.89270973205565], [-171.207946777343835, 72.899667739868164], [-171.269849777221708, 72.906610488891587], [-171.331815719604549, 72.91353034973146], [-171.393827438354634, 72.920434951782127], [-171.455886840820369, 72.927309036254783], [-171.517990112304688, 72.934167861938406], [-171.580152511596651, 72.941003799438462], [-171.64234733581543, 72.947824478149329], [-171.704603195190344, 72.954614639282141], [-171.766904830932532, 72.961389541625962], [-171.829254150390767, 72.968141555786048], [-171.891660690307646, 72.974878311157156], [-171.954099655151254, 72.981584548950195], [-172.01658439636239, 72.988275527954087], [-172.079132080078239, 72.994943618774343], [-172.141723632812386, 73.001596450805678], [-172.204360961914233, 73.00821876525869], [-172.267044067382841, 73.014825820922823], [-172.329772949218722, 73.021409988403278], [-172.392545700073271, 73.027971267700195], [-172.455368041992244, 73.034517288207937], [-172.51823234558114, 73.041040420532156], [-172.581163406372013, 73.04753303527832], [-172.644119262695284, 73.054018020629798], [-172.707136154174833, 73.060472488403263], [-172.770187377929773, 73.06690406799315], [-172.833297729492159, 73.073320388793888], [-172.896440505981445, 73.07971382141109], [-172.959638595581083, 73.086084365844627], [-173.022888183593693, 73.092432022094627], [-173.086183547973576, 73.098764419555579], [-173.149505615234375, 73.105066299438391], [-173.212892532348661, 73.111352920532113], [-173.276319503784151, 73.117616653442312], [-173.339782714843693, 73.123857498168931], [-173.403305053710994, 73.130083084106474], [-173.466873168945455, 73.136278152465735], [-173.530471801757898, 73.142457962036175], [-173.594129562378043, 73.148614883422837], [-173.657836914062557, 73.154748916625962], [-173.721570968627958, 73.160860061645451], [-173.785367965698242, 73.166955947875962], [-173.849195480346765, 73.173021316528306], [-173.91306877136239, 73.17907142639163], [-173.977005004882926, 73.185098648071161], [-174.040969848632812, 73.191102981567369], [-174.104980468750114, 73.197084426879812], [-174.169038772583093, 73.203042984008732], [-174.233139038085938, 73.208978652954073], [-174.297271728515568, 73.214899063110337], [-174.361463546753043, 73.220796585082908], [-174.425689697265625, 73.226663589477511], [-174.489974975585966, 73.232515335082994], [-174.554290771484432, 73.238344192504769], [-174.618650436401367, 73.244157791137596], [-174.683057785034237, 73.249940872192283], [-174.747497558593807, 73.255701065063406], [-174.811998367309712, 73.261445999145423], [-174.876523971557617, 73.267160415649386], [-174.941102981567354, 73.272859573364201], [-175.005723953247042, 73.278535842895494], [-175.070388793945227, 73.284189224243093], [-175.135084152221594, 73.289819717407198], [-175.199846267700195, 73.29542732238771], [-175.264635086059656, 73.301019668579073], [-175.329452514648438, 73.306581497192326], [-175.394332885742159, 73.312128067016587], [-175.459243774414091, 73.317644119262624], [-175.524200439453125, 73.323144912719656], [-175.58920288085946, 73.328622817993065], [-175.654235839843693, 73.334070205688448], [-175.719314575195341, 73.339502334594684], [-175.784439086914006, 73.344911575317354], [-175.849609374999972, 73.350297927856346], [-175.914810180664034, 73.3556613922119], [-175.980054855346708, 73.361009597778306], [-176.045333862304744, 73.366327285766587], [-176.110654830932646, 73.371622085571204], [-176.176025390625028, 73.376901626586786], [-176.241437911987447, 73.382150650024343], [-176.306884765625142, 73.387384414672837], [-176.372375488281165, 73.392587661743107], [-176.437896728515682, 73.3977756500244], [-176.503463745117159, 73.402940750121999], [-176.569063186645508, 73.408075332641559], [-176.634702682495089, 73.413194656372056], [-176.700393676757812, 73.41829109191886], [-176.766111373901424, 73.423364639282127], [-176.83187866210946, 73.428415298461843], [-176.897689819335881, 73.433443069457979], [-176.963516235351506, 73.438447952270494], [-177.029403686523551, 73.443429946899386], [-177.095321655273409, 73.448389053344684], [-177.161270141601619, 73.45332527160636], [-177.227262496948157, 73.458238601684556], [-177.293304443359403, 73.463129043579059], [-177.359373092651509, 73.467996597290011], [-177.425474166870089, 73.472841262817312], [-177.491622924804744, 73.477663040161076], [-177.557798385620117, 73.482469558715792], [-177.624023437500028, 73.487245559692369], [-177.690275192260799, 73.491998672485252], [-177.756574630737248, 73.496728897094641], [-177.82290649414054, 73.501436233520522], [-177.889268875122127, 73.506128311157255], [-177.955671310424947, 73.510789871215806], [-178.022108078002958, 73.515428543090778], [-178.08859252929696, 73.520044326782227], [-178.155103683471566, 73.52463722228994], [-178.221647262573185, 73.52921485900869], [-178.288236618042049, 73.533761978149357], [-178.354858398437415, 73.53828620910636], [-178.421506881713782, 73.542787551879812], [-178.488204956054631, 73.547266006469641], [-178.554931640625114, 73.551721572875948], [-178.621688842773523, 73.556161880493079], [-178.688491821289006, 73.560571670532198], [-178.755323410034208, 73.564958572387624], [-178.822187423706055, 73.569322586059556], [-178.889083862304688, 73.573663711547781], [-178.956022262573214, 73.577981948852525], [-179.022996902465792, 73.582277297973576], [-179.089994430542021, 73.586542129516531], [-179.157028198242216, 73.590791702270437], [-179.224107742309542, 73.595018386840749], [-179.291198730468892, 73.599222183227482], [-179.35833740234375, 73.603403091430565], [-179.964050292968807, 73.6399631500244], [-180.0, 73.64148052093671], [-180.0, 90.0], [180.0, 90.0], [180.0, 73.64148055865742], [179.900922775268214, 73.645662307739173], [179.833494186401396, 73.647417068481431], [179.765733718871985, 73.653383255004826], [179.698301315307532, 73.659318923950167], [179.630693435668775, 73.663125991821161], [179.562974929809258, 73.666078567504897], [179.495378494262411, 73.670740127563448], [179.427675247192099, 73.674547195434499], [179.359926223754968, 73.678361892700181], [179.292161941528406, 73.682069778442283], [179.227334976196204, 73.684930801391516], [179.156526565551729, 73.689424514770508], [179.088670730590565, 73.693063735961886], [179.020784378051843, 73.696680068969627], [178.9528675079344, 73.700273513793817], [178.884920120239258, 73.703844070434485], [178.816938400268583, 73.707384109496999], [178.748933792113945, 73.710908889770451], [178.680910110473491, 73.714410781860352], [178.612836837768384, 73.717882156372056], [178.544755935668803, 73.721330642700067], [178.476636886596339, 73.724763870239158], [178.408494949340593, 73.728166580200153], [178.34031867980957, 73.731546401977496], [178.272111892700082, 73.734903335571218], [178.203889846801843, 73.738229751586942], [178.135633468627617, 73.741540908813406], [178.067354202270252, 73.744829177856374], [177.999040603637695, 73.748086929321218], [177.930711746215849, 73.751321792602496], [177.862348556518242, 73.754541397094712], [177.793962478637468, 73.757730484008746], [177.725538253783981, 73.760896682739116], [177.657106399535877, 73.76403999328609], [177.588640213012638, 73.767152786254812], [177.520143508910991, 73.770250320434485], [177.451631546020423, 73.77331733703609], [177.383085250854322, 73.77636909484859], [177.314527511596339, 73.779390335082951], [177.245927810668917, 73.782388687133732], [177.177324295043718, 73.785364151000891], [177.108675003051502, 73.788309097289996], [177.040010452270479, 73.791238784790053], [176.971330642700224, 73.794137954711815], [176.902620315551474, 73.797021865844698], [176.833875656127987, 73.799875259399329], [176.765123367309542, 73.802705764770408], [176.696336746215906, 73.805513381957965], [176.627531051635629, 73.8082981109618], [176.558702468872184, 73.811052322387695], [176.48985481262207, 73.8137912750244], [176.420972824096538, 73.816499710082979], [176.352083206176871, 73.819185256957994], [176.283155441284123, 73.8218479156494], [176.214220046996786, 73.82448768615717], [176.145246505737106, 73.827104568481417], [176.076276779174719, 73.829690933227482], [176.007265090942099, 73.832254409789925], [175.938249588012496, 73.834802627563406], [175.869188308715906, 73.837320327758817], [175.800127029418945, 73.839807510375977], [175.731035232544002, 73.842279434204002], [175.661928176879627, 73.844728469848562], [175.592790603637638, 73.847146987914996], [175.523649215698384, 73.849542617797795], [175.454484939575138, 73.851915359497013], [175.385286331176843, 73.854265213012638], [175.316087722778349, 73.856584548950167], [175.246858596801445, 73.85888862609859], [175.177598953246843, 73.86116218566886], [175.10833930969244, 73.863412857055565], [175.039049148559201, 73.865640640258718], [174.969743728637496, 73.867845535278235], [174.900423049926701, 73.870027542114229], [174.831087112426559, 73.872179031372013], [174.761735916137411, 73.874307632446218], [174.692354202270309, 73.8764133453368], [174.622957229614286, 73.878496170043903], [174.553544998168661, 73.880556106567283], [174.484117507934457, 73.882585525512667], [174.414670944213867, 73.884592056274343], [174.345216751098661, 73.88657569885244], [174.275743484496928, 73.888536453247028], [174.206239700317525, 73.890474319457979], [174.136732101440344, 73.892381668090721], [174.067216873168661, 73.894273757934499], [173.997667312621928, 73.896135330200153], [173.928117752075082, 73.897974014282227], [173.858537673949854, 73.899782180786161], [173.788942337035735, 73.901575088500977], [173.71934700012207, 73.903337478637653], [173.649721145629655, 73.90507698059082], [173.580095291137525, 73.906793594360323], [173.510454177856161, 73.90848731994619], [173.440782546996928, 73.910150527954059], [173.371110916137582, 73.911798477172837], [173.301420211791879, 73.913415908813448], [173.231721878051502, 73.915010452270494], [173.162004470824996, 73.9165744781493], [173.092267990112276, 73.918123245239187], [173.022539138793832, 73.919641494750991], [172.952775955200167, 73.921136856079102], [172.88300895690918, 73.922609329223562], [172.813234329223434, 73.924058914184471], [172.743436813354151, 73.925477981567411], [172.673646926879854, 73.926874160766573], [172.603822708129655, 73.928247451782227], [172.533998489379769, 73.929597854614258], [172.46415901184065, 73.930917739868136], [172.394319534301303, 73.932222366332951], [172.324449539184599, 73.93349647521967], [172.254579544067099, 73.934747695922823], [171.726594924926559, 74.13150978088369], [171.190675735473405, 74.326608657836871], [170.641633987426701, 74.520082473754883], [170.079103469848775, 74.711877822875934], [169.502668380737163, 74.901956558227482], [168.911973953247013, 75.090265274047781], [168.306577682495089, 75.27675056457521], [167.686067581176644, 75.461351394653292], [167.050035476684343, 75.644006729125934], [166.3980388641356, 75.824670791625849], [165.729677200317099, 76.003267288207937], [165.044466018676303, 76.179735183715763], [164.342012405395252, 76.35400581359859], [163.621828079223661, 76.526010513305664], [162.896837234496815, 76.695505142211786], [162.140504837036019, 76.862977981567369], [161.365129470825138, 77.027940750121971], [160.570299148559315, 77.190324783325153], [159.755556106567496, 77.350030899047837], [158.920503616332837, 77.506975173950167], [158.064744949340735, 77.661066055297795], [157.187898635864173, 77.812196731567354], [156.289583206176673, 77.960275650024315], [155.369462966918718, 78.105203628540011], [154.427228927612333, 78.246858596801687], [153.462617874145366, 78.385149002073618], [152.47537422180153, 78.519952774046317], [151.970338821410877, 78.585554122923355], [151.46530342102028, 78.651155471800337], [150.948776245117017, 78.71490287780631], [150.432249069213867, 78.778650283812212], [149.904190063476648, 78.840478897093462], [149.376131057739201, 78.902307510374769], [148.836503982544059, 78.962160110472539], [148.296876907348519, 79.02201271057011], [147.745706558227482, 79.07982826232795], [147.194536209106587, 79.137643814085834], [146.631860733032255, 79.19335746765033], [146.069185256958008, 79.249071121214897], [145.495096206664954, 79.30262565612702], [144.921007156372156, 79.356180191039158], [144.335618972778121, 79.407514572142645], [143.750230789184315, 79.458848953246232], [143.153726577758817, 79.50789451599033], [142.557222366332866, 79.556940078734556], [141.949792861938477, 79.60363960266038], [141.342363357544116, 79.650339126586161], [140.724283218383533, 79.694631576537375], [140.10620307922369, 79.738924026488533], [139.477777481079244, 79.780752182006182], [138.84935188293457, 79.822580337523718], [138.210924148559712, 79.861883163451495], [137.572496414184798, 79.901185989379186], [136.702414830525953, 79.948386510212586], [135.832333246866483, 79.995587031045957], [134.962251663208008, 80.042787551879272], [134.296510696411161, 80.07418632507266], [133.630769729614343, 80.105585098265962], [132.956987380981218, 80.134241104125422], [132.283205032348434, 80.162897109984783], [131.601984024047511, 80.18877601623474], [130.920763015747184, 80.214654922484883], [130.232759475707638, 80.237703323363704], [129.544755935669087, 80.260751724242638], [128.850679397583434, 80.280935287475089], [128.156602859497525, 80.30111885070751], [127.457197189331154, 80.318407058715366], [126.757791519165167, 80.335695266723022], [126.05383110046364, 80.350049972533725], [125.34987068176261, 80.364404678344272], [124.642175674438178, 80.375810623168491], [123.9344806671143, 80.387216567992724], [123.223886489867894, 80.395643234252418], [122.513292312622283, 80.404069900512269], [121.800661087036261, 80.409509658813036], [121.088029861450551, 80.414949417113789], [120.374235153198512, 80.417387008666537], [119.66044044494636, 80.419824600219286], [118.946371078490699, 80.419263839721225], [118.232301712035976, 80.418703079223135], [117.394456863403121, 80.512941360473164], [116.540140151977653, 80.605073928832553], [115.669260025024684, 80.695032119750522], [114.781740188598945, 80.782754898070891]]], + }, + }, + { + 'type': 'Feature', + 'properties': { + 'title': 'Northern Beaufort', + 'pop': 'NB', + 'source': 'Environment Canada for the Arctic Biodiversity Assessment (caffis\/aba)', + }, + 'geometry': { + 'type': 'Polygon', + 'coordinates': [[[-140.966094936011899, 72.759140094548442], [-140.987671156017853, 73.320991968156036], [-140.990127752226272, 74.482368374822968], [-140.99259978785858, 75.643745568907306], [-140.995071888709873, 76.805115284157509], [-140.997528401765663, 77.966492235664589], [-140.999999818475715, 79.127868361131561], [-141.047316767089796, 79.576293602833246], [-141.101287138814968, 80.044326423711198], [-141.155609544908287, 80.532425328112382], [-141.193054251649102, 81.263672001644849], [-139.815536529989316, 81.166114556229886], [-138.690673912366577, 81.11206825195562], [-137.579711997167038, 81.054611415416218], [-136.329528861926121, 81.002014318401336], [-135.094345093823563, 80.945144840759866], [-133.777786205479543, 80.881744513771807], [-132.509811347789622, 80.822693151533912], [-131.258498866946383, 80.759155810081424], [-130.05177299632328, 80.700569099298733], [-128.888871148007297, 80.639197816819234], [-127.741455302481299, 80.573982228582949], [-126.593284450144026, 80.491882373434848], [-125.487740326353048, 80.420165603078061], [-124.398872854062404, 80.34488650318103], [-123.307555139652592, 80.25733256195096], [-122.235877993376903, 80.16624459596602], [-121.012627166593191, 80.061172204177126], [-119.78688881100932, 79.957519215389439], [-118.586488061305147, 79.849288675188092], [-117.342039944737223, 79.752106180589394], [-116.015274492204924, 79.656532086039178], [-114.713233403355829, 79.555435438581711], [-113.466888820885885, 79.444335763306256], [-112.301651087076152, 79.328025907023189], [-111.161712138866037, 79.207290931570682], [-110.100792496556139, 79.08245039604553], [-109.989890406190923, 77.937653087773441], [-109.997893719109072, 77.584220584547126], [-109.997436245867078, 77.323440137472474], [-110.003124657382784, 77.14361396215682], [-110.125099933068157, 77.142488044203233], [-111.09570457235931, 77.128517264453237], [-111.192113300287247, 77.127031155243984], [-112.171492955533012, 77.127309876651594], [-112.259391091052834, 77.12665841471258], [-113.316398808697741, 77.115974146246131], [-114.393008106306269, 77.106038901858355], [-114.42607717568491, 77.105662038404546], [-115.486221315977701, 77.100303470167717], [-116.545143026320162, 77.08779876113779], [-117.594024548567504, 77.07898718549626], [-118.661048149639925, 77.070068845420678], [-118.580527601225867, 75.701530977479493], [-118.499999752836942, 74.333000454925767], [-116.999999832541775, 74.332999704507856], [-116.771590910573508, 73.17562897906862], [-116.500939212322223, 73.065742540082184], [-116.499999906064659, 71.999999900239175], [-115.500000297562195, 71.812499800777047], [-114.499999796420653, 71.624999967236334], [-113.49999953420496, 71.437499806823865], [-112.49999943720718, 71.250000371318919], [-111.2499988137141, 71.250000176751826], [-110.000000859457757, 71.249999927615164], [-109.999999477663522, 69.944335273138961], [-109.999999176996525, 68.638663566628821], [-109.999998722777221, 67.33300055584354], [-111.062088259091098, 67.332999765741462], [-112.124183880540571, 67.33300008143479], [-113.186271364396788, 67.333001139124434], [-114.248366399921167, 67.333000429843366], [-115.310455546718714, 67.333000701636976], [-116.372543079071988, 67.333000508754779], [-117.434639086092702, 67.332999278701777], [-118.496727043337259, 67.333000335984352], [-119.558814280963205, 67.333000998922699], [-120.62091063290751, 67.333001266629154], [-121.645949856135886, 67.322732062666489], [-121.686384012724574, 68.045373141828165], [-121.686001366606305, 68.338632976368373], [-121.686187441655349, 69.34427743249239], [-121.685920737079869, 70.343246222177214], [-122.702682646389945, 70.446027495729737], [-123.151565177646702, 70.48915380759739], [-123.717129075527282, 70.542733917573685], [-124.08850173143864, 70.577081196137996], [-124.732108007844587, 70.638772174682799], [-125.253233860099513, 70.686414643379578], [-125.748416201511432, 70.733207179196924], [-126.325286439569638, 70.786177931330471], [-126.765289839832349, 70.826993903711895], [-127.474469331328905, 70.894404151289891], [-127.780421758141074, 70.922849464377464], [-128.757773249738335, 71.012120211937585], [-128.798221943928723, 71.015745433190858], [-129.795791757737931, 71.113060139136039], [-130.828479351951898, 71.207349899145186], [-130.853486091745935, 71.209546940161786], [-131.901550476935029, 71.317504365855712], [-132.858085061980574, 71.399946145203472], [-132.999889666460632, 71.411673864968009], [-133.872624151584375, 71.496315761347901], [-134.160475842376741, 71.521429728284957], [-134.887978852899153, 71.591921190752842], [-135.249909694662392, 71.62303779217163], [-135.905600281618263, 71.6846954347007], [-136.354538780182821, 71.729158142434585], [-136.916879292991695, 71.784804783791216], [-137.63743202747861, 71.848197092459046], [-137.935950073322005, 71.876274432243633], [-138.79768857829157, 71.953480069536582], [-138.95547336929846, 71.967585837633536], [-139.886202985909762, 72.056859473271132], [-139.969476704833539, 72.06442822989635], [-140.988876548744713, 72.168800841467714], [-140.966094936011899, 72.759140094548442]]], + }, + }, + { + 'type': 'Feature', + 'properties': { + 'title': 'Southern Beaufort', + 'pop': 'SB', + 'source': 'Environment Canada for the Arctic Biodiversity Assessment (caffis\/aba)', + }, + 'geometry': { + 'type': 'Polygon', + 'coordinates': [[[-161.549759334702657, 67.893509787127712], [-161.591354816576597, 67.959771124134718], [-162.129791488556606, 68.552704360489358], [-163.498396913005621, 69.984924256839847], [-164.617173609716076, 71.111205677852979], [-165.843490399805347, 72.191619950532385], [-164.77671933917506, 72.244896221581115], [-163.70404033569784, 72.292343574445667], [-162.626114162325138, 72.333901042611686], [-161.543579039601923, 72.369544494472095], [-160.450561695271261, 72.427765076153491], [-159.350845341933365, 72.479919083279427], [-158.245132641347595, 72.525947568984634], [-157.134109781014473, 72.565811520972233], [-156.018523897952832, 72.599464200004633], [-154.943969075299123, 72.641548148835867], [-153.864701247092171, 72.677856683641693], [-152.781372054898213, 72.708336442131227], [-151.694672020618924, 72.732963460641969], [-150.605330811173786, 72.751716079194821], [-149.514037992461652, 72.764572450276901], [-148.464095946235062, 72.783942658312327], [-147.412170480501914, 72.79785163177074], [-146.358918057199389, 72.806282553159861], [-145.304977943023147, 72.809219554100991], [-144.251037635668752, 72.806671390576582], [-143.197707875175439, 72.79862970188239], [-142.145675526762233, 72.785110402957102], [-140.966094936011899, 72.759140094548442], [-140.988876548744713, 72.168800841467714], [-140.985198917796453, 72.159621793116813], [-139.969476704833539, 72.06442822989635], [-139.886202985909762, 72.056859473271132], [-138.95547336929846, 71.967585837633536], [-138.79768857829157, 71.953480069536582], [-137.935950073322005, 71.876274432243633], [-137.63743202747861, 71.848197092459046], [-136.916879292991695, 71.784804783791216], [-136.354538780182821, 71.729158142434585], [-135.905600281618263, 71.6846954347007], [-135.249909694662392, 71.62303779217163], [-134.887978852899153, 71.591921190752842], [-134.160475842376741, 71.521429728284957], [-133.872624151584375, 71.496315761347901], [-132.999889666460632, 71.411673864968009], [-132.858085061980574, 71.399946145203472], [-131.844314545415159, 71.302391391754611], [-130.853486091745935, 71.209546940161786], [-130.828479351951898, 71.207349899145186], [-129.795791757737931, 71.113060139136039], [-128.798221943928723, 71.015745433190858], [-128.757773249738335, 71.012120211937585], [-127.780421758141074, 70.922849464377464], [-127.474469331328905, 70.894404151289891], [-126.765289839832349, 70.826993903711895], [-126.325286439569638, 70.786177931330471], [-125.748416201511432, 70.733207179196924], [-125.253233860099513, 70.686414643379578], [-124.732108007844587, 70.638772174682799], [-124.08850173143864, 70.577081196137996], [-123.717129075527282, 70.542733917573685], [-123.151565177646702, 70.48915380759739], [-122.702682646389945, 70.446027495729737], [-121.685920737079869, 70.343246222177214], [-121.716110665751771, 69.351310492951086], [-121.686001366606305, 68.338632976368373], [-121.686384012724574, 68.045373141828165], [-121.687277010079029, 67.327779098024436], [-122.664901523033677, 67.443183452120536], [-123.709518769284188, 67.551208376120925], [-124.763725050428349, 67.652213785072036], [-125.826995680768349, 67.746108775650626], [-126.898765565836669, 67.832787062683636], [-127.978439246358676, 67.912170962413725], [-129.0653840733452, 67.984184305923037], [-130.158981387227385, 68.048743542488921], [-131.25851426405751, 68.105789605977293], [-132.363311820148368, 68.155257494987637], [-133.472640966529639, 68.197097535490514], [-134.585784889188773, 68.231270615766917], [-135.607543953070149, 68.284142284188206], [-136.633880690653456, 68.33052883140526], [-137.664245842422304, 68.370383874695349], [-138.698013226570737, 68.403678759760894], [-139.734604160064322, 68.43036757933038], [-140.773407058757357, 68.450439772153061], [-141.813781746619071, 68.463867244021657], [-142.85511776941388, 68.470642588219775], [-143.956359533850048, 68.476241897252137], [-145.057800044806498, 68.474395515359689], [-146.158676175187708, 68.465103200448951], [-147.258239485412361, 68.448378976560676], [-148.355773472221216, 68.424247238552141], [-149.450545857644357, 68.392714361313281], [-150.541809363576391, 68.353829210119429], [-151.628891214828855, 68.307617058943791], [-152.723480373160498, 68.290893072440724], [-153.816056009051351, 68.266762787273819], [-154.905898201012008, 68.23525934931655], [-155.992295469400062, 68.196419321831982], [-157.074554665383374, 68.150269393802787], [-158.151978530241763, 68.096863281197344], [-159.223922546442992, 68.036246996842763], [-160.289734035511032, 67.968490087678234], [-161.549759334702657, 67.893509787127712]]], + }, + }, + ], +}; diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..9d549da --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,60 @@ +const path = require('path'); + +const HtmlWebpackPlugin = require('html-webpack-plugin'); + +const config = { + mode: 'development', + entry: './test/js/index.tsx', + output: { + path: __dirname + '/test/dist', + publicPath: '', + filename: 'js/[name][chunkhash].js', + }, + module: { + rules: [ + { test: /\.[tj](sx|s)?$/, use: { loader: 'ts-loader' }, exclude: /node_modules/ }, + { + test: /\.html$/i, + loader: 'html-loader', + }, + { + test: /\.css$/i, + use: ['style-loader', 'css-loader'], + }, + { + test: /\.(png|jpe?g|gif)$/i, + loader: 'file-loader', + }, + ], + }, + watchOptions: { + poll: 1000, + }, + plugins: [ + new HtmlWebpackPlugin({ + title: 'Development', + inject: false, + template: 'test/index.ejs', + }), + ], + optimization: { + runtimeChunk: 'single', + }, + devtool: 'source-map', + devServer: { + static: './test/dist', + }, + resolve: { + alias: { + '@': path.resolve(__dirname, 'src'), + }, + extensions: ['.tsx', '.ts', '.js'], + }, +}; + +module.exports = (_env, argv) => { + if (argv.mode === 'development') { + config.devtool = 'inline-source-map'; + } + return config; +};