From ff4d89aac0382ecf6a17b832ec249eb3e69a306f Mon Sep 17 00:00:00 2001 From: Damon Ulmi <63123585+DamonU2@users.noreply.github.com> Date: Fri, 1 Nov 2024 08:58:08 -0700 Subject: [PATCH] refactor: removes localized string (#2572) --- README.md | 12 +- common/config/rush/pnpm-lock.yaml | 2773 ++++++++--------- .../LegendsLayerSet-event-managment.md | 99 +- docs/app/geoview-layer/add-layer-type.md | 531 ++-- .../draw.io/TypeMapConfig.drawio.svg | 12 +- docs/app/loading-maps.md | 11 +- packages/geoview-basemap-panel/schema.json | 56 +- .../configs/OSDP/datasets/OSDP-metadata.json | 2 +- .../public/configs/OSDP/function-event.json | 52 +- .../public/configs/OSDP/osdp-land.json | 28 +- .../public/configs/elections-canada-2019.json | 10 +- .../public/configs/footer-tabs-config.json | 8 +- .../public/configs/max-record-count.json | 16 +- .../public/configs/my-config.json | 30 +- .../configs/navigator/05-zoom-layer.json | 50 +- .../configs/navigator/06-basic-footer.json | 56 +- .../configs/navigator/07-basic-appbar.json | 93 +- ...-package-basemap-custom-basemap-panel.json | 36 +- .../navigator/10-package-time-slider.json | 28 +- ...ackage-time-slider-custom-time-slider.json | 20 +- .../11-package-time-slider-custom.json | 22 +- .../navigator/12-a-package-swiper.json | 6 +- .../navigator/12-package-geochart.json | 85 +- .../configs/navigator/13-all-layers.json | 111 +- .../configs/navigator/14-wms-layer.json | 20 +- .../public/configs/navigator/15-xyz-tile.json | 10 +- .../configs/navigator/16-esri-dynamic.json | 12 +- .../configs/navigator/17-esri-feature.json | 16 +- .../configs/navigator/18-esri-image.json | 40 +- .../public/configs/navigator/19-geojson.json | 16 +- .../public/configs/navigator/20-wfs.json | 20 +- .../configs/navigator/21-ogc-feature-api.json | 8 +- .../configs/navigator/22-static-image.json | 11 +- .../public/configs/navigator/23-csv.json | 14 +- .../configs/navigator/24-vector-tile.json | 12 +- .../configs/navigator/25-geojson-multi.json | 14 +- .../configs/package-swiper3-config.json | 45 +- .../validator/01-simple-esri-feature.json | 20 +- .../02-unique-value-esri-dynamic.json | 28 +- .../03-class-breaks-esri-feature.json | 19 +- .../public/configs/validator/04-geocore.json | 31 +- .../05-esri-feature-and-dynamic.json | 30 +- .../public/configs/validator/06-ogc-wms.json | 26 +- .../public/configs/validator/07-ogc-wfs.json | 24 +- .../public/configs/validator/08-geojson.json | 20 +- .../configs/validator/09-esri-image.json | 38 +- .../datasets/geojson/hydro-metadata.json | 12 +- .../datasets/geojson/metadata-blank.json | 2 +- .../public/datasets/geojson/metadata.json | 16 +- .../public/datasets/geojson/metadata1.json | 2 +- .../datasets/geojson/processes-metadata.json | 7 +- .../public/templates/default-config.html | 61 +- .../public/templates/demos/demo-cgdi.html | 36 +- .../templates/demos/demo-function-event.html | 6 +- .../templates/demos/demo-geojson-inject.html | 8 +- .../public/templates/demos/demo-gsc.html | 10 +- .../demos/demo-important-layers.html | 127 +- .../public/templates/demos/demo-osdp-air.html | 12 +- .../demos/demo-osdp-biodiversity.html | 12 +- .../templates/demos/demo-osdp-climate.html | 14 +- .../templates/demos/demo-osdp-economy.html | 16 +- .../templates/demos/demo-osdp-health.html | 30 +- .../demos/demo-osdp-non-currated.html | 67 +- .../templates/demos/demo-osdp-society.html | 24 +- .../templates/demos/demo-osdp-water.html | 16 +- .../templates/demos/demo-world-of-maps.html | 14 +- .../public/templates/layers/csv.html | 18 +- .../public/templates/layers/esri-dynamic.html | 26 +- .../public/templates/layers/esri-feature.html | 28 +- .../public/templates/layers/esri-image.html | 40 +- .../public/templates/layers/geojson.html | 26 +- .../public/templates/layers/geopackage.html | 36 +- .../public/templates/layers/image-static.html | 11 +- .../public/templates/layers/layerlib.js | 9 +- .../public/templates/layers/ogc-feature.html | 8 +- .../public/templates/layers/vector-tiles.html | 20 +- .../public/templates/layers/wfs.html | 30 +- .../public/templates/layers/wms.html | 44 +- .../public/templates/layers/xyz.html | 8 +- .../public/templates/load-test.html | 15 +- .../templates/outliers/outlier-GeoAI.html | 12 +- .../templates/outliers/outlier-geometry.html | 79 +- .../templates/outliers/outlier-metadata.html | 40 +- .../templates/outliers/outlier-style.html | 36 +- .../public/templates/pygeoapi-processes.html | 28 +- .../public/templates/sandbox.html | 20 +- .../geoview-core/public/templates/test.html | 14 +- .../public/templates/ui-components.html | 21 +- packages/geoview-core/schema.json | 73 +- .../geoview-core/src/api/config/config-api.ts | 6 +- .../abstract-geoview-esri-layer-config.ts | 14 +- .../abstract-geoview-layer-config.ts | 18 +- .../raster-config/wms-config.ts | 12 +- .../vector-config/geojson-config.ts | 14 +- .../vector-config/wfs-config.ts | 10 +- .../entry-config-base-class.ts | 2 +- .../types/config-validation-schema.json | 70 +- .../src/api/config/types/map-schema-types.ts | 11 - packages/geoview-core/src/api/config/utils.ts | 20 +- .../src/api/config/uuid-config-reader.ts | 53 +- .../legend-event-processor.ts | 8 +- .../add-new-layer/add-new-layer.tsx | 93 +- .../core/utils/config/config-validation.ts | 85 +- .../utils/config/reader/uuid-config-reader.ts | 70 +- .../validation-classes/config-base-class.ts | 3 +- .../esri-dynamic-layer-entry-config.ts | 2 +- .../esri-image-layer-entry-config.ts | 2 +- .../ogc-wms-layer-entry-config.ts | 9 +- .../csv-layer-entry-config.ts | 20 +- .../esri-feature-layer-entry-config.ts | 2 +- .../geojson-layer-entry-config.ts | 24 +- .../geopackage-layer-config-entry.ts | 20 +- .../ogc-layer-entry-config.ts | 2 +- .../wfs-layer-entry-config.ts | 2 +- .../geoview-core/src/core/utils/utilities.ts | 24 +- .../geoview-layers/abstract-geoview-layers.ts | 44 +- .../layer/geoview-layers/esri-layer-common.ts | 35 +- .../geoview-layers/raster/esri-dynamic.ts | 15 +- .../layer/geoview-layers/raster/esri-image.ts | 14 +- .../geoview-layers/raster/image-static.ts | 14 +- .../geoview-layers/raster/vector-tiles.ts | 35 +- .../geo/layer/geoview-layers/raster/wms.ts | 36 +- .../layer/geoview-layers/raster/xyz-tiles.ts | 24 +- .../vector/abstract-geoview-vector.ts | 33 +- .../geo/layer/geoview-layers/vector/csv.ts | 4 +- .../geoview-layers/vector/esri-feature.ts | 9 +- .../layer/geoview-layers/vector/geojson.ts | 28 +- .../layer/geoview-layers/vector/geopackage.ts | 6 +- .../geoview-layers/vector/ogc-feature.ts | 14 +- .../geo/layer/geoview-layers/vector/wfs.ts | 11 +- .../layer/gv-layers/abstract-base-layer.ts | 16 +- .../geo/layer/gv-layers/abstract-gv-layer.ts | 11 +- .../layer/gv-layers/raster/gv-esri-dynamic.ts | 13 +- .../layer/gv-layers/raster/gv-esri-image.ts | 12 +- .../layer/gv-layers/raster/gv-image-static.ts | 11 +- .../src/geo/layer/gv-layers/raster/gv-wms.ts | 9 +- .../geo/layer/gv-layers/tile/gv-xyz-tiles.ts | 8 +- .../src/geo/layer/gv-layers/utils.ts | 23 +- .../gv-layers/vector/abstract-gv-vector.ts | 15 +- .../layer/gv-layers/vector/gv-esri-feature.ts | 5 +- .../layer/gv-layers/vector/gv-ogc-feature.ts | 5 +- .../layer/gv-layers/vector/gv-vector-tiles.ts | 8 +- .../src/geo/layer/gv-layers/vector/gv-wfs.ts | 5 +- .../src/geo/layer/layer-mockup.ts | 18 +- .../layer/layer-sets/abstract-layer-set.ts | 17 +- packages/geoview-core/src/geo/layer/layer.ts | 4 +- .../src/geo/map/map-schema-types.ts | 11 +- packages/geoview-time-slider/schema.json | 32 +- .../src/time-slider-types.tsx | 5 +- .../geoview-time-slider/src/time-slider.tsx | 6 +- 150 files changed, 2786 insertions(+), 4121 deletions(-) diff --git a/README.md b/README.md index 2f48c9733ec..4cb0d02cbbe 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ $ cd geoview $ npm install -g @microsoft/rush ``` -* Note: you can also use the included `shell.nix` to setup your dev environment if you are on Mac/Linux/WSL. +- Note: you can also use the included `shell.nix` to setup your dev environment if you are on Mac/Linux/WSL. ### Install dependencies @@ -189,14 +189,8 @@ Below is an example of a simple map, with an id **mapOne**. This map will be usi 'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'esriDynamicLYR2', - 'geoviewLayerName': { - 'en': 'Energy', - 'fr': 'Energy' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer', - 'fr': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer' - }, + 'geoviewLayerName': 'Energy', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [{ 'layerId': '0' }, { 'layerId': '6' }] } diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 3c3457a3dd5..56a0406f882 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -12,10 +12,10 @@ importers: devDependencies: '@babel/core': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@babel/eslint-parser': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7)(eslint@8.57.1) + version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1) '@typescript-eslint/eslint-plugin': specifier: ~7.8.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.1)(typescript@4.9.5) @@ -27,25 +27,25 @@ importers: version: 8.57.1 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.1)(eslint@8.57.1) + version: 19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.2)(eslint@8.57.1) eslint-config-prettier: specifier: ^8.3.0 version: 8.10.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.25.4 - version: 2.30.0(eslint@8.57.1) + version: 2.31.0(eslint@8.57.1) eslint-plugin-jest: specifier: ^26.0.0 version: 26.9.0(@typescript-eslint/eslint-plugin@7.8.0)(eslint@8.57.1)(jest@27.5.1)(typescript@4.9.5) eslint-plugin-jsx-a11y: specifier: ^6.5.1 - version: 6.10.0(eslint@8.57.1) + version: 6.10.2(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.0.0 version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.1)(prettier@2.8.8) eslint-plugin-react: specifier: ^7.28.0 - version: 7.37.1(eslint@8.57.1) + version: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.3.0 version: 4.6.2(eslint@8.57.1) @@ -64,19 +64,19 @@ importers: devDependencies: '@babel/core': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@babel/eslint-parser': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7)(eslint@8.57.1) + version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1) '@babel/runtime': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@types/react': specifier: ^18.2.0 - version: 18.3.11 + version: 18.3.12 '@types/react-dom': specifier: ^18.2.0 - version: 18.3.0 + version: 18.3.1 '@typescript-eslint/eslint-plugin': specifier: ~7.8.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.1)(typescript@4.9.5) @@ -88,25 +88,25 @@ importers: version: 8.57.1 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.1)(eslint@8.57.1) + version: 19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.2)(eslint@8.57.1) eslint-config-prettier: specifier: ^8.3.0 version: 8.10.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.25.4 - version: 2.30.0(eslint@8.57.1) + version: 2.31.0(eslint@8.57.1) eslint-plugin-jest: specifier: ^26.0.0 version: 26.9.0(@typescript-eslint/eslint-plugin@7.8.0)(eslint@8.57.1)(jest@27.5.1)(typescript@4.9.5) eslint-plugin-jsx-a11y: specifier: ^6.5.1 - version: 6.10.0(eslint@8.57.1) + version: 6.10.2(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.0.0 version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.1)(prettier@2.8.8) eslint-plugin-react: specifier: ^7.28.0 - version: 7.37.1(eslint@8.57.1) + version: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.3.0 version: 4.6.2(eslint@8.57.1) @@ -131,19 +131,19 @@ importers: devDependencies: '@babel/core': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@babel/eslint-parser': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7)(eslint@8.57.1) + version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1) '@babel/runtime': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@types/react': specifier: ^18.2.0 - version: 18.3.11 + version: 18.3.12 '@types/react-dom': specifier: ^18.2.0 - version: 18.3.0 + version: 18.3.1 '@typescript-eslint/eslint-plugin': specifier: ~7.8.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.1)(typescript@4.9.5) @@ -155,25 +155,25 @@ importers: version: 8.57.1 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.1)(eslint@8.57.1) + version: 19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.2)(eslint@8.57.1) eslint-config-prettier: specifier: ^8.3.0 version: 8.10.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.25.4 - version: 2.30.0(eslint@8.57.1) + version: 2.31.0(eslint@8.57.1) eslint-plugin-jest: specifier: ^26.0.0 version: 26.9.0(@typescript-eslint/eslint-plugin@7.8.0)(eslint@8.57.1)(jest@27.5.1)(typescript@4.9.5) eslint-plugin-jsx-a11y: specifier: ^6.5.1 - version: 6.10.0(eslint@8.57.1) + version: 6.10.2(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.0.0 version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.1)(prettier@2.8.8) eslint-plugin-react: specifier: ^7.28.0 - version: 7.37.1(eslint@8.57.1) + version: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.3.0 version: 4.6.2(eslint@8.57.1) @@ -194,40 +194,40 @@ importers: dependencies: '@emotion/react': specifier: ^11.13.3 - version: 11.13.3(@types/react@18.3.11)(react@18.3.1) + version: 11.13.3(@types/react@18.3.12)(react@18.3.1) '@emotion/styled': specifier: ^11.13.0 - version: 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) '@fontsource/roboto': specifier: ^5.0.13 version: 5.1.0 '@mui/base': specifier: 5.0.0-beta.37 - version: 5.0.0-beta.37(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) + version: 5.0.0-beta.37(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) '@mui/icons-material': specifier: ^6.0.2 - version: 6.1.2(@mui/material@6.1.2)(@types/react@18.3.11)(react@18.3.1) + version: 6.1.6(@mui/material@6.1.6)(@types/react@18.3.12)(react@18.3.1) '@mui/lab': specifier: 6.0.0-beta.9 - version: 6.0.0-beta.9(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.2)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) + version: 6.0.0-beta.9(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.6)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) '@mui/material': specifier: ^6.0.2 - version: 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) + version: 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) '@mui/styles': specifier: ^6.0.2 - version: 6.1.2(@types/react@18.3.11)(react@18.3.1) + version: 6.1.6(@types/react@18.3.12)(react@18.3.1) '@mui/system': specifier: ^6.0.2 - version: 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react@18.3.1) + version: 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react@18.3.1) '@mui/x-date-pickers': specifier: ^7.15.0 - version: 7.18.0(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.2)(@mui/system@6.1.2)(@types/react@18.3.11)(dayjs@1.11.13)(react-dom@18.3.1)(react@18.3.1) + version: 7.22.1(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.6)(@mui/system@6.1.6)(@types/react@18.3.12)(dayjs@1.11.13)(react-dom@18.3.1)(react@18.3.1) '@nieuwlandgeo/sldreader': specifier: ^0.3.1 version: 0.3.1(ol@10.2.1) '@react-spring/web': specifier: ^9.7.3 - version: 9.7.4(react-dom@18.3.1)(react@18.3.1) + version: 9.7.5(react-dom@18.3.1)(react@18.3.1) ajv: specifier: ^8.16.0 version: 8.17.1 @@ -275,7 +275,7 @@ importers: version: 7.4.7(react@18.3.1) material-react-table: specifier: ^2.13.2 - version: 2.13.3(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/icons-material@6.1.2)(@mui/material@6.1.2)(@mui/x-date-pickers@7.18.0)(react-dom@18.3.1)(react@18.3.1) + version: 2.13.3(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/icons-material@6.1.6)(@mui/material@6.1.6)(@mui/x-date-pickers@7.22.1)(react-dom@18.3.1)(react@18.3.1) ol: specifier: ^10.1.0 version: 10.2.1 @@ -284,7 +284,7 @@ importers: version: 12.3.5(ol@10.2.1) proj4: specifier: ^2.7.5 - version: 2.12.1 + version: 2.14.0 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -299,7 +299,7 @@ importers: version: 18.3.1(react@18.3.1) react-dropzone: specifier: ^14.2.3 - version: 14.2.6(react@18.3.1) + version: 14.3.1(react@18.3.1) react-i18next: specifier: ^12.2.0 version: 12.3.1(i18next@22.5.1)(react-dom@18.3.1)(react@18.3.1) @@ -308,95 +308,95 @@ importers: version: 18.3.1(react@18.3.1) sanitize-html: specifier: ^2.7.3 - version: 2.13.0 + version: 2.13.1 sql.js: specifier: ^1.8.0 - version: 1.11.0 + version: 1.12.0 yet-another-react-lightbox: specifier: ^3.11.3 version: 3.21.6(react-dom@18.3.1)(react@18.3.1) zustand: specifier: ~4.4.1 - version: 4.4.7(@types/react@18.3.11)(react@18.3.1) + version: 4.4.7(@types/react@18.3.12)(react@18.3.1) devDependencies: '@babel/cli': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/core': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@babel/eslint-parser': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7)(eslint@8.57.1) + version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1) '@babel/plugin-proposal-decorators': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-proposal-do-expressions': specifier: ^7.16.7 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-proposal-export-default-from': specifier: ^7.16.7 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-proposal-function-bind': specifier: ^7.16.7 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-proposal-function-sent': specifier: ^7.16.7 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-proposal-pipeline-operator': specifier: ^7.16.7 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-proposal-throw-expressions': specifier: ^7.16.7 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-dynamic-import': specifier: ^7.8.3 - version: 7.8.3(@babel/core@7.25.7) + version: 7.8.3(@babel/core@7.26.0) '@babel/plugin-syntax-import-meta': specifier: ^7.10.4 - version: 7.10.4(@babel/core@7.25.7) + version: 7.10.4(@babel/core@7.26.0) '@babel/plugin-transform-class-properties': specifier: ^7.22.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-export-namespace-from': specifier: ^7.22.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-json-strings': specifier: ^7.22.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-logical-assignment-operators': specifier: ^7.22.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-nullish-coalescing-operator': specifier: ^7.22.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-numeric-separator': specifier: ^7.22.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-optional-chaining': specifier: ^7.22.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-private-methods': specifier: ^7.22.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-runtime': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/preset-env': specifier: ^7.16.11 - version: 7.25.7(@babel/core@7.25.7) + version: 7.26.0(@babel/core@7.26.0) '@babel/preset-react': specifier: ^7.16.7 - version: 7.25.7(@babel/core@7.25.7) + version: 7.25.9(@babel/core@7.26.0) '@babel/preset-typescript': specifier: ^7.16.7 - version: 7.25.7(@babel/core@7.25.7) + version: 7.26.0(@babel/core@7.26.0) '@babel/runtime': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@babel/runtime-corejs3': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@types/create-react-class': specifier: ^15.6.3 version: 15.6.8 @@ -411,7 +411,7 @@ importers: version: 27.5.2 '@types/lodash': specifier: ^4.14.188 - version: 4.17.9 + version: 4.17.13 '@types/lodash-webpack-plugin': specifier: ^0.11.6 version: 0.11.9 @@ -420,10 +420,10 @@ importers: version: 2.5.5 '@types/react': specifier: ^18.2.0 - version: 18.3.11 + version: 18.3.12 '@types/react-dom': specifier: ^18.2.0 - version: 18.3.0 + version: 18.3.1 '@types/react-router-dom': specifier: ^5.3.3 version: 5.3.3 @@ -441,10 +441,10 @@ importers: version: 7.8.0(eslint@8.57.1)(typescript@4.9.5) babel-jest: specifier: ^27.4.6 - version: 27.5.1(@babel/core@7.25.7) + version: 27.5.1(@babel/core@7.26.0) babel-loader: specifier: ^8.2.3 - version: 8.4.1(@babel/core@7.25.7)(webpack@5.95.0) + version: 8.4.1(@babel/core@7.26.0)(webpack@5.96.1) babel-plugin-import: specifier: ^1.13.3 version: 1.13.8 @@ -453,43 +453,43 @@ importers: version: 3.3.4 compression-webpack-plugin: specifier: ^10.0.0 - version: 10.0.0(webpack@5.95.0) + version: 10.0.0(webpack@5.96.1) copy-webpack-plugin: specifier: ^10.2.4 - version: 10.2.4(webpack@5.95.0) + version: 10.2.4(webpack@5.96.1) css-loader: specifier: ^6.6.0 - version: 6.11.0(webpack@5.95.0) + version: 6.11.0(webpack@5.96.1) eslint: specifier: ^8.8.0 version: 8.57.1 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.1)(eslint@8.57.1) + version: 19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.2)(eslint@8.57.1) eslint-config-prettier: specifier: ^8.3.0 version: 8.10.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.25.4 - version: 2.30.0(eslint@8.57.1) + version: 2.31.0(eslint@8.57.1) eslint-plugin-jest: specifier: ^26.0.0 version: 26.9.0(@typescript-eslint/eslint-plugin@7.8.0)(eslint@8.57.1)(jest@27.5.1)(typescript@4.9.5) eslint-plugin-jsx-a11y: specifier: ^6.5.1 - version: 6.10.0(eslint@8.57.1) + version: 6.10.2(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.0.0 version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.1)(prettier@2.8.8) eslint-plugin-react: specifier: ^7.28.0 - version: 7.37.1(eslint@8.57.1) + version: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.3.0 version: 4.6.2(eslint@8.57.1) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.95.0) + version: 6.2.0(webpack@5.96.1) gh-pages: specifier: ^3.2.3 version: 3.2.3 @@ -498,31 +498,31 @@ importers: version: 7.2.3 html-loader: specifier: ~5.0.0 - version: 5.0.0(webpack@5.95.0) + version: 5.0.0(webpack@5.96.1) html-webpack-plugin: specifier: ^5.5.0 - version: 5.6.0(webpack@5.95.0) + version: 5.6.3(webpack@5.96.1) jest: specifier: ^27.4.7 version: 27.5.1 lodash-webpack-plugin: specifier: ^0.11.6 - version: 0.11.6(webpack@5.95.0) + version: 0.11.6(webpack@5.96.1) markdown-loader: specifier: ~8.0.0 - version: 8.0.0(webpack@5.95.0) + version: 8.0.0(webpack@5.96.1) prettier: specifier: ^2.6.0 version: 2.8.8 simple-zustand-devtools: specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(zustand@4.4.7) + version: 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(zustand@4.4.7) style-loader: specifier: ^3.3.1 - version: 3.3.4(webpack@5.95.0) + version: 3.3.4(webpack@5.96.1) terser-webpack-plugin: specifier: ^5.3.1 - version: 5.3.10(webpack@5.95.0) + version: 5.3.10(webpack@5.96.1) typedoc: specifier: ^0.23.14 version: 0.23.28(typescript@4.9.5) @@ -531,7 +531,7 @@ importers: version: 4.9.5 webpack: specifier: ^5.68.0 - version: 5.95.0(webpack-cli@4.10.0) + version: 5.96.1(webpack-cli@4.10.0) webpack-bundle-analyzer: specifier: ^4.5.0 version: 4.10.2 @@ -540,10 +540,10 @@ importers: version: 3.1.0 webpack-cli: specifier: ^4.9.2 - version: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.95.0) + version: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.96.1) webpack-dev-server: specifier: ^4.15.1 - version: 4.15.2(webpack-cli@4.10.0)(webpack@5.95.0) + version: 4.15.2(webpack-cli@4.10.0)(webpack@5.96.1) webpack-merge: specifier: ^5.8.0 version: 5.10.0 @@ -552,10 +552,10 @@ importers: dependencies: '@mui/material': specifier: ^6.0.2 - version: 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) + version: 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) geochart: specifier: Canadian-Geospatial-Platform/geochart#develop - version: github.com/Canadian-Geospatial-Platform/geochart/c4a471e1fb15753a6fec3eb3bc86ab07cb350ce2(@types/react@18.3.11) + version: github.com/Canadian-Geospatial-Platform/geochart/c4a471e1fb15753a6fec3eb3bc86ab07cb350ce2(@types/react@18.3.12) geoview-core: specifier: workspace:~1.0.0 version: link:../geoview-core @@ -565,22 +565,22 @@ importers: devDependencies: '@babel/core': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@babel/eslint-parser': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7)(eslint@8.57.1) + version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1) '@babel/runtime': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@types/lodash': specifier: ^4.14.188 - version: 4.17.9 + version: 4.17.13 '@types/react': specifier: ^18.2.0 - version: 18.3.11 + version: 18.3.12 '@types/react-dom': specifier: ^18.2.0 - version: 18.3.0 + version: 18.3.1 '@typescript-eslint/eslint-plugin': specifier: ~7.8.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.1)(typescript@4.9.5) @@ -592,25 +592,25 @@ importers: version: 8.57.1 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.1)(eslint@8.57.1) + version: 19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.2)(eslint@8.57.1) eslint-config-prettier: specifier: ^8.3.0 version: 8.10.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.25.4 - version: 2.30.0(eslint@8.57.1) + version: 2.31.0(eslint@8.57.1) eslint-plugin-jest: specifier: ^26.0.0 version: 26.9.0(@typescript-eslint/eslint-plugin@7.8.0)(eslint@8.57.1)(jest@27.5.1)(typescript@4.9.5) eslint-plugin-jsx-a11y: specifier: ^6.5.1 - version: 6.10.0(eslint@8.57.1) + version: 6.10.2(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.0.0 version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.1)(prettier@2.8.8) eslint-plugin-react: specifier: ^7.28.0 - version: 7.37.1(eslint@8.57.1) + version: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.3.0 version: 4.6.2(eslint@8.57.1) @@ -647,16 +647,16 @@ importers: devDependencies: '@babel/core': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@babel/eslint-parser': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7)(eslint@8.57.1) + version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1) '@babel/runtime': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@types/lodash': specifier: ^4.14.188 - version: 4.17.9 + version: 4.17.13 '@typescript-eslint/eslint-plugin': specifier: ~7.8.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.1)(typescript@4.9.5) @@ -668,25 +668,25 @@ importers: version: 8.57.1 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.1)(eslint@8.57.1) + version: 19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.2)(eslint@8.57.1) eslint-config-prettier: specifier: ^8.3.0 version: 8.10.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.25.4 - version: 2.30.0(eslint@8.57.1) + version: 2.31.0(eslint@8.57.1) eslint-plugin-jest: specifier: ^26.0.0 version: 26.9.0(@typescript-eslint/eslint-plugin@7.8.0)(eslint@8.57.1)(jest@27.5.1)(typescript@4.9.5) eslint-plugin-jsx-a11y: specifier: ^6.5.1 - version: 6.10.0(eslint@8.57.1) + version: 6.10.2(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.0.0 version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.1)(prettier@2.8.8) eslint-plugin-react: specifier: ^7.28.0 - version: 7.37.1(eslint@8.57.1) + version: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.3.0 version: 4.6.2(eslint@8.57.1) @@ -707,26 +707,26 @@ importers: dependencies: '@mui/material': specifier: ^6.0.2 - version: 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) + version: 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) geoview-core: specifier: workspace:~1.0.0 version: link:../geoview-core devDependencies: '@babel/core': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@babel/eslint-parser': specifier: ^7.17.0 - version: 7.25.7(@babel/core@7.25.7)(eslint@8.57.1) + version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1) '@babel/runtime': specifier: ^7.17.0 - version: 7.25.7 + version: 7.26.0 '@types/react': specifier: ^18.2.0 - version: 18.3.11 + version: 18.3.12 '@types/react-dom': specifier: ^18.2.0 - version: 18.3.0 + version: 18.3.1 '@typescript-eslint/eslint-plugin': specifier: ~7.8.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.1)(typescript@4.9.5) @@ -738,25 +738,25 @@ importers: version: 8.57.1 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.1)(eslint@8.57.1) + version: 19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.2)(eslint@8.57.1) eslint-config-prettier: specifier: ^8.3.0 version: 8.10.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.25.4 - version: 2.30.0(eslint@8.57.1) + version: 2.31.0(eslint@8.57.1) eslint-plugin-jest: specifier: ^26.0.0 version: 26.9.0(@typescript-eslint/eslint-plugin@7.8.0)(eslint@8.57.1)(jest@27.5.1)(typescript@4.9.5) eslint-plugin-jsx-a11y: specifier: ^6.5.1 - version: 6.10.0(eslint@8.57.1) + version: 6.10.2(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.0.0 version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.1)(prettier@2.8.8) eslint-plugin-react: specifier: ^7.28.0 - version: 7.37.1(eslint@8.57.1) + version: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.3.0 version: 4.6.2(eslint@8.57.1) @@ -786,14 +786,14 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@babel/cli@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-vQw4QjrqjLSuL0Tt3gfVXbxEHOfsCcHN8tKyTclpSMYLq3Bp0BTzWYZfMKBs3PQ+to8q3BnumBIAsMdOqDJ6nw==} + /@babel/cli@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-I+02IfrTiSanpxJBlZQYb18qCxB6c2Ih371cVpfgIrPQrjAYkf45XxomTJOG8JBWX5GY35/+TmhCMdJ4ZPkL8Q==} engines: {node: '>=6.9.0'} hasBin: true peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 + '@babel/core': 7.26.0 '@jridgewell/trace-mapping': 0.3.25 commander: 6.2.1 convert-source-map: 2.0.0 @@ -806,32 +806,33 @@ packages: chokidar: 3.6.0 dev: true - /@babel/code-frame@7.25.7: - resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.25.7 - picocolors: 1.1.0 + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 - /@babel/compat-data@7.25.7: - resolution: {integrity: sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==} + /@babel/compat-data@7.26.2: + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.25.7: - resolution: {integrity: sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==} + /@babel/core@7.26.0: + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) - '@babel/helpers': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 convert-source-map: 2.0.0 debug: 4.3.7 gensync: 1.0.0-beta.2 @@ -841,95 +842,96 @@ packages: - supports-color dev: true - /@babel/eslint-parser@7.25.7(@babel/core@7.25.7)(eslint@8.57.1): - resolution: {integrity: sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw==} + /@babel/eslint-parser@7.25.9(@babel/core@7.26.0)(eslint@8.57.1): + resolution: {integrity: sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 dependencies: - '@babel/core': 7.25.7 + '@babel/core': 7.26.0 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.57.1 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true - /@babel/generator@7.25.7: - resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} + /@babel/generator@7.26.2: + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.7 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 - /@babel/helper-annotate-as-pure@7.25.7: - resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} + /@babel/helper-annotate-as-pure@7.25.9: + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 dev: true - /@babel/helper-builder-binary-assignment-operator-visitor@7.25.7: - resolution: {integrity: sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.25.9: + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-compilation-targets@7.25.7: - resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} + /@babel/helper-compilation-targets@7.25.9: + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - browserslist: 4.24.0 + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 lru-cache: 5.1.1 semver: 6.3.1 dev: true - /@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==} + /@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.7) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==} + /@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 regexpu-core: 6.1.1 semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.7): + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0): resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 debug: 4.3.7 lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -937,1405 +939,1315 @@ packages: - supports-color dev: true - /@babel/helper-member-expression-to-functions@7.25.7: - resolution: {integrity: sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==} + /@babel/helper-member-expression-to-functions@7.25.9: + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-module-imports@7.25.7: - resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} + /@babel/helper-module-imports@7.25.9: + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-optimise-call-expression@7.25.7: - resolution: {integrity: sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==} + /@babel/helper-optimise-call-expression@7.25.9: + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 dev: true - /@babel/helper-plugin-utils@7.25.7: - resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} + /@babel/helper-plugin-utils@7.25.9: + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==} + /@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-wrap-function': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-replace-supers@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==} + /@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-simple-access@7.25.7: - resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} + /@babel/helper-simple-access@7.25.9: + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-skip-transparent-expression-wrappers@7.25.7: - resolution: {integrity: sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==} + /@babel/helper-skip-transparent-expression-wrappers@7.25.9: + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-string-parser@7.25.7: - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + /@babel/helper-string-parser@7.25.9: + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.25.7: - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + /@babel/helper-validator-identifier@7.25.9: + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.25.7: - resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} + /@babel/helper-validator-option@7.25.9: + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-wrap-function@7.25.7: - resolution: {integrity: sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==} + /@babel/helper-wrap-function@7.25.9: + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers@7.25.7: - resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} + /@babel/helpers@7.26.0: + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.7 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 dev: true - /@babel/highlight@7.25.7: - resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 - - /@babel/parser@7.25.7: - resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==} + /@babel/parser@7.26.2: + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==} + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==} + /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/plugin-transform-optional-chaining': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-decorators@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-q1mqqqH0e1lhmsEQHV5U8OmdueBC2y0RFr2oUzZoFRtN3MvPmt2fsFRcNQAoGLTSNdHBFUYGnlgcRFhkBbKjPw==} + /@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-decorators': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-do-expressions@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-A7fZDDfeQHrQettQAUeExDDQLayRxkbGa+/3MDoPYEpbAk6+iG2RxCSTE5ZG8L575CIm7f+Bsh1CAYjoHAestw==} + /@babel/plugin-proposal-do-expressions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-0IkO77tw2OcZua/ADovH//IEiUyQpNjWvLyMFNidXnZx4eEriQjwkH9t/EyQZUaQu0KOxxdszC7m8VUVs51ydg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-do-expressions': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-proposal-export-default-from@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-Egdiuy7pLTyaPkIr6rItNyFVbblTmx3VgqY+72KiS9BzcA+SMyrS9zSumQeSANo8uE3Kax0ZUMkpNh0Q+mbNwg==} + /@babel/plugin-proposal-export-default-from@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-export-default-from': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-proposal-function-bind@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-p7k2v6GkOc6Gy9ZhyX0gUGjuj2FvOjW5L2cCdd+WTm6EuL2hepGIcDSQXvGfETH7PJ5pvtcaSHVIU7blrN3WJw==} + /@babel/plugin-proposal-function-bind@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-1g0b0XU667A2IZNdhovGr0ZdywJxf081B8JN5qyiNqzJK7GtdYBxGcuA+lq7q8OgO4cAc4vF57Ad0XLoDBsJAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-function-bind': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-proposal-function-sent@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-ZsNyYHzDAXuJWqSc5YhtAOx7GR8itltKU6iMJhqheo4rGu/YrL5Mr+4ju5bEUErHEQKOEo4DnxBv8mDPelZ3vg==} + /@babel/plugin-proposal-function-sent@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Qi9KEBTY6WAjHBeHJ1jm4HyGlwvZLfjUaxO9g1jKHqyQPe6c+q7DlKgyrBUH7v+VWLJ0bNy5cQlXHtOV5/uibw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-wrap-function': 7.25.7 - '@babel/plugin-syntax-function-sent': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-pipeline-operator@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-PXvHSmS+OeOb6/nmytdmd8NX3QLY4fa4+t2VchuGjTX4RLfrd9dgS1JG/GZPjEzzSJmnIUGQtAS3Shh8o7d3Vw==} + /@babel/plugin-proposal-pipeline-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-rmb8zOYFdVz6y/OqJn6RfbIBiJPQdUbHg7R5ibym5KM0e8uNGdU9yfn9cjkBLwS22Lqd+ey3D8/UvK5GLyyh5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-pipeline-operator': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-pipeline-operator': 7.25.9(@babel/core@7.26.0) dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.7): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 + '@babel/core': 7.26.0 dev: true - /@babel/plugin-proposal-throw-expressions@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-dRhgWKBKoe5o0RqP6sRE0wpVzyMKPE9VPyRObwDG34GnC4KuGx2OIDs4vbrm5BVT4EZy1h9uJlSUfKS4vSKiXA==} + /@babel/plugin-proposal-throw-expressions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Zw62DP6cdbXXEtTNMWYY10rIOPGAWPk8qdqM+AT3JbHtFq8ook0JXJCWdQJTlSVACHo0R6lvoNKO9B1ZVkjClg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-throw-expressions': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.7): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.7): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.7): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.7): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-decorators@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-oXduHo642ZhstLVYTe2z2GSJIruU0c/W3/Ghr6A5yGMsVrvdnxO1z+3pbTcT7f3/Clnt+1z8D/w1r1f1SHaCHw==} + /@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-do-expressions@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-/0lEEEOJ8bsvp1DuaRhHZ6gxt1HbpYljZrFB/I7qiNODD9FNB3G5hFNsboHts2FaSlH/kQaJpVN40AYXpmfzPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - dev: true - - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.7): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - dev: true - - /@babel/plugin-syntax-export-default-from@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-LRUCsC0YucSjabsmxx6yly8+Q/5mxKdp9gemlpR9ro3bfpcOQOXx/CHivs7QCbjgygd6uQ2GcRfHu1FVax/hgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - dev: true - - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.7): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - dev: true - - /@babel/plugin-syntax-function-bind@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-MWic4wK+7ci+gdUUhC9ljdUtMBGUfvVSx/X+yxxiELLTUecATlkjsJipJmIxC5gz2CSJ6e8y+zx39XxH+dSeUQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - dev: true - - /@babel/plugin-syntax-function-sent@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-pHEG0epLjZM9aJsL9rwaT+YaEOSRQbjcc5T8EUIZGf9JB7CBDi/rmQuIMQ3kvvIPBqCsPj9MTFdGxqT5QkHZSg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==} + /@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==} + /@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.7): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.7): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==} + /@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.7): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.7): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.7): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.7): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.7): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.7): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-pipeline-operator@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-8xa7wyr0Ppxy7j4FaakNSaVNrDQfTKmO/+iswNuj+ZSx7GP+UReoip4YUeus3eFWG1mzx50RZf8fherszXTtgg==} + /@babel/plugin-syntax-pipeline-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-W0KjBvv8uT4A8DUoRNpXEHkKekqO/PC57doaWCqbJeG0lGxKFh7w7/PHYPmwgF+jKxekNnc+YOMQNCo94d8MJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.7): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - dev: true - - /@babel/plugin-syntax-throw-expressions@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-UydaKYt9Iw3iay5ylLxE/nEUYjGAptjqrzi+VZvkm9bx0dzPw4R0CXBvataxrlEeWX2YRvWmX6CxkD9Tn6o+LA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.7): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==} + /@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.7): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==} + /@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-async-generator-functions@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-4B6OhTrwYKHYYgcwErvZjbmH9X5TxQBsaBHdzEIB4l71gR5jh/tuHGlb9in47udL2+wVUcOz5XXhhfhVJwEpEg==} + /@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.7) - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==} + /@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==} + /@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==} + /@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-class-properties@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==} + /@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-rvUUtoVlkDWtDWxGAiiQj0aNktTPn3eFynBcMC2IhsXweehwgdI9ODe+XjWw515kEmv22sSOTp/rxIRuTiB7zg==} + /@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-classes@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==} + /@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.7) - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==} + /@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/template': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 dev: true - /@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==} + /@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==} + /@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==} + /@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==} + /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-dynamic-import@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-UvcLuual4h7/GfylKm2IAA3aph9rwvAM2XBA0uPKU3lca+Maai4jBjjEVUS568ld6kJcgbouuumCBhMd/Yz17w==} + /@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==} + /@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-export-namespace-from@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-h3MDAP5l34NQkkNulsTNyjdaR+OiB0Im67VU//sFupouP8Q6m9Spy7l66DcaAQxtmCqGdanPByLsnwFttxKISQ==} + /@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-for-of@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==} + /@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-function-name@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==} + /@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-json-strings@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-Ot43PrL9TEAiCe8C/2erAjXMeVSnE/BLEx6eyrKLNFCCw5jvhTHKyHxdI1pA0kz5njZRYAnMO2KObGqOCRDYSA==} + /@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-literals@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==} + /@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-iImzbA55BjiovLyG2bggWS+V+OLkaBorNvc/yJoeeDQGztknRnDdYfp2d/UPmunZYEnZi6Lg8QcTmNMHOB0lGA==} + /@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==} + /@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==} + /@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==} + /@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-simple-access': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==} + /@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==} + /@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==} + /@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-new-target@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==} + /@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-FbuJ63/4LEL32mIxrxwYaqjJxpbzxPVQj5a+Ebrc8JICV6YX8nE53jY+K0RZT3um56GoNWgkS2BQ/uLGTjtwfw==} + /@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-numeric-separator@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-8CbutzSSh4hmD+jJHIA8vdTNk15kAzOnFLVVgBSMGr28rt85ouT01/rezMecks9pkU939wDInImwCKv4ahU4IA==} + /@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-object-rest-spread@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-1JdVKPhD7Y5PvgfFy0Mv2brdrolzpzSoUq2pr6xsR+m+3viGGeHEokFKsCgOkbeFOQxfB1Vt2F0cPJLRpFI4Zg==} + /@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-object-super@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==} + /@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-optional-catch-binding@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-m9obYBA39mDPN7lJzD5WkGGb0GO54PPLXsbcnj1Hyeu8mSRz7Gb4b1A6zxNX32ZuUySDK4G6it8SDFWD1nCnqg==} + /@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-optional-chaining@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-h39agClImgPWg4H8mYVAbD1qP9vClFbEjqoJmt87Zen8pjqK8FTPUwrOXAvqu5soytwxrLMd2fx2KSCp2CHcNg==} + /@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-parameters@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==} + /@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==} + /@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-LzA5ESzBy7tqj00Yjey9yWfs3FKy4EmJyKOSWld144OxkTji81WWnUT8nkLUn+imN/zHL8ZQlOu/MTUAhHaX3g==} + /@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==} + /@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-react-display-name@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-r0QY7NVU8OnrwE+w2IWiRom0wwsTbjx4+xH2RTd7AVdof3uurXOF+/mXHQDRk+2jIvWgSaCHKMgggfvM4dyUGA==} + /@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-react-jsx-development@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-5yd3lH1PWxzW6IZj+p+Y4OLQzz0/LzlOG8vGqonHfVR3euf1vyzyMUJk9Ac+m97BH46mFc/98t9PmYLyvgL3qg==} + /@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==} + /@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-react-pure-annotations@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-6YTHJ7yjjgYqGc8S+CbEXhLICODk0Tn92j+vNJo07HFk9t3bjFgAKxPLFhHwF2NjmQVSI1zBRfBWUeVBa2osfA==} + /@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-regenerator@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==} + /@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==} + /@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-runtime@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==} + /@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.7) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.7) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==} + /@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-spread@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==} + /@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==} + /@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==} + /@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==} + /@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-typescript@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==} + /@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==} + /@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==} + /@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==} + /@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==} + /@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/preset-env@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g==} + /@babel/preset-env@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.25.7 - '@babel/core': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.7) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.7) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.7) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-import-assertions': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.7) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.7) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.7) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.7) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.7) - '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-async-generator-functions': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-block-scoped-functions': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-class-static-block': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-dotall-regex': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-duplicate-keys': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-dynamic-import': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-exponentiation-operator': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-export-namespace-from': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-json-strings': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-logical-assignment-operators': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-member-expression-literals': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-modules-systemjs': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-modules-umd': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-new-target': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-numeric-separator': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-object-rest-spread': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-object-super': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-optional-catch-binding': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-optional-chaining': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-private-property-in-object': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-property-literals': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-reserved-words': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-template-literals': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-typeof-symbol': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-unicode-escapes': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-unicode-property-regex': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-unicode-sets-regex': 7.25.7(@babel/core@7.25.7) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.7) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.7) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.7) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.7) - core-js-compat: 3.38.1 + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.39.0 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.7): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 esutils: 2.0.3 dev: true - /@babel/preset-react@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-GjV0/mUEEXpi1U5ZgDprMRRgajGMRW3G5FjMr5KLKD8nT2fTG8+h/klV3+6Dm5739QE+K5+2e91qFKAYI3pmRg==} + /@babel/preset-react@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-transform-react-display-name': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-react-jsx-development': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-react-pure-annotations': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/preset-typescript@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==} + /@babel/preset-typescript@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/runtime-corejs3@7.25.7: - resolution: {integrity: sha512-gMmIEhg35sXk9Te5qbGp3W9YKrvLt3HV658/d3odWrHSqT0JeG5OzsJWFHRLiOohRyjRsJc/x03DhJm3i8VJxg==} + /@babel/runtime-corejs3@7.26.0: + resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.38.1 + core-js-pure: 3.39.0 regenerator-runtime: 0.14.1 dev: true - /@babel/runtime@7.25.7: - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} + /@babel/runtime@7.26.0: + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.25.7: - resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} + /@babel/template@7.25.9: + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/types': 7.25.7 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 - /@babel/traverse@7.25.7: - resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} + /@babel/traverse@7.25.9: + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/template': 7.25.7 - '@babel/types': 7.25.7 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.25.7: - resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==} + /@babel/types@7.26.0: + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2349,8 +2261,8 @@ packages: /@emotion/babel-plugin@11.12.0: resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} dependencies: - '@babel/helper-module-imports': 7.25.7 - '@babel/runtime': 7.25.7 + '@babel/helper-module-imports': 7.25.9 + '@babel/runtime': 7.26.0 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.2 @@ -2388,7 +2300,7 @@ packages: resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} dev: false - /@emotion/react@11.13.3(@types/react@18.3.11)(react@18.3.1): + /@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1): resolution: {integrity: sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==} peerDependencies: '@types/react': '*' @@ -2397,14 +2309,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 '@emotion/serialize': 1.3.2 '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) '@emotion/utils': 1.4.1 '@emotion/weak-memoize': 0.4.0 - '@types/react': 18.3.11 + '@types/react': 18.3.12 hoist-non-react-statics: 3.3.2 react: 18.3.1 transitivePeerDependencies: @@ -2425,7 +2337,7 @@ packages: resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} dev: false - /@emotion/styled@11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1): + /@emotion/styled@11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1): resolution: {integrity: sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2435,14 +2347,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) '@emotion/serialize': 1.3.2 '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) '@emotion/utils': 1.4.1 - '@types/react': 18.3.11 + '@types/react': 18.3.12 react: 18.3.1 transitivePeerDependencies: - supports-color @@ -2468,8 +2380,8 @@ packages: resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.1): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + /@eslint-community/eslint-utils@4.4.1(eslint@8.57.1): + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -2478,8 +2390,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.11.1: - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + /@eslint-community/regexpp@4.12.1: + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -2511,8 +2423,8 @@ packages: '@floating-ui/utils': 0.2.8 dev: false - /@floating-ui/dom@1.6.11: - resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + /@floating-ui/dom@1.6.12: + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} dependencies: '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.2.8 @@ -2524,7 +2436,7 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.6.11 + '@floating-ui/dom': 1.6.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -2580,7 +2492,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -2601,7 +2513,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -2638,7 +2550,7 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 jest-mock: 27.5.1 dev: true @@ -2648,7 +2560,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 22.7.4 + '@types/node': 22.8.6 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -2677,7 +2589,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -2736,7 +2648,7 @@ packages: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.25.7 + '@babel/core': 7.26.0 '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -2761,7 +2673,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.7.4 + '@types/node': 22.8.6 '@types/yargs': 16.0.9 chalk: 4.1.2 dev: true @@ -2833,7 +2745,7 @@ packages: resolution: {integrity: sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==} dev: false - /@mui/base@5.0.0-beta.37(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1): + /@mui/base@5.0.0-beta.37(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-/o3anbb+DeCng8jNsd3704XtmmLDZju1Fo8R2o7ugrVtPQ/QpcqddwKNzKPZwa0J5T8YNW3ZVuHyQgbTnQLisQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2844,19 +2756,19 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1)(react@18.3.1) - '@mui/types': 7.2.17(@types/react@18.3.11) - '@mui/utils': 5.16.6(@types/react@18.3.11)(react@18.3.1) + '@mui/types': 7.2.19(@types/react@18.3.12) + '@mui/utils': 5.16.6(@types/react@18.3.12)(react@18.3.1) '@popperjs/core': 2.11.8 - '@types/react': 18.3.11 + '@types/react': 18.3.12 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@mui/base@5.0.0-beta.58(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1): + /@mui/base@5.0.0-beta.58(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-P0E7ZrxOuyYqBvVv9w8k7wm+Xzx/KRu+BGgFcR2htTsGCpJNQJCSUXNUZ50MUmSU9hzqhwbQWNXhV1MBTl6F7A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2867,12 +2779,12 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1)(react@18.3.1) - '@mui/types': 7.2.17(@types/react@18.3.11) - '@mui/utils': 6.0.0-rc.0(@types/react@18.3.11)(react@18.3.1) + '@mui/types': 7.2.19(@types/react@18.3.12) + '@mui/utils': 6.0.0-rc.0(@types/react@18.3.12)(react@18.3.1) '@popperjs/core': 2.11.8 - '@types/react': 18.3.11 + '@types/react': 18.3.12 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 @@ -2883,11 +2795,11 @@ packages: resolution: {integrity: sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==} dev: false - /@mui/core-downloads-tracker@6.1.2: - resolution: {integrity: sha512-1oE4U38/TtzLWRYWEm/m70dUbpcvBx0QvDVg6NtpOmSNQC1Mbx0X/rNvYDdZnn8DIsAiVQ+SZ3am6doSswUQ4g==} + /@mui/core-downloads-tracker@6.1.6: + resolution: {integrity: sha512-nz1SlR9TdBYYPz4qKoNasMPRiGb4PaIHFkzLzhju0YVYS5QSuFF2+n7CsiHMIDcHv3piPu/xDWI53ruhOqvZwQ==} dev: false - /@mui/icons-material@5.16.7(@mui/material@5.16.7)(@types/react@18.3.11)(react@18.3.1): + /@mui/icons-material@5.16.7(@mui/material@5.16.7)(@types/react@18.3.12)(react@18.3.1): resolution: {integrity: sha512-UrGwDJCXEszbDI7yV047BYU5A28eGJ79keTCP4cc74WyncuVrnurlmIRxaHL8YK+LI1Kzq+/JM52IAkNnv4u+Q==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2898,30 +2810,30 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@mui/material': 5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) - '@types/react': 18.3.11 + '@babel/runtime': 7.26.0 + '@mui/material': 5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.12 react: 18.3.1 dev: false - /@mui/icons-material@6.1.2(@mui/material@6.1.2)(@types/react@18.3.11)(react@18.3.1): - resolution: {integrity: sha512-7NNcjW5JoT9jHagrVbARA1o41vQY2xezDamtke+mEKKZmsJyejfRBOacSrPDfjZQ//lyhIjNKyzAwisxYJR47w==} + /@mui/icons-material@6.1.6(@mui/material@6.1.6)(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-5r9urIL2lxXb/sPN3LFfFYEibsXJUb986HhhIeu1gOcte460pwdSiEhBSxkAuyT8Dj7jvu9MjqSBmSumQELo8A==} engines: {node: '>=14.0.0'} peerDependencies: - '@mui/material': ^6.1.2 + '@mui/material': ^6.1.6 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@mui/material': 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) - '@types/react': 18.3.11 + '@babel/runtime': 7.26.0 + '@mui/material': 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.12 react: 18.3.1 dev: false - /@mui/lab@6.0.0-beta.9(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.2)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1): + /@mui/lab@6.0.0-beta.9(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.6)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-rgwgf9mNUpXxPlI3tnM3i+HNAtDZ2amAollDqbe6RZ/3fltcir/o/0zBvnZRkJIBOAk6qIGmL59GCasuQQtPKA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2942,22 +2854,22 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) - '@mui/base': 5.0.0-beta.58(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) - '@mui/system': 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react@18.3.1) - '@mui/types': 7.2.17(@types/react@18.3.11) - '@mui/utils': 6.1.2(@types/react@18.3.11)(react@18.3.1) - '@types/react': 18.3.11 + '@babel/runtime': 7.26.0 + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) + '@mui/base': 5.0.0-beta.58(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@mui/material': 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@mui/system': 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react@18.3.1) + '@mui/types': 7.2.19(@types/react@18.3.12) + '@mui/utils': 6.1.6(@types/react@18.3.12)(react@18.3.1) + '@types/react': 18.3.12 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@mui/material@5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1): + /@mui/material@5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2974,15 +2886,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) + '@babel/runtime': 7.26.0 + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) '@mui/core-downloads-tracker': 5.16.7 - '@mui/system': 5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react@18.3.1) - '@mui/types': 7.2.17(@types/react@18.3.11) - '@mui/utils': 5.16.6(@types/react@18.3.11)(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react@18.3.1) + '@mui/types': 7.2.19(@types/react@18.3.12) + '@mui/utils': 5.16.6(@types/react@18.3.12)(react@18.3.1) '@popperjs/core': 2.11.8 - '@types/react': 18.3.11 + '@types/react': 18.3.12 '@types/react-transition-group': 4.4.11 clsx: 2.1.1 csstype: 3.1.3 @@ -2993,13 +2905,13 @@ packages: react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) dev: false - /@mui/material@6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-5TtHeAVX9D5d2LYfB1GAUn29BcVETVsrQ76Dwb2SpAfQGW3JVy4deJCAd0RrIkI3eEUrsl0E4xuBdreszxdTTg==} + /@mui/material@6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-1yvejiQ/601l5AK3uIdUlAVElyCxoqKnl7QA+2oFB/2qYPWfRwDgavW/MoywS5Y2gZEslcJKhe0s2F3IthgFgw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^6.1.2 + '@mui/material-pigment-css': ^6.1.6 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3013,15 +2925,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) - '@mui/core-downloads-tracker': 6.1.2 - '@mui/system': 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react@18.3.1) - '@mui/types': 7.2.17(@types/react@18.3.11) - '@mui/utils': 6.1.2(@types/react@18.3.11)(react@18.3.1) + '@babel/runtime': 7.26.0 + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) + '@mui/core-downloads-tracker': 6.1.6 + '@mui/system': 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react@18.3.1) + '@mui/types': 7.2.19(@types/react@18.3.12) + '@mui/utils': 6.1.6(@types/react@18.3.12)(react@18.3.1) '@popperjs/core': 2.11.8 - '@types/react': 18.3.11 + '@types/react': 18.3.12 '@types/react-transition-group': 4.4.11 clsx: 2.1.1 csstype: 3.1.3 @@ -3032,7 +2944,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) dev: false - /@mui/private-theming@5.16.6(@types/react@18.3.11)(react@18.3.1): + /@mui/private-theming@5.16.6(@types/react@18.3.12)(react@18.3.1): resolution: {integrity: sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3042,15 +2954,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@mui/utils': 5.16.6(@types/react@18.3.11)(react@18.3.1) - '@types/react': 18.3.11 + '@babel/runtime': 7.26.0 + '@mui/utils': 5.16.6(@types/react@18.3.12)(react@18.3.1) + '@types/react': 18.3.12 prop-types: 15.8.1 react: 18.3.1 dev: false - /@mui/private-theming@6.1.2(@types/react@18.3.11)(react@18.3.1): - resolution: {integrity: sha512-S8WcjZdNdi++8UhrrY8Lton5h/suRiQexvdTfdcPAlbajlvgM+kx+uJstuVIEyTb3gMkxzIZep87knZ0tqcR0g==} + /@mui/private-theming@6.1.6(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-ioAiFckaD/fJSnTrUMWgjl9HYBWt7ixCh7zZw7gDZ+Tae7NuprNV6QJK95EidDT7K0GetR2rU3kAeIR61Myttw==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3059,9 +2971,9 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@mui/utils': 6.1.2(@types/react@18.3.11)(react@18.3.1) - '@types/react': 18.3.11 + '@babel/runtime': 7.26.0 + '@mui/utils': 6.1.6(@types/react@18.3.12)(react@18.3.1) + '@types/react': 18.3.12 prop-types: 15.8.1 react: 18.3.1 dev: false @@ -3079,17 +2991,17 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/cache': 11.13.1 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) csstype: 3.1.3 prop-types: 15.8.1 react: 18.3.1 dev: false - /@mui/styled-engine@6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(react@18.3.1): - resolution: {integrity: sha512-uKOfWkR23X39xj7th2nyTcCHqInTAXtUnqD3T5qRVdJcOPvu1rlgTleTwJC/FJvWZJBU6ieuTWDhbcx5SNViHQ==} + /@mui/styled-engine@6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(react@18.3.1): + resolution: {integrity: sha512-I+yS1cSuSvHnZDBO7e7VHxTWpj+R7XlSZvTC4lS/OIbUNJOMMSd3UDP6V2sfwzAdmdDNBi7NGCRv2SZ6O9hGDA==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -3101,18 +3013,19 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/cache': 11.13.1 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/serialize': 1.3.2 '@emotion/sheet': 1.4.0 - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) csstype: 3.1.3 prop-types: 15.8.1 react: 18.3.1 dev: false - /@mui/styles@6.1.2(@types/react@18.3.11)(react@18.3.1): - resolution: {integrity: sha512-fsQkTCyyBnjsmy7CM0LG95PJZAhTsmoC/iNk4ihVYmdubMQEeGXzeAWL8E6QBChCnANmjZwm2h5ENyLnCUUuzg==} + /@mui/styles@6.1.6(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-2cGEUMi4kYNskrg2Upe0bR3Th2/e4j3Vd6R2lIMksBDivJH9o+nkwLjtf91KUOhKZ4BReCDVDC398dbOs+Ygdw==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3121,12 +3034,12 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/hash': 0.9.2 - '@mui/private-theming': 6.1.2(@types/react@18.3.11)(react@18.3.1) - '@mui/types': 7.2.17(@types/react@18.3.11) - '@mui/utils': 6.1.2(@types/react@18.3.11)(react@18.3.1) - '@types/react': 18.3.11 + '@mui/private-theming': 6.1.6(@types/react@18.3.12)(react@18.3.1) + '@mui/types': 7.2.19(@types/react@18.3.12) + '@mui/utils': 6.1.6(@types/react@18.3.12)(react@18.3.1) + '@types/react': 18.3.12 clsx: 2.1.1 csstype: 3.1.3 hoist-non-react-statics: 3.3.2 @@ -3142,7 +3055,7 @@ packages: react: 18.3.1 dev: false - /@mui/system@5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react@18.3.1): + /@mui/system@5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react@18.3.1): resolution: {integrity: sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3158,22 +3071,22 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) - '@mui/private-theming': 5.16.6(@types/react@18.3.11)(react@18.3.1) + '@babel/runtime': 7.26.0 + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) + '@mui/private-theming': 5.16.6(@types/react@18.3.12)(react@18.3.1) '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(react@18.3.1) - '@mui/types': 7.2.17(@types/react@18.3.11) - '@mui/utils': 5.16.6(@types/react@18.3.11)(react@18.3.1) - '@types/react': 18.3.11 + '@mui/types': 7.2.19(@types/react@18.3.12) + '@mui/utils': 5.16.6(@types/react@18.3.12)(react@18.3.1) + '@types/react': 18.3.12 clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 18.3.1 dev: false - /@mui/system@6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react@18.3.1): - resolution: {integrity: sha512-mzW7F1ZMIYS1aLON48Nrk9c65OrVEVQ+R4lUcTWs1lCSul0VGK23eo4dmY0NX5PS7Oe4xz3P5B9tQZZ7SYgxcg==} + /@mui/system@6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-qOf1VUE9wK8syiB0BBCp82oNBAVPYdj4Trh+G1s+L+ImYiKlubWhhqlnvWt3xqMevR+D2h1CXzA1vhX2FvA+VQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3188,32 +3101,32 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) - '@mui/private-theming': 6.1.2(@types/react@18.3.11)(react@18.3.1) - '@mui/styled-engine': 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(react@18.3.1) - '@mui/types': 7.2.17(@types/react@18.3.11) - '@mui/utils': 6.1.2(@types/react@18.3.11)(react@18.3.1) - '@types/react': 18.3.11 + '@babel/runtime': 7.26.0 + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) + '@mui/private-theming': 6.1.6(@types/react@18.3.12)(react@18.3.1) + '@mui/styled-engine': 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(react@18.3.1) + '@mui/types': 7.2.19(@types/react@18.3.12) + '@mui/utils': 6.1.6(@types/react@18.3.12)(react@18.3.1) + '@types/react': 18.3.12 clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 18.3.1 dev: false - /@mui/types@7.2.17(@types/react@18.3.11): - resolution: {integrity: sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==} + /@mui/types@7.2.19(@types/react@18.3.12): + resolution: {integrity: sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.12 dev: false - /@mui/utils@5.16.6(@types/react@18.3.11)(react@18.3.1): + /@mui/utils@5.16.6(@types/react@18.3.12)(react@18.3.1): resolution: {integrity: sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3223,17 +3136,17 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@mui/types': 7.2.17(@types/react@18.3.11) + '@babel/runtime': 7.26.0 + '@mui/types': 7.2.19(@types/react@18.3.12) '@types/prop-types': 15.7.13 - '@types/react': 18.3.11 + '@types/react': 18.3.12 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-is: 18.3.1 dev: false - /@mui/utils@6.0.0-rc.0(@types/react@18.3.11)(react@18.3.1): + /@mui/utils@6.0.0-rc.0(@types/react@18.3.12)(react@18.3.1): resolution: {integrity: sha512-tBp0ILEXDL0bbDDT8PnZOjCqSm5Dfk2N0Z45uzRw+wVl6fVvloC9zw8avl+OdX1Bg3ubs/ttKn8nRNv17bpM5A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3243,18 +3156,18 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@mui/types': 7.2.17(@types/react@18.3.11) + '@babel/runtime': 7.26.0 + '@mui/types': 7.2.19(@types/react@18.3.12) '@types/prop-types': 15.7.13 - '@types/react': 18.3.11 + '@types/react': 18.3.12 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-is: 18.3.1 dev: false - /@mui/utils@6.1.2(@types/react@18.3.11)(react@18.3.1): - resolution: {integrity: sha512-6+B1YZ8cCBWD1fc3RjqpclF9UA0MLUiuXhyCO+XowD/Z2ku5IlxeEhHHlgglyBWFGMu4kib4YU3CDsG5/zVjJQ==} + /@mui/utils@6.1.6(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-sBS6D9mJECtELASLM+18WUcXF6RH3zNxBRFeyCRg8wad6NbyNrdxLuwK+Ikvc38sTZwBzAz691HmSofLqHd9sQ==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3263,18 +3176,18 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@mui/types': 7.2.17(@types/react@18.3.11) + '@babel/runtime': 7.26.0 + '@mui/types': 7.2.19(@types/react@18.3.12) '@types/prop-types': 15.7.13 - '@types/react': 18.3.11 + '@types/react': 18.3.12 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-is: 18.3.1 dev: false - /@mui/x-date-pickers@7.18.0(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.2)(@mui/system@6.1.2)(@types/react@18.3.11)(dayjs@1.11.13)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-12tXIoMj9vpS8fS/bS3kWPCoVrH38vNGCxgplI0vOnUrN9rJuYJz3agLPJe1S0xciTw+9W8ZSe3soaW+owoz1Q==} + /@mui/x-date-pickers@7.22.1(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.6)(@mui/system@6.1.6)(@types/react@18.3.12)(dayjs@1.11.13)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-VBgicE+7PvJrdHSL6HyieHT6a/0dENH8RaMIM2VwUFrGoZzvik50WNwY5U+Hip1BwZLIEvlqtNRQIIj6kgBR6Q==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -3310,13 +3223,13 @@ packages: moment-jalaali: optional: true dependencies: - '@babel/runtime': 7.25.7 - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) - '@mui/system': 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react@18.3.1) - '@mui/utils': 5.16.6(@types/react@18.3.11)(react@18.3.1) - '@mui/x-internals': 7.18.0(@types/react@18.3.11)(react@18.3.1) + '@babel/runtime': 7.26.0 + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) + '@mui/material': 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@mui/system': 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react@18.3.1) + '@mui/utils': 6.1.6(@types/react@18.3.12)(react@18.3.1) + '@mui/x-internals': 7.21.0(@types/react@18.3.12)(react@18.3.1) '@types/react-transition-group': 4.4.11 clsx: 2.1.1 dayjs: 1.11.13 @@ -3328,14 +3241,14 @@ packages: - '@types/react' dev: false - /@mui/x-internals@7.18.0(@types/react@18.3.11)(react@18.3.1): - resolution: {integrity: sha512-lzCHOWIR0cAIY1bGrWSprYerahbnH5C31ql/2OWCEjcngL2NAV1M6oKI2Vp4HheqzJ822c60UyWyapvyjSzY/A==} + /@mui/x-internals@7.21.0(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-94YNyZ0BhK5Z+Tkr90RKf47IVCW8R/1MvdUhh6MCQg6sZa74jsX+x+gEZ4kzuCqOsuyTyxikeQ8vVuCIQiP7UQ==} engines: {node: '>=14.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.25.7 - '@mui/utils': 5.16.6(@types/react@18.3.11)(react@18.3.1) + '@babel/runtime': 7.26.0 + '@mui/utils': 6.1.6(@types/react@18.3.12)(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' @@ -3394,55 +3307,55 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@react-spring/animated@9.7.4(react@18.3.1): - resolution: {integrity: sha512-7As+8Pty2QlemJ9O5ecsuPKjmO0NKvmVkRR1n6mEotFgWar8FKuQt2xgxz3RTgxcccghpx1YdS1FCdElQNexmQ==} + /@react-spring/animated@9.7.5(react@18.3.1): + resolution: {integrity: sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@react-spring/shared': 9.7.4(react@18.3.1) - '@react-spring/types': 9.7.4 + '@react-spring/shared': 9.7.5(react@18.3.1) + '@react-spring/types': 9.7.5 react: 18.3.1 dev: false - /@react-spring/core@9.7.4(react@18.3.1): - resolution: {integrity: sha512-GzjA44niEJBFUe9jN3zubRDDDP2E4tBlhNlSIkTChiNf9p4ZQlgXBg50qbXfSXHQPHak/ExYxwhipKVsQ/sUTw==} + /@react-spring/core@9.7.5(react@18.3.1): + resolution: {integrity: sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@react-spring/animated': 9.7.4(react@18.3.1) - '@react-spring/shared': 9.7.4(react@18.3.1) - '@react-spring/types': 9.7.4 + '@react-spring/animated': 9.7.5(react@18.3.1) + '@react-spring/shared': 9.7.5(react@18.3.1) + '@react-spring/types': 9.7.5 react: 18.3.1 dev: false - /@react-spring/rafz@9.7.4: - resolution: {integrity: sha512-mqDI6rW0Ca8IdryOMiXRhMtVGiEGLIO89vIOyFQXRIwwIMX30HLya24g9z4olDvFyeDW3+kibiKwtZnA4xhldA==} + /@react-spring/rafz@9.7.5: + resolution: {integrity: sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==} dev: false - /@react-spring/shared@9.7.4(react@18.3.1): - resolution: {integrity: sha512-bEPI7cQp94dOtCFSEYpxvLxj0+xQfB5r9Ru1h8OMycsIq7zFZon1G0sHrBLaLQIWeMCllc4tVDYRTLIRv70C8w==} + /@react-spring/shared@9.7.5(react@18.3.1): + resolution: {integrity: sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@react-spring/rafz': 9.7.4 - '@react-spring/types': 9.7.4 + '@react-spring/rafz': 9.7.5 + '@react-spring/types': 9.7.5 react: 18.3.1 dev: false - /@react-spring/types@9.7.4: - resolution: {integrity: sha512-iQVztO09ZVfsletMiY+DpT/JRiBntdsdJ4uqk3UJFhrhS8mIC9ZOZbmfGSRs/kdbNPQkVyzucceDicQ/3Mlj9g==} + /@react-spring/types@9.7.5: + resolution: {integrity: sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==} dev: false - /@react-spring/web@9.7.4(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-UMvCZp7I5HCVIleSa4BwbNxynqvj+mJjG2m20VO2yPoi2pnCYANy58flvz9v/YcXTAvsmL655FV3pm5fbr6akA==} + /@react-spring/web@9.7.5(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-lmvqGwpe+CSttsWNZVr+Dg62adtKhauGwLyGE/RRyZ8AAMLgb9x3NDMA5RMElXo+IMyTkPp7nxTB8ZQlmhb6JQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@react-spring/animated': 9.7.4(react@18.3.1) - '@react-spring/core': 9.7.4(react@18.3.1) - '@react-spring/shared': 9.7.4(react@18.3.1) - '@react-spring/types': 9.7.4 + '@react-spring/animated': 9.7.5(react@18.3.1) + '@react-spring/core': 9.7.5(react@18.3.1) + '@react-spring/shared': 9.7.5(react@18.3.1) + '@react-spring/types': 9.7.5 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -3510,8 +3423,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.25.7 - '@babel/types': 7.25.7 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 @@ -3520,59 +3433,73 @@ packages: /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.25.7 - '@babel/types': 7.25.7 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 dev: true /@types/babel__traverse@7.20.6: resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 dev: true /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: - '@types/express-serve-static-core': 5.0.0 - '@types/node': 22.7.4 + '@types/express-serve-static-core': 5.0.1 + '@types/node': 22.8.6 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/create-react-class@15.6.8: resolution: {integrity: sha512-s5HocgHXvN4Phoypsz8+4TLFreWRUrMcq9MHgwVleqNNR5EipSrFN49LCU/N7j8nIiQoRExY9n79LBrTDdsE1Q==} dependencies: '@types/prop-types': 15.7.13 - '@types/react': 18.3.11 + '@types/react': 18.3.12 dev: true /@types/emscripten@1.39.13: resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} dev: true + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + dev: true + + /@types/eslint@9.6.1: + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + dev: true + /@types/estree@1.0.6: resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} dev: true @@ -3580,16 +3507,16 @@ packages: /@types/express-serve-static-core@4.19.6: resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: true - /@types/express-serve-static-core@5.0.0: - resolution: {integrity: sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==} + /@types/express-serve-static-core@5.0.1: + resolution: {integrity: sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -3612,20 +3539,20 @@ packages: resolution: {integrity: sha512-WRXN0kQPCnqxN0/PgNgc7WBF6c8rbSHsEep3/qBLpsQ824RONdOmTs0TV7XhIW2GDNRAHO2CqCgAFLR5PChosw==} dependencies: '@types/fbemitter': 2.0.35 - '@types/react': 18.3.11 + '@types/react': 18.3.12 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/history@4.7.11: @@ -3643,7 +3570,7 @@ packages: /@types/http-proxy@1.17.15: resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/istanbul-lib-coverage@2.0.6: @@ -3680,11 +3607,11 @@ packages: /@types/lodash-webpack-plugin@0.11.9: resolution: {integrity: sha512-ZcqhwY5jfKdLPbgWo10eUI41MwRQlvjh9NPVHA3kghbjs1MClL5S+a7WYfm+cSgJ2cltp0u0NAvQbnZg5ksiMA==} dependencies: - '@types/webpack': 4.41.39 + '@types/webpack': 4.41.40 dev: true - /@types/lodash@4.17.9: - resolution: {integrity: sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==} + /@types/lodash@4.17.13: + resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} dev: true /@types/mime@1.3.5: @@ -3698,11 +3625,11 @@ packages: /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true - /@types/node@22.7.4: - resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==} + /@types/node@22.8.6: + resolution: {integrity: sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==} dependencies: undici-types: 6.19.8 dev: true @@ -3734,17 +3661,17 @@ packages: resolution: {integrity: sha512-lX55lR0iYCgapxD3IrgujpQA1zDxwZI5qMRelKvmKAsSMplFVr7wmMpG7/6+Op2tjrgEex8o3vjg8CRDrRNYxg==} dev: false - /@types/react-dom@18.3.0: - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + /@types/react-dom@18.3.1: + resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.12 dev: true /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.11 + '@types/react': 18.3.12 '@types/react-router': 5.1.20 dev: true @@ -3752,17 +3679,17 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.11 + '@types/react': 18.3.12 dev: true /@types/react-transition-group@4.4.11: resolution: {integrity: sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==} dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.12 dev: false - /@types/react@18.3.11: - resolution: {integrity: sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==} + /@types/react@18.3.12: + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} dependencies: '@types/prop-types': 15.7.13 csstype: 3.1.3 @@ -3785,7 +3712,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/serve-index@1.9.4: @@ -3798,14 +3725,14 @@ packages: resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.7.4 + '@types/node': 22.8.6 '@types/send': 0.17.4 dev: true /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/source-list-map@0.1.6: @@ -3816,7 +3743,7 @@ packages: resolution: {integrity: sha512-ep8b36RKHlgWPqjNG9ToUrPiwkhwh0AEzy883mO5Xnd+cL6VBH1EvSjBAAuxLUFF2Vn/moE3Me6v9E1Lo+48GQ==} dependencies: '@types/emscripten': 1.39.13 - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/stack-utils@2.0.3: @@ -3836,15 +3763,15 @@ packages: /@types/webpack-sources@3.2.3: resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 '@types/source-list-map': 0.1.6 source-map: 0.7.4 dev: true - /@types/webpack@4.41.39: - resolution: {integrity: sha512-otxUJvoi6FbBq/64gGH34eblpKLgdi+gf08GaAh8Bx6So0ZZic028Ev/SUxD22gbthMKCkeeiXEat1kHLDJfYg==} + /@types/webpack@4.41.40: + resolution: {integrity: sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -3855,7 +3782,7 @@ packages: /@types/ws@8.5.12: resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /@types/yargs-parser@21.0.3: @@ -3879,7 +3806,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 7.8.0(eslint@8.57.1)(typescript@4.9.5) '@typescript-eslint/scope-manager': 7.8.0 '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.1)(typescript@4.9.5) @@ -3891,7 +3818,7 @@ packages: ignore: 5.3.2 natural-compare: 1.4.0 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@4.9.5) + ts-api-utils: 1.4.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -3948,7 +3875,7 @@ packages: '@typescript-eslint/utils': 7.8.0(eslint@8.57.1)(typescript@4.9.5) debug: 4.3.7 eslint: 8.57.1 - ts-api-utils: 1.3.0(typescript@4.9.5) + ts-api-utils: 1.4.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -4001,7 +3928,7 @@ packages: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@4.9.5) + ts-api-utils: 1.4.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -4013,7 +3940,7 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 @@ -4033,7 +3960,7 @@ packages: peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.8.0 @@ -4172,14 +4099,14 @@ packages: '@xtuc/long': 4.2.2 dev: true - /@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.95.0): + /@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.96.1): resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} peerDependencies: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x dependencies: - webpack: 5.95.0(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.95.0) + webpack: 5.96.1(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.96.1) dev: true /@webpack-cli/info@1.5.0(webpack-cli@4.10.0): @@ -4188,7 +4115,7 @@ packages: webpack-cli: 4.x.x dependencies: envinfo: 7.14.0 - webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.95.0) + webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.96.1) dev: true /@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2): @@ -4200,8 +4127,8 @@ packages: webpack-dev-server: optional: true dependencies: - webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.95.0) - webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.95.0) + webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.96.1) + webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.96.1) dev: true /@xtuc/ieee754@1.2.0: @@ -4232,20 +4159,12 @@ packages: acorn-walk: 7.2.0 dev: true - /acorn-import-attributes@1.9.5(acorn@8.12.1): - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - dependencies: - acorn: 8.12.1 - dev: true - - /acorn-jsx@5.3.2(acorn@8.12.1): + /acorn-jsx@5.3.2(acorn@8.14.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.12.1 + acorn: 8.14.0 dev: true /acorn-walk@7.2.0: @@ -4257,7 +4176,7 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} dependencies: - acorn: 8.12.1 + acorn: 8.14.0 dev: true /acorn@7.4.1: @@ -4266,8 +4185,8 @@ packages: hasBin: true dev: true - /acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -4324,7 +4243,7 @@ packages: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.2 + fast-uri: 3.0.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -4350,12 +4269,6 @@ packages: resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} dev: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -4386,10 +4299,9 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - dependencies: - deep-equal: 2.2.3 + /aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} dev: true /array-buffer-byte-length@1.0.1: @@ -4520,8 +4432,8 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - /attr-accept@2.2.2: - resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} + /attr-accept@2.2.4: + resolution: {integrity: sha512-2pA6xFIbdTUDCAwjN8nQwI+842VwzbDUXO2IYlpPXQIORgKnavorcr4Ce3rwh+zsNg9zK7QPsdvDj3Lum4WX4w==} engines: {node: '>=4'} dev: false @@ -4532,8 +4444,8 @@ packages: possible-typed-array-names: 1.0.0 dev: true - /axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} + /axe-core@4.10.2: + resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} engines: {node: '>=4'} dev: true @@ -4541,7 +4453,7 @@ packages: resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} dependencies: follow-redirects: 1.15.9 - form-data: 4.0.0 + form-data: 4.0.1 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -4552,18 +4464,18 @@ packages: engines: {node: '>= 0.4'} dev: true - /babel-jest@27.5.1(@babel/core@7.25.7): + /babel-jest@27.5.1(@babel/core@7.26.0): resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.25.7 + '@babel/core': 7.26.0 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.25.7) + babel-preset-jest: 27.5.1(@babel/core@7.26.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -4571,25 +4483,25 @@ packages: - supports-color dev: true - /babel-loader@8.4.1(@babel/core@7.25.7)(webpack@5.95.0): + /babel-loader@8.4.1(@babel/core@7.26.0)(webpack@5.96.1): resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.25.7 + '@babel/core': 7.26.0 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true /babel-plugin-import@1.13.8: resolution: {integrity: sha512-36babpjra5m3gca44V6tSTomeBlPA7cHUynrE2WiQIm3rEGD9xy28MKsx5IdO45EbnpJY7Jrgd00C6Dwt/l/2Q==} dependencies: - '@babel/helper-module-imports': 7.25.7 + '@babel/helper-module-imports': 7.25.9 transitivePeerDependencies: - supports-color dev: true @@ -4598,7 +4510,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -4611,8 +4523,8 @@ packages: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.7 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 dev: true @@ -4620,8 +4532,8 @@ packages: /babel-plugin-lodash@3.3.4: resolution: {integrity: sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==} dependencies: - '@babel/helper-module-imports': 7.25.7 - '@babel/types': 7.25.7 + '@babel/helper-module-imports': 7.25.9 + '@babel/types': 7.26.0 glob: 7.2.3 lodash: 4.17.21 require-package-name: 2.0.1 @@ -4633,79 +4545,79 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 cosmiconfig: 7.1.0 resolve: 1.22.8 dev: false - /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.7): + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.25.7 - '@babel/core': 7.25.7 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.7) + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.7): + /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.7) - core-js-compat: 3.38.1 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.39.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.7): + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.7): + /babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.7) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.7) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.7) - '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.7) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.7) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.7) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.7) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.7) - dev: true - - /babel-preset-jest@27.5.1(@babel/core@7.25.7): + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + dev: true + + /babel-preset-jest@27.5.1(@babel/core@7.26.0): resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 + '@babel/core': 7.26.0 babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.7) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) dev: true /balanced-match@1.0.2: @@ -4779,15 +4691,15 @@ packages: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist@4.24.0: - resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + /browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001666 - electron-to-chromium: 1.5.31 + caniuse-lite: 1.0.30001676 + electron-to-chromium: 1.5.50 node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.0) + update-browserslist-db: 1.1.1(browserslist@4.24.2) dev: true /bser@2.1.1: @@ -4800,11 +4712,6 @@ packages: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: true - /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -4829,7 +4736,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.7.0 + tslib: 2.8.1 dev: true /camelcase@5.3.1: @@ -4842,18 +4749,10 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001666: - resolution: {integrity: sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==} + /caniuse-lite@1.0.30001676: + resolution: {integrity: sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw==} dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -4867,20 +4766,20 @@ packages: engines: {node: '>=10'} dev: true - /chart.js@4.4.4: - resolution: {integrity: sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==} + /chart.js@4.4.6: + resolution: {integrity: sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==} engines: {pnpm: '>=8'} dependencies: '@kurkle/color': 0.3.2 dev: false - /chartjs-adapter-moment@1.0.1(chart.js@4.4.4)(moment@2.30.1): + /chartjs-adapter-moment@1.0.1(chart.js@4.4.6)(moment@2.30.1): resolution: {integrity: sha512-Uz+nTX/GxocuqXpGylxK19YG4R3OSVf8326D+HwSTsNw1LgzyIGRo+Qujwro1wy6X+soNSnfj5t2vZ+r6EaDmA==} peerDependencies: chart.js: '>=3.0.0' moment: ^2.10.2 dependencies: - chart.js: 4.4.4 + chart.js: 4.4.6 moment: 2.30.1 dev: false @@ -4899,13 +4798,6 @@ packages: fsevents: 2.3.3 dev: true - /chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} - engines: {node: '>= 14.16.0'} - dependencies: - readdirp: 4.0.1 - dev: true - /chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -4963,11 +4855,6 @@ packages: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} dev: true - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -4975,9 +4862,6 @@ packages: color-name: 1.1.4 dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true @@ -5049,7 +4933,7 @@ packages: mime-db: 1.53.0 dev: true - /compression-webpack-plugin@10.0.0(webpack@5.95.0): + /compression-webpack-plugin@10.0.0(webpack@5.96.1): resolution: {integrity: sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -5057,19 +4941,19 @@ packages: dependencies: schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true - /compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + /compression@1.7.5: + resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} engines: {node: '>= 0.8.0'} dependencies: - accepts: 1.3.8 - bytes: 3.0.0 + bytes: 3.1.2 compressible: 2.0.18 debug: 2.6.9 + negotiator: 0.6.4 on-headers: 1.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 vary: 1.1.2 dev: true @@ -5109,12 +4993,12 @@ packages: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + /cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} dev: true - /copy-webpack-plugin@10.2.4(webpack@5.95.0): + /copy-webpack-plugin@10.2.4(webpack@5.96.1): resolution: {integrity: sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==} engines: {node: '>= 12.20.0'} peerDependencies: @@ -5126,17 +5010,17 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true - /core-js-compat@3.38.1: - resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + /core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} dependencies: - browserslist: 4.24.0 + browserslist: 4.24.2 dev: true - /core-js-pure@3.38.1: - resolution: {integrity: sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==} + /core-js-pure@3.39.0: + resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==} requiresBuild: true dev: true @@ -5172,7 +5056,7 @@ packages: which: 2.0.2 dev: true - /css-loader@6.11.0(webpack@5.95.0): + /css-loader@6.11.0(webpack@5.96.1): resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -5192,7 +5076,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.47) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true /css-select@4.3.0: @@ -5208,7 +5092,7 @@ packages: /css-vendor@2.0.8: resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 is-in-browser: 1.1.3 dev: false @@ -5329,30 +5213,6 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: true - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -5461,7 +5321,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 csstype: 3.1.3 dev: false @@ -5520,7 +5380,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.1 dev: true /duplexer@0.1.2: @@ -5535,8 +5395,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.5.31: - resolution: {integrity: sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg==} + /electron-to-chromium@1.5.50: + resolution: {integrity: sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==} dev: true /email-addresses@3.1.0: @@ -5640,7 +5500,7 @@ packages: object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 + regexp.prototype.flags: 1.5.3 safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 string.prototype.trim: 1.2.9 @@ -5666,22 +5526,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - dev: true - - /es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + /es-iterator-helpers@1.1.0: + resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -5696,7 +5542,7 @@ packages: has-proto: 1.0.3 has-symbols: 1.0.3 internal-slot: 1.0.7 - iterator.prototype: 1.1.2 + iterator.prototype: 1.1.3 safe-array-concat: 1.1.2 dev: true @@ -5747,6 +5593,7 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} @@ -5769,7 +5616,7 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.30.0)(eslint@8.57.1): + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0)(eslint@8.57.1): resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -5778,13 +5625,13 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.1 - eslint-plugin-import: 2.30.0(eslint@8.57.1) + eslint-plugin-import: 2.31.0(eslint@8.57.1) object.assign: 4.1.5 object.entries: 1.1.8 semver: 6.3.1 dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.10.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.1)(eslint@8.57.1): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.37.2)(eslint@8.57.1): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -5795,10 +5642,10 @@ packages: eslint-plugin-react-hooks: ^4.3.0 dependencies: eslint: 8.57.1 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.30.0)(eslint@8.57.1) - eslint-plugin-import: 2.30.0(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) - eslint-plugin-react: 7.37.1(eslint@8.57.1) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(eslint@8.57.1) + eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) + eslint-plugin-react: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) object.assign: 4.1.5 object.entries: 1.1.8 @@ -5834,11 +5681,11 @@ packages: eslint: 8.57.1 dev: true - /eslint-plugin-import@2.30.0(eslint@8.57.1): - resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} + /eslint-plugin-import@2.31.0(eslint@8.57.1): + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -5858,6 +5705,7 @@ packages: object.groupby: 1.0.3 object.values: 1.2.0 semver: 6.3.1 + string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 dev: true @@ -5883,21 +5731,20 @@ packages: - typescript dev: true - /eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.1): - resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} + /eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 dependencies: - aria-query: 5.1.3 + aria-query: 5.3.2 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.10.0 + axe-core: 4.10.2 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.19 eslint: 8.57.1 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -5905,7 +5752,7 @@ packages: minimatch: 3.1.2 object.fromentries: 2.0.8 safe-regex-test: 1.0.3 - string.prototype.includes: 2.0.0 + string.prototype.includes: 2.0.1 dev: true /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.1)(prettier@2.8.8): @@ -5934,8 +5781,8 @@ packages: eslint: 8.57.1 dev: true - /eslint-plugin-react@7.37.1(eslint@8.57.1): - resolution: {integrity: sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==} + /eslint-plugin-react@7.37.2(eslint@8.57.1): + resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -5945,7 +5792,7 @@ packages: array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 + es-iterator-helpers: 1.1.0 eslint: 8.57.1 estraverse: 5.3.0 hasown: 2.0.2 @@ -5990,10 +5837,11 @@ packages: /eslint@8.57.1: resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 @@ -6038,8 +5886,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 dev: true @@ -6126,8 +5974,8 @@ packages: resolution: {integrity: sha512-KHExLOjF2yvo8JU8Sv+5RuJAHzP1TpFvUgnWn8ex7zBrv1ZsABJAOpvG1RNRRWr1spYpDJmBBaR5/cV/8aBQSw==} dev: false - /express@4.21.0: - resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} + /express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 @@ -6135,7 +5983,7 @@ packages: body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.6.0 + cookie: 0.7.1 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 @@ -6189,8 +6037,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-uri@3.0.2: - resolution: {integrity: sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==} + /fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} @@ -6223,7 +6071,7 @@ packages: flat-cache: 3.2.0 dev: true - /file-loader@6.2.0(webpack@5.95.0): + /file-loader@6.2.0(webpack@5.96.1): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -6231,14 +6079,14 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true - /file-selector@0.6.0: - resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} + /file-selector@1.2.0: + resolution: {integrity: sha512-49855884Jfcij/ec+RGkUYmZo45CwBpN+gfxuOTiOGCBTwvr5p8ZpfBQo1n2sdJz8Pl6FCmNDxyltjptHVPFNQ==} engines: {node: '>= 12'} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 dev: false /filename-reserved-regex@2.0.0: @@ -6348,8 +6196,8 @@ packages: is-callable: 1.2.7 dev: true - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + /form-data@3.0.2: + resolution: {integrity: sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 @@ -6357,8 +6205,8 @@ packages: mime-types: 2.1.35 dev: true - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + /form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 @@ -6603,10 +6451,6 @@ packages: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -6688,15 +6532,15 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /html-loader@5.0.0(webpack@5.95.0): + /html-loader@5.0.0(webpack@5.96.1): resolution: {integrity: sha512-puaGKdjdVVIFRtgIC2n5dt5bt0N5j6heXlAQZ4Do1MLjHmOT1gCE1Ogg7XZNeJlnOVHHsrZKGs5dfh+XwZ3XPw==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.0.0 dependencies: html-minifier-terser: 7.2.0 - parse5: 7.1.2 - webpack: 5.95.0(webpack-cli@4.10.0) + parse5: 7.2.1 + webpack: 5.96.1(webpack-cli@4.10.0) dev: true /html-minifier-terser@6.1.0: @@ -6710,7 +6554,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.34.1 + terser: 5.36.0 dev: true /html-minifier-terser@7.2.0: @@ -6724,7 +6568,7 @@ packages: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.34.1 + terser: 5.36.0 dev: true /html-parse-stringify@3.0.1: @@ -6749,8 +6593,8 @@ packages: resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} dev: false - /html-webpack-plugin@5.6.0(webpack@5.95.0): - resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + /html-webpack-plugin@5.6.3(webpack@5.96.1): + resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} engines: {node: '>=10.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -6766,7 +6610,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true /htmlparser2@6.1.0: @@ -6835,8 +6679,8 @@ packages: - supports-color dev: true - /http-proxy-middleware@2.0.6(@types/express@4.17.21): - resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + /http-proxy-middleware@2.0.7(@types/express@4.17.21): + resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/express': ^4.17.13 @@ -6899,13 +6743,13 @@ packages: /i18next@22.5.1: resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 dev: false - /i18next@23.15.1: - resolution: {integrity: sha512-wB4abZ3uK7EWodYisHl/asf8UYEhrI/vj/8aoSsrj/ZDxj4/UXPOa1KvFt1Fq5hkUHquNqwFlDprmjZ8iySgYA==} + /i18next@23.16.4: + resolution: {integrity: sha512-9NIYBVy9cs4wIqzurf7nLXPyf3R78xYbxExVqHLK9od3038rjpyOEzW+XB130kZ1N4PZ9inTtJ471CRJ4Ituyg==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 dev: false /iconv-lite@0.4.24: @@ -6998,14 +6842,6 @@ packages: engines: {node: '>= 10'} dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: true - /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -7267,8 +7103,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.25.7 - '@babel/parser': 7.25.7 + '@babel/core': 7.26.0 + '@babel/parser': 7.26.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -7304,8 +7140,9 @@ packages: istanbul-lib-report: 3.0.1 dev: true - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + /iterator.prototype@1.1.3: + resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.4 @@ -7330,7 +7167,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -7389,10 +7226,10 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.25.7 + '@babel/core': 7.26.0 '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 - babel-jest: 27.5.1(@babel/core@7.25.7) + babel-jest: 27.5.1(@babel/core@7.26.0) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -7455,7 +7292,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -7473,7 +7310,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 jest-mock: 27.5.1 jest-util: 27.5.1 dev: true @@ -7489,7 +7326,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.9 - '@types/node': 22.7.4 + '@types/node': 22.8.6 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -7511,7 +7348,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -7550,7 +7387,7 @@ packages: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.26.2 '@jest/types': 27.5.1 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -7566,7 +7403,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 dev: true /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): @@ -7622,7 +7459,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -7679,7 +7516,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 graceful-fs: 4.2.11 dev: true @@ -7687,16 +7524,16 @@ packages: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.25.7) - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.2 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__traverse': 7.20.6 '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.7) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) chalk: 4.1.2 expect: 27.5.1 graceful-fs: 4.2.11 @@ -7718,7 +7555,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -7743,7 +7580,7 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.7.4 + '@types/node': 22.8.6 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -7754,7 +7591,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 22.7.4 + '@types/node': 22.8.6 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -7808,7 +7645,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.12.1 + acorn: 8.14.0 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -7816,7 +7653,7 @@ packages: decimal.js: 10.4.3 domexception: 2.0.1 escodegen: 2.1.0 - form-data: 3.0.1 + form-data: 3.0.2 html-encoding-sniffer: 2.0.1 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 @@ -7893,7 +7730,7 @@ packages: /jss-plugin-camel-case@10.10.0: resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 hyphenate-style-name: 1.1.0 jss: 10.10.0 dev: false @@ -7901,21 +7738,21 @@ packages: /jss-plugin-default-unit@10.10.0: resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 jss: 10.10.0 dev: false /jss-plugin-global@10.10.0: resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 jss: 10.10.0 dev: false /jss-plugin-nested@10.10.0: resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 jss: 10.10.0 tiny-warning: 1.0.3 dev: false @@ -7923,14 +7760,14 @@ packages: /jss-plugin-props-sort@10.10.0: resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 jss: 10.10.0 dev: false /jss-plugin-rule-value-function@10.10.0: resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 jss: 10.10.0 tiny-warning: 1.0.3 dev: false @@ -7938,7 +7775,7 @@ packages: /jss-plugin-vendor-prefixer@10.10.0: resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 css-vendor: 2.0.8 jss: 10.10.0 dev: false @@ -7946,7 +7783,7 @@ packages: /jss@10.10.0: resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 csstype: 3.1.3 is-in-browser: 1.1.3 tiny-warning: 1.0.3 @@ -7992,7 +7829,7 @@ packages: /launch-editor@2.9.1: resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} dependencies: - picocolors: 1.1.0 + picocolors: 1.1.1 shell-quote: 1.8.1 dev: true @@ -8056,13 +7893,13 @@ packages: p-locate: 5.0.0 dev: true - /lodash-webpack-plugin@0.11.6(webpack@5.95.0): + /lodash-webpack-plugin@0.11.6(webpack@5.96.1): resolution: {integrity: sha512-nsHN/+IxZK/C425vGC8pAxkKJ8KQH2+NJnhDul14zYNWr6HJcA95w+oRR7Cp0oZpOdMplDZXmjVROp8prPk7ig==} peerDependencies: webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.1.0 dependencies: lodash: 4.17.21 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true /lodash.debounce@4.0.8: @@ -8085,7 +7922,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 dev: true /lru-cache@5.1.1: @@ -8130,14 +7967,14 @@ packages: resolution: {integrity: sha512-VJ6nB8emkO9VODI0Fk+TQ/0zKBTqmf/Pkt8Xv0kHstoc0iXRajA00DAid4Kc3K5xeFIOoiZrVxijEzj0GLVO2w==} dev: false - /markdown-loader@8.0.0(webpack@5.95.0): + /markdown-loader@8.0.0(webpack@5.96.1): resolution: {integrity: sha512-dxrR3WhK/hERbStPFb/yeNdEeWCKa2qUDdXiq3VTruBUWufOtERX04X0K44K4dnlN2i9pjSEzYIQJ3LjH0xkEw==} engines: {node: '>=12.22.9'} peerDependencies: webpack: ^5.0.0 dependencies: marked: 4.3.0 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true /markdown-to-jsx@7.4.7(react@18.3.1): @@ -8154,7 +7991,7 @@ packages: hasBin: true dev: true - /material-react-table@2.13.3(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/icons-material@6.1.2)(@mui/material@6.1.2)(@mui/x-date-pickers@7.18.0)(react-dom@18.3.1)(react@18.3.1): + /material-react-table@2.13.3(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/icons-material@6.1.6)(@mui/material@6.1.6)(@mui/x-date-pickers@7.22.1)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-xeyAEG6UYG3qgBIo17epAP5zsWT1pH0uCEkaUxvhki9sGcP35OqfOMSZJNhISvmqEqXKYHdqKbZI6iOwsg1sYA==} engines: {node: '>=16'} peerDependencies: @@ -8166,11 +8003,11 @@ packages: react: '>=17.0' react-dom: '>=17.0' dependencies: - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) - '@mui/icons-material': 6.1.2(@mui/material@6.1.2)(@types/react@18.3.11)(react@18.3.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) - '@mui/x-date-pickers': 7.18.0(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.2)(@mui/system@6.1.2)(@types/react@18.3.11)(dayjs@1.11.13)(react-dom@18.3.1)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) + '@mui/icons-material': 6.1.6(@mui/material@6.1.6)(@types/react@18.3.12)(react@18.3.1) + '@mui/material': 6.1.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@mui/x-date-pickers': 7.22.1(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@mui/material@6.1.6)(@mui/system@6.1.6)(@types/react@18.3.12)(dayjs@1.11.13)(react-dom@18.3.1)(react@18.3.1) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@18.3.1)(react@18.3.1) '@tanstack/react-virtual': 3.10.6(react-dom@18.3.1)(react@18.3.1) @@ -8312,6 +8149,11 @@ packages: engines: {node: '>= 0.6'} dev: true + /negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + dev: true + /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true @@ -8320,7 +8162,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.7.0 + tslib: 2.8.1 dev: true /node-fetch@2.6.7: @@ -8379,14 +8221,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - dev: true - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -8565,7 +8399,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.1 dev: true /parent-module@1.0.1: @@ -8582,7 +8416,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -8595,8 +8429,8 @@ packages: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + /parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} dependencies: entities: 4.5.0 dev: true @@ -8610,7 +8444,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.1 dev: true /path-exists@4.0.0: @@ -8646,8 +8480,8 @@ packages: resolve-protobuf-schema: 2.1.0 dev: false - /picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -8751,7 +8585,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 /prelude-ls@1.2.1: @@ -8792,11 +8626,11 @@ packages: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /proj4@2.12.1: - resolution: {integrity: sha512-vmhP3hmstjXjzFwg8QXJwpoj4n7GVrXk3ZW3DzNK/Ur4cuwXq7ZiMXaWYvLYLQbX8n4MXgbwTr4lthOUZltBpA==} + /proj4@2.14.0: + resolution: {integrity: sha512-fumDL50ThQ3issOLxaLYwv1j4LePEzYleY6vqsX+2uWOcvKzqpzHhtTTH18CvIDg+nf8MYl0/XF6yYyESKDi4w==} dependencies: mgrs: 1.0.0 - wkt-parser: 1.3.3 + wkt-parser: 1.4.0 dev: false /prompts@2.4.2: @@ -8900,13 +8734,13 @@ packages: quickselect: 3.0.0 dev: false - /react-chartjs-2@5.2.0(chart.js@4.4.4)(react@18.3.1): + /react-chartjs-2@5.2.0(chart.js@4.4.6)(react@18.3.1): resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} peerDependencies: chart.js: ^4.1.1 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - chart.js: 4.4.4 + chart.js: 4.4.6 react: 18.3.1 dev: false @@ -8931,14 +8765,14 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /react-dropzone@14.2.6(react@18.3.1): - resolution: {integrity: sha512-arXJyFVV+ld869AOS7ikqYJLuSklxXfiiD/+b+umknqC+u0hg+K3HMYgzKDLAi6RVnfBiILk5oluGZ8Z/PVrEw==} - engines: {node: '>= 20.17'} + /react-dropzone@14.3.1(react@18.3.1): + resolution: {integrity: sha512-0Rq5g35SMcHneTPlKKBEpxh91N59XNhu5z2Xreoh1xB0EGTWUaS4ESS346qMLWQi9Y1T3SUU7JMKmB0/VaFggQ==} + engines: {node: '>= 10.13'} peerDependencies: react: '>= 16.8 || 18.0.0' dependencies: - attr-accept: 2.2.2 - file-selector: 0.6.0 + attr-accept: 2.2.4 + file-selector: 1.2.0 prop-types: 15.8.1 react: 18.3.1 dev: false @@ -8956,14 +8790,14 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 html-parse-stringify: 3.0.1 i18next: 22.5.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /react-i18next@13.5.0(i18next@23.15.1)(react-dom@18.3.1)(react@18.3.1): + /react-i18next@13.5.0(i18next@23.16.4)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} peerDependencies: i18next: '>= 23.2.3' @@ -8976,9 +8810,9 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 html-parse-stringify: 3.0.1 - i18next: 23.15.1 + i18next: 23.16.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -9025,7 +8859,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -9068,11 +8902,6 @@ packages: picomatch: 2.3.1 dev: true - /readdirp@4.0.1: - resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} - engines: {node: '>= 14.16.0'} - dev: true - /rechoir@0.7.1: resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} engines: {node: '>= 0.10'} @@ -9110,11 +8939,11 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 dev: true - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + /regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -9130,7 +8959,7 @@ packages: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.0 regjsgen: 0.8.0 - regjsparser: 0.11.0 + regjsparser: 0.11.2 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.0 dev: true @@ -9139,8 +8968,8 @@ packages: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} dev: true - /regjsparser@0.11.0: - resolution: {integrity: sha512-vTbzVAjQDzwQdKuvj7qEq6OlAprCjE656khuGQ4QaBLg7abQ9I9ISpmLuc6inWe7zP75AECjqUa4g4sdQvOXhg==} + /regjsparser@0.11.2: + resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==} hasBin: true dependencies: jsesc: 3.0.2 @@ -9285,8 +9114,8 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sanitize-html@2.13.0: - resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==} + /sanitize-html@2.13.1: + resolution: {integrity: sha512-ZXtKq89oue4RP7abL9wp/9URJcqQNABB5GGJ2acW1sdO8JTVl92f4ygD7Yc9Ze09VAZhnt2zegeU0tbNsdcLYg==} dependencies: deepmerge: 4.3.1 escape-string-regexp: 4.0.0 @@ -9295,6 +9124,7 @@ packages: parse-srcset: 1.0.2 postcss: 8.4.47 dev: false + /saxes@5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} @@ -9487,7 +9317,7 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /simple-zustand-devtools@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(zustand@4.4.7): + /simple-zustand-devtools@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(zustand@4.4.7): resolution: {integrity: sha512-Axfcfr9L3YL3kto7aschCQLY2VUlXXMnIVtaTe9Y0qWbNmPsX/y7KsNprmxBZoB0pww5ZGs1u/ohcrvQ3tE6jA==} peerDependencies: '@types/react': '>=18.0.0' @@ -9496,11 +9326,11 @@ packages: react-dom: '>=18.0.0' zustand: '>=1.0.2' dependencies: - '@types/react': 18.3.11 - '@types/react-dom': 18.3.0 + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - zustand: 4.4.7(@types/react@18.3.11)(react@18.3.1) + zustand: 4.4.7(@types/react@18.3.12)(react@18.3.1) dev: true /sirv@2.0.4: @@ -9618,8 +9448,8 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /sql.js@1.11.0: - resolution: {integrity: sha512-GsLUDU3vhOo14Pd5ME0y2te49JQyby6HuoCuadevEV+CGgTUjmYRrm7B7lhRyzOgrmcWmspUfyjNb6sOAEqdsA==} + /sql.js@1.12.0: + resolution: {integrity: sha512-Bi+43yMx/tUFZVYD4AUscmdL6NHn3gYQ+CM+YheFWLftOmrEC/Mz6Yh7E96Y2WDHYz3COSqT+LP6Z79zgrwJlA==} dev: false /stack-utils@2.0.6: @@ -9639,13 +9469,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.7 - dev: true - /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} @@ -9668,9 +9491,11 @@ packages: strip-ansi: 6.0.1 dev: true - /string.prototype.includes@2.0.0: - resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + /string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} dependencies: + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 dev: true @@ -9688,7 +9513,7 @@ packages: gopd: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 + regexp.prototype.flags: 1.5.3 set-function-name: 2.0.2 side-channel: 1.0.6 dev: true @@ -9773,13 +9598,13 @@ packages: escape-string-regexp: 1.0.5 dev: true - /style-loader@3.3.4(webpack@5.95.0): + /style-loader@3.3.4(webpack@5.96.1): resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true /style-to-js@1.1.1: @@ -9798,12 +9623,6 @@ packages: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} dev: false - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -9847,7 +9666,7 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /terser-webpack-plugin@5.3.10(webpack@5.95.0): + /terser-webpack-plugin@5.3.10(webpack@5.96.1): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -9867,17 +9686,17 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.34.1 - webpack: 5.95.0(webpack-cli@4.10.0) + terser: 5.36.0 + webpack: 5.96.1(webpack-cli@4.10.0) dev: true - /terser@5.34.1: - resolution: {integrity: sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==} + /terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.12.1 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -9911,10 +9730,6 @@ packages: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -9961,8 +9776,8 @@ packages: escape-string-regexp: 1.0.5 dev: true - /ts-api-utils@1.3.0(typescript@4.9.5): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + /ts-api-utils@1.4.0(typescript@4.9.5): + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -9983,8 +9798,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -10147,15 +9962,15 @@ packages: engines: {node: '>= 0.8'} dev: true - /update-browserslist-db@1.1.1(browserslist@4.24.0): + /update-browserslist-db@1.1.1(browserslist@4.24.2): resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.24.0 + browserslist: 4.24.2 escalade: 3.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 dev: true /uri-js@4.4.1: @@ -10281,7 +10096,7 @@ packages: hasBin: true dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 commander: 7.2.0 debounce: 1.2.1 @@ -10289,7 +10104,7 @@ packages: gzip-size: 6.0.0 html-escaper: 2.0.2 opener: 1.5.2 - picocolors: 1.1.0 + picocolors: 1.1.1 sirv: 2.0.4 ws: 7.5.10 transitivePeerDependencies: @@ -10306,7 +10121,7 @@ packages: humanize: 0.0.9 dev: true - /webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.95.0): + /webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.96.1): resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} engines: {node: '>=10.13.0'} hasBin: true @@ -10327,7 +10142,7 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.95.0) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.96.1) '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.15.2) colorette: 2.0.20 @@ -10337,13 +10152,13 @@ packages: import-local: 3.2.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.95.0) + webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.96.1) webpack-merge: 5.10.0 dev: true - /webpack-dev-middleware@5.3.4(webpack@5.95.0): + /webpack-dev-middleware@5.3.4(webpack@5.96.1): resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -10354,10 +10169,10 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.95.0(webpack-cli@4.10.0) + webpack: 5.96.1(webpack-cli@4.10.0) dev: true - /webpack-dev-server@4.15.2(webpack-cli@4.10.0)(webpack@5.95.0): + /webpack-dev-server@4.15.2(webpack-cli@4.10.0)(webpack@5.96.1): resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} engines: {node: '>= 12.13.0'} hasBin: true @@ -10381,13 +10196,13 @@ packages: bonjour-service: 1.2.1 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.7.4 + compression: 1.7.5 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.21.0 + express: 4.21.1 graceful-fs: 4.2.11 html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) + http-proxy-middleware: 2.0.7(@types/express@4.17.21) ipaddr.js: 2.2.0 launch-editor: 2.9.1 open: 8.4.2 @@ -10398,9 +10213,9 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.95.0(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.95.0) - webpack-dev-middleware: 5.3.4(webpack@5.95.0) + webpack: 5.96.1(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.96.1) + webpack-dev-middleware: 5.3.4(webpack@5.96.1) ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -10423,8 +10238,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.95.0(webpack-cli@4.10.0): - resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} + /webpack@5.96.1(webpack-cli@4.10.0): + resolution: {integrity: sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -10433,13 +10248,13 @@ packages: webpack-cli: optional: true dependencies: + '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.24.0 + acorn: 8.14.0 + browserslist: 4.24.2 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 @@ -10453,9 +10268,9 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.95.0) + terser-webpack-plugin: 5.3.10(webpack@5.96.1) watchpack: 2.4.2 - webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.95.0) + webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.2)(webpack@5.96.1) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -10564,8 +10379,8 @@ packages: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} dev: true - /wkt-parser@1.3.3: - resolution: {integrity: sha512-ZnV3yH8/k58ZPACOXeiHaMuXIiaTk1t0hSUVisbO0t4RjA5wPpUytcxeyiN2h+LZRrmuHIh/1UlrR9e7DHDvTw==} + /wkt-parser@1.4.0: + resolution: {integrity: sha512-qpwO7Ihds/YYDTi1aADFTI1Sm9YC/tTe3SHD24EeIlZxy7Ik6a1b4HOz7jAi0xdUAw487duqpo8OGu+Tf4nwlQ==} dev: false /word-wrap@1.2.5: @@ -10685,7 +10500,7 @@ packages: resolution: {integrity: sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==} dev: false - /zustand@4.4.7(@types/react@18.3.11)(react@18.3.1): + /zustand@4.4.7(@types/react@18.3.12)(react@18.3.1): resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==} engines: {node: '>=12.7.0'} peerDependencies: @@ -10700,30 +10515,30 @@ packages: react: optional: true dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.12 react: 18.3.1 use-sync-external-store: 1.2.0(react@18.3.1) - github.com/Canadian-Geospatial-Platform/geochart/c4a471e1fb15753a6fec3eb3bc86ab07cb350ce2(@types/react@18.3.11): + github.com/Canadian-Geospatial-Platform/geochart/c4a471e1fb15753a6fec3eb3bc86ab07cb350ce2(@types/react@18.3.12): resolution: {tarball: https://codeload.github.com/Canadian-Geospatial-Platform/geochart/tar.gz/c4a471e1fb15753a6fec3eb3bc86ab07cb350ce2} id: github.com/Canadian-Geospatial-Platform/geochart/c4a471e1fb15753a6fec3eb3bc86ab07cb350ce2 name: geoview-geochart version: 0.1.0 dependencies: - '@emotion/react': 11.13.3(@types/react@18.3.11)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.11)(react@18.3.1) - '@mui/icons-material': 5.16.7(@mui/material@5.16.7)(@types/react@18.3.11)(react@18.3.1) - '@mui/material': 5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.3.12)(react@18.3.1) + '@mui/icons-material': 5.16.7(@mui/material@5.16.7)(@types/react@18.3.12)(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) ajv: 8.17.1 ajv-formats: 2.1.1 - chart.js: 4.4.4 - chartjs-adapter-moment: 1.0.1(chart.js@4.4.4)(moment@2.30.1) - i18next: 23.15.1 + chart.js: 4.4.6 + chartjs-adapter-moment: 1.0.1(chart.js@4.4.6)(moment@2.30.1) + i18next: 23.16.4 moment: 2.30.1 react: 18.3.1 - react-chartjs-2: 5.2.0(chart.js@4.4.4)(react@18.3.1) + react-chartjs-2: 5.2.0(chart.js@4.4.6)(react@18.3.1) react-dom: 18.3.1(react@18.3.1) - react-i18next: 13.5.0(i18next@23.15.1)(react-dom@18.3.1)(react@18.3.1) + react-i18next: 13.5.0(i18next@23.16.4)(react-dom@18.3.1)(react@18.3.1) transitivePeerDependencies: - '@types/react' - react-native diff --git a/docs/app/event/LegendsLayerSet/LegendsLayerSet-event-managment.md b/docs/app/event/LegendsLayerSet/LegendsLayerSet-event-managment.md index 06a6f056338..578046f9f0f 100644 --- a/docs/app/event/LegendsLayerSet/LegendsLayerSet-event-managment.md +++ b/docs/app/event/LegendsLayerSet/LegendsLayerSet-event-managment.md @@ -1,48 +1,51 @@ -# LegendsLayerSet Class - -The `LegendsLayerSet` class is used to create objects that will keep legends associated with layer paths. It uses internally an instance of the `LayerSet` class to keep track of the layers loaded on the map. The property list of the LayerSet remains synchronized with all layer paths on the map at all times. However, the `LayerSet` has a registration condition function that filter out XYZ layers since they do not have an associated legend. If you delete or add a layer to the map, the LayerSet will be updated accordingly. The values associated with layer paths are of one of the following types: `null`, `undefined` or `TypeLegend`. A `null`value means the `getLegend` call did not get the expected legend due to an error. The `undefined`value is used to identify the layer paths that need to return there legend. A value of `TypeLegend` is the layer path legend. The structure of `TypeLegend` is shown below: - -``` js -export type TypeLegend = { - layerPath: string; - layerName?: TypeLocalizedString; - type: TypeGeoviewLayerType; - styleConfig?: TypeStyleConfig; - legend: TypeVectorLayerStyles | HTMLCanvasElement | null; -}; -``` - -The `layerPath` parameter is used to link the legend to the layer entry configuration in the map. The `layerName` is a bilingual string for display information. The `type` tells us how to handle the legend. The `styleConfig` parameter contains the configuration settings that describe the style of the legend. This can be a simple, a unique value, or a class break configuration. Finally, we have the `legend`, whose null value indicates that it is impossible to get a legend for the layer. When the type is `ogcWms`, the legend is a `HTMLCanvasElement`. Otherwise, it is a `TypeVectorLayerStyles`. -

 

-

- -

- -The class can be instantiated using the constructor or the create method. At creation time, the constructor instantiates a `LayerSet` object which will send a `LAYER_SET.REQUEST_LAYER_INVENTORY` event using a `mapId/LayerSetId` handler in order to get the list of all the layerPaths existing on the map. Throughout its existence, the `LegendsLayerSet` instance listens, through its `LayerSet` property, to the `LAYER_SET.LAYER_REGISTRATION` events that are emitted when a layer is created/destroyed on the map or in response to the inventory request to update its `ResultSet` property. It also listens to the `GET_LEGENDS.LEGEND_INFO` event. This listener receives the legend information returned by the layer's `getLegend` call and store it in the `LayerSet`. If all the registered layers have their legend information, a `GET_LEGENDS.LEGEND_LAYERSET_UPDATED` event is triggered with a `mapId/LayerSetId` handler. - -When the `LegendsLayerSet` is created, a `LAYER_SET.UPDATED` listener is attached to the instance to wait for `LayerSet` modifications. Then, a `GET_LEGENDS.QUERY_LEGEND` event will be emited to all undefined legend of the `LayerSet` to obtain the legends. - -The `LAYER_SET.UPDATED` listener will catch layer add/remove applied to the map. If a layer is added, a `GET_LEGENDS.QUERY_LEGEND` event will be emited for it and when all the registered layers have received their legend information, a `GET_LEGENDS.LEGEND_LAYERSET_UPDATED` event is emited using the `mapId/LayerSetId` as handler. The `GET_LEGENDS.LEGEND_LAYERSET_UPDATED` event is also emited when a layer is removed from the map to signal that a legend has been removed. - -To see how you can use the `FeatureInfoLayerSet`, you can analyse the code of the following files: -- the constructor of the `DetailsAPI` class defined in [packages/geoview-core/src/core/components/details/details/details-api.ts](../../../../packages/geoview-core/src/core/components/details/details-api.ts#L25) and its `createDetails` function; -__DEPRECATED__ -- the `GET_FEATURE_INFO.ALL_QUERIES_DONE` listener in the `DetailsItem` JSX.Element defined in [packages\geoview-details-panel\src\details-item.tsx](../../../../packages/geoview-details-panel/src/details-item.tsx#L43) and the `createDetails` API call near the end of the file; -- the `GET_FEATURE_INFO.ALL_QUERIES_DONE` listener in the `DetailsItem` JSX.Element defined in [packages\geoview-footer-panel\src\details-item.tsx](../../../../packages/geoview-footer-panel/src/details-item.tsx#L40) and the `createDetails` API call near the end of the file. - -# LegendsLayerSet State Diagram - -The life cycle of the `LegendsLayerSet` starts with the creation of a `LayerSet` object. This means that all the state transitions explained in the [`LayerSet` state diagram](../LayerSet/LayerSet-event-managment.md#layerset-state-diagram) are performed at creation time. To summarize what happens at this time, we must consider two cases: - -- The `LegendsLayerSet` is instantiated before the associated map has created its layers and the layers will be added at the time of their creation. -- The `LegendsLayerSet` is instantiated when the associated map already has layers enabled and these will be added as a result of the inventory request made by the `LegendsLayerSet` when it is created. - -All map layers added to the `LegendsLayerSet` will fetch their legend, but only when the `LegendsLayerSet` process has been triggered. As long as the `TRIGGER` event is not emitted, the collection of legends is not done. - -Let's follow the thread of events for the first case. We create a `LegendsLayerSet`. As a result, a `LayerSet` is instanciated to associate each layer path with its legend. The `REQUEST_LAYER_INVENTORY` event that is thrown at this point in time is done for nothing, because the map does not contain a layer. However, each time a layer is added to the map, a `LAYER_REGISTRATION` event is emited to add its layer path to the `LayerSet`. This action will trigger a `LAYER_SET.UPDATED` event to tell the `LegendsLayerSet` instance that its `LayerSet` has been modified. If the `LegendsLayerSet` has received its `TRIGGER` event, It will react to the Layer_set.updated and request the legend for the newly added layer path. It is the code of the layer path of the GeoView layer instance that will request the legend and when it is obtained, a `LEGEND_INFO` event will be emitted for the layer path of the map. This will update the `LayerSet` and if all legends are fetched, an `LEGEND_LAYERSET_UPDATED` event is emited to signal to all listening object that the legends has changed. - -The second case differs from the previous one only in the way the `REQUEST_LAYER_INVENTORY` event is handled. Since layers already exist on the map, they will identify themselves for registration. The rest of the logic is the same. -

 

-

- -

+# LegendsLayerSet Class + +The `LegendsLayerSet` class is used to create objects that will keep legends associated with layer paths. It uses internally an instance of the `LayerSet` class to keep track of the layers loaded on the map. The property list of the LayerSet remains synchronized with all layer paths on the map at all times. However, the `LayerSet` has a registration condition function that filter out XYZ layers since they do not have an associated legend. If you delete or add a layer to the map, the LayerSet will be updated accordingly. The values associated with layer paths are of one of the following types: `null`, `undefined` or `TypeLegend`. A `null`value means the `getLegend` call did not get the expected legend due to an error. The `undefined`value is used to identify the layer paths that need to return there legend. A value of `TypeLegend` is the layer path legend. The structure of `TypeLegend` is shown below: + +```js +export type TypeLegend = { + layerPath: string, + layerName?: string, + type: TypeGeoviewLayerType, + styleConfig?: TypeStyleConfig, + legend: TypeVectorLayerStyles | HTMLCanvasElement | null, +}; +``` + +The `layerPath` parameter is used to link the legend to the layer entry configuration in the map. The `layerName` is a bilingual string for display information. The `type` tells us how to handle the legend. The `styleConfig` parameter contains the configuration settings that describe the style of the legend. This can be a simple, a unique value, or a class break configuration. Finally, we have the `legend`, whose null value indicates that it is impossible to get a legend for the layer. When the type is `ogcWms`, the legend is a `HTMLCanvasElement`. Otherwise, it is a `TypeVectorLayerStyles`. + +

 

+

+ +

+ +The class can be instantiated using the constructor or the create method. At creation time, the constructor instantiates a `LayerSet` object which will send a `LAYER_SET.REQUEST_LAYER_INVENTORY` event using a `mapId/LayerSetId` handler in order to get the list of all the layerPaths existing on the map. Throughout its existence, the `LegendsLayerSet` instance listens, through its `LayerSet` property, to the `LAYER_SET.LAYER_REGISTRATION` events that are emitted when a layer is created/destroyed on the map or in response to the inventory request to update its `ResultSet` property. It also listens to the `GET_LEGENDS.LEGEND_INFO` event. This listener receives the legend information returned by the layer's `getLegend` call and store it in the `LayerSet`. If all the registered layers have their legend information, a `GET_LEGENDS.LEGEND_LAYERSET_UPDATED` event is triggered with a `mapId/LayerSetId` handler. + +When the `LegendsLayerSet` is created, a `LAYER_SET.UPDATED` listener is attached to the instance to wait for `LayerSet` modifications. Then, a `GET_LEGENDS.QUERY_LEGEND` event will be emited to all undefined legend of the `LayerSet` to obtain the legends. + +The `LAYER_SET.UPDATED` listener will catch layer add/remove applied to the map. If a layer is added, a `GET_LEGENDS.QUERY_LEGEND` event will be emited for it and when all the registered layers have received their legend information, a `GET_LEGENDS.LEGEND_LAYERSET_UPDATED` event is emited using the `mapId/LayerSetId` as handler. The `GET_LEGENDS.LEGEND_LAYERSET_UPDATED` event is also emited when a layer is removed from the map to signal that a legend has been removed. + +To see how you can use the `FeatureInfoLayerSet`, you can analyse the code of the following files: + +- the constructor of the `DetailsAPI` class defined in [packages/geoview-core/src/core/components/details/details/details-api.ts](../../../../packages/geoview-core/src/core/components/details/details-api.ts#L25) and its `createDetails` function; + **DEPRECATED** +- the `GET_FEATURE_INFO.ALL_QUERIES_DONE` listener in the `DetailsItem` JSX.Element defined in [packages\geoview-details-panel\src\details-item.tsx](../../../../packages/geoview-details-panel/src/details-item.tsx#L43) and the `createDetails` API call near the end of the file; +- the `GET_FEATURE_INFO.ALL_QUERIES_DONE` listener in the `DetailsItem` JSX.Element defined in [packages\geoview-footer-panel\src\details-item.tsx](../../../../packages/geoview-footer-panel/src/details-item.tsx#L40) and the `createDetails` API call near the end of the file. + +# LegendsLayerSet State Diagram + +The life cycle of the `LegendsLayerSet` starts with the creation of a `LayerSet` object. This means that all the state transitions explained in the [`LayerSet` state diagram](../LayerSet/LayerSet-event-managment.md#layerset-state-diagram) are performed at creation time. To summarize what happens at this time, we must consider two cases: + +- The `LegendsLayerSet` is instantiated before the associated map has created its layers and the layers will be added at the time of their creation. +- The `LegendsLayerSet` is instantiated when the associated map already has layers enabled and these will be added as a result of the inventory request made by the `LegendsLayerSet` when it is created. + +All map layers added to the `LegendsLayerSet` will fetch their legend, but only when the `LegendsLayerSet` process has been triggered. As long as the `TRIGGER` event is not emitted, the collection of legends is not done. + +Let's follow the thread of events for the first case. We create a `LegendsLayerSet`. As a result, a `LayerSet` is instanciated to associate each layer path with its legend. The `REQUEST_LAYER_INVENTORY` event that is thrown at this point in time is done for nothing, because the map does not contain a layer. However, each time a layer is added to the map, a `LAYER_REGISTRATION` event is emited to add its layer path to the `LayerSet`. This action will trigger a `LAYER_SET.UPDATED` event to tell the `LegendsLayerSet` instance that its `LayerSet` has been modified. If the `LegendsLayerSet` has received its `TRIGGER` event, It will react to the Layer_set.updated and request the legend for the newly added layer path. It is the code of the layer path of the GeoView layer instance that will request the legend and when it is obtained, a `LEGEND_INFO` event will be emitted for the layer path of the map. This will update the `LayerSet` and if all legends are fetched, an `LEGEND_LAYERSET_UPDATED` event is emited to signal to all listening object that the legends has changed. + +The second case differs from the previous one only in the way the `REQUEST_LAYER_INVENTORY` event is handled. Since layers already exist on the map, they will identify themselves for registration. The rest of the logic is the same. + +

 

+

+ +

diff --git a/docs/app/geoview-layer/add-layer-type.md b/docs/app/geoview-layer/add-layer-type.md index d039e8aeb40..3ef6bdb3b0e 100644 --- a/docs/app/geoview-layer/add-layer-type.md +++ b/docs/app/geoview-layer/add-layer-type.md @@ -1,268 +1,263 @@ -# Add a New Layer Type - -There is many steps involed in adding a new layer type support to GeoView. This documentation file will explain step by step what needs to be done to accomplish this task. -The GeoView layers are divided in 2 different categories _Raster_ and _Vector_. Both categories are manage by abstract classes ([abstract-geoview-raster](../../packages/geoview-core/src/geo/layer/geoview-layers/raster/abstract-geoview-raster.ts) and [abstract-geoview-vector](../../packages/geoview-core/src/geo/layer/geoview-layers/vector/abstract-geoview-vector.ts)) to encapsulate their behaviours, These 2 -categories are also encapsulated in the parent abstract class: [abstract-geoview-layers](../../packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts). - -**TODO: create basic template flavor for creating a new layer type** - -### First, Create new layer class - -The first step when it is time to create a new layer type is to determine if it is a raster or a vector type of layer. This selection is driven by the type of OpenLayers sources you will use to -instanciate the layer. - -For example, we are trying to add a new layer type based on a [static image source](https://openlayers.org/en/latest/apidoc/module-ol_source_ImageStatic-Static.html). When I read the OpenLayers -documentation, I can see this source extend the [ImageSource](https://openlayers.org/en/latest/apidoc/module-ol_source_Image-ImageSource.html). If I continue my investigation I can see -this class has raster type of source as subclasses. I now know my new layer type is **raster**. - -I can create my new class, inside the raster folder of the layer structure, [image-static.ts](../../packages/geoview-core/src/geo/layer/geoview-layers/raster/image-static.ts) by extending AbstractGeoViewRaster class - -``` -/** ***************************************************************************************************************************** - * A class to add image static layer. - * - * @exports - * @class ImageStatic - */ -// ****************************************************************************************************************************** -export class ImageStatic extends AbstractGeoViewRaster { -``` - -To make the link between my new class and the geoview layers hierarchy I need to do the following: - -- Inside [abstract-geoview-layers](../../packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts) - - Add to **DEFAULT_LAYER_NAMES** _constant_ - - Add to **LayerTypeKey** _type_ - - Add to **TypeGeoviewLayerType** _type_ - - Add to **CONST_LAYER_TYPES** _constant_ based on `LayerTypeKey, TypeGeoviewLayerType` - -Go back to my new class... Geoview is developed in TypeScript and uses type guard functions to validate type in order to determine if the type ascention is valid. -I uses existing functions in other raster class and adapted them to my own static image need. - -``` -export const layerConfigIsImageStatic = (verifyIfLayer: TypeGeoviewLayerConfig): verifyIfLayer is TypeImageStaticLayerConfig => { - return verifyIfLayer?.geoviewLayerType === CONST_LAYER_TYPES.IMAGE_STATIC; -}; - -export const geoviewLayerIsImageStatic = (verifyIfGeoViewLayer: AbstractGeoViewLayer): verifyIfGeoViewLayer is ImageStatic => { - return verifyIfGeoViewLayer?.type === CONST_LAYER_TYPES.IMAGE_STATIC; -}; - -export const geoviewEntryIsImageStatic = (verifyIfGeoViewEntry: TypeLayerEntryConfig): verifyIfGeoViewEntry is TypeImageStaticLayerEntryConfig => { - return verifyIfGeoViewEntry?.geoviewRootLayer?.geoviewLayerType === CONST_LAYER_TYPES.IMAGE_STATIC; -}; -``` - -The first function verifies if my layer is type of `TypeImageStaticLayerConfig` and the last function verifies if my layer entry is type of `TypeImageStaticLayerEntryConfig`. -These 2 types does not exist in my class yet so I have to create them. - -``` -export interface TypeImageStaticLayerEntryConfig extends Omit { - source: TypeSourceImageStaticInitialConfig; -} - -export interface TypeImageStaticLayerConfig extends Omit { - geoviewLayerType: 'imageStatic'; - listOfLayerEntryConfig: TypeImageStaticLayerEntryConfig[]; -} -``` - -**TODO: should we reuse constant from abstract class instead of text?** - -The important variable inside these 2 interfaces is the type of source my new layer class will be using. In this cases, the type does not exist so I need to create it inside [map-schema-type](../../packages/geoview-core/src/geo/map/map-schema-types.ts). Because my new source is type of sourceImage, I will add it inside `TypeSourceImageInitialConfig` - -``` -/** ****************************************************************************************************************************** - * Initial settings for image sources. - */ -export type TypeSourceImageInitialConfig = - | TypeSourceImageWmsInitialConfig - | TypeSourceImageEsriInitialConfig - | TypeSourceImageStaticInitialConfig; -``` - -I will then create this new interface by extending the `TypeSourceImageInitialConfig` _type_ - -``` -/** ****************************************************************************************************************************** - * Initial settings for static image sources. - */ -export interface TypeSourceImageStaticInitialConfig extends TypeBaseSourceImageInitialConfig { - /** Image extent */ - extent: Extent; -} -``` - -For my [static image source](https://openlayers.org/en/latest/apidoc/module-ol_source_ImageStatic-Static.html), I need `projection` and `extent`. Because the projection property is already define -in parent type, I only need to create my source with the extent property. - -For the moment, my class and my source type are define but I still have an error because I do not have implemented all needed fuctions define in my abstract classes. - -From [abstract-geoview-layers](../../packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts) - -``` -protected abstract fetchServiceMetadata(): Promise; -protected abstract validateListOfLayerEntryConfig(listOfLayerEntryConfig: TypeListOfLayerEntryConfig): TypeListOfLayerEntryConfig; -protected abstract processLayerMetadata(layerConfig: TypeLayerEntryConfig): Promise; -protected abstract processOneLayerEntry(layerConfig: AbstractBaseLayerEntryConfig): Promise; -protected abstract getFeatureInfoAtPixel(location: Pixel, layerPath: string): Promise; -protected abstract getFeatureInfoAtCoordinate(location: Coordinate, layerPath: string): Promise; -protected abstract getFeatureInfoAtLongLat(location: Coordinate, layerPath: string): Promise; -protected abstract getFeatureInfoUsingBBox(location: Coordinate[], layerPath: string): Promise; -protected abstract getFeatureInfoUsingPolygon(location: Coordinate[], layerPath: string): Promise; -protected abstract getFieldDomain(fieldName: string, layerConfig: TypeLayerEntryConfig): null | codedValueType | rangeDomainType; -protected abstract getFieldType(fieldName: string, layerConfig: TypeLayerEntryConfig): 'string' | 'date' | 'number'; -``` - -Once done I have a valid new static image layer type! - -### Second, Add my new layer class to loading process - -Next step is to add my new class to the loading process inside the [layer.ts](../../packages/geoview-core/src/geo/layer/layer.ts) class. For this I need to -import my new class and add it to the `EVENT_NAMES.LAYER.EVENT_ADD_LAYER` switch like this - -``` -import { ImageStatic, layerConfigIsImageStatic } from './geoview-layers/raster/image-static'; -... - } else if (layerConfigIsImageStatic(layerConfig)) { - const imageStatic = new ImageStatic(this.mapId, layerConfig); - imageStatic.createGeoViewLayers().then(() => { - this.addToMap(imageStatic); - }); - } else if (layerConfigIsWFS(layerConfig)) { -... -``` - -My new layer will not load yet because I have validation errors when GeoView tries to validate that the configuration for my new layer is valid. To solve this issue, -I need to start ith our [schema.json](../../packages/geoview-core/schema.json) configuration file. Because we added a new type `TypeSourceImageInitialConfig` we need to -add is corresponding definition in our schema. - -Add the new layer type - -``` -"TypeGeoviewLayerType": { - "type": "string", - "items": { - "enum": ["esriDynamic", "esriFeature", "imageStatic", "GeoJSON", "geoCore", "GeoPackage", "xyzTiles", "ogcFeature", "ogcWfs", "ogcWms"] - }, - "description": "Type of GeoView layer." - }, -``` - -Add the TypeSourceImageStaticInitialConfig section. This the expected configuration for the source of our new layer - -``` -"TypeSourceImageStaticInitialConfig": { - "additionalProperties": false, - "type": "object", - "properties": { - "dataAccessPath": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The path (English/French) to reach the data to display. If not specified, metadatAccessPath will be assigne to it." - }, - "crossOrigin": { - "type": "string", - "description": "The crossOrigin attribute for loaded images. Note that you must provide a crossOrigin value if you want to access pixel data with the Canvas renderer." - }, - "projection": { - "type": "integer", - "description": "Spatial Reference EPSG code supported (https://epsg.io/). We support Web Mercator and Lambert Conical Conform Canada." - }, - "featureInfo": { - "$ref": "#/definitions/TypeFeatureInfoLayerConfig" - }, - "extent": { - "type": "array", - "minItems": 4, - "maxItems": 4, - "items": { - "type": "number" - }, - "description": "The extent of the static image. Called with [minX, minY, maxX, maxY] extent coordinates." - } - } -}, -``` - -To finish, add our new type to `TypeSourceImageInitialConfig` defninition - -``` -"TypeSourceImageInitialConfig": { - "anyOf": [ - ... - { "$ref": "#/definitions/TypeSourceImageStaticInitialConfig" } - ] -}, -``` - -Finally we need to add configuration calidation our new layer type. All layer configuration are validate at load time. This is done with our -[config-validation](../../packages/geoview-core/src/core/utils/config/config-validation.ts) class. - -Import the payload function from our layer class - -``` -import { geoviewEntryIsImageStatic } from '../../../geo/layer/geoview-layers/raster/image-static'; -``` - -Then add extra validation - -``` -private doExtraValidation(listOfGeoviewLayerConfig?: TypeListOfGeoviewLayerConfig) { -... - case 'imageStatic': - this.geoviewLayerIdIsMandatory(geoviewLayerConfig); - this.processLayerEntryConfig(geoviewLayerConfig, geoviewLayerConfig, geoviewLayerConfig.listOfLayerEntryConfig); - break; -... -} -``` - -Lastly create the layer entry config who will be use later in the loading process - -``` -private processLayerEntryConfig(rootLayerConfig: TypeGeoviewLayerConfig, parentLayerConfig: TypeGeoviewLayerConfig | TypeLayerGroupEntryConfig, listOfLayerEntryConfig: TypeListOfLayerEntryConfig) { -...} else if (geoviewEntryIsImageStatic(layerConfig)) { - // Value for layerConfig.entryType can only be raster - if (!layerConfig.entryType) layerConfig.entryType = 'raster'; - if (!layerConfig.source.dataAccessPath) { - throw new Error( - `source.dataAccessPath on layer entry ${Layer.getLayerPath(layerConfig)} is mandatory for GeoView layer ${ - rootLayerConfig.geoviewLayerId - } of type ${rootLayerConfig.geoviewLayerType}` - ); - } - } else if (geoviewEntryIsXYZTiles(layerConfig)) {... -} -``` - -### Third, Create the layer configuration - -Now that everything is put in place I can create my configuration to add to one of my existing map - -``` -{ - 'geoviewLayerId': 'staticLYR10', - 'geoviewLayerName': { - 'en': 'Static Image' - }, - 'geoviewLayerType': 'imageStatic', - 'listOfLayerEntryConfig': [ - { - 'layerId': 'thumbnail', - 'layerName': { 'en': 'DataCube' }, - 'source': { - 'dataAccessPath': { - 'en': 'https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png', - 'fr': 'https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png' - }, - 'extent': [-87.77486341686723, - 51.62285357468582, - -84.57727128084842, - 53.833354975551075 - ], - 'projection': 4326 - } - } - ] -} -``` +# Add a New Layer Type + +There is many steps involed in adding a new layer type support to GeoView. This documentation file will explain step by step what needs to be done to accomplish this task. +The GeoView layers are divided in 2 different categories _Raster_ and _Vector_. Both categories are manage by abstract classes ([abstract-geoview-raster](../../packages/geoview-core/src/geo/layer/geoview-layers/raster/abstract-geoview-raster.ts) and [abstract-geoview-vector](../../packages/geoview-core/src/geo/layer/geoview-layers/vector/abstract-geoview-vector.ts)) to encapsulate their behaviours, These 2 +categories are also encapsulated in the parent abstract class: [abstract-geoview-layers](../../packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts). + +**TODO: create basic template flavor for creating a new layer type** + +### First, Create new layer class + +The first step when it is time to create a new layer type is to determine if it is a raster or a vector type of layer. This selection is driven by the type of OpenLayers sources you will use to +instanciate the layer. + +For example, we are trying to add a new layer type based on a [static image source](https://openlayers.org/en/latest/apidoc/module-ol_source_ImageStatic-Static.html). When I read the OpenLayers +documentation, I can see this source extend the [ImageSource](https://openlayers.org/en/latest/apidoc/module-ol_source_Image-ImageSource.html). If I continue my investigation I can see +this class has raster type of source as subclasses. I now know my new layer type is **raster**. + +I can create my new class, inside the raster folder of the layer structure, [image-static.ts](../../packages/geoview-core/src/geo/layer/geoview-layers/raster/image-static.ts) by extending AbstractGeoViewRaster class + +``` +/** ***************************************************************************************************************************** + * A class to add image static layer. + * + * @exports + * @class ImageStatic + */ +// ****************************************************************************************************************************** +export class ImageStatic extends AbstractGeoViewRaster { +``` + +To make the link between my new class and the geoview layers hierarchy I need to do the following: + +- Inside [abstract-geoview-layers](../../packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts) + - Add to **DEFAULT_LAYER_NAMES** _constant_ + - Add to **LayerTypeKey** _type_ + - Add to **TypeGeoviewLayerType** _type_ + - Add to **CONST_LAYER_TYPES** _constant_ based on `LayerTypeKey, TypeGeoviewLayerType` + +Go back to my new class... Geoview is developed in TypeScript and uses type guard functions to validate type in order to determine if the type ascention is valid. +I uses existing functions in other raster class and adapted them to my own static image need. + +``` +export const layerConfigIsImageStatic = (verifyIfLayer: TypeGeoviewLayerConfig): verifyIfLayer is TypeImageStaticLayerConfig => { + return verifyIfLayer?.geoviewLayerType === CONST_LAYER_TYPES.IMAGE_STATIC; +}; + +export const geoviewLayerIsImageStatic = (verifyIfGeoViewLayer: AbstractGeoViewLayer): verifyIfGeoViewLayer is ImageStatic => { + return verifyIfGeoViewLayer?.type === CONST_LAYER_TYPES.IMAGE_STATIC; +}; + +export const geoviewEntryIsImageStatic = (verifyIfGeoViewEntry: TypeLayerEntryConfig): verifyIfGeoViewEntry is TypeImageStaticLayerEntryConfig => { + return verifyIfGeoViewEntry?.geoviewRootLayer?.geoviewLayerType === CONST_LAYER_TYPES.IMAGE_STATIC; +}; +``` + +The first function verifies if my layer is type of `TypeImageStaticLayerConfig` and the last function verifies if my layer entry is type of `TypeImageStaticLayerEntryConfig`. +These 2 types does not exist in my class yet so I have to create them. + +``` +export interface TypeImageStaticLayerEntryConfig extends Omit { + source: TypeSourceImageStaticInitialConfig; +} + +export interface TypeImageStaticLayerConfig extends Omit { + geoviewLayerType: 'imageStatic'; + listOfLayerEntryConfig: TypeImageStaticLayerEntryConfig[]; +} +``` + +**TODO: should we reuse constant from abstract class instead of text?** + +The important variable inside these 2 interfaces is the type of source my new layer class will be using. In this cases, the type does not exist so I need to create it inside [map-schema-type](../../packages/geoview-core/src/geo/map/map-schema-types.ts). Because my new source is type of sourceImage, I will add it inside `TypeSourceImageInitialConfig` + +``` +/** ****************************************************************************************************************************** + * Initial settings for image sources. + */ +export type TypeSourceImageInitialConfig = + | TypeSourceImageWmsInitialConfig + | TypeSourceImageEsriInitialConfig + | TypeSourceImageStaticInitialConfig; +``` + +I will then create this new interface by extending the `TypeSourceImageInitialConfig` _type_ + +``` +/** ****************************************************************************************************************************** + * Initial settings for static image sources. + */ +export interface TypeSourceImageStaticInitialConfig extends TypeBaseSourceImageInitialConfig { + /** Image extent */ + extent: Extent; +} +``` + +For my [static image source](https://openlayers.org/en/latest/apidoc/module-ol_source_ImageStatic-Static.html), I need `projection` and `extent`. Because the projection property is already define +in parent type, I only need to create my source with the extent property. + +For the moment, my class and my source type are define but I still have an error because I do not have implemented all needed fuctions define in my abstract classes. + +From [abstract-geoview-layers](../../packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts) + +``` +protected abstract fetchServiceMetadata(): Promise; +protected abstract validateListOfLayerEntryConfig(listOfLayerEntryConfig: TypeListOfLayerEntryConfig): TypeListOfLayerEntryConfig; +protected abstract processLayerMetadata(layerConfig: TypeLayerEntryConfig): Promise; +protected abstract processOneLayerEntry(layerConfig: AbstractBaseLayerEntryConfig): Promise; +protected abstract getFeatureInfoAtPixel(location: Pixel, layerPath: string): Promise; +protected abstract getFeatureInfoAtCoordinate(location: Coordinate, layerPath: string): Promise; +protected abstract getFeatureInfoAtLongLat(location: Coordinate, layerPath: string): Promise; +protected abstract getFeatureInfoUsingBBox(location: Coordinate[], layerPath: string): Promise; +protected abstract getFeatureInfoUsingPolygon(location: Coordinate[], layerPath: string): Promise; +protected abstract getFieldDomain(fieldName: string, layerConfig: TypeLayerEntryConfig): null | codedValueType | rangeDomainType; +protected abstract getFieldType(fieldName: string, layerConfig: TypeLayerEntryConfig): 'string' | 'date' | 'number'; +``` + +Once done I have a valid new static image layer type! + +### Second, Add my new layer class to loading process + +Next step is to add my new class to the loading process inside the [layer.ts](../../packages/geoview-core/src/geo/layer/layer.ts) class. For this I need to +import my new class and add it to the `EVENT_NAMES.LAYER.EVENT_ADD_LAYER` switch like this + +``` +import { ImageStatic, layerConfigIsImageStatic } from './geoview-layers/raster/image-static'; +... + } else if (layerConfigIsImageStatic(layerConfig)) { + const imageStatic = new ImageStatic(this.mapId, layerConfig); + imageStatic.createGeoViewLayers().then(() => { + this.addToMap(imageStatic); + }); + } else if (layerConfigIsWFS(layerConfig)) { +... +``` + +My new layer will not load yet because I have validation errors when GeoView tries to validate that the configuration for my new layer is valid. To solve this issue, +I need to start ith our [schema.json](../../packages/geoview-core/schema.json) configuration file. Because we added a new type `TypeSourceImageInitialConfig` we need to +add is corresponding definition in our schema. + +Add the new layer type + +``` +"TypeGeoviewLayerType": { + "type": "string", + "items": { + "enum": ["esriDynamic", "esriFeature", "imageStatic", "GeoJSON", "geoCore", "GeoPackage", "xyzTiles", "ogcFeature", "ogcWfs", "ogcWms"] + }, + "description": "Type of GeoView layer." + }, +``` + +Add the TypeSourceImageStaticInitialConfig section. This the expected configuration for the source of our new layer + +``` +"TypeSourceImageStaticInitialConfig": { + "additionalProperties": false, + "type": "object", + "properties": { + "dataAccessPath": { + "type": "string", + "description": "The path to reach the data to display. If not specified, metadatAccessPath will be assigne to it." + }, + "crossOrigin": { + "type": "string", + "description": "The crossOrigin attribute for loaded images. Note that you must provide a crossOrigin value if you want to access pixel data with the Canvas renderer." + }, + "projection": { + "type": "integer", + "description": "Spatial Reference EPSG code supported (https://epsg.io/). We support Web Mercator and Lambert Conical Conform Canada." + }, + "featureInfo": { + "$ref": "#/definitions/TypeFeatureInfoLayerConfig" + }, + "extent": { + "type": "array", + "minItems": 4, + "maxItems": 4, + "items": { + "type": "number" + }, + "description": "The extent of the static image. Called with [minX, minY, maxX, maxY] extent coordinates." + } + } +}, +``` + +To finish, add our new type to `TypeSourceImageInitialConfig` defninition + +``` +"TypeSourceImageInitialConfig": { + "anyOf": [ + ... + { "$ref": "#/definitions/TypeSourceImageStaticInitialConfig" } + ] +}, +``` + +Finally we need to add configuration calidation our new layer type. All layer configuration are validate at load time. This is done with our +[config-validation](../../packages/geoview-core/src/core/utils/config/config-validation.ts) class. + +Import the payload function from our layer class + +``` +import { geoviewEntryIsImageStatic } from '../../../geo/layer/geoview-layers/raster/image-static'; +``` + +Then add extra validation + +``` +private doExtraValidation(listOfGeoviewLayerConfig?: TypeListOfGeoviewLayerConfig) { +... + case 'imageStatic': + this.geoviewLayerIdIsMandatory(geoviewLayerConfig); + this.processLayerEntryConfig(geoviewLayerConfig, geoviewLayerConfig, geoviewLayerConfig.listOfLayerEntryConfig); + break; +... +} +``` + +Lastly create the layer entry config who will be use later in the loading process + +``` +private processLayerEntryConfig(rootLayerConfig: TypeGeoviewLayerConfig, parentLayerConfig: TypeGeoviewLayerConfig | TypeLayerGroupEntryConfig, listOfLayerEntryConfig: TypeListOfLayerEntryConfig) { +...} else if (geoviewEntryIsImageStatic(layerConfig)) { + // Value for layerConfig.entryType can only be raster + if (!layerConfig.entryType) layerConfig.entryType = 'raster'; + if (!layerConfig.source.dataAccessPath) { + throw new Error( + `source.dataAccessPath on layer entry ${Layer.getLayerPath(layerConfig)} is mandatory for GeoView layer ${ + rootLayerConfig.geoviewLayerId + } of type ${rootLayerConfig.geoviewLayerType}` + ); + } + } else if (geoviewEntryIsXYZTiles(layerConfig)) {... +} +``` + +### Third, Create the layer configuration + +Now that everything is put in place I can create my configuration to add to one of my existing map + +``` +{ + 'geoviewLayerId': 'staticLYR10', + 'geoviewLayerName': 'Static Image', + 'geoviewLayerType': 'imageStatic', + 'listOfLayerEntryConfig': [ + { + 'layerId': 'thumbnail', + 'layerName': 'DataCube', + 'source': { + 'dataAccessPath': 'https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png',, + 'extent': [-87.77486341686723, + 51.62285357468582, + -84.57727128084842, + 53.833354975551075 + ], + 'projection': 4326 + } + } + ] +} +``` diff --git a/docs/app/geoview-layer/map-config/draw.io/TypeMapConfig.drawio.svg b/docs/app/geoview-layer/map-config/draw.io/TypeMapConfig.drawio.svg index c8de6523d56..8cd738863bb 100644 --- a/docs/app/geoview-layer/map-config/draw.io/TypeMapConfig.drawio.svg +++ b/docs/app/geoview-layer/map-config/draw.io/TypeMapConfig.drawio.svg @@ -483,14 +483,14 @@
- + geoviewLayerName?: TypeLocalizedString + + geoviewLayerName?: string
- + geoviewLayerName?: TypeLocalizedString + + geoviewLayerName?:string @@ -502,14 +502,14 @@
- + metadataAccessPath?: TypeLocalizedString + + metadataAccessPath?: string
- + metadataAccessPath?: TypeLocalizedString + + metadataAccessPath?: string @@ -1298,7 +1298,7 @@
- + layerName?: TypeLocalizedString + + layerName?: string
@@ -1306,7 +1306,7 @@ - + layerName?: TypeLocalizedString + + layerName?: string diff --git a/docs/app/loading-maps.md b/docs/app/loading-maps.md index 89d7a78b24f..8771443b152 100644 --- a/docs/app/loading-maps.md +++ b/docs/app/loading-maps.md @@ -10,6 +10,7 @@ There are multiple ways to load maps on your projects To see different load configurations, go to our [Default Configuration](https://canadian-geospatial-platform.github.io/geoview/public/default-config.html?p=3857&z=4&c=-100,40&l=en&t=dark&b=basemapId:transport,shaded:false,labeled:true&i=dynamic&cc=overview-map&keys=12acd145-626a-49eb-b850-0a59c9bc7506,ccc75c12-5acc-4a6a-959f-ef6f621147b9#HLCONF7) demo page. To load a map you need to have a script tag that access a live build of the viewer. This repository expose a develop build (_below_) for anyone to test but we really reccomand to download one of our relese and install the js files on your web server. + ```js ``` @@ -96,14 +97,8 @@ An example of this: }, 'listOfGeoviewLayerConfig': [{ 'geoviewLayerId': 'wmsLYR1', - 'geoviewLayerName': { - 'en': 'earthquakes', - 'fr': 'earthquakes' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', - 'fr': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/' - }, + 'geoviewLayerName': 'earthquakes', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-basemap-panel/schema.json b/packages/geoview-basemap-panel/schema.json index 336fe539491..4a34b9b029f 100644 --- a/packages/geoview-basemap-panel/schema.json +++ b/packages/geoview-basemap-panel/schema.json @@ -7,67 +7,25 @@ "additionalProperties": false, "definitions": { "basemapNameNode": { - "type": "object", - "properties": { - "en": { - "type": "string" - }, - "fr": { - "type": "string" - } - }, + "type": "string", "description": "The display name of the layer." }, "basemapDescriptionNode": { - "type": "object", - "properties": { - "en": { - "type": "string" - }, - "fr": { - "type": "string" - } - }, + "type": "string", "description": "Basemap description." }, "thumbnailUrlNode": { - "type": "object", - "properties": { - "en": { - "type": "array", - "uniqueItems": true, - "items": { "type": "string" } - }, - "fr": { - "type": "array", - "uniqueItems": true, - "items": { "type": "string" } - } - }, + "type": "array", + "uniqueItems": true, + "items": { "type": "string" }, "description": "Basemap thumbnail urls." }, "basemapLayerUrlNode": { - "type": "object", - "properties": { - "en": { - "type": "string" - }, - "fr": { - "type": "string" - } - }, + "type": "string", "description": "The service endpoint of the basemap layer." }, "basemapAttributionNode": { - "type": "object", - "properties": { - "en": { - "type": "string" - }, - "fr": { - "type": "string" - } - }, + "type": "string", "description": "Basemap attribution text." }, "basemapLayersNode": { diff --git a/packages/geoview-core/public/configs/OSDP/datasets/OSDP-metadata.json b/packages/geoview-core/public/configs/OSDP/datasets/OSDP-metadata.json index 8d78a15ae4e..fb9ec06f3f2 100644 --- a/packages/geoview-core/public/configs/OSDP/datasets/OSDP-metadata.json +++ b/packages/geoview-core/public/configs/OSDP/datasets/OSDP-metadata.json @@ -4,7 +4,7 @@ "listOfLayerEntryConfig": [ { "layerId": "BC-MPI-1-2521_fr.json", - "layerName": { "en": "BC-MPI-1-2521_fr - Metadata" }, + "layerName": "BC-MPI-1-2521_fr - Metadata", "source": { "featureInfo": { "queryable": true, diff --git a/packages/geoview-core/public/configs/OSDP/function-event.json b/packages/geoview-core/public/configs/OSDP/function-event.json index 0f2f86c1f19..1f1c2bc9c2a 100644 --- a/packages/geoview-core/public/configs/OSDP/function-event.json +++ b/packages/geoview-core/public/configs/OSDP/function-event.json @@ -16,12 +16,8 @@ }, { "geoviewLayerId": "airborne_radioactivity", - "geoviewLayerName": { - "en": "Airborne Radioactivity" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer" - }, + "geoviewLayerName": "Airborne Radioactivity", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { @@ -31,8 +27,8 @@ }, { "geoviewLayerId": "errorId", - "geoviewLayerName": { "en": "uniqerrorLayerueValue" }, - "metadataAccessPath": { "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer1/" }, + "geoviewLayerName": "uniqerrorLayerueValue", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer1/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -42,8 +38,8 @@ }, { "geoviewLayerId": "uniqueValueId", - "geoviewLayerName": { "en": "uniqueValue" }, - "metadataAccessPath": { "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/" }, + "geoviewLayerName": "uniqueValue", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -58,12 +54,8 @@ }, { "geoviewLayerId": "esriFeatureLYR5", - "geoviewLayerName": { - "en": "Top Projects" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/" - }, + "geoviewLayerName": "Top Projects", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -73,12 +65,8 @@ }, { "geoviewLayerId": "nonmetalmines", - "geoviewLayerName": { - "en": "Non metal mines" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/" - }, + "geoviewLayerName": "Non metal mines", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -88,42 +76,42 @@ }, { "geoviewLayerId": "geojsonLYR1", - "geoviewLayerName": { "en": "GeoJSON Sample" }, - "metadataAccessPath": { "en": "./datasets/geojson/metadata.json" }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { "en": "Polygons" } + "layerName": "Polygons" }, { "layerId": "lines.json", - "layerName": { "en": "Lines" } + "layerName": "Lines" }, { "entryType": "group", "layerId": "point-feature-group", - "layerName": { "en": "Points & Icons" }, + "layerName": "Points & Icons", "listOfLayerEntryConfig": [ { "layerId": "icon_points.json", - "layerName": { "en": "Icons" } + "layerName": "Icons" }, { "layerId": "points.json", - "layerName": { "en": "Points" } + "layerName": "Points" }, { "layerId": "points_1.json", - "layerName": { "en": "Points 1" } + "layerName": "Points 1" }, { "layerId": "points_2.json", - "layerName": { "en": "Points 2" } + "layerName": "Points 2" }, { "layerId": "points_3.json", - "layerName": { "en": "Points 3" } + "layerName": "Points 3" } ] } diff --git a/packages/geoview-core/public/configs/OSDP/osdp-land.json b/packages/geoview-core/public/configs/OSDP/osdp-land.json index 1a435e97338..c08f1ee73df 100644 --- a/packages/geoview-core/public/configs/OSDP/osdp-land.json +++ b/packages/geoview-core/public/configs/OSDP/osdp-land.json @@ -3,7 +3,7 @@ "interaction": "dynamic", "viewSettings": { "initialView": { - "zoomAndCenter": [9, [-113.376, 57.860]] + "zoomAndCenter": [9, [-113.376, 57.86]] }, "projection": 3978 }, @@ -15,10 +15,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "LYR1", - "geoviewLayerName": { "en": "2010 Land Cover of Canada" }, - "metadataAccessPath": { - "en": "https://datacube.services.geo.ca/web/landcover.xml" - }, + "geoviewLayerName": "2010 Land Cover of Canada", + "metadataAccessPath": "https://datacube.services.geo.ca/web/landcover.xml", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { @@ -28,10 +26,8 @@ }, { "geoviewLayerId": "LYR2", - "geoviewLayerName": { "en": "2015 Land Cover of Canada" }, - "metadataAccessPath": { - "en": "https://datacube.services.geo.ca/web/landcover.xml" - }, + "geoviewLayerName": "2015 Land Cover of Canada", + "metadataAccessPath": "https://datacube.services.geo.ca/web/landcover.xml", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { @@ -43,16 +39,16 @@ }, "components": ["north-arrow", "overview-map"], "navBar": ["zoom", "fullscreen", "home", "location", "basemap-select"], - "appBar": { - "tabs": { - "core": ["geolocator", "export"] - } - }, + "appBar": { + "tabs": { + "core": ["geolocator", "export"] + } + }, "footerBar": { "tabs": { "core": ["legend", "layers", "details", "data-table"] } }, - "corePackages": [ "swiper"], + "corePackages": ["swiper"], "theme": "geo.ca" - } +} diff --git a/packages/geoview-core/public/configs/elections-canada-2019.json b/packages/geoview-core/public/configs/elections-canada-2019.json index 25904f13eac..73f6ac66416 100644 --- a/packages/geoview-core/public/configs/elections-canada-2019.json +++ b/packages/geoview-core/public/configs/elections-canada-2019.json @@ -15,20 +15,14 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "polling-division-boudnaries-2019", - "geoviewLayerName": { - "en": "Polling Division Boundaries of 2019", - "fr": "Limites de section de vote de 2019" - }, + "geoviewLayerName": "Polling Division Boundaries of 2019", "geoviewLayerType": "esriFeature", "initialSettings": { "states": { "visible": true } }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/ELECTIONS/elections_canada_2019_en/mapserver", - "fr": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/ELECTIONS/elections_canada_2019_fr/mapserver" - }, + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/ELECTIONS/elections_canada_2019_en/mapserver", "listOfLayerEntryConfig": [ { "layerId": "2" diff --git a/packages/geoview-core/public/configs/footer-tabs-config.json b/packages/geoview-core/public/configs/footer-tabs-config.json index 8c4f6ebaf74..33242458804 100644 --- a/packages/geoview-core/public/configs/footer-tabs-config.json +++ b/packages/geoview-core/public/configs/footer-tabs-config.json @@ -12,12 +12,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "esriFeatureLYR4", - "geoviewLayerName": { - "en": "Water quality at monitoring sites" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/DMS/CSO_volume/MapServer" - }, + "geoviewLayerName": "Water quality at monitoring sites", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/DMS/CSO_volume/MapServer", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { diff --git a/packages/geoview-core/public/configs/max-record-count.json b/packages/geoview-core/public/configs/max-record-count.json index bd05a74ebb1..e91d249dfd8 100644 --- a/packages/geoview-core/public/configs/max-record-count.json +++ b/packages/geoview-core/public/configs/max-record-count.json @@ -15,13 +15,9 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "advanced-polling-district-boundaries-2019", - "geoviewLayerName": { - "en": "Advance Polling District Boundaries of 2019" - }, + "geoviewLayerName": "Advance Polling District Boundaries of 2019", "geoviewLayerType": "esriFeature", - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/ELECTIONS/elections_canada_2019_en/mapserver" - }, + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/ELECTIONS/elections_canada_2019_en/mapserver", "listOfLayerEntryConfig": [ { "layerId": "1" @@ -30,13 +26,9 @@ }, { "geoviewLayerId": "completed", - "geoviewLayerName": { - "en": "Completed" - }, + "geoviewLayerName": "Completed", "geoviewLayerType": "esriDynamic", - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/IAAC/assessment_inventory_en/MapServer" - }, + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/IAAC/assessment_inventory_en/MapServer", "listOfLayerEntryConfig": [ { "layerId": "0" diff --git a/packages/geoview-core/public/configs/my-config.json b/packages/geoview-core/public/configs/my-config.json index 5ecb8718c66..e4993e1ac63 100644 --- a/packages/geoview-core/public/configs/my-config.json +++ b/packages/geoview-core/public/configs/my-config.json @@ -12,14 +12,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "wmsLYR1", - "geoviewLayerName": { - "en": "Première Nation / First Nation", - "fr": "Première Nation / First Nation" - }, - "metadataAccessPath": { - "en": "https://services.aadnc-aandc.gc.ca/geomatics/services/Donnees_Ouvertes-Open_Data/Premiere_Nation_First_Nation/MapServer/WMSServer", - "fr": "https://services.aadnc-aandc.gc.ca/geomatics/services/Donnees_Ouvertes-Open_Data/Premiere_Nation_First_Nation/MapServer/WMSServer" - }, + "geoviewLayerName": "Première Nation / First Nation", + "metadataAccessPath": "https://services.aadnc-aandc.gc.ca/geomatics/services/Donnees_Ouvertes-Open_Data/Premiere_Nation_First_Nation/MapServer/WMSServer", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { @@ -29,14 +23,8 @@ }, { "geoviewLayerId": "geojsonLYR4", - "geoviewLayerName": { - "en": "GeoJSON Line", - "fr": "GeoJSON Line" - }, - "metadataAccessPath": { - "en": "./datasets/geojson/metadata.json", - "fr": "./datasets/geojson/metadata.json" - }, + "geoviewLayerName": "GeoJSON Line", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { @@ -52,14 +40,8 @@ }, { "geoviewLayerId": "wmsLYR7", - "geoviewLayerName": { - "en": "Geomet", - "fr": "Geomet" - }, - "metadataAccessPath": { - "en": "https://geo.weather.gc.ca/geomet", - "fr": "https://geo.weather.gc.ca/geomet" - }, + "geoviewLayerName": "Geomet", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { diff --git a/packages/geoview-core/public/configs/navigator/05-zoom-layer.json b/packages/geoview-core/public/configs/navigator/05-zoom-layer.json index ddf2bfe44c7..9c838d45e22 100644 --- a/packages/geoview-core/public/configs/navigator/05-zoom-layer.json +++ b/packages/geoview-core/public/configs/navigator/05-zoom-layer.json @@ -16,44 +16,26 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "geojsonLYR1", - "geoviewLayerName": { - "en": "GeoJSON Sample", - "fr": "GeoJSON Échantillon" - }, - "metadataAccessPath": { - "en": "./datasets/geojson/metadata.json", - "fr": "./datasets/geojson/metadata.json" - }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { - "en": "Polygons", - "fr": "Polygones" - } + "layerName": "Polygons" }, { "layerId": "lines.json", - "layerName": { - "en": "Lines", - "fr": "Lignes" - } + "layerName": "Lines" }, { "entryType": "group", "layerId": "point-feature-group", - "layerName": { - "en": "point-feature-group", - "fr": "point-feature-group" - }, + "layerName": "point-feature-group", "listOfLayerEntryConfig": [ { "layerId": "icon_points.json", - "layerName": { - "en": "Icons", - "fr": "Icones" - }, + "layerName": "Icons", "initialSettings": { "controls": { "visibility": false @@ -62,31 +44,19 @@ }, { "layerId": "points.json", - "layerName": { - "en": "Points", - "fr": "Points" - } + "layerName": "Points" }, { "layerId": "points_1.json", - "layerName": { - "en": "Points 1", - "fr": "Points 1" - } + "layerName": "Points 1" }, { "layerId": "points_2.json", - "layerName": { - "en": "Points 2", - "fr": "Points 2" - } + "layerName": "Points 2" }, { "layerId": "points_3.json", - "layerName": { - "en": "Points 3", - "fr": "Points 3" - } + "layerName": "Points 3" } ] } diff --git a/packages/geoview-core/public/configs/navigator/06-basic-footer.json b/packages/geoview-core/public/configs/navigator/06-basic-footer.json index d2901384c24..82c0fc7bdd9 100644 --- a/packages/geoview-core/public/configs/navigator/06-basic-footer.json +++ b/packages/geoview-core/public/configs/navigator/06-basic-footer.json @@ -34,12 +34,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "airborne_radioactivity", - "geoviewLayerName": { - "en": "Airborne Radioactivity" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer" - }, + "geoviewLayerName": "Airborne Radioactivity", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { @@ -49,8 +45,8 @@ }, { "geoviewLayerId": "uniqueValueId", - "geoviewLayerName": { "en": "uniqueValue" }, - "metadataAccessPath": { "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/" }, + "geoviewLayerName": "uniqueValue", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -61,12 +57,8 @@ }, { "geoviewLayerId": "fail_bad_url", - "geoviewLayerName": { - "en": "Test fail bad url" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.caaaaaa/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer" - }, + "geoviewLayerName": "Test fail bad url", + "metadataAccessPath": "https://maps-cartes.services.geo.caaaaaa/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { @@ -76,12 +68,8 @@ }, { "geoviewLayerId": "esriFeatureLYR5", - "geoviewLayerName": { - "en": "Top Projects" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/" - }, + "geoviewLayerName": "Top Projects", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -91,12 +79,8 @@ }, { "geoviewLayerId": "nonmetalmines", - "geoviewLayerName": { - "en": "Non metal mines" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/" - }, + "geoviewLayerName": "Non metal mines", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -106,45 +90,45 @@ }, { "geoviewLayerId": "geojsonLYR1", - "geoviewLayerName": { "en": "GeoJSON Sample" }, - "metadataAccessPath": { "en": "./datasets/geojson/metadata.json" }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { "en": "Polygons" } + "layerName": "Polygons" }, { "layerId": "lines.json", - "layerName": { "en": "Lines" } + "layerName": "Lines" }, { "entryType": "group", "layerId": "point-feature-group", - "layerName": { "en": "Points & Icons" }, + "layerName": "Points & Icons", "listOfLayerEntryConfig": [ { "layerId": "icon_points.json", - "layerName": { "en": "Icons" } + "layerName": "Icons" }, { "layerId": "points.json", - "layerName": { "en": "Points" } + "layerName": "Points" }, { "layerId": "points_1.json", - "layerName": { "en": "Points 1" }, + "layerName": "Points 1", "initialSettings": { "controls": { "remove": true } } }, { "layerId": "points_2.json", - "layerName": { "en": "Points 2" } + "layerName": "Points 2" }, { "layerId": "points_3.json", - "layerName": { "en": "Points 3" } + "layerName": "Points 3" } ] } diff --git a/packages/geoview-core/public/configs/navigator/07-basic-appbar.json b/packages/geoview-core/public/configs/navigator/07-basic-appbar.json index dd2b8c3ab12..e8d4640247d 100644 --- a/packages/geoview-core/public/configs/navigator/07-basic-appbar.json +++ b/packages/geoview-core/public/configs/navigator/07-basic-appbar.json @@ -12,14 +12,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "uniqueValueId", - "geoviewLayerName": { - "en": "uniqueValue", - "fr": "uniqueValue" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/", - "fr": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/" - }, + "geoviewLayerName": "uniqueValue", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -29,14 +23,8 @@ }, { "geoviewLayerId": "esriFeatureLYR5", - "geoviewLayerName": { - "en": "Top Projects", - "fr": "Projets super" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/", - "fr": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/" - }, + "geoviewLayerName": "Top Projects", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -46,72 +34,42 @@ }, { "geoviewLayerId": "geojsonLYR1", - "geoviewLayerName": { - "en": "GeoJSON Sample", - "fr": "GeoJSON Échantillon" - }, - "metadataAccessPath": { - "en": "./datasets/geojson/metadata.json", - "fr": "./datasets/geojson/metadata.json" - }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { - "en": "Polygons", - "fr": "Polygones" - } + "layerName": "Polygons" }, { "layerId": "lines.json", - "layerName": { - "en": "Lines", - "fr": "Lignes" - } + "layerName": "Lines" }, { "entryType": "group", "layerId": "point-feature-group", - "layerName": { - "en": "point-feature-group", - "fr": "point-feature-group" - }, + "layerName": "point-feature-group", "listOfLayerEntryConfig": [ { "layerId": "icon_points.json", - "layerName": { - "en": "Icons", - "fr": "Icones" - } + "layerName": "Icons" }, { "layerId": "points.json", - "layerName": { - "en": "Points", - "fr": "Points" - } + "layerName": "Points" }, { "layerId": "points_1.json", - "layerName": { - "en": "Points 1", - "fr": "Points 1" - } + "layerName": "Points 1" }, { "layerId": "points_2.json", - "layerName": { - "en": "Points 2", - "fr": "Points 2" - } + "layerName": "Points 2" }, { "layerId": "points_3.json", - "layerName": { - "en": "Points 3", - "fr": "Points 3" - } + "layerName": "Points 3" } ] } @@ -122,26 +80,11 @@ "theme": "geo.ca", "appBar": { "tabs": { - "core": [ - "geolocator", - "export", - "guide", - "details", - "legend", - "data-table", - "layers" - ] + "core": ["geolocator", "export", "guide", "details", "legend", "data-table", "layers"] } }, - "navBar": [ - "zoom", - "fullscreen", - "home", - "location" - ], - "components": [ - "north-arrow" - ], + "navBar": ["zoom", "fullscreen", "home", "location"], + "components": ["north-arrow"], "corePackages": [], "externalPackages": [] -} \ No newline at end of file +} diff --git a/packages/geoview-core/public/configs/navigator/09-package-basemap-custom-basemap-panel.json b/packages/geoview-core/public/configs/navigator/09-package-basemap-custom-basemap-panel.json index 26d3bedb1b6..3f71ba53d56 100644 --- a/packages/geoview-core/public/configs/navigator/09-package-basemap-custom-basemap-panel.json +++ b/packages/geoview-core/public/configs/navigator/09-package-basemap-custom-basemap-panel.json @@ -34,44 +34,24 @@ "customBasemaps": [ { "basemapId": "simpletestlabel", - "name": { - "en": "Custom simple with labels", - "fr": "Perso simple avec étiquettes" - }, - "description": { - "en": "This is a custom province basemap in LCC projection.", - "fr": "Ceci est une carte de base personnalisée en projection ccl." - }, - "thumbnailUrl": { - "en": [ - "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer/WMTS/tile/1.0.0/Simple/default/default028mm/8/285/268.jpg" - ], - "fr": [ - "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer/WMTS/tile/1.0.0/Simple/default/default028mm/8/285/268.jpg" - ] - }, + "name": "Custom simple with labels", + "description": "This is a custom province basemap in LCC projection.", + "thumbnailUrl": [ + "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer/WMTS/tile/1.0.0/Simple/default/default028mm/8/285/268.jpg" + ], "layers": [ { "basemapId": "simple2", - "url": { - "en": "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer/WMTS/tile/1.0.0/Simple/default/default028mm/{z}/{y}/{x}.jpg", - "fr": "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer/WMTS/tile/1.0.0/Simple/default/default028mm/{z}/{y}/{x}.jpg" - }, + "url": "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer/WMTS/tile/1.0.0/Simple/default/default028mm/{z}/{y}/{x}.jpg", "opacity": 0.5 }, { "basemapId": "label2", - "url": { - "en": "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_TXT_3978/MapServer/WMTS/tile/1.0.0/BaseMaps_CBMT_TXT_3978/default/default028mm/{z}/{y}/{x}.jpg", - "fr": "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBCT_TXT_3978/MapServer/WMTS/tile/1.0.0/BaseMaps_CBCT_TXT_3978/default/default028mm/{z}/{y}/{x}.jpg" - }, + "url": "https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_TXT_3978/MapServer/WMTS/tile/1.0.0/BaseMaps_CBMT_TXT_3978/default/default028mm/{z}/{y}/{x}.jpg", "opacity": 1 } ], - "attribution": { - "en": "test attribution", - "fr": "test attribution" - }, + "attribution": "test attribution", "zoomLevels": { "min": 0, "max": 17 diff --git a/packages/geoview-core/public/configs/navigator/10-package-time-slider.json b/packages/geoview-core/public/configs/navigator/10-package-time-slider.json index d40318c855c..7ed09047008 100644 --- a/packages/geoview-core/public/configs/navigator/10-package-time-slider.json +++ b/packages/geoview-core/public/configs/navigator/10-package-time-slider.json @@ -12,25 +12,21 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "napl", - "geoviewLayerName": { "en": "NAPL" }, - "metadataAccessPath": { "en": "https://datacube.services.geo.ca/web/napl-ontario-ring-of-fire.xml" }, + "geoviewLayerName": "NAPL", + "metadataAccessPath": "https://datacube.services.geo.ca/web/napl-ontario-ring-of-fire.xml", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "layerId": "ontario-ring-of-fire", - "layerName": { "en": "Ontario ring of fire" } + "layerName": "Ontario ring of fire" } ] }, { "geoviewLayerId": "historical-flood", "serviceDateFormat": "yyyy/mm/ddThh:mm:ssz", - "geoviewLayerName": { - "en": "Historical Flood Events (HFE)" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer" - }, + "geoviewLayerName": "Historical Flood Events (HFE)", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -40,24 +36,20 @@ }, { "geoviewLayerId": "wmsLYR1-spatiotemporel", - "geoviewLayerName": { "en": "Spatiotemporel" }, - "metadataAccessPath": { "en": "https://geo.weather.gc.ca/geomet" }, + "geoviewLayerName": "Spatiotemporel", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "layerId": "RADAR_1KM_RSNO", - "layerName": { "en": "Test Spatiotemporel" } + "layerName": "Test Spatiotemporel" } ] }, { "geoviewLayerId": "MSI", - "geoviewLayerName": { - "en": "MSI" - }, - "metadataAccessPath": { - "en": "https://datacube.services.geo.ca/ows/msi" - }, + "geoviewLayerName": "MSI", + "metadataAccessPath": "https://datacube.services.geo.ca/ows/msi", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { diff --git a/packages/geoview-core/public/configs/navigator/11-package-time-slider-custom-time-slider.json b/packages/geoview-core/public/configs/navigator/11-package-time-slider-custom-time-slider.json index c785d086329..56fc35164e3 100644 --- a/packages/geoview-core/public/configs/navigator/11-package-time-slider-custom-time-slider.json +++ b/packages/geoview-core/public/configs/navigator/11-package-time-slider-custom-time-slider.json @@ -2,14 +2,8 @@ "sliders": [ { "layerPaths": ["historical-flood/0"], - "title": { - "en": "Historical Flood Events - Custom", - "fr": "Événements d'inondation historiques - Personnalisé" - }, - "description": { - "en": "Custom description", - "fr": "Descriptif personnalisé" - }, + "title": "Historical Flood Events - Custom", + "description": "Custom description", "locked": false, "reversed": false, "temporalDimension": { @@ -23,14 +17,8 @@ }, { "layerPaths": ["wmsLYR1-spatiotemporel/RADAR_1KM_RSNO"], - "title": { - "en": "Spatiotemporel - Custom", - "fr": "Spatiotemporel - Personnalisé" - }, - "description": { - "en": "Custom description", - "fr": "Descriptif personnalisé" - }, + "title": "Spatiotemporel - Custom", + "description": "Custom description", "locked": true, "reversed": true, "defaultValue": "2024-02-21T14:54:00Z" diff --git a/packages/geoview-core/public/configs/navigator/11-package-time-slider-custom.json b/packages/geoview-core/public/configs/navigator/11-package-time-slider-custom.json index 96b772fe999..30cd8cecf1c 100644 --- a/packages/geoview-core/public/configs/navigator/11-package-time-slider-custom.json +++ b/packages/geoview-core/public/configs/navigator/11-package-time-slider-custom.json @@ -13,12 +13,8 @@ { "geoviewLayerId": "historical-flood", "serviceDateFormat": "yyyy/mm/ddThh:mm:ssz", - "geoviewLayerName": { - "en": "Historical Flood Events (HFE)" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer" - }, + "geoviewLayerName": "Historical Flood Events (HFE)", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -28,24 +24,20 @@ }, { "geoviewLayerId": "wmsLYR1-spatiotemporel", - "geoviewLayerName": { "en": "Spatiotemporel" }, - "metadataAccessPath": { "en": "https://geo.weather.gc.ca/geomet" }, + "geoviewLayerName": "Spatiotemporel", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "layerId": "RADAR_1KM_RSNO", - "layerName": { "en": "Test Spatiotemporel" } + "layerName": "Test Spatiotemporel" } ] }, { "geoviewLayerId": "MSI", - "geoviewLayerName": { - "en": "MSI" - }, - "metadataAccessPath": { - "en": "https://datacube.services.geo.ca/ows/msi" - }, + "geoviewLayerName": "MSI", + "metadataAccessPath": "https://datacube.services.geo.ca/ows/msi", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { diff --git a/packages/geoview-core/public/configs/navigator/12-a-package-swiper.json b/packages/geoview-core/public/configs/navigator/12-a-package-swiper.json index 9a268dbe5f8..eb923af9fcb 100644 --- a/packages/geoview-core/public/configs/navigator/12-a-package-swiper.json +++ b/packages/geoview-core/public/configs/navigator/12-a-package-swiper.json @@ -15,10 +15,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "esriFeatureLYR4", - "geoviewLayerName": { "en": "Water quality at monitoring sites" }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/" - }, + "geoviewLayerName": "Water quality at monitoring sites", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [{ "layerId": "0" }] } diff --git a/packages/geoview-core/public/configs/navigator/12-package-geochart.json b/packages/geoview-core/public/configs/navigator/12-package-geochart.json index 2e5a7f98071..33e6cad09ed 100644 --- a/packages/geoview-core/public/configs/navigator/12-package-geochart.json +++ b/packages/geoview-core/public/configs/navigator/12-package-geochart.json @@ -12,14 +12,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "airborne_radioactivity", - "geoviewLayerName": { - "en": "Airborne Radioactivity", - "fr": "Radioactivité aérienne" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer", - "fr": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_fr/MapServer" - }, + "geoviewLayerName": "Airborne Radioactivity", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { @@ -29,14 +23,8 @@ }, { "geoviewLayerId": "tritium_agol", - "geoviewLayerName": { - "en": "Tritium Radioactivity agol", - "fr": "Radioactivité tritium agol" - }, - "metadataAccessPath": { - "en": "https://services1.arcgis.com/HsjBaDykC1mjhXz9/ArcGIS/rest/services/CRMN___Tritium_in_Atmospheric_Water_Vapour_WFL1/FeatureServer", - "fr": "https://services1.arcgis.com/HsjBaDykC1mjhXz9/ArcGIS/rest/services/CRMN___Tritium_in_Atmospheric_Water_Vapour_WFL1/FeatureServer" - }, + "geoviewLayerName": "Tritium Radioactivity agol", + "metadataAccessPath": "https://services1.arcgis.com/HsjBaDykC1mjhXz9/ArcGIS/rest/services/CRMN___Tritium_in_Atmospheric_Water_Vapour_WFL1/FeatureServer", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -46,14 +34,8 @@ }, { "geoviewLayerId": "shellfish_sites", - "geoviewLayerName": { - "en": "Shellfish Sites", - "fr": "Sites de Mollusques" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/Shellfish_Sites_Samples_Mollusques_Echantillons/MapServer", - "fr": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/Shellfish_Sites_Samples_Mollusques_Echantillons/MapServer" - }, + "geoviewLayerName": "Shellfish Sites", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/Shellfish_Sites_Samples_Mollusques_Echantillons/MapServer", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -63,14 +45,8 @@ }, { "geoviewLayerId": "ogcFeatureLakes", - "geoviewLayerName": { - "en": "Large Lakes", - "fr": "Grands lacs" - }, - "metadataAccessPath": { - "en": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev", - "fr": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev" - }, + "geoviewLayerName": "Large Lakes", + "metadataAccessPath": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev", "geoviewLayerType": "ogcFeature", "listOfLayerEntryConfig": [ { @@ -81,14 +57,8 @@ }, { "geoviewLayerId": "cesi", - "geoviewLayerName": { - "en": "CESI", - "fr": "CESI" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer", - "fr": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer" - }, + "geoviewLayerName": "CESI", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -99,51 +69,30 @@ }, { "geoviewLayerId": "geojsonLYR5", - "geoviewLayerName": { - "en": "GeoJSON Sample", - "fr": "Échantillon GeoJSON" - }, - "metadataAccessPath": { - "en": "./datasets/geojson/metadata.json", - "fr": "./datasets/geojson/metadata.json" - }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { - "en": "Polygons", - "fr": "Polygones" - } + "layerName": "Polygons" }, { "layerId": "lines.json", - "layerName": { - "en": "Lines", - "fr": "Lignes" - } + "layerName": "Lines" }, { "entryType": "group", "layerId": "point-feature-group", - "layerName": { - "en": "Points", - "fr": "Points" - }, + "layerName": "Points", "listOfLayerEntryConfig": [ { "layerId": "icon_points.json", - "layerName": { - "en": "Icons", - "fr": "Icones" - } + "layerName": "Icons" }, { "layerId": "points.json", - "layerName": { - "en": "Points", - "fr": "Points" - } + "layerName": "Points" } ] } diff --git a/packages/geoview-core/public/configs/navigator/13-all-layers.json b/packages/geoview-core/public/configs/navigator/13-all-layers.json index 77de557fd80..ac6ffc32157 100644 --- a/packages/geoview-core/public/configs/navigator/13-all-layers.json +++ b/packages/geoview-core/public/configs/navigator/13-all-layers.json @@ -12,31 +12,31 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "geojsonLYR1", - "geoviewLayerName": { "en": "GeoJSON Sample" }, - "metadataAccessPath": { "en": "./datasets/geojson/metadata.json" }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { "en": "Polygons" } + "layerName": "Polygons" }, { "layerId": "lines.json", - "layerName": { "en": "Lines" } + "layerName": "Lines" }, { "entryType": "group", "layerId": "point-feature-group", - "layerName": { "en": "point-feature-group" }, + "layerName": "point-feature-group", "listOfLayerEntryConfig": [ { "layerId": "icon_points.json", - "layerName": { "en": "Icons" }, + "layerName": "Icons", "initialSettings": { "states": { "visible": false } } }, { "layerId": "points.json", - "layerName": { "en": "Points" } + "layerName": "Points" } ] } @@ -44,14 +44,14 @@ }, { "geoviewLayerId": "csvLYR1", - "geoviewLayerName": { "en": "NPRI" }, + "geoviewLayerName": "NPRI", "geoviewLayerType": "CSV", "listOfLayerEntryConfig": [ { "layerId": "NPRI-INRP_WaterEau_MediaGroupMilieu_2022", - "layerName": { "en": "NPRI Water Media Group 2022" }, + "layerName": "NPRI Water Media Group 2022", "source": { - "dataAccessPath": { "en": "./datasets/csv-files/NPRI-INRP_WaterEau_MediaGroupMilieu_2022.csv" }, + "dataAccessPath": "./datasets/csv-files/NPRI-INRP_WaterEau_MediaGroupMilieu_2022.csv", "separator": "," } } @@ -59,10 +59,8 @@ }, { "geoviewLayerId": "esriFeatureLYR1", - "geoviewLayerName": { "en": "Temporal_Test_Bed_en" }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/" - }, + "geoviewLayerName": "Temporal_Test_Bed_en", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { @@ -72,11 +70,9 @@ }, { "geoviewLayerId": "historical-flood", - "geoviewLayerName": { "en": "Historical Flood Events (HFE)" }, + "geoviewLayerName": "Historical Flood Events (HFE)", "externalDateFormat": "mm/dd/yyyy hh:mm:ss-05:00", - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer" - }, + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -86,17 +82,13 @@ }, { "geoviewLayerId": "ESRIImageLYR2", - "geoviewLayerName": { - "en": "Max Temp" - }, + "geoviewLayerName": "Max Temp", "geoviewLayerType": "esriImage", - "metadataAccessPath": { - "en": "https://www5.agr.gc.ca/atlas/rest/services/imageservices/annual_crop_inventory_2022/ImageServer" - }, + "metadataAccessPath": "https://www5.agr.gc.ca/atlas/rest/services/imageservices/annual_crop_inventory_2022/ImageServer", "listOfLayerEntryConfig": [ { "layerId": "annual_crop_inventory_2022", - "layerName": { "en": "Crop Inventory 2022" } + "layerName": "Crop Inventory 2022" } ] }, @@ -106,35 +98,26 @@ }, { "geoviewLayerId": "wfsLYR2", - "geoviewLayerName": { - "en": "Current Conditions" - }, - "metadataAccessPath": { - "en": "https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS" - }, + "geoviewLayerName": "Current Conditions", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS", "geoviewLayerType": "ogcWfs", "listOfLayerEntryConfig": [ { "layerId": "ec-msc:CURRENT_CONDITIONS", - "layerName": { "en": "Current Conditions" } + "layerName": "Current Conditions" } ] }, { "geoviewLayerId": "staticLYR10", - "geoviewLayerName": { - "en": "Static Image" - }, + "geoviewLayerName": "Static Image", "geoviewLayerType": "imageStatic", "listOfLayerEntryConfig": [ { "layerId": "thumbnail", - "layerName": { "en": "Static Image" }, + "layerName": "Static Image", "source": { - "dataAccessPath": { - "en": "https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png", - "fr": "https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png" - }, + "dataAccessPath": "https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png", "extent": [-87.77486341686723, 51.62285357468582, -84.57727128084842, 53.833354975551075], "projection": 4326 } @@ -143,12 +126,8 @@ }, { "geoviewLayerId": "ogcFeatureLYR1", - "geoviewLayerName": { - "en": "Large Lakes" - }, - "metadataAccessPath": { - "en": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev" - }, + "geoviewLayerName": "Large Lakes", + "metadataAccessPath": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev", "geoviewLayerType": "ogcFeature", "listOfLayerEntryConfig": [ { @@ -158,13 +137,13 @@ }, { "geoviewLayerId": "wmsLYR1-msi", - "geoviewLayerName": { "en": "MSI" }, - "metadataAccessPath": { "en": "https://datacube.services.geo.ca/ows/msi" }, + "geoviewLayerName": "MSI", + "metadataAccessPath": "https://datacube.services.geo.ca/ows/msi", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "layerId": "msi-94-or-more", - "layerName": { "en": "Permanent Snow" }, + "layerName": "Permanent Snow", "source": { "style": "msi-binary", "featureInfo": { @@ -185,59 +164,45 @@ }, { "geoviewLayerId": "GeoPackageLYR1", - "geoviewLayerName": { - "en": "Natural Earth" - }, + "geoviewLayerName": "Natural Earth", "geoviewLayerType": "GeoPackage", "listOfLayerEntryConfig": [ { "layerId": "Natural_Earth_QGIS_layers_and_styles.gpkg", - "layerName": { "en": "Natural Earth" }, + "layerName": "Natural Earth", "source": { - "dataAccessPath": { - "en": "./datasets/geopackages" - } + "dataAccessPath": "./datasets/geopackages" } } ] }, { "geoviewLayerId": "xyzTilesLYR1", - "geoviewLayerName": { - "en": "World_Topo_Map" - }, + "geoviewLayerName": "World_Topo_Map", "geoviewLayerType": "xyzTiles", "listOfLayerEntryConfig": [ { "layerId": "topo", - "layerName": { "en": "World Topo Map" }, + "layerName": "World Topo Map", "initialSettings": { "minZoom": 3, "maxZoom": 8 }, "source": { - "dataAccessPath": { - "en": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}" - } + "dataAccessPath": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}" } } ] }, { "geoviewLayerId": "vectorTilesLYR1", - "geoviewLayerName": { - "en": "new basemap" - }, + "geoviewLayerName": "new basemap", "geoviewLayerType": "vectorTiles", - "metadataAccessPath": { - "en": "https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/" - }, + "metadataAccessPath": "https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/", "listOfLayerEntryConfig": [ { "layerId": "toner", - "layerName": { "en": "Tile basemap" }, + "layerName": "Tile basemap", "initialSettings": { "minZoom": 3, "maxZoom": 18 }, "source": { - "dataAccessPath": { - "en": "https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/tile/{z}/{y}/{x}.pbf" - } + "dataAccessPath": "https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/tile/{z}/{y}/{x}.pbf" } } ] diff --git a/packages/geoview-core/public/configs/navigator/14-wms-layer.json b/packages/geoview-core/public/configs/navigator/14-wms-layer.json index 256f50adbd4..98af18fd3cc 100644 --- a/packages/geoview-core/public/configs/navigator/14-wms-layer.json +++ b/packages/geoview-core/public/configs/navigator/14-wms-layer.json @@ -12,14 +12,14 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "wmsLYR1-Root", - "geoviewLayerName": { "en": "Weather Group" }, - "metadataAccessPath": { "en": "https://geo.weather.gc.ca/geomet" }, + "geoviewLayerName": "Weather Group", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "entryType": "group", "layerId": "wmsLYR1-Group", - "layerName": { "en": "Group" }, + "layerName": "Group", "listOfLayerEntryConfig": [ { "layerId": "CURRENT_CONDITIONS", @@ -41,7 +41,7 @@ { "layerId": "GDPS.ETA_ICEC", "layerFilter": "time = date'2023-04-18T07:00:00-04:00'", - "layerName": { "en": "Ice Cover" }, + "layerName": "Ice Cover", "source": { "style": "SEA_ICECONC" } @@ -52,13 +52,13 @@ }, { "geoviewLayerId": "wmsLYR1-msi", - "geoviewLayerName": { "en": "MSI" }, - "metadataAccessPath": { "en": "https://datacube.services.geo.ca/ows/msi" }, + "geoviewLayerName": "MSI", + "metadataAccessPath": "https://datacube.services.geo.ca/ows/msi", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "layerId": "msi-94-or-more", - "layerName": { "en": "Permanent Snow" }, + "layerName": "Permanent Snow", "source": { "style": "msi-binary", "featureInfo": { @@ -79,13 +79,13 @@ }, { "geoviewLayerId": "wmsLYR1-spatiotemporel", - "geoviewLayerName": { "en": "Spatiotemporel" }, - "metadataAccessPath": { "en": "https://geo.weather.gc.ca/geomet" }, + "geoviewLayerName": "Spatiotemporel", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "layerId": "RADAR_1KM_RSNO", - "layerName": { "en": "Test Spatiotemporel" }, + "layerName": "Test Spatiotemporel", "source": { "style": "Radar-Snow_14colors" } diff --git a/packages/geoview-core/public/configs/navigator/15-xyz-tile.json b/packages/geoview-core/public/configs/navigator/15-xyz-tile.json index b8c95e0e60d..f13a64dce8b 100644 --- a/packages/geoview-core/public/configs/navigator/15-xyz-tile.json +++ b/packages/geoview-core/public/configs/navigator/15-xyz-tile.json @@ -12,19 +12,15 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "xyzTilesLYR1", - "geoviewLayerName": { - "en": "World_Topo_Map" - }, + "geoviewLayerName": "World_Topo_Map", "geoviewLayerType": "xyzTiles", "listOfLayerEntryConfig": [ { "layerId": "topo", - "layerName": { "en": "World Topo Map" }, + "layerName": "World Topo Map", "initialSettings": { "minZoom": 3, "maxZoom": 8 }, "source": { - "dataAccessPath": { - "en": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}" - } + "dataAccessPath": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}" } } ] diff --git a/packages/geoview-core/public/configs/navigator/16-esri-dynamic.json b/packages/geoview-core/public/configs/navigator/16-esri-dynamic.json index 5cac26fe1e3..89e70fcd7d6 100644 --- a/packages/geoview-core/public/configs/navigator/16-esri-dynamic.json +++ b/packages/geoview-core/public/configs/navigator/16-esri-dynamic.json @@ -12,13 +12,13 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "uniqueValueId", - "geoviewLayerName": { "en": "uniqueValue" }, - "metadataAccessPath": { "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/" }, + "geoviewLayerName": "uniqueValue", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { "layerId": "4", - "layerName": { "en": "Test" } + "layerName": "Test" }, { "layerId": "1", @@ -190,10 +190,8 @@ }, { "geoviewLayerId": "esriFeatureLYR4", - "geoviewLayerName": { "en": "Temporal_Test_Bed_en" }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/" - }, + "geoviewLayerName": "Temporal_Test_Bed_en", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { diff --git a/packages/geoview-core/public/configs/navigator/17-esri-feature.json b/packages/geoview-core/public/configs/navigator/17-esri-feature.json index 78f2d2d5519..7e4981703c3 100644 --- a/packages/geoview-core/public/configs/navigator/17-esri-feature.json +++ b/packages/geoview-core/public/configs/navigator/17-esri-feature.json @@ -12,8 +12,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "uniqueValueId", - "geoviewLayerName": { "en": "uniqueValue" }, - "metadataAccessPath": { "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/" }, + "geoviewLayerName": "uniqueValue", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -23,10 +23,8 @@ }, { "geoviewLayerId": "esriFeatureLYR1", - "geoviewLayerName": { "en": "Temporal_Test_Bed_en" }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/" - }, + "geoviewLayerName": "Temporal_Test_Bed_en", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { @@ -36,11 +34,9 @@ }, { "geoviewLayerId": "historical-flood", - "geoviewLayerName": { "en": "Historical Flood Events (HFE)" }, + "geoviewLayerName": "Historical Flood Events (HFE)", "externalDateFormat": "mm/dd/yyyy hh:mm:ss-05:00", - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer" - }, + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { diff --git a/packages/geoview-core/public/configs/navigator/18-esri-image.json b/packages/geoview-core/public/configs/navigator/18-esri-image.json index 8ffe83760c9..6b3eef7666a 100644 --- a/packages/geoview-core/public/configs/navigator/18-esri-image.json +++ b/packages/geoview-core/public/configs/navigator/18-esri-image.json @@ -12,66 +12,52 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "ESRIImageLYR1", - "geoviewLayerName": { - "en": "Max Temp" - }, + "geoviewLayerName": "Max Temp", "geoviewLayerType": "esriImage", - "metadataAccessPath": { - "en": "https://www5.agr.gc.ca/atlas/rest/services/app_agclimate_agclimat/agclimate_tx/ImageServer" - }, + "metadataAccessPath": "https://www5.agr.gc.ca/atlas/rest/services/app_agclimate_agclimat/agclimate_tx/ImageServer", "listOfLayerEntryConfig": [ { "layerId": "agclimate_tx", - "layerName": { "en": "Max Temperature" } + "layerName": "Max Temperature" } ] }, { "geoviewLayerId": "ESRIImageLYR2", - "geoviewLayerName": { - "en": "Max Temp" - }, + "geoviewLayerName": "Max Temp", "geoviewLayerType": "esriImage", - "metadataAccessPath": { - "en": "https://www5.agr.gc.ca/atlas/rest/services/imageservices/annual_crop_inventory_2022/ImageServer" - }, + "metadataAccessPath": "https://www5.agr.gc.ca/atlas/rest/services/imageservices/annual_crop_inventory_2022/ImageServer", "listOfLayerEntryConfig": [ { "layerId": "annual_crop_inventory_2022", - "layerName": { "en": "Crop Inventory 2022" } + "layerName": "Crop Inventory 2022" } ] }, { "geoviewLayerId": "ESRIImageLYR3", - "geoviewLayerName": { - "en": "USA" - }, + "geoviewLayerName": "USA", "geoviewLayerType": "esriImage", - "metadataAccessPath": { - "en": "https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer" - }, + "metadataAccessPath": "https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer", "listOfLayerEntryConfig": [ { "layerId": "0", - "layerName": { "en": "Cities" }, + "layerName": "Cities", "source": { - "dataAccessPath": { - "en": "https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer" - } + "dataAccessPath": "https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer" } }, { "layerId": "1", - "layerName": { "en": "Roads" } + "layerName": "Roads" }, { "layerId": "2", - "layerName": { "en": "States" } + "layerName": "States" }, { "layerId": "3", - "layerName": { "en": "Counties" } + "layerName": "Counties" } ] } diff --git a/packages/geoview-core/public/configs/navigator/19-geojson.json b/packages/geoview-core/public/configs/navigator/19-geojson.json index 8b5a6c6a9e8..597a698dcae 100644 --- a/packages/geoview-core/public/configs/navigator/19-geojson.json +++ b/packages/geoview-core/public/configs/navigator/19-geojson.json @@ -12,31 +12,31 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "geojsonLYR1", - "geoviewLayerName": { "en": "GeoJSON Sample" }, - "metadataAccessPath": { "en": "./datasets/geojson/metadata.json" }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { "en": "Polygons" } + "layerName": "Polygons" }, { "layerId": "lines.json", - "layerName": { "en": "Lines" } + "layerName": "Lines" }, { "entryType": "group", "layerId": "point-feature-group", - "layerName": { "en": "point-feature-group" }, + "layerName": "point-feature-group", "listOfLayerEntryConfig": [ { "layerId": "icon_points.json", - "layerName": { "en": "Icons" }, + "layerName": "Icons", "initialSettings": { "states": { "visible": false } } }, { "layerId": "points.json", - "layerName": { "en": "Points" } + "layerName": "Points" } ] } @@ -53,4 +53,4 @@ }, "corePackages": [], "theme": "geo.ca" - } +} diff --git a/packages/geoview-core/public/configs/navigator/20-wfs.json b/packages/geoview-core/public/configs/navigator/20-wfs.json index 555092d7e70..fcf84317c33 100644 --- a/packages/geoview-core/public/configs/navigator/20-wfs.json +++ b/packages/geoview-core/public/configs/navigator/20-wfs.json @@ -13,34 +13,26 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "wfsLYR1", - "geoviewLayerName": { - "en": "US States" - }, - "metadataAccessPath": { - "en": "https://ahocevar.com/geoserver/wfs?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS" - }, + "geoviewLayerName": "US States", + "metadataAccessPath": "https://ahocevar.com/geoserver/wfs?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS", "geoviewLayerType": "ogcWfs", "listOfLayerEntryConfig": [ { "layerId": "usa:states", - "layerName": { "en": "US States" }, + "layerName": "US States", "layerFilter": "STATE_ABBR = 'NY'" } ] }, { "geoviewLayerId": "wfsLYR2", - "geoviewLayerName": { - "en": "Current Conditions" - }, - "metadataAccessPath": { - "en": "https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS" - }, + "geoviewLayerName": "Current Conditions", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS", "geoviewLayerType": "ogcWfs", "listOfLayerEntryConfig": [ { "layerId": "ec-msc:CURRENT_CONDITIONS", - "layerName": { "en": "Current Conditions" } + "layerName": "Current Conditions" } ] } diff --git a/packages/geoview-core/public/configs/navigator/21-ogc-feature-api.json b/packages/geoview-core/public/configs/navigator/21-ogc-feature-api.json index 0564151dfe7..d01f21981d4 100644 --- a/packages/geoview-core/public/configs/navigator/21-ogc-feature-api.json +++ b/packages/geoview-core/public/configs/navigator/21-ogc-feature-api.json @@ -13,12 +13,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "ogcFeatureLYR1", - "geoviewLayerName": { - "en": "Large Lakes" - }, - "metadataAccessPath": { - "en": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev" - }, + "geoviewLayerName": "Large Lakes", + "metadataAccessPath": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev", "geoviewLayerType": "ogcFeature", "listOfLayerEntryConfig": [ { diff --git a/packages/geoview-core/public/configs/navigator/22-static-image.json b/packages/geoview-core/public/configs/navigator/22-static-image.json index 5baa9544e88..4d4d6b41789 100644 --- a/packages/geoview-core/public/configs/navigator/22-static-image.json +++ b/packages/geoview-core/public/configs/navigator/22-static-image.json @@ -13,19 +13,14 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "staticLYR10", - "geoviewLayerName": { - "en": "Static Image" - }, + "geoviewLayerName": "Static Image", "geoviewLayerType": "imageStatic", "listOfLayerEntryConfig": [ { "layerId": "thumbnail", - "layerName": { "en": "Static Image" }, + "layerName": "Static Image", "source": { - "dataAccessPath": { - "en": "https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png", - "fr": "https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png" - }, + "dataAccessPath": "https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png", "extent": [-87.77486341686723, 51.62285357468582, -84.57727128084842, 53.833354975551075], "projection": 4326 } diff --git a/packages/geoview-core/public/configs/navigator/23-csv.json b/packages/geoview-core/public/configs/navigator/23-csv.json index 499dddb1531..b6dba238ade 100644 --- a/packages/geoview-core/public/configs/navigator/23-csv.json +++ b/packages/geoview-core/public/configs/navigator/23-csv.json @@ -12,14 +12,14 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "csvLYR1", - "geoviewLayerName": { "en": "NPRI" }, + "geoviewLayerName": "NPRI", "geoviewLayerType": "CSV", "listOfLayerEntryConfig": [ { "layerId": "NPRI-INRP_WaterEau_MediaGroupMilieu_2022", - "layerName": { "en": "NPRI Water Media Group 2022" }, + "layerName": "NPRI Water Media Group 2022", "source": { - "dataAccessPath": { "en": "./datasets/csv-files/NPRI-INRP_WaterEau_MediaGroupMilieu_2022.csv" }, + "dataAccessPath": "./datasets/csv-files/NPRI-INRP_WaterEau_MediaGroupMilieu_2022.csv", "separator": "," } } @@ -27,14 +27,14 @@ }, { "geoviewLayerId": "csvLYR2", - "geoviewLayerName": { "en": "Station List MELCC" }, + "geoviewLayerName": "Station List MELCC", "geoviewLayerType": "CSV", "listOfLayerEntryConfig": [ { "layerId": "Station_List_Minus_HQ-MELCC", - "layerName": { "en": "Station List" }, + "layerName": "Station List", "source": { - "dataAccessPath": { "en": "./datasets/csv-files/Station_List_Minus_HQ-MELCC.csv" } + "dataAccessPath": "./datasets/csv-files/Station_List_Minus_HQ-MELCC.csv" } } ] @@ -50,4 +50,4 @@ }, "corePackages": [], "theme": "geo.ca" - } +} diff --git a/packages/geoview-core/public/configs/navigator/24-vector-tile.json b/packages/geoview-core/public/configs/navigator/24-vector-tile.json index a31c8d3c527..9b7075edf98 100644 --- a/packages/geoview-core/public/configs/navigator/24-vector-tile.json +++ b/packages/geoview-core/public/configs/navigator/24-vector-tile.json @@ -12,21 +12,15 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "vectorTilesLYR1", - "geoviewLayerName": { - "en": "new basemap" - }, + "geoviewLayerName": "new basemap", "geoviewLayerType": "vectorTiles", - "metadataAccessPath": { - "en": "https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/" - }, + "metadataAccessPath": "https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/", "listOfLayerEntryConfig": [ { "layerId": "toner", "initialSettings": { "minZoom": 3, "maxZoom": 18 }, "source": { - "dataAccessPath": { - "en": "https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/tile/{z}/{y}/{x}.pbf" - } + "dataAccessPath": "https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/tile/{z}/{y}/{x}.pbf" } } ] diff --git a/packages/geoview-core/public/configs/navigator/25-geojson-multi.json b/packages/geoview-core/public/configs/navigator/25-geojson-multi.json index b16d8c174bf..26009c327e4 100644 --- a/packages/geoview-core/public/configs/navigator/25-geojson-multi.json +++ b/packages/geoview-core/public/configs/navigator/25-geojson-multi.json @@ -12,25 +12,25 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "geojsonLYR1", - "geoviewLayerName": { "en": "GeoJSON Sample" }, - "metadataAccessPath": { "en": "./datasets/geojson/metadata1.json" }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata1.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "projects.json", - "layerName": { "en": "Projects" } + "layerName": "Projects" } ] }, { "geoviewLayerId": "geojsonLYR2", - "geoviewLayerName": { "en": "MultiPolygon Sample" }, - "metadataAccessPath": { "en": "./datasets/geojson/metadata.json" }, + "geoviewLayerName": "MultiPolygon Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "multipolygons.geojson", - "layerName": { "en": "MultiPolygon" } + "layerName": "MultiPolygon" } ] } @@ -45,4 +45,4 @@ }, "corePackages": [], "theme": "geo.ca" - } +} diff --git a/packages/geoview-core/public/configs/package-swiper3-config.json b/packages/geoview-core/public/configs/package-swiper3-config.json index 04b9835a095..f102694c618 100644 --- a/packages/geoview-core/public/configs/package-swiper3-config.json +++ b/packages/geoview-core/public/configs/package-swiper3-config.json @@ -12,12 +12,8 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "swipe1", - "geoviewLayerName": { - "en": "MSI" - }, - "metadataAccessPath": { - "en": "https://datacube.services.geo.ca/ows/msi" - }, + "geoviewLayerName": "MSI", + "metadataAccessPath": "https://datacube.services.geo.ca/ows/msi", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { @@ -25,10 +21,7 @@ "source": { "featureInfo": { "queryable": true, - "nameField": { - "en": "band-0-pixel-value", - "fr": "band-0-pixel-value" - }, + "nameField": "band-0-pixel-value", "outfields": [ { "name": "band-0-pixel-value", @@ -44,12 +37,8 @@ }, { "geoviewLayerId": "swipe4", - "geoviewLayerName": { - "en": "GeoJSON Sample" - }, - "metadataAccessPath": { - "en": "./datasets/geojson/metadata.json" - }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata.json", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { @@ -59,12 +48,8 @@ }, { "geoviewLayerId": "swipe5", - "geoviewLayerName": { - "en": "Airport data" - }, - "metadataAccessPath": { - "en": "https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS" - }, + "geoviewLayerName": "Airport data", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS", "geoviewLayerType": "ogcWfs", "listOfLayerEntryConfig": [ { @@ -74,12 +59,8 @@ }, { "geoviewLayerId": "swipe6", - "geoviewLayerName": { - "en": "Large Lakes" - }, - "metadataAccessPath": { - "en": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev" - }, + "geoviewLayerName": "Large Lakes", + "metadataAccessPath": "https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev", "geoviewLayerType": "ogcFeature", "listOfLayerEntryConfig": [ { @@ -93,9 +74,7 @@ }, { "geoviewLayerId": "swipe0", - "geoviewLayerName": { - "en": "statmen toner" - }, + "geoviewLayerName": "statmen toner", "geoviewLayerType": "xyzTiles", "listOfLayerEntryConfig": [ { @@ -105,9 +84,7 @@ "maxZoom": 8 }, "source": { - "dataAccessPath": { - "en": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}" - } + "dataAccessPath": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}" } } ] diff --git a/packages/geoview-core/public/configs/validator/01-simple-esri-feature.json b/packages/geoview-core/public/configs/validator/01-simple-esri-feature.json index a6348201936..e7498be6880 100644 --- a/packages/geoview-core/public/configs/validator/01-simple-esri-feature.json +++ b/packages/geoview-core/public/configs/validator/01-simple-esri-feature.json @@ -13,23 +13,14 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "LYR1", - "geoviewLayerName": { - "en": "Temporal Test Bed", - "fr": "Banc d\\'essai temporel" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", - "fr": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_fr/MapServer/" - }, + "geoviewLayerName": "Temporal Test Bed", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { "layerId": "0", "geometryType": "point", - "layerName": { - "en": "stations-Temporal", - "fr": "stations-Temporal" - }, + "layerName": "stations-Temporal", "initialSettings": { "controls": { "query": false @@ -78,10 +69,7 @@ }, "size": 2.668, "symbol": "square", - "offset": [ - 0, - 0 - ] + "offset": [0, 0] } } ] diff --git a/packages/geoview-core/public/configs/validator/02-unique-value-esri-dynamic.json b/packages/geoview-core/public/configs/validator/02-unique-value-esri-dynamic.json index 0fded235cf3..2b2fa8412c3 100644 --- a/packages/geoview-core/public/configs/validator/02-unique-value-esri-dynamic.json +++ b/packages/geoview-core/public/configs/validator/02-unique-value-esri-dynamic.json @@ -13,22 +13,13 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "LYR1", - "geoviewLayerName": { - "en": "Earthquakes", - "fr": "Tremblements de terre" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/", - "fr": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_fr/MapServer/" - }, + "geoviewLayerName": "Earthquakes", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { "layerId": "0", - "layerName": { - "en": "Earthquakes 1980-1990", - "fr": "Tremblements de terre 1980-1990" - }, + "layerName": "Earthquakes 1980-1990", "initialSettings": { "controls": { "query": true @@ -37,15 +28,16 @@ "queryable": true } }, - "attributions": ["Ressources naturelles Canada, Secteur des terres et des minéraux, Commission Géologique du Canada, Service canadien d\\'information sur les risques"] + "attributions": [ + "Ressources naturelles Canada, Secteur des terres et des minéraux, Commission Géologique du Canada, Service canadien d\\'information sur les risques" + ] }, { "layerId": "1", - "layerName": { - "en": "Earthquakes 1990-2000", - "fr": " Tremblements de terre 1990-2000" - }, - "attributions": ["Ressources naturelles Canada, Secteur des terres et des minéraux, Commission Géologique du Canada, Service canadien d\\'information sur les risques"] + "layerName": "Earthquakes 1990-2000", + "attributions": [ + "Ressources naturelles Canada, Secteur des terres et des minéraux, Commission Géologique du Canada, Service canadien d\\'information sur les risques" + ] } ] } diff --git a/packages/geoview-core/public/configs/validator/03-class-breaks-esri-feature.json b/packages/geoview-core/public/configs/validator/03-class-breaks-esri-feature.json index e9e1a1bb1e9..c93b446d975 100644 --- a/packages/geoview-core/public/configs/validator/03-class-breaks-esri-feature.json +++ b/packages/geoview-core/public/configs/validator/03-class-breaks-esri-feature.json @@ -13,21 +13,16 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "LYR1", - "geoviewLayerName": { - "en": "ClassBreaks", - "fr": "ClassBreaks" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/DMS/CSO_volume/MapServer/" - }, + "geoviewLayerName": "ClassBreaks", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/DMS/CSO_volume/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { "layerId": "11", - "layerName": { - "en": "2021 Combined sewer overflow : total volume discharged - Watewater" - }, - "attributions": ["Environment and Climate Change Canada and ministère de l\\'Environnement et de la Lutte contre les changements climatiques du Québec"] + "layerName": "2021 Combined sewer overflow : total volume discharged - Watewater", + "attributions": [ + "Environment and Climate Change Canada and ministère de l\\'Environnement et de la Lutte contre les changements climatiques du Québec" + ] } ] } @@ -41,4 +36,4 @@ }, "corePackages": [], "theme": "geo.ca" -} \ No newline at end of file +} diff --git a/packages/geoview-core/public/configs/validator/04-geocore.json b/packages/geoview-core/public/configs/validator/04-geocore.json index 58c6b1eba87..ac2a3a51302 100644 --- a/packages/geoview-core/public/configs/validator/04-geocore.json +++ b/packages/geoview-core/public/configs/validator/04-geocore.json @@ -17,23 +17,14 @@ }, { "geoviewLayerId": "LYR1", - "geoviewLayerName": { - "en": "Temporal Test Bed", - "fr": "Banc d\\'essai temporel" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", - "fr": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_fr/MapServer/" - }, + "geoviewLayerName": "Temporal Test Bed", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { "layerId": "0", "geometryType": "point", - "layerName": { - "en": "stations-Temporal", - "fr": "stations-Temporal" - }, + "layerName": "stations-Temporal", "initialSettings": { "controls": { "query": true @@ -55,25 +46,17 @@ "extraOptions": {} }, "theme": "geo.ca", - "navBar": [ - "zoom", - "fullscreen", - "home" - ], + "navBar": ["zoom", "fullscreen", "home"], "appBar": { "tabs": { - "core": [ - "geolocator" - ] + "core": ["geolocator"] } }, "overviewMap": { "hideOnZoom": 0 }, - "components": [ - "overview-map" - ], + "components": ["overview-map"], "corePackages": [], "externalPackages": [], "schemaVersionUsed": "1.0" -} \ No newline at end of file +} diff --git a/packages/geoview-core/public/configs/validator/05-esri-feature-and-dynamic.json b/packages/geoview-core/public/configs/validator/05-esri-feature-and-dynamic.json index 96e698022cb..f53d7470336 100644 --- a/packages/geoview-core/public/configs/validator/05-esri-feature-and-dynamic.json +++ b/packages/geoview-core/public/configs/validator/05-esri-feature-and-dynamic.json @@ -13,23 +13,14 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "LYR1", - "geoviewLayerName": { - "en": "Temporal Test Bed", - "fr": "Banc d\\'essai temporel" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", - "fr": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_fr/MapServer/" - }, + "geoviewLayerName": "Temporal Test Bed", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/", "geoviewLayerType": "esriFeature", "listOfLayerEntryConfig": [ { "layerId": "0", "geometryType": "point", - "layerName": { - "en": "stations-Temporal", - "fr": "stations-Temporal" - }, + "layerName": "stations-Temporal", "initialSettings": { "controls": { "query": false @@ -80,22 +71,13 @@ }, { "geoviewLayerId": "LYR2", - "geoviewLayerName": { - "en": "Metadata Group", - "fr": "Groupe défini dans les métadonnées" - }, - "metadataAccessPath": { - "en": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/", - "fr": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/" - }, + "geoviewLayerName": "Metadata Group", + "metadataAccessPath": "https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/", "geoviewLayerType": "esriDynamic", "listOfLayerEntryConfig": [ { "layerId": "0", - "layerName": { - "en": "Group 0", - "fr": "Groupe 0" - } + "layerName": "Group 0" }, { "layerId": "4" diff --git a/packages/geoview-core/public/configs/validator/06-ogc-wms.json b/packages/geoview-core/public/configs/validator/06-ogc-wms.json index 6fafa73732c..96de6650db6 100644 --- a/packages/geoview-core/public/configs/validator/06-ogc-wms.json +++ b/packages/geoview-core/public/configs/validator/06-ogc-wms.json @@ -12,14 +12,14 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "wmsLYR1-Root", - "geoviewLayerName": { "en": "Weather Group" }, - "metadataAccessPath": { "en": "https://geo.weather.gc.ca/geomet" }, + "geoviewLayerName": "Weather Group", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "isLayerGroup": true, "layerId": "wmsLYR1-Group", - "layerName": { "en": "Group" }, + "layerName": "Group", "listOfLayerEntryConfig": [ { "layerId": "CURRENT_CONDITIONS" @@ -27,7 +27,7 @@ { "layerId": "GDPS.ETA_ICEC", "layerFilter": "time = date \\'2023-04-18T07:00:00-04:00\\'", - "layerName": { "en": "Ice Cover" }, + "layerName": "Ice Cover", "source": { "wmsStyle": ["SEA_ICECONC"] } @@ -38,13 +38,13 @@ }, { "geoviewLayerId": "wmsLYR1-msi", - "geoviewLayerName": { "en": "MSI" }, - "metadataAccessPath": { "en": "https://datacube.services.geo.ca/ows/msi" }, + "geoviewLayerName": "MSI", + "metadataAccessPath": "https://datacube.services.geo.ca/ows/msi", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "layerId": "msi-94-or-more", - "layerName": { "en": "Permanent Snow" }, + "layerName": "Permanent Snow", "source": { "wmsStyle": ["msi-binary"], "featureInfo": { @@ -65,13 +65,13 @@ }, { "geoviewLayerId": "wmsLYR1-spatiotemporel", - "geoviewLayerName": { "en": "Spatiotemporel" }, - "metadataAccessPath": { "en": "https://geo.weather.gc.ca/geomet" }, + "geoviewLayerName": "Spatiotemporel", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { "layerId": "RADAR_1KM_RSNO", - "layerName": { "en": "Test Spatiotemporel" }, + "layerName": "Test Spatiotemporel", "source": { "wmsStyle": ["Radar-Snow_14colors"] } @@ -80,10 +80,8 @@ }, { "geoviewLayerId": "LYR1", - "geoviewLayerName": { "en": "Canada Energy Regulator" }, - "metadataAccessPath": { - "en": "https://maps-cartes.services.geo.ca/server_serveur/services/NRCan/CER_Assessments_EN/MapServer/WMSServer" - }, + "geoviewLayerName": "Canada Energy Regulator", + "metadataAccessPath": "https://maps-cartes.services.geo.ca/server_serveur/services/NRCan/CER_Assessments_EN/MapServer/WMSServer", "geoviewLayerType": "ogcWms", "listOfLayerEntryConfig": [ { diff --git a/packages/geoview-core/public/configs/validator/07-ogc-wfs.json b/packages/geoview-core/public/configs/validator/07-ogc-wfs.json index caf55eb4209..5778650e6d0 100644 --- a/packages/geoview-core/public/configs/validator/07-ogc-wfs.json +++ b/packages/geoview-core/public/configs/validator/07-ogc-wfs.json @@ -2,7 +2,7 @@ "map": { "interaction": "dynamic", "viewSettings": { - "initialView": { "zoomAndCenter": [10, [-75.370748, 45.001058]]}, + "initialView": { "zoomAndCenter": [10, [-75.370748, 45.001058]] }, "projection": 3857 }, "basemapOptions": { @@ -13,34 +13,26 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "wfsLYR1", - "geoviewLayerName": { - "en": "US States" - }, - "metadataAccessPath": { - "en": "https://ahocevar.com/geoserver/wfs?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS" - }, + "geoviewLayerName": "US States", + "metadataAccessPath": "https://ahocevar.com/geoserver/wfs?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS", "geoviewLayerType": "ogcWfs", "listOfLayerEntryConfig": [ { "layerId": "usa:states", - "layerName": { "en": "US States" }, + "layerName": "US States", "layerFilter": "STATE_ABBR = \\'NY\\'" } ] }, { "geoviewLayerId": "wfsLYR2", - "geoviewLayerName": { - "en": "Current Conditions" - }, - "metadataAccessPath": { - "en": "https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS" - }, + "geoviewLayerName": "Current Conditions", + "metadataAccessPath": "https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS", "geoviewLayerType": "ogcWfs", "listOfLayerEntryConfig": [ { "layerId": "ec-msc:CURRENT_CONDITIONS", - "layerName": { "en": "Current Conditions" } + "layerName": "Current Conditions" } ] } @@ -49,4 +41,4 @@ "components": ["overview-map"], "corePackages": [], "theme": "geo.ca" -} \ No newline at end of file +} diff --git a/packages/geoview-core/public/configs/validator/08-geojson.json b/packages/geoview-core/public/configs/validator/08-geojson.json index 1e00f6a5e4a..e349a62af0e 100644 --- a/packages/geoview-core/public/configs/validator/08-geojson.json +++ b/packages/geoview-core/public/configs/validator/08-geojson.json @@ -12,34 +12,34 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "geojsonLYR1", - "geoviewLayerName": { "en": "GeoJSON Sample" }, - "metadataAccessPath": { "en": "./datasets/geojson/metadata-new.meta" }, + "geoviewLayerName": "GeoJSON Sample", + "metadataAccessPath": "./datasets/geojson/metadata-new.meta", "geoviewLayerType": "GeoJSON", "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { "en": "Polygons" }, + "layerName": "Polygons", "layerFilter": "creationDate >= date \\'2020/02/15\\'" }, { "layerId": "lines.json", - "layerName": { "en": "Lines" }, + "layerName": "Lines", "layerFilter": "creationDate >= date \\'2020-05-28T12:00:00-05:00\\'" }, { "isLayerGroup": true, "layerId": "point-feature-group", - "layerName": { "en": "point-feature-group" }, + "layerName": "point-feature-group", "listOfLayerEntryConfig": [ { "layerId": "icon_points.json", - "layerName": { "en": "Icons" }, - "initialSettings": { "states": {"visible" : false} }, + "layerName": "Icons", + "initialSettings": { "states": { "visible": false } }, "layerFilter": "creationDate >= date \\'2020-01-14T12:00:01-05:00\\'" }, { "layerId": "points.json", - "layerName": { "en": "Points" }, + "layerName": "Points", "layerFilter": "creationDate >= date \\'2019-02-15T22:00:00Z\\'" } ] @@ -49,7 +49,7 @@ ] }, "components": ["overview-map"], - "overviewMap": {"hideOnZoom": 7}, + "overviewMap": { "hideOnZoom": 7 }, "corePackages": [], "theme": "geo.ca" -} \ No newline at end of file +} diff --git a/packages/geoview-core/public/configs/validator/09-esri-image.json b/packages/geoview-core/public/configs/validator/09-esri-image.json index 1f2afc56beb..94325490d17 100644 --- a/packages/geoview-core/public/configs/validator/09-esri-image.json +++ b/packages/geoview-core/public/configs/validator/09-esri-image.json @@ -12,61 +12,49 @@ "listOfGeoviewLayerConfig": [ { "geoviewLayerId": "ESRIImageLYR1", - "geoviewLayerName": { - "en": "Max Temp" - }, + "geoviewLayerName": "Max Temp", "geoviewLayerType": "esriImage", - "metadataAccessPath": { - "en": "https://www5.agr.gc.ca/atlas/rest/services/app_agclimate_agclimat/agclimate_tx/ImageServer" - }, + "metadataAccessPath": "https://www5.agr.gc.ca/atlas/rest/services/app_agclimate_agclimat/agclimate_tx/ImageServer", "listOfLayerEntryConfig": [ { "layerId": "app_agclimate_agclimat/agclimate_tx", - "layerName": { "en": "Max Temperature" } + "layerName": "Max Temperature" } ] }, { "geoviewLayerId": "ESRIImageLYR2", - "geoviewLayerName": { - "en": "Crop Inventory" - }, + "geoviewLayerName": "Crop Inventory", "geoviewLayerType": "esriImage", - "metadataAccessPath": { - "en": "https://www5.agr.gc.ca/atlas/rest/services/imageservices/annual_crop_inventory_2022/ImageServer" - }, + "metadataAccessPath": "https://www5.agr.gc.ca/atlas/rest/services/imageservices/annual_crop_inventory_2022/ImageServer", "listOfLayerEntryConfig": [ { "layerId": "imageservices/annual_crop_inventory_2022", - "layerName": { "en": "Crop Inventory 2022" } + "layerName": "Crop Inventory 2022" } ] }, { "geoviewLayerId": "ESRIImageLYR3", - "geoviewLayerName": { - "en": "USA" - }, + "geoviewLayerName": "USA", "geoviewLayerType": "esriImage", - "metadataAccessPath": { - "en": "https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer" - }, + "metadataAccessPath": "https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer", "listOfLayerEntryConfig": [ { "layerId": "0", - "layerName": { "en": "Cities" } + "layerName": "Cities" }, { "layerId": "1", - "layerName": { "en": "Roads" } + "layerName": "Roads" }, { "layerId": "2", - "layerName": { "en": "States" } + "layerName": "States" }, { "layerId": "3", - "layerName": { "en": "Counties" } + "layerName": "Counties" } ] } @@ -75,4 +63,4 @@ "components": ["overview-map"], "corePackages": [], "theme": "geo.ca" -} \ No newline at end of file +} diff --git a/packages/geoview-core/public/datasets/geojson/hydro-metadata.json b/packages/geoview-core/public/datasets/geojson/hydro-metadata.json index 8b4004b6e7a..693742d88f4 100644 --- a/packages/geoview-core/public/datasets/geojson/hydro-metadata.json +++ b/packages/geoview-core/public/datasets/geojson/hydro-metadata.json @@ -3,12 +3,9 @@ "listOfLayerEntryConfig": [ { "layerId": "execution", - "layerName": { "en": "Downstream Analysis", "fr": "Downstream Analysis" }, + "layerName": "Downstream Analysis", "source": { - "dataAccessPath": { - "en": "https://app.chn-rhc.geogc.ca/api/processes/downstream-analysis/execution", - "fr": "https://app.chn-rhc.geogc.ca/api/processes/downstream-analysis/execution" - }, + "dataAccessPath": "https://app.chn-rhc.geogc.ca/api/processes/downstream-analysis/execution", "postSettings": { "header": { "accept": "application/json", @@ -25,10 +22,7 @@ }, "featureInfo": { "queryable": "true", - "nameField": { - "en": "name_en", - "fr": "name_fr" - }, + "nameField": "name_en", "outfields": [ { "name": "feature_date", diff --git a/packages/geoview-core/public/datasets/geojson/metadata-blank.json b/packages/geoview-core/public/datasets/geojson/metadata-blank.json index 35c695d22f2..a1f46da7890 100644 --- a/packages/geoview-core/public/datasets/geojson/metadata-blank.json +++ b/packages/geoview-core/public/datasets/geojson/metadata-blank.json @@ -4,7 +4,7 @@ "listOfLayerEntryConfig": [ { "layerId": "blank.json", - "layerName": { "en": "Blank" }, + "layerName": "Blank", "source": { "featureInfo": { "queryable": true, diff --git a/packages/geoview-core/public/datasets/geojson/metadata.json b/packages/geoview-core/public/datasets/geojson/metadata.json index 2d8a3764fd0..fdb16b398d9 100644 --- a/packages/geoview-core/public/datasets/geojson/metadata.json +++ b/packages/geoview-core/public/datasets/geojson/metadata.json @@ -4,7 +4,7 @@ "listOfLayerEntryConfig": [ { "layerId": "polygons.json", - "layerName": { "en": "Polygons" }, + "layerName": "Polygons", "source": { "featureInfo": { "queryable": true, @@ -73,7 +73,7 @@ }, { "layerId": "multipolygons.geojson", - "layerName": { "en": "MultiPolygons" }, + "layerName": "MultiPolygons", "source": { "featureInfo": { "queryable": true, @@ -107,7 +107,7 @@ }, { "layerId": "lines.json", - "layerName": { "en": "Lines" }, + "layerName": "Lines", "source": { "featureInfo": { "queryable": false, @@ -134,7 +134,7 @@ }, { "layerId": "icon_points.json", - "layerName": { "en": "Icons" }, + "layerName": "Icons", "source": { "featureInfo": { "queryable": true, @@ -161,7 +161,7 @@ }, { "layerId": "points.json", - "layerName": { "en": "Points" }, + "layerName": "Points", "source": { "featureInfo": { "queryable": false, @@ -189,7 +189,7 @@ }, { "layerId": "points_1.json", - "layerName": { "en": "Points_1" }, + "layerName": "Points_1", "source": { "featureInfo": { "queryable": true, @@ -217,7 +217,7 @@ }, { "layerId": "points_2.json", - "layerName": { "en": "Points_1" }, + "layerName": "Points_1", "source": { "featureInfo": { "queryable": true, @@ -245,7 +245,7 @@ }, { "layerId": "points_3.json", - "layerName": { "en": "Points_1" }, + "layerName": "Points_1", "source": { "featureInfo": { "queryable": false, diff --git a/packages/geoview-core/public/datasets/geojson/metadata1.json b/packages/geoview-core/public/datasets/geojson/metadata1.json index 7d88690ce28..a4d1b17aeeb 100644 --- a/packages/geoview-core/public/datasets/geojson/metadata1.json +++ b/packages/geoview-core/public/datasets/geojson/metadata1.json @@ -4,7 +4,7 @@ "listOfLayerEntryConfig": [ { "layerId": "projects.json", - "layerName": { "en": "Projects" }, + "layerName": "Projects", "source": { "featureInfo": { "queryable": true, diff --git a/packages/geoview-core/public/datasets/geojson/processes-metadata.json b/packages/geoview-core/public/datasets/geojson/processes-metadata.json index d47f9163a96..4d2af06d505 100644 --- a/packages/geoview-core/public/datasets/geojson/processes-metadata.json +++ b/packages/geoview-core/public/datasets/geojson/processes-metadata.json @@ -3,12 +3,9 @@ "listOfLayerEntryConfig": [ { "layerId": "execution", - "layerName": { "en": "Raster Drill process", "fr": "Raster Drill process" }, + "layerName": "Raster Drill process", "source": { - "dataAccessPath": { - "en": "https://api.weather.gc.ca/processes/raster-drill/execution", - "fr": "https://api.weather.gc.ca/processes/raster-drill/execution" - }, + "dataAccessPath": "https://api.weather.gc.ca/processes/raster-drill/execution", "postSettings": { "header": { "accept": "application/json", diff --git a/packages/geoview-core/public/templates/default-config.html b/packages/geoview-core/public/templates/default-config.html index 5c4c059f907..a816c760f9a 100644 --- a/packages/geoview-core/public/templates/default-config.html +++ b/packages/geoview-core/public/templates/default-config.html @@ -122,11 +122,12 @@

3. Load with bad config values

'components': ['overview-map', 'nav-bar'], 'corePackages': [], 'theme': 'geo.ca' - }"> -

This map will load with bad configuration replaced with default.

- -

-  
+ }" + > +

This map will load with bad configuration replaced with default.

+ +

+    

4. Load layers with bad config values

@@ -152,14 +153,9 @@

4. Load layers with bad config values

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'wmsLYR1', - 'geoviewLayerName': { - 'en': 'earthquakes', - 'fr': 'earthquakes' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', - 'fr': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/' - }, + 'geoviewLayerName': 'earthquakes', + + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -172,11 +168,12 @@

4. Load layers with bad config values

'components': ['overview-map'], 'corePackages': [], 'theme': 'geo.ca' - }">
-

This map will not load layers with bad configuration and inform the user.

- -

-  
+ }" + > +

This map will not load layers with bad configuration and inform the user.

+ +

+    

5.A. Load config from URL params

@@ -214,14 +211,16 @@

5.B. Load config from div params

}, 'components': ['overview-map'], 'corePackages': [] - }" data-lang="en" data-geocore-keys="12acd145-626a-49eb-b850-0a59c9bc7506,ccc75c12-5acc-4a6a-959f-ef6f621147b9" - data-geocore-endpoint="https://geocore.api.geo.ca">
-

- This map loads it's configurations from the div parameters by providing a data-geocore-keys and - optionally a - data-geocore-endpoint. -

-
+ }" + data-lang="en" + data-geocore-keys="12acd145-626a-49eb-b850-0a59c9bc7506,ccc75c12-5acc-4a6a-959f-ef6f621147b9" + data-geocore-endpoint="https://geocore.api.geo.ca" + > +

+ This map loads it's configurations from the div parameters by providing a data-geocore-keys and optionally a + data-geocore-endpoint. +

+

6. Load config from file

@@ -261,14 +260,8 @@

7. Load config from function call

}, 'listOfGeoviewLayerConfig': [{ 'geoviewLayerId': 'wmsLYR1', - 'geoviewLayerName': { - 'en': 'earthquakes', - 'fr': 'earthquakes' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', - 'fr': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/' - }, + 'geoviewLayerName': 'earthquakes', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/demos/demo-cgdi.html b/packages/geoview-core/public/templates/demos/demo-cgdi.html index 632b2547387..d751e74e5a9 100644 --- a/packages/geoview-core/public/templates/demos/demo-cgdi.html +++ b/packages/geoview-core/public/templates/demos/demo-cgdi.html @@ -62,24 +62,22 @@

Water Resources

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'HMS', - 'geoviewLayerName': { 'en': 'Hydrometric Monitoring Stations' }, + 'geoviewLayerName': 'Hydrometric Monitoring Stations', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': 'hydrometric-stations', - 'layerName': { 'en': 'Hydrometric Stations' }, + 'layerName': 'Hydrometric Stations', 'source': { - 'dataAccessPath': { - 'en': 'https://api.weather.gc.ca/collections/hydrometric-stations/items?f=json' - } + 'dataAccessPath': 'https://api.weather.gc.ca/collections/hydrometric-stations/items?f=json' } } ] }, { 'geoviewLayerId': 'geomet', - 'geoviewLayerName': { 'en': 'GeoMet' }, - 'metadataAccessPath': { 'en': 'https://geo.weather.gc.ca/geomet' }, + 'geoviewLayerName': 'GeoMet', + 'metadataAccessPath': 'https://geo.weather.gc.ca/geomet', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { @@ -134,8 +132,8 @@

Water Resources

}, { 'geoviewLayerId': 'groundwater', - 'geoviewLayerName': { 'en': 'Groundwater Information Network' }, - 'metadataAccessPath': { 'en': 'https://gin.gw-info.net/service/gin/wms/mediator/gin_en' }, + 'geoviewLayerName': 'Groundwater Information Network', + 'metadataAccessPath': 'https://gin.gw-info.net/service/gin/wms/mediator/gin_en', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': '3dmodel' }, @@ -161,8 +159,8 @@

Water Resources

}, { 'geoviewLayerId': 'CanVec', - 'geoviewLayerName': { 'en': 'CanVec' }, - 'metadataAccessPath': { 'en': 'https://maps.geogratis.gc.ca/wms/canvec_en' }, + 'geoviewLayerName': 'CanVec', + 'metadataAccessPath': 'https://maps.geogratis.gc.ca/wms/canvec_en', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': 'dam_polygon_50k' }, @@ -171,8 +169,8 @@

Water Resources

}, { 'geoviewLayerId': 'Active_Inactive_Disposal_at_Sea_Sites', - 'geoviewLayerName': { 'en': 'Active Inactive Disposal at Sea Sites' }, - 'metadataAccessPath': { 'en': 'https://maps-cartes.ec.gc.ca/arcgis/services/Active_Inactive_Disposal_at_Sea_Sites/MapServer/WMSServer' }, + 'geoviewLayerName': 'Active Inactive Disposal at Sea Sites', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/services/Active_Inactive_Disposal_at_Sea_Sites/MapServer/WMSServer', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': '0' } @@ -180,8 +178,8 @@

Water Resources

}, { 'geoviewLayerId': 'ShorelineSegmentationWithSCATClassification', - 'geoviewLayerName': { 'en': 'Shoreline Segmentation With SCAT Classification' }, - 'metadataAccessPath': { 'en': 'https://maps-cartes.ec.gc.ca/arcgis/services/EPB_EPO/ShorelineSegmentationWithSCATClassification/MapServer/WMSServer' }, + 'geoviewLayerName': 'Shoreline Segmentation With SCAT Classification', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/services/EPB_EPO/ShorelineSegmentationWithSCATClassification/MapServer/WMSServer', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': '0' }, @@ -193,8 +191,8 @@

Water Resources

}, { 'geoviewLayerId': 'geomet2', - 'geoviewLayerName': { 'en': 'GeoMet 2' }, - 'metadataAccessPath': { 'en': 'https://geo.weather.gc.ca/geomet' }, + 'geoviewLayerName': 'GeoMet 2', + 'metadataAccessPath': 'https://geo.weather.gc.ca/geomet', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { @@ -213,8 +211,8 @@

Water Resources

}, { 'geoviewLayerId': 'abds', - 'geoviewLayerName': { 'en': 'Arctic Marine Biodiversity' }, - 'metadataAccessPath': { 'en': 'https://geo.abds.is/geoserver/sambr/wms' }, + 'geoviewLayerName': 'Arctic Marine Biodiversity', + 'metadataAccessPath': 'https://geo.abds.is/geoserver/sambr/wms', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/demos/demo-function-event.html b/packages/geoview-core/public/templates/demos/demo-function-event.html index 95ebfc0c83c..64c5411c57f 100644 --- a/packages/geoview-core/public/templates/demos/demo-function-event.html +++ b/packages/geoview-core/public/templates/demos/demo-function-event.html @@ -369,13 +369,13 @@

Events that will generate notifications:

const config = { 'geoviewLayerId': 'wmsLYR1-msi', - 'geoviewLayerName': { 'en': 'MSI' }, - 'metadataAccessPath': { 'en': 'https://datacube.services.geo.ca/ows/msi' }, + 'geoviewLayerName': 'MSI', + 'metadataAccessPath': 'https://datacube.services.geo.ca/ows/msi', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': 'msi-94-or-more', - 'layerName': { 'en': 'Permanent Snow' }, + 'layerName': 'Permanent Snow', 'source': { 'style': 'msi-binary', 'featureInfo': { diff --git a/packages/geoview-core/public/templates/demos/demo-geojson-inject.html b/packages/geoview-core/public/templates/demos/demo-geojson-inject.html index 29c647714d2..359046ebb23 100644 --- a/packages/geoview-core/public/templates/demos/demo-geojson-inject.html +++ b/packages/geoview-core/public/templates/demos/demo-geojson-inject.html @@ -58,9 +58,9 @@

Empty GeoJSON Layer

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'geojsonLYR1', - 'geoviewLayerName': { 'en': 'GeoJSON Sample' }, + 'geoviewLayerName': 'GeoJSON Sample', 'geoviewLayerType': 'GeoJSON', - 'metadataAccessPath': { 'en': './datasets/geojson/metadata-blank.json' }, + 'metadataAccessPath': './datasets/geojson/metadata-blank.json', 'listOfLayerEntryConfig': [ { 'layerId': 'blank.json' @@ -69,8 +69,8 @@

Empty GeoJSON Layer

}, { 'geoviewLayerId': 'uniqueValueId', - 'geoviewLayerName': { 'en': 'dummy layer' }, - 'metadataAccessPath': { 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/' }, + 'geoviewLayerName': 'dummy layer', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/demos/demo-gsc.html b/packages/geoview-core/public/templates/demos/demo-gsc.html index f06576a2fae..8ca50efd9b6 100644 --- a/packages/geoview-core/public/templates/demos/demo-gsc.html +++ b/packages/geoview-core/public/templates/demos/demo-gsc.html @@ -63,18 +63,14 @@

GSC Demo

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'geoJsonSample', - 'geoviewLayerName': { - 'en': 'JSON Layer' - }, + 'geoviewLayerName': 'JSON Layer', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': '46E.JSON', - 'layerName': { 'en': '46E' }, + 'layerName': '46E', 'source': { - 'dataAccessPath': { - 'en': './datasets/geojson/' - } + 'dataAccessPath': './datasets/geojson/' } } ] diff --git a/packages/geoview-core/public/templates/demos/demo-important-layers.html b/packages/geoview-core/public/templates/demos/demo-important-layers.html index f1797d6c43e..af0b4dbb7cc 100644 --- a/packages/geoview-core/public/templates/demos/demo-important-layers.html +++ b/packages/geoview-core/public/templates/demos/demo-important-layers.html @@ -43,11 +43,13 @@ width: 400px; } - table.display-fields, th.display-fields, td.display-fields { - border: 1px solid black; - border-collapse: collapse; - } - + table.display-fields, + th.display-fields, + td.display-fields { + border: 1px solid black; + border-collapse: collapse; + } + @@ -71,7 +73,10 @@

Important Layers Test Panel

- +
This page allows you to load different geospatial layers depending on the service selected in the drop-down lists below the map. + This page allows you to load different geospatial layers depending on the service selected in the drop-down lists below the + map. +
@@ -118,52 +123,50 @@

1. Selected Maps

'core': [] } } - }"> -
-

Drop-down Selectors

-
-
-
-
Group Selector
- -
-
-
Sub Group Selector
- + }" + >
+

Drop-down Selectors

+
+
+
+
Group Selector
+ +
+
+
Sub Group Selector
+ +
+
+
Service Selector
+ +
+
+
 
+ +
-
-
Service Selector
- -
-
-
 
- +
+
+ + + + + + + + + + + + + +
Type
Access Path
Layer Id
+
-
-
- - - - - - - - - - - - - -
Type
Access Path
Layer Id
-
-
-


@@ -174,10 +177,12 @@ 

Drop-down Selectors

async function addGeocore(uuid) { const geoviewConfig = await cgpv.api.config.convertGeocoreToGeoview('en', { geoviewLayerType: 'geoCore', - geoviewLayerId: uuid + geoviewLayerId: uuid, }); - document.getElementById('type-field').innerText = geoviewConfig ? `geoCore converted to ${geoviewConfig.geoviewLayerType}` : 'geocore conversion error'; - document.getElementById('access-path-field').innerText = geoviewConfig ? geoviewConfig.metadataAccessPath.en : ''; + document.getElementById('type-field').innerText = geoviewConfig + ? `geoCore converted to ${geoviewConfig.geoviewLayerType}` + : 'geocore conversion error'; + document.getElementById('access-path-field').innerText = geoviewConfig ? geoviewConfig.metadataAccessPath : ''; cgpv.api.maps['mapWM'].layer.addGeoviewLayerByGeoCoreUUID(uuid); } @@ -187,12 +192,10 @@

Drop-down Selectors

const addResult = cgpv.api.maps['mapWM'].layer.addGeoviewLayer( { geoviewLayerType: `${geoviewLayerType}`, - metadataAccessPath: { - 'en': `${metadataAccessPath}` - }, + metadataAccessPath: `${metadataAccessPath}`, listOfLayerEntryConfig: [ { - layerId: `${layerId}` + layerId: `${layerId}`, }, ], }, @@ -201,7 +204,7 @@

Drop-down Selectors

} async function addLayer() { - const geoviewLayerType = document.getElementById('type-field').innerText; + const geoviewLayerType = document.getElementById('type-field').innerText; const metadataAccessPath = document.getElementById('access-path-field').innerText; const layerId = document.getElementById('layer-id-field').innerText; @@ -216,9 +219,9 @@

Drop-down Selectors

async function addGeocoreNametoSelectOption(uuid, optionElement) { const geoviewConfig = await cgpv.api.config.convertGeocoreToGeoview('en', { geoviewLayerType: 'geoCore', - geoviewLayerId: uuid + geoviewLayerId: uuid, }); - optionElement.innerText = geoviewConfig ? geoviewConfig.geoviewLayerName.en : `WRONG - ${uuid}`; + optionElement.innerText = geoviewConfig ? geoviewConfig.geoviewLayerName : `WRONG - ${uuid}`; } function initServiceDropDown(groupHasChanged) { @@ -239,7 +242,10 @@

Drop-down Selectors

importantLayersData[groupDropDown.value][subGroupDropDown.value].forEach((element, i) => { const optionElement = document.createElement('option'); optionElement.value = `${i}`; - optionElement.innerText = (element.type === 'geoCore' && element.optionDisplayValue === '') ? addGeocoreNametoSelectOption(element.layerId, optionElement) : element.optionDisplayValue; + optionElement.innerText = + element.type === 'geoCore' && element.optionDisplayValue === '' + ? addGeocoreNametoSelectOption(element.layerId, optionElement) + : element.optionDisplayValue; serviceDropDown.appendChild(optionElement); }); initTableFields(); @@ -283,7 +289,6 @@

Drop-down Selectors

document.getElementById('selectService').addEventListener('change', (e) => { initTableFields(); }); - }); // create snippets diff --git a/packages/geoview-core/public/templates/demos/demo-osdp-air.html b/packages/geoview-core/public/templates/demos/demo-osdp-air.html index ae764f2ca20..5b3dc1d1878 100644 --- a/packages/geoview-core/public/templates/demos/demo-osdp-air.html +++ b/packages/geoview-core/public/templates/demos/demo-osdp-air.html @@ -64,10 +64,8 @@

Air Quality

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Air pollutant emissions' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/' - }, + 'geoviewLayerName': 'Air pollutant emissions', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -78,10 +76,8 @@

Air Quality

}, { 'geoviewLayerId': 'LYR2', - 'geoviewLayerName': { 'en': 'Air Quality' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/' - }, + 'geoviewLayerName': 'Air Quality', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/demos/demo-osdp-biodiversity.html b/packages/geoview-core/public/templates/demos/demo-osdp-biodiversity.html index 82c7fe1d020..00d0b826aad 100644 --- a/packages/geoview-core/public/templates/demos/demo-osdp-biodiversity.html +++ b/packages/geoview-core/public/templates/demos/demo-osdp-biodiversity.html @@ -64,10 +64,8 @@

Biodiversity

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Canada conserved areas' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CWS_SCF/CPCAD/MapServer/' - }, + 'geoviewLayerName': 'Canada conserved areas', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CWS_SCF/CPCAD/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -77,10 +75,8 @@

Biodiversity

}, { 'geoviewLayerId': 'LYR2', - 'geoviewLayerName': { 'en': 'Priority Places for Species at Risk' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CWS_SCF/PriorityPlaces/MapServer/' - }, + 'geoviewLayerName': 'Priority Places for Species at Risk', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CWS_SCF/PriorityPlaces/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/demos/demo-osdp-climate.html b/packages/geoview-core/public/templates/demos/demo-osdp-climate.html index ba25b1c2fa8..d80ec15eb8c 100644 --- a/packages/geoview-core/public/templates/demos/demo-osdp-climate.html +++ b/packages/geoview-core/public/templates/demos/demo-osdp-climate.html @@ -64,10 +64,8 @@

Climate

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Greenhouse gas emissions' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/' - }, + 'geoviewLayerName': 'Greenhouse gas emissions', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -78,15 +76,13 @@

Climate

}, { 'geoviewLayerId': 'LYR2', - 'geoviewLayerName': { 'en': 'Heat Wave' }, - 'metadataAccessPath': { - 'en': 'https://agriculture.canada.ca/atlas/rest/services/app_agclimate_agclimat/agclimate_hw/ImageServer' - }, + 'geoviewLayerName': 'Heat Wave', + 'metadataAccessPath': 'https://agriculture.canada.ca/atlas/rest/services/app_agclimate_agclimat/agclimate_hw/ImageServer', 'geoviewLayerType': 'esriImage', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { 'en': 'Heat Wave' } + 'layerName': 'Heat Wave' } ] } diff --git a/packages/geoview-core/public/templates/demos/demo-osdp-economy.html b/packages/geoview-core/public/templates/demos/demo-osdp-economy.html index b252b9c549d..a17064cfee5 100644 --- a/packages/geoview-core/public/templates/demos/demo-osdp-economy.html +++ b/packages/geoview-core/public/templates/demos/demo-osdp-economy.html @@ -64,28 +64,24 @@

Economy Industry

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Greenhouse gas emissions' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/major_projects_inventory_en/MapServer/' - }, + 'geoviewLayerName': 'Greenhouse gas emissions', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/major_projects_inventory_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { 'en': 'Major Projects Inventory [point]' } + 'layerName': 'Major Projects Inventory [point]' }, { 'layerId': '1', - 'layerName': { 'en': 'Major Projects Inventory [line]' } + 'layerName': 'Major Projects Inventory [line]' } ] }, { 'geoviewLayerId': 'LYR2', - 'geoviewLayerName': { 'en': 'Clean Energy Generating Stations' }, - 'metadataAccessPath': { - 'en': 'https://geoappext.nrcan.gc.ca/arcgis/rest/services/Energy/CERP_EN/MapServer/' - }, + 'geoviewLayerName': 'Clean Energy Generating Stations', + 'metadataAccessPath': 'https://geoappext.nrcan.gc.ca/arcgis/rest/services/Energy/CERP_EN/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/demos/demo-osdp-health.html b/packages/geoview-core/public/templates/demos/demo-osdp-health.html index 631b73a35df..22a06d57922 100644 --- a/packages/geoview-core/public/templates/demos/demo-osdp-health.html +++ b/packages/geoview-core/public/templates/demos/demo-osdp-health.html @@ -67,44 +67,40 @@

Health

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Clean Power Generation' }, - 'metadataAccessPath': { - 'en': 'https://geoappext.nrcan.gc.ca/arcgis/rest/services/Energy/CERP_EN/MapServer/' - }, + 'geoviewLayerName': 'Clean Power Generation', + 'metadataAccessPath': 'https://geoappext.nrcan.gc.ca/arcgis/rest/services/Energy/CERP_EN/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '3', - 'layerName': { 'en': 'Nuclear generating stations (MW)' } + 'layerName': 'Nuclear generating stations (MW)' }, { 'layerId': '1', - 'layerName': { 'en': 'Biomass generating stations (MW)' } + 'layerName': 'Biomass generating stations (MW)' }, { 'layerId': '2', - 'layerName': { 'en': 'Hydro generating stations (MW)' } + 'layerName': 'Hydro generating stations (MW)' }, { 'layerId': '4', - 'layerName': { 'en': 'Solar generating stations (MW)' } + 'layerName': 'Solar generating stations (MW)' }, { 'layerId': '5', - 'layerName': { 'en': 'Tidal generating stations (MW)' } + 'layerName': 'Tidal generating stations (MW)' }, { 'layerId': '6', - 'layerName': { 'en': 'Wind generating stations (MW)' } + 'layerName': 'Wind generating stations (MW)' } ] }, { 'geoviewLayerId': 'LYR2', - 'geoviewLayerName': { 'en': 'The Canadian Radiological Monitoring Network - Airborne Radioactivity' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer' - }, + 'geoviewLayerName': 'The Canadian Radiological Monitoring Network - Airborne Radioactivity', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/airborne_radioactivity_en/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -117,10 +113,8 @@

Health

}, { 'geoviewLayerId': 'LYR3', - 'geoviewLayerName': { 'en': 'Clean Power GenerationThe Canadian Radiological Monitoring Network – Monitoring Stations' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/stations_en/MapServer/' - }, + 'geoviewLayerName': 'Clean Power GenerationThe Canadian Radiological Monitoring Network – Monitoring Stations', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/HC/stations_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/demos/demo-osdp-non-currated.html b/packages/geoview-core/public/templates/demos/demo-osdp-non-currated.html index 9df461ff26a..00e7b9a0f20 100644 --- a/packages/geoview-core/public/templates/demos/demo-osdp-non-currated.html +++ b/packages/geoview-core/public/templates/demos/demo-osdp-non-currated.html @@ -87,11 +87,8 @@

4. GeoJSON Rendering

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'geojsonlyr1', - 'geoviewLayerName': { - 'en': 'Multi Polygon Layer', - 'fr': 'Couche multi-polygones' - }, - 'metadataAccessPath': { 'en': './configs/OSDP/datasets/OSDP-metadata.json' }, + 'geoviewLayerName': 'Multi Polygon Layer', + 'metadataAccessPath': './configs/OSDP/datasets/OSDP-metadata.json', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { @@ -101,92 +98,56 @@

4. GeoJSON Rendering

}, { 'geoviewLayerId': 'geojsonlyr2', - 'geoviewLayerName': { - 'en': 'Multi Polygon Layer', - 'fr': 'Couche multi-polygones' - }, + 'geoviewLayerName': 'Multi Polygon Layer', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': 'NRCAN-GEOSCAN-1-129009_en', - 'layerName': { - 'en': 'NRCAN-GEOSCAN-1-129009_en', - 'fr': 'NRCAN-GEOSCAN-1-129009_en' - }, + 'layerName': 'NRCAN-GEOSCAN-1-129009_en', 'source': { - 'dataAccessPath': { - 'en': './configs/OSDP/datasets/NRCAN-GEOSCAN-1-129009_en.json', - 'fr': './configs/OSDP/datasets/NRCAN-GEOSCAN-1-129009_en.json' - } + 'dataAccessPath': './configs/OSDP/datasets/NRCAN-GEOSCAN-1-129009_en.json' } } ] }, { 'geoviewLayerId': 'geojsonlyr3', - 'geoviewLayerName': { - 'en': 'Multi Polygon Layer', - 'fr': 'Couche multi-polygones' - }, + 'geoviewLayerName': 'Multi Polygon Layer', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': 'DFO-CURATED-1-03336A72-E5AD-4EEE-803D-E70B7FDE9FCB_en', - 'layerName': { - 'en': 'DFO-CURATED-1-03336A72-E5AD-4EEE-803D-E70B7FDE9FCB_en', - 'fr': 'DFO-CURATED-1-03336A72-E5AD-4EEE-803D-E70B7FDE9FCB_en' - }, + 'layerName': 'DFO-CURATED-1-03336A72-E5AD-4EEE-803D-E70B7FDE9FCB_en', 'source': { - 'dataAccessPath': { - 'en': './configs/OSDP/datasets/DFO-CURATED-1-03336A72-E5AD-4EEE-803D-E70B7FDE9FCB_en.json', - 'fr': './configs/OSDP/datasets/DFO-CURATED-1-03336A72-E5AD-4EEE-803D-E70B7FDE9FCB_en.json' - } + 'dataAccessPath': './configs/OSDP/datasets/DFO-CURATED-1-03336A72-E5AD-4EEE-803D-E70B7FDE9FCB_en.json', } } ] }, { 'geoviewLayerId': 'geojsonlyr4', - 'geoviewLayerName': { - 'en': 'Multi Polygon Layer', - 'fr': 'Couche multi-polygones' - }, + 'geoviewLayerName': 'Multi Polygon Layer', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': 'ECCC-CURATED-1-349208FB-DAA5-4A20-B08A-012F1ED32B3A_en', - 'layerName': { - 'en': 'ECCC-CURATED-1-349208FB-DAA5-4A20-B08A-012F1ED32B3A_en', - 'fr': 'ECCC-CURATED-1-349208FB-DAA5-4A20-B08A-012F1ED32B3A_en' - }, + 'layerName': 'ECCC-CURATED-1-349208FB-DAA5-4A20-B08A-012F1ED32B3A_en', 'source': { - 'dataAccessPath': { - 'en': './configs/OSDP/datasets/ECCC-CURATED-1-349208FB-DAA5-4A20-B08A-012F1ED32B3A_en.json', - 'fr': './configs/OSDP/datasets/ECCC-CURATED-1-349208FB-DAA5-4A20-B08A-012F1ED32B3A_en.json' - } + 'dataAccessPath': './configs/OSDP/datasets/ECCC-CURATED-1-349208FB-DAA5-4A20-B08A-012F1ED32B3A_en.json', } } ] }, { 'geoviewLayerId': 'geojsonlyr5', - 'geoviewLayerName': { - 'en': 'Multi Polygon Layer', - 'fr': 'Couche multi-polygones' - }, + 'geoviewLayerName': 'Multi Polygon Layer', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': 'full-geojson', - 'layerName': { - 'en': 'full-geojson - Not CORS', - 'fr': 'full-geojson - Not CORS' - }, + 'layerName': 'full-geojson - Not CORS', 'source': { - 'dataAccessPath': { - 'en': 'https://en-fr-test.r2.osdp.aws.nrcan-rncan.cloud/GeoJson/NRCAN-GEOSCAN-1-129009_en', - 'fr': 'https://en-fr-test.r2.osdp.aws.nrcan-rncan.cloud/GeoJson/NRCAN-GEOSCAN-1-129009_en' - } + 'dataAccessPath': 'https://en-fr-test.r2.osdp.aws.nrcan-rncan.cloud/GeoJson/NRCAN-GEOSCAN-1-129009_en', } } ] diff --git a/packages/geoview-core/public/templates/demos/demo-osdp-society.html b/packages/geoview-core/public/templates/demos/demo-osdp-society.html index 30ccc519515..fbf0e326067 100644 --- a/packages/geoview-core/public/templates/demos/demo-osdp-society.html +++ b/packages/geoview-core/public/templates/demos/demo-osdp-society.html @@ -64,43 +64,37 @@

Society and Culture

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Indigenous Place Names' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/indigenous_place_names_en/MapServer/' - }, + 'geoviewLayerName': 'Indigenous Place Names', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/indigenous_place_names_en/MapServer/', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { 'en': 'Indigenous Place Names' } + 'layerName': 'Indigenous Place Names' } ] }, { 'geoviewLayerId': 'LYR2', - 'geoviewLayerName': { 'en': 'Recognizing Women with Canadian Place Names' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/womens_placenames_en/MapServer/' - }, + 'geoviewLayerName': 'Recognizing Women with Canadian Place Names', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/womens_placenames_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { 'en': 'Recognizing Women with Canadian Place Names' } + 'layerName': 'Recognizing Women with Canadian Place Names' } ] }, { 'geoviewLayerId': 'LYR3', - 'geoviewLayerName': { 'en': 'Majority (%) mother tongue by census division, 2016' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/StatCan/cd_socioeconomic_variables_2016_en/MapServer/' - }, + 'geoviewLayerName': 'Majority (%) mother tongue by census division, 2016', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/StatCan/cd_socioeconomic_variables_2016_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '7', - 'layerName': { 'en': 'Majority (%) mother tongue by census division, 2016' } + 'layerName': 'Majority (%) mother tongue by census division, 2016' } ] } diff --git a/packages/geoview-core/public/templates/demos/demo-osdp-water.html b/packages/geoview-core/public/templates/demos/demo-osdp-water.html index be5ec2e6e57..066789e74af 100644 --- a/packages/geoview-core/public/templates/demos/demo-osdp-water.html +++ b/packages/geoview-core/public/templates/demos/demo-osdp-water.html @@ -64,29 +64,25 @@

Water

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Water quality in Canadian rivers' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/' - }, + 'geoviewLayerName': 'Water quality in Canadian rivers', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '5', - 'layerName': { 'en': 'Water quality at monitoring sites, Canada' } + 'layerName': 'Water quality at monitoring sites, Canada' } ] }, { 'geoviewLayerId': 'LYR2', - 'geoviewLayerName': { 'en': 'Reported releases to surface water for 2020' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/NPRI_INRP/NPRI_INRP/MapServer/' - }, + 'geoviewLayerName': 'Reported releases to surface water for 2020', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/NPRI_INRP/NPRI_INRP/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '3', - 'layerName': { 'en': 'Reported releases to surface water for 2020' } + 'layerName': 'Reported releases to surface water for 2020' } ] } diff --git a/packages/geoview-core/public/templates/demos/demo-world-of-maps.html b/packages/geoview-core/public/templates/demos/demo-world-of-maps.html index 8b97f503f13..4195abd82b9 100644 --- a/packages/geoview-core/public/templates/demos/demo-world-of-maps.html +++ b/packages/geoview-core/public/templates/demos/demo-world-of-maps.html @@ -64,15 +64,13 @@

Water

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'NTS' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/NTS_SNRC/MapServer/' - }, + 'geoviewLayerName': 'NTS', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/NTS_SNRC/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '3', - 'layerName': { 'en': 'NTS - 50K' }, + 'layerName': 'NTS - 50K', 'source': { 'featureInfo': { 'queryable': true, @@ -102,7 +100,7 @@

Water

}, { 'layerId': '2', - 'layerName': { 'en': 'NTS - 250K' }, + 'layerName': 'NTS - 250K', 'source': { 'featureInfo': { 'queryable': true, @@ -132,7 +130,7 @@

Water

}, { 'layerId': '0', - 'layerName': { 'en': 'NTS -1M' }, + 'layerName': 'NTS -1M', 'source': { 'featureInfo': { 'queryable': false @@ -141,7 +139,7 @@

Water

}, { 'layerId': '1', - 'layerName': { 'en': 'NTS - 1M' }, + 'layerName': 'NTS - 1M', 'source': { 'featureInfo': { 'queryable': false diff --git a/packages/geoview-core/public/templates/layers/csv.html b/packages/geoview-core/public/templates/layers/csv.html index 3f0c4b81553..d0c3eb8c5eb 100644 --- a/packages/geoview-core/public/templates/layers/csv.html +++ b/packages/geoview-core/public/templates/layers/csv.html @@ -71,14 +71,14 @@

1. CSV Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'csvLYR1', - 'geoviewLayerName': { 'en': 'NPRI' }, + 'geoviewLayerName': 'NPRI', 'geoviewLayerType': 'CSV', 'listOfLayerEntryConfig': [ { 'layerId': 'NPRI-INRP_WaterEau_MediaGroupMilieu_2022', - 'layerName': { 'en': 'NPRI Water Media Group 2022' }, + 'layerName': 'NPRI Water Media Group 2022', 'source': { - 'dataAccessPath': { 'en': './datasets/csv-files/NPRI-INRP_WaterEau_MediaGroupMilieu_2022.csv' }, + 'dataAccessPath': './datasets/csv-files/NPRI-INRP_WaterEau_MediaGroupMilieu_2022.csv', 'separator': ',' } } @@ -86,14 +86,14 @@

1. CSV Layers

}, { 'geoviewLayerId': 'csvLYR2', - 'geoviewLayerName': { 'en': 'Station List MELCC' }, + 'geoviewLayerName': 'Station List MELCC', 'geoviewLayerType': 'CSV', 'listOfLayerEntryConfig': [ { 'layerId': 'Station_List_Minus_HQ-MELCC', - 'layerName': { 'en': 'Station List' }, + 'layerName': 'Station List', 'source': { - 'dataAccessPath': { 'en': './datasets/csv-files/Station_List_Minus_HQ-MELCC.csv'} + 'dataAccessPath': './datasets/csv-files/Station_List_Minus_HQ-MELCC.csv' } } ] @@ -102,14 +102,14 @@

1. CSV Layers

Huge dataset, here as an example for using different separator and projection { 'geoviewLayerId': 'csvLYR3', - 'geoviewLayerName': { 'en': 'BC Shoreline Classification' }, + 'geoviewLayerName': 'BC Shoreline Classification', 'geoviewLayerType': 'CSV', 'listOfLayerEntryConfig': [ { 'layerId': 'ShorelineClassification_BC', - 'layerName': { 'en': 'BC Shoreline Classification' }, + 'layerName': 'BC Shoreline Classification', 'source': { - 'dataAccessPath': { 'en': './datasets/csv-files/ShorelineClassification_BC.csv'}, + 'dataAccessPath': './datasets/csv-files/ShorelineClassification_BC.csv', 'dataProjection': 'EPSG:3857', 'separator': ';' } diff --git a/packages/geoview-core/public/templates/layers/esri-dynamic.html b/packages/geoview-core/public/templates/layers/esri-dynamic.html index d7cb982ae21..997d035c80e 100644 --- a/packages/geoview-core/public/templates/layers/esri-dynamic.html +++ b/packages/geoview-core/public/templates/layers/esri-dynamic.html @@ -77,8 +77,8 @@

1. Many ESRI Dynamic Layers with legend settings in the config1. Many ESRI Dynamic Layers with legend settings in the config1. Many ESRI Dynamic Layers with legend settings in the config2. Date filtering using time zone changed and non ISO date format 'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'historical-flood', - 'geoviewLayerName': { 'en': 'Historical Flood Events (HFE)' }, + 'geoviewLayerName': 'Historical Flood Events (HFE)', 'externalDateFormat': 'mm/dd/yyyy hh:mm:ss-05:00', - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer' - }, + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -557,10 +553,8 @@

3. Date filtering using ISO UTC dates

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'historical-flood', - 'geoviewLayerName': { 'en': 'Historical Flood Events (HFE)' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer' - }, + 'geoviewLayerName': 'Historical Flood Events (HFE)', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/layers/esri-feature.html b/packages/geoview-core/public/templates/layers/esri-feature.html index 0e289d47073..067806e64b2 100644 --- a/packages/geoview-core/public/templates/layers/esri-feature.html +++ b/packages/geoview-core/public/templates/layers/esri-feature.html @@ -73,8 +73,8 @@

1. Many Esri Feature Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'uniqueValueId', - 'geoviewLayerName': { 'en': 'uniqueValue' }, - 'metadataAccessPath': { 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/' }, + 'geoviewLayerName': 'uniqueValue', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { @@ -85,10 +85,8 @@

1. Many Esri Feature Layers

}, { 'geoviewLayerId': 'esriFeatureLYR1', - 'geoviewLayerName': { 'en': 'Temporal_Test_Bed_en' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/' - }, + 'geoviewLayerName': 'Temporal_Test_Bed_en', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/Temporal_Test_Bed_en/MapServer/', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { @@ -99,8 +97,8 @@

1. Many Esri Feature Layers

}, { 'geoviewLayerId': 'classBreaksId', - 'geoviewLayerName': { 'en': 'classBreaks' }, - 'metadataAccessPath': { 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/DMS/CSO_volume/MapServer/' }, + 'geoviewLayerName': 'classBreaks', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/DMS/CSO_volume/MapServer/', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { @@ -155,11 +153,9 @@

2. Date filtering using time zone changed and non ISO date format 'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'historical-flood', - 'geoviewLayerName': { 'en': 'Historical Flood Events (HFE)' }, + 'geoviewLayerName': 'Historical Flood Events (HFE)', 'externalDateFormat': 'mm/dd/yyyy hh:mm:ss-05:00', - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer' - }, + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { @@ -205,10 +201,8 @@

3. Date filtering using ISO UTC dates

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'historical-flood', - 'geoviewLayerName': { 'en': 'Historical Flood Events (HFE)' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer' - }, + 'geoviewLayerName': 'Historical Flood Events (HFE)', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { @@ -316,7 +310,7 @@

3. Date filtering using ISO UTC dates

const layerConfig = cgpv.api.maps.LYR1.layer.getLayerEntryConfig(layerPath); if (layerConfig.layerStatus === 'loaded') { - const layerName = layerConfig.layerName?.en; + const layerName = layerConfig.layerName; element = document.createElement('option'); element.value = layerPath; element.innerText = layerName ? layerName : layerConfig.layerId; diff --git a/packages/geoview-core/public/templates/layers/esri-image.html b/packages/geoview-core/public/templates/layers/esri-image.html index 716a828fc4f..5dd6ac48667 100644 --- a/packages/geoview-core/public/templates/layers/esri-image.html +++ b/packages/geoview-core/public/templates/layers/esri-image.html @@ -71,66 +71,52 @@

1. ESRI Image Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'ESRIImageLYR1', - 'geoviewLayerName': { - 'en': 'Max Temp' - }, + 'geoviewLayerName': 'Max Temp', 'geoviewLayerType': 'esriImage', - 'metadataAccessPath': { - 'en': 'https://www5.agr.gc.ca/atlas/rest/services/app_agclimate_agclimat/agclimate_tx/ImageServer' - }, + 'metadataAccessPath': 'https://www5.agr.gc.ca/atlas/rest/services/app_agclimate_agclimat/agclimate_tx/ImageServer', 'listOfLayerEntryConfig': [ { 'layerId': 'agclimate_tx', - 'layerName': { 'en': 'Max Temperature' } + 'layerName': 'Max Temperature' } ] }, { 'geoviewLayerId': 'ESRIImageLYR2', - 'geoviewLayerName': { - 'en': 'Max Temp' - }, + 'geoviewLayerName': 'Max Temp', 'geoviewLayerType': 'esriImage', - 'metadataAccessPath': { - 'en': 'https://www5.agr.gc.ca/atlas/rest/services/imageservices/annual_crop_inventory_2022/ImageServer' - }, + 'metadataAccessPath': 'https://www5.agr.gc.ca/atlas/rest/services/imageservices/annual_crop_inventory_2022/ImageServer', 'listOfLayerEntryConfig': [ { 'layerId': 'annual_crop_inventory_2022', - 'layerName': { 'en': 'Crop Inventory 2022' } + 'layerName': 'Crop Inventory 2022' } ] }, { 'geoviewLayerId': 'ESRIImageLYR3', - 'geoviewLayerName': { - 'en': 'USA' - }, + 'geoviewLayerName': 'USA', 'geoviewLayerType': 'esriImage', - 'metadataAccessPath': { - 'en': 'https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer' - }, + 'metadataAccessPath': 'https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { 'en': 'Cities' }, + 'layerName': 'Cities', 'source': { - 'dataAccessPath': { - 'en': 'https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer' - } + 'dataAccessPath': 'https://sampleserver6.arcgisonline.com/ArcGIS/rest/services/USA/MapServer' } }, { 'layerId': '1', - 'layerName': { 'en': 'Roads' } + 'layerName': 'Roads' }, { 'layerId': '2', - 'layerName': { 'en': 'States' } + 'layerName': 'States' }, { 'layerId': '3', - 'layerName': { 'en': 'Counties' } + 'layerName': 'Counties' } ] } diff --git a/packages/geoview-core/public/templates/layers/geojson.html b/packages/geoview-core/public/templates/layers/geojson.html index 65d84f49d24..0a3df77b757 100644 --- a/packages/geoview-core/public/templates/layers/geojson.html +++ b/packages/geoview-core/public/templates/layers/geojson.html @@ -71,31 +71,31 @@

1. Many GeoJSON Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'geojsonLYR1', - 'geoviewLayerName': { 'en': 'GeoJSON Sample' }, - 'metadataAccessPath': { 'en': './datasets/geojson/metadata.json' }, + 'geoviewLayerName': 'GeoJSON Sample', + 'metadataAccessPath': './datasets/geojson/metadata.json', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': 'polygons.json', - 'layerName': { 'en': 'Polygons' } + 'layerName': 'Polygons' }, { 'layerId': 'lines.json', - 'layerName': { 'en': 'Lines' } + 'layerName': 'Lines' }, { 'entryType': 'group', 'layerId': 'point-feature-group', - 'layerName': { 'en': 'point-feature-group' }, + 'layerName': 'point-feature-group', 'listOfLayerEntryConfig': [ { 'layerId': 'icon_points.json', - 'layerName': { 'en': 'Icons' }, + 'layerName': 'Icons', 'initialSettings': { 'states': {'visible' : false} } }, { 'layerId': 'points.json', - 'layerName': { 'en': 'Points' } + 'layerName': 'Points' } ] } @@ -168,20 +168,14 @@

1. Many GeoJSON Layers

const addResult = cgpv.api.maps['LYR1'].layer.addGeoviewLayer( { geoviewLayerId: 'geoJsonSample', - geoviewLayerName: { - en: 'Historical Flood', - fr: 'Inondation Historique', - }, + geoviewLayerName: 'Historical Flood', geoviewLayerType: 'GeoJSON', listOfLayerEntryConfig: [ { layerId: 'historical_flood_0.geojson', - layerName: { en: 'Map', fr: 'Carte' }, + layerName: 'Map', source: { - dataAccessPath: { - en: './datasets/geojson/', - fr: './datasets/geojson/', - }, + dataAccessPath: './datasets/geojson/', featureInfo: { queryable: true, nameField: 'comment_en', diff --git a/packages/geoview-core/public/templates/layers/geopackage.html b/packages/geoview-core/public/templates/layers/geopackage.html index bd5dcb9c209..23451f16f00 100644 --- a/packages/geoview-core/public/templates/layers/geopackage.html +++ b/packages/geoview-core/public/templates/layers/geopackage.html @@ -74,18 +74,14 @@

1. GeoPackage Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'GeoPackageLYR1', - 'geoviewLayerName': { - 'en': 'Natural Earth' - }, + 'geoviewLayerName': 'Natural Earth', 'geoviewLayerType': 'GeoPackage', 'listOfLayerEntryConfig': [ { 'layerId': 'Natural_Earth_QGIS_layers_and_styles.gpkg', - 'layerName': { 'en': 'Natural Earth' }, + 'layerName': 'Natural Earth', 'source': { - 'dataAccessPath': { - 'en': './datasets/geopackages' - } + 'dataAccessPath': './datasets/geopackages' } } ] @@ -129,27 +125,21 @@

2. Multiple GeoPackage Layers - one with multiple layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'GeoPackageLYR1', - 'geoviewLayerName': { - 'en': 'Rivers and Canals' - }, + 'geoviewLayerName': 'Rivers and Canals', 'geoviewLayerType': 'GeoPackage', 'listOfLayerEntryConfig': [ { 'layerId': 'QGIS Packaged Layers (D+S Canal).gpkg', - 'layerName': { 'en': 'D+S Canal' }, + 'layerName': 'D+S Canal', 'source': { - 'dataAccessPath': { - 'en': './datasets/geopackages' - } + 'dataAccessPath': './datasets/geopackages' } }, { 'layerId': 'rivers.gpkg', - 'layerName': { 'en': 'Rivers' }, + 'layerName': 'Rivers', 'source': { - 'dataAccessPath': { - 'en': './datasets/geopackages' - } + 'dataAccessPath': './datasets/geopackages' } } ] @@ -192,18 +182,14 @@

3. Geopackage Layers - with footer bar

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'GeoPackageLYR1', - 'geoviewLayerName': { - 'en': 'Natural Earth' - }, + 'geoviewLayerName': 'Natural Earth', 'geoviewLayerType': 'GeoPackage', 'listOfLayerEntryConfig': [ { 'layerId': 'Natural_Earth_QGIS_layers_and_styles.gpkg', - 'layerName': { 'en': 'Natural Earth' }, + 'layerName': 'Natural Earth', 'source': { - 'dataAccessPath': { - 'en': './datasets/geopackages' - } + 'dataAccessPath': './datasets/geopackages' } } ] diff --git a/packages/geoview-core/public/templates/layers/image-static.html b/packages/geoview-core/public/templates/layers/image-static.html index 12eb9e848dd..005d9c99162 100644 --- a/packages/geoview-core/public/templates/layers/image-static.html +++ b/packages/geoview-core/public/templates/layers/image-static.html @@ -72,19 +72,14 @@

1. Static Image Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'staticLYR1', - 'geoviewLayerName': { - 'en': 'Static Image' - }, + 'geoviewLayerName': 'Static Image', 'geoviewLayerType': 'imageStatic', 'listOfLayerEntryConfig': [ { 'layerId': 'thumbnail', - 'layerName': { 'en': 'Static Image' }, + 'layerName': 'Static Image', 'source': { - 'dataAccessPath': { - 'en': 'https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png', - 'fr': 'https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png' - }, + 'dataAccessPath': 'https://datacube-prod-data-public.s3.ca-central-1.amazonaws.com/store/imagery/aerial/napl/napl-ring-of-fire/napl-ring-of-fire-1954-08-07-60k-thumbnail.png', 'extent': [-87.77486341686723, 51.62285357468582, -84.57727128084842, diff --git a/packages/geoview-core/public/templates/layers/layerlib.js b/packages/geoview-core/public/templates/layers/layerlib.js index 888d210dafc..d05cac49a1a 100644 --- a/packages/geoview-core/public/templates/layers/layerlib.js +++ b/packages/geoview-core/public/templates/layers/layerlib.js @@ -1,8 +1,3 @@ -/* eslint-disable no-undef */ -/* eslint-disable @typescript-eslint/no-unused-vars */ -// cgpv is not define, it is part of window object, we escape the no-undef globally... -// Many functions name needs the eslint escape no-unused-vars. -// It is an utilities file for demo purpose. It is the reason why we keep it global... // ========================================================================================================================== function listenToLegendLayerSetChanges(elementId, handlerName) { const mapId = handlerName.split('/')[0]; @@ -213,11 +208,11 @@ const createTableOfFilter = (mapId) => { tableElement.appendChild(mapButtonsDiv); const geoviewLayerH1 = document.createElement('h1'); - geoviewLayerH1.innerText = geoviewLayer.getGeoviewLayerName().en; + geoviewLayerH1.innerText = geoviewLayer.getGeoviewLayerName(); mapButtonsDiv.appendChild(geoviewLayerH1); const layerConfigH2 = document.createElement('h2'); - layerConfigH2.innerText = `${layerConfig?.layerName?.en}`; + layerConfigH2.innerText = `${layerConfig?.layerName}`; layerConfigH2.style.height = '15px'; mapButtonsDiv.appendChild(layerConfigH2); diff --git a/packages/geoview-core/public/templates/layers/ogc-feature.html b/packages/geoview-core/public/templates/layers/ogc-feature.html index a4ae6b7b9bd..3fbf7ace9fa 100644 --- a/packages/geoview-core/public/templates/layers/ogc-feature.html +++ b/packages/geoview-core/public/templates/layers/ogc-feature.html @@ -72,12 +72,8 @@

1. OGC Feature API Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'ogcFeatureLYR1', - 'geoviewLayerName': { - 'en': 'Large Lakes' - }, - 'metadataAccessPath': { - 'en': 'https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev' - }, + 'geoviewLayerName': 'Large Lakes', + 'metadataAccessPath': 'https://b6ryuvakk5.execute-api.us-east-1.amazonaws.com/dev', 'geoviewLayerType': 'ogcFeature', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/layers/vector-tiles.html b/packages/geoview-core/public/templates/layers/vector-tiles.html index 175c05a7aff..aac7623c281 100644 --- a/packages/geoview-core/public/templates/layers/vector-tiles.html +++ b/packages/geoview-core/public/templates/layers/vector-tiles.html @@ -72,19 +72,15 @@

1. Vector Tiles Layers (declutter)

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'vectorTilesLYR1', - 'geoviewLayerName': { - 'en': 'new basemap' - }, + 'geoviewLayerName': 'new basemap', 'geoviewLayerType': 'vectorTiles', - 'metadataAccessPath': { 'en': 'https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/' }, + 'metadataAccessPath': 'https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/', 'listOfLayerEntryConfig': [ { 'layerId': 'toner', 'initialSettings': { 'minZoom': 3, 'maxZoom': 18 }, 'source': { - 'dataAccessPath': { - 'en': 'https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/tile/{z}/{y}/{x}.pbf' - } + 'dataAccessPath': 'https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/tile/{z}/{y}/{x}.pbf' } } ] @@ -121,19 +117,15 @@

2. Vector Tiles Layers (no declutter)

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'vectorTilesLYR2', - 'geoviewLayerName': { - 'en': 'new basemap' - }, + 'geoviewLayerName': 'new basemap', 'geoviewLayerType': 'vectorTiles', - 'metadataAccessPath': { 'en': 'https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/' }, + 'metadataAccessPath': 'https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/', 'listOfLayerEntryConfig': [ { 'layerId': 'toner', 'initialSettings': { 'minZoom': 3, 'maxZoom': 18 }, 'source': { - 'dataAccessPath': { - 'en': 'https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/tile/{z}/{y}/{x}.pbf' - } + 'dataAccessPath': 'https://tiles.arcgis.com/tiles/HsjBaDykC1mjhXz9/arcgis/rest/services/CBMT_CBCT_3978_V_OSM/VectorTileServer/tile/{z}/{y}/{x}.pbf' } } ] diff --git a/packages/geoview-core/public/templates/layers/wfs.html b/packages/geoview-core/public/templates/layers/wfs.html index c3857ecb96d..e1db0bc80ef 100644 --- a/packages/geoview-core/public/templates/layers/wfs.html +++ b/packages/geoview-core/public/templates/layers/wfs.html @@ -73,34 +73,26 @@

1. WFS Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'wfsLYR1', - 'geoviewLayerName': { - 'en': 'US States' - }, - 'metadataAccessPath': { - 'en': 'https://ahocevar.com/geoserver/wfs?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS' - }, + 'geoviewLayerName': 'US States', + 'metadataAccessPath': 'https://ahocevar.com/geoserver/wfs?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS', 'geoviewLayerType': 'ogcWfs', 'listOfLayerEntryConfig': [ { 'layerId': 'usa:states', - 'layerName': { 'en': 'US States' }, + 'layerName': 'US States', 'layerFilter': 'STATE_ABBR = \'NY\'' } ] }, { 'geoviewLayerId': 'wfsLYR2', - 'geoviewLayerName': { - 'en': 'Current Conditions' - }, - 'metadataAccessPath': { - 'en': 'https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS' - }, + 'geoviewLayerName': 'Current Conditions', + 'metadataAccessPath': 'https://geo.weather.gc.ca/geomet?REQUEST=GetCapabilities&VERSION=2.0.0&SERVICE=WFS', 'geoviewLayerType': 'ogcWfs', 'listOfLayerEntryConfig': [ { 'layerId': 'ec-msc:CURRENT_CONDITIONS', - 'layerName': { 'en': 'Current Conditions' } + 'layerName': 'Current Conditions' } ] } @@ -144,18 +136,14 @@

2. WFS Layers using bbox strategy

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'wfsLYR4', - 'geoviewLayerName': { - 'en': 'USGS mrds' - }, - 'metadataAccessPath': { - 'en': 'https://mrdata.usgs.gov/services/wfs/mrds?request=GetCapabilities&service=WFS&version=1.1.0' - }, + 'geoviewLayerName': 'USGS mrds', + 'metadataAccessPath': 'https://mrdata.usgs.gov/services/wfs/mrds?request=GetCapabilities&service=WFS&version=1.1.0', 'geoviewLayerType': 'ogcWfs', 'listOfLayerEntryConfig': [ { 'layerId': 'mrds', 'source': { 'strategy': 'bbox' }, - 'layerName': { 'en': 'USGS mrds' } + 'layerName': 'USGS mrds' } ] } diff --git a/packages/geoview-core/public/templates/layers/wms.html b/packages/geoview-core/public/templates/layers/wms.html index 7d4afbe1665..82c786faf61 100644 --- a/packages/geoview-core/public/templates/layers/wms.html +++ b/packages/geoview-core/public/templates/layers/wms.html @@ -75,14 +75,14 @@

1. Many WMS Layers (the map displays the different phases of the 'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'wmsLYR1-Root', - 'geoviewLayerName': { 'en': 'Weather Group' }, - 'metadataAccessPath': { 'en': 'https://geo.weather.gc.ca/geomet' }, + 'geoviewLayerName': 'Weather Group', + 'metadataAccessPath': 'https://geo.weather.gc.ca/geomet', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'entryType': 'group', 'layerId': 'wmsLYR1-Group', - 'layerName': { 'en': 'Group' }, + 'layerName': 'Group', 'listOfLayerEntryConfig': [ { 'layerId': 'CURRENT_CONDITIONS', @@ -95,7 +95,7 @@

1. Many WMS Layers (the map displays the different phases of the { 'layerId': 'GDPS.ETA_ICEC', 'layerFilter': 'time = date \'2023-04-18T07:00:00-04:00\'', - 'layerName': { 'en': 'Ice Cover' }, + 'layerName': 'Ice Cover', 'source': { 'style': 'SEA_ICECONC' } @@ -106,13 +106,13 @@

1. Many WMS Layers (the map displays the different phases of the }, { 'geoviewLayerId': 'wmsLYR1-msi', - 'geoviewLayerName': { 'en': 'MSI' }, - 'metadataAccessPath': { 'en': 'https://datacube.services.geo.ca/ows/msi' }, + 'geoviewLayerName': 'MSI', + 'metadataAccessPath': 'https://datacube.services.geo.ca/ows/msi', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': 'msi-94-or-more', - 'layerName': { 'en': 'Permanent Snow' }, + 'layerName': 'Permanent Snow', 'source': { 'style': 'msi-binary', 'featureInfo': { @@ -133,13 +133,13 @@

1. Many WMS Layers (the map displays the different phases of the }, { 'geoviewLayerId': 'wmsLYR1-spatiotemporel', - 'geoviewLayerName': { 'en': 'Spatiotemporel' }, - 'metadataAccessPath': { 'en': 'https://geo.weather.gc.ca/geomet' }, + 'geoviewLayerName': 'Spatiotemporel', + 'metadataAccessPath': 'https://geo.weather.gc.ca/geomet', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': 'RADAR_1KM_RSNO', - 'layerName': { 'en': 'Test Spatiotemporel' }, + 'layerName': 'Test Spatiotemporel', 'source': { 'style': 'Radar-Snow_14colors' } @@ -148,10 +148,8 @@

1. Many WMS Layers (the map displays the different phases of the }, { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Canada Energy Regulator' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/services/NRCan/CER_Assessments_EN/MapServer/WMSServer' - }, + 'geoviewLayerName': 'Canada Energy Regulator', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/services/NRCan/CER_Assessments_EN/MapServer/WMSServer', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { @@ -206,8 +204,8 @@

2. All Styles of a WMS Layer

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'wmsLYR2-Root', - 'geoviewLayerName': { 'en': 'QGis Test' }, - 'metadataAccessPath': { 'en': 'https://qgis-stage.services.geo.ca/dev/nrcan/landcover_2010_15_20_en' }, + 'geoviewLayerName': 'QGis Test', + 'metadataAccessPath': 'https://qgis-stage.services.geo.ca/dev/nrcan/landcover_2010_15_20_en', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { @@ -395,8 +393,8 @@

3. All Styles of a WMS Layer

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'wmsLYR3-Root', - 'geoviewLayerName': { 'en': 'QGis Test' }, - 'metadataAccessPath': { 'en': 'https://qgis-stage.services.geo.ca/dev/nrcan/landcover_2010_15_20_en' }, + 'geoviewLayerName': 'QGis Test', + 'metadataAccessPath': 'https://qgis-stage.services.geo.ca/dev/nrcan/landcover_2010_15_20_en', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { @@ -458,21 +456,21 @@

4. Automatic group creation from metadata information (NOT WORKIN 'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'Hydro', - 'geoviewLayerName': { 'en': 'Hydro' }, - 'metadataAccessPath': { 'en': 'https://maps.geogratis.gc.ca/wms/hydro_network_en' }, + 'geoviewLayerName': 'Hydro' , + 'metadataAccessPath': 'https://maps.geogratis.gc.ca/wms/hydro_network_en', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': 'nhn:nhn', - 'layerName': { 'en': 'National Hydro Network (NHN)' } + 'layerName': 'National Hydro Network (NHN)' }, { 'layerId': 'nhn:nhnda', - 'layerName': { 'en': 'Drainage Areas' } + 'layerName': 'Drainage Areas' }, { 'layerId': 'nhn:toponyms', - 'layerName': { 'en': 'Toponyms' } + 'layerName': 'Toponyms' } ] } diff --git a/packages/geoview-core/public/templates/layers/xyz.html b/packages/geoview-core/public/templates/layers/xyz.html index 9a438dcf07a..54f6da9bdee 100644 --- a/packages/geoview-core/public/templates/layers/xyz.html +++ b/packages/geoview-core/public/templates/layers/xyz.html @@ -71,18 +71,14 @@

1. XYZ Tiles Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'xyzTilesLYR1', - 'geoviewLayerName': { - 'en': 'World_Topo_Map' - }, + 'geoviewLayerName': 'World_Topo_Map', 'geoviewLayerType': 'xyzTiles', 'listOfLayerEntryConfig': [ { 'layerId': 'toner', 'initialSettings': { 'minZoom': 3, 'maxZoom': 8 }, 'source': { - 'dataAccessPath': { - 'en': 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}' - } + 'dataAccessPath': 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}' } } ] diff --git a/packages/geoview-core/public/templates/load-test.html b/packages/geoview-core/public/templates/load-test.html index fe86f3ee9e4..b0588cba2d2 100644 --- a/packages/geoview-core/public/templates/load-test.html +++ b/packages/geoview-core/public/templates/load-test.html @@ -149,8 +149,9 @@

Load Test

'components': [], 'corePackages': [], 'theme': 'geo.ca' - }">
-
+ }" + >
+

@@ -240,16 +241,10 @@ 

Load Test

for (j = 0; j < parseInt(document.getElementById('layerCount').value); j++) { cgpv.api.maps['mapWM'].layer.addGeoviewLayer({ geoviewLayerId: new Date().getTime().toString(), - geoviewLayerName: { - en: 'test', - fr: 'test', - }, + geoviewLayerName: 'test', geoviewLayerType: type, listOfLayerEntryConfig, - metadaAccessPath: { - en: document.getElementById('url').value, - fr: document.getElementById('url').value, - }, + metadaAccessPath: document.getElementById('url').value, }); } diff --git a/packages/geoview-core/public/templates/outliers/outlier-GeoAI.html b/packages/geoview-core/public/templates/outliers/outlier-GeoAI.html index 67b29716562..7c63755b223 100644 --- a/packages/geoview-core/public/templates/outliers/outlier-GeoAI.html +++ b/packages/geoview-core/public/templates/outliers/outlier-GeoAI.html @@ -76,19 +76,13 @@

1. Highly detailed layers - slow

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'quebec-2006', - 'geoviewLayerName': { - 'en': 'Québec 2006' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/GeoAI_UseCase_en/MapServer' - }, + 'geoviewLayerName': 'Québec 2006', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/GeoAI_UseCase_en/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '8', - 'layerName': { - 'en': 'Québec 2006' - }, + 'layerName': 'Québec 2006', 'initialSettings': { 'states': { 'visible': true diff --git a/packages/geoview-core/public/templates/outliers/outlier-geometry.html b/packages/geoview-core/public/templates/outliers/outlier-geometry.html index 695e97edf79..4d329cec748 100644 --- a/packages/geoview-core/public/templates/outliers/outlier-geometry.html +++ b/packages/geoview-core/public/templates/outliers/outlier-geometry.html @@ -73,22 +73,13 @@

1. Outlier Geometry Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'EPSG:4617', - 'geoviewLayerName': { - 'en': 'CSRS Layer (EPSG: 4617)', - 'fr': 'Couche CSRS (EPSG: 4617)' - }, - 'metadataAccessPath': { - 'en': 'https://data.sac-isc.gc.ca/geomatics/rest/services/Donnees_Ouvertes-Open_Data/Communaute_inuite_Inuit_Community/MapServer', - 'fr': 'https://data.sac-isc.gc.ca/geomatics/rest/services/Donnees_Ouvertes-Open_Data/Communaute_inuite_Inuit_Community/MapServer' - }, + 'geoviewLayerName': 'CSRS Layer (EPSG: 4617)', + 'metadataAccessPath': 'https://data.sac-isc.gc.ca/geomatics/rest/services/Donnees_Ouvertes-Open_Data/Communaute_inuite_Inuit_Community/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { - 'en': 'CSRS Layer', - 'fr': 'Couche CSRS ' - }, + 'layerName': 'CSRS Layer', 'initialSettings': { 'states': { 'visible': true @@ -99,50 +90,32 @@

1. Outlier Geometry Layers

}, { 'geoviewLayerId': 'geojsonlyr1', - 'geoviewLayerName': { - 'en': 'Multi Polygon Layer', - 'fr': 'Couche multi-polygones' - }, + 'geoviewLayerName': 'Multi Polygon Layer', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': 'multipolygon', - 'layerName': { - 'en': 'Multi Polygon Layer', - 'fr': 'Couche multi-polygones' - }, + 'layerName': 'Multi Polygon Layer', 'initialSettings': { 'states': { 'visible': false } }, 'source': { - 'dataAccessPath': { - 'en': './datasets/geojson/multipolygons.geojson', - 'fr': './datasets/geojson/multipolygons.geojson' - } + 'dataAccessPath': './datasets/geojson/multipolygons.geojson' } } ] }, { 'geoviewLayerId': 'featureInfo', - 'geoviewLayerName': { - 'en': 'Coral Sponge 2016', - 'fr': 'Éponge Coraile 2016' - }, - 'metadataAccessPath': { - 'en': 'https://gisp.dfo-mpo.gc.ca/arcgis/rest/services/FGP/KDE_Analyses_Coral_Sponge_2016_EN/MapServer', - 'fr': 'https://gisp.dfo-mpo.gc.ca/arcgis/rest/services/FGP/KDE_Analyses_Coral_Sponge_2016_FR/MapServer' - }, + 'geoviewLayerName': 'Coral Sponge 2016', + 'metadataAccessPath': 'https://gisp.dfo-mpo.gc.ca/arcgis/rest/services/FGP/KDE_Analyses_Coral_Sponge_2016_EN/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { - 'en': 'Coral Sponge 2016', - 'fr': 'Éponge Coraile 20166' - }, + 'layerName': 'Coral Sponge 2016', 'initialSettings': { 'states': { 'visible': false @@ -153,22 +126,13 @@

1. Outlier Geometry Layers

}, { 'geoviewLayerId': 'cpcad', - 'geoviewLayerName': { - 'en': 'Protected and conserved area', - 'fr': 'Zone protégée et conservée' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CWS_SCF/CPCAD/MapServer/', - 'fr': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CWS_SCF/CPCAD/MapServer/' - }, + 'geoviewLayerName': 'Protected and conserved area', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CWS_SCF/CPCAD/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { - 'en': 'Protected and conserved area', - 'fr': 'Zone protégée et conservée' - }, + 'layerName': 'Protected and conserved area', 'initialSettings': { 'states': { 'visible': false @@ -179,25 +143,16 @@

1. Outlier Geometry Layers

}, { 'geoviewLayerId': 'layerDef', - 'geoviewLayerName': { - 'en': 'IACC FR', - 'fr': 'IAAC FR' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/IAAC/assessment_inventory_fr/MapServer/', - 'fr': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/IAAC/assessment_inventory_fr/MapServer/' - }, + 'geoviewLayerName': 'IACC FR', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/IAAC/assessment_inventory_fr/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { - 'en': 'IACC FR', - 'fr': 'IAAC FR' - }, + 'layerName': 'IACC FR', 'initialSettings': { - 'states': { - 'visible': true + 'states': { + 'visible': true } } } diff --git a/packages/geoview-core/public/templates/outliers/outlier-metadata.html b/packages/geoview-core/public/templates/outliers/outlier-metadata.html index 9f5fc9b7c04..f77f5c1016a 100644 --- a/packages/geoview-core/public/templates/outliers/outlier-metadata.html +++ b/packages/geoview-core/public/templates/outliers/outlier-metadata.html @@ -75,15 +75,13 @@

1. Metadata Issue Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'mpmo', - 'geoviewLayerName': { 'en': 'MPMO - Major Project' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/MPMO_Major_Projects/MapServer/' - }, + 'geoviewLayerName': 'MPMO - Major Project', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/MPMO_Major_Projects/MapServer/', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { 'layerId': '0', - 'layerName': { 'en': 'MPMO - Major Project' }, + 'layerName': 'MPMO - Major Project', 'initialSettings': { 'states': { 'visible': true @@ -94,14 +92,8 @@

1. Metadata Issue Layers

}, { 'geoviewLayerId': 'floods-canada-current-year', - 'geoviewLayerName': { - 'en': 'Floods in Canada - Current Year', - 'fr': 'Inondations au Canada – Année courante' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/egs_sgu/rest/services/Flood_Inondation/EGS_Flood_Product_Current_en/MapServer', - 'fr': 'https://maps-cartes.services.geo.ca/egs_sgu/rest/services/Flood_Inondation/EGS_Flood_Product_Current_fr/MapServer' - }, + 'geoviewLayerName': 'Floods in Canada - Current Year', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/egs_sgu/rest/services/Flood_Inondation/EGS_Flood_Product_Current_en/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -127,10 +119,8 @@

1. Metadata Issue Layers

}, { 'geoviewLayerId': 'permafrost-by-ecoprovince', - 'geoviewLayerName': { 'en': 'Permafrost by Ecoprovince' }, - 'metadataAccessPath': { - 'en': 'https://agriculture.canada.ca/atlas/rest/services/mapservices/aafc_national_ecological_framework_of_canada/MapServer' - }, + 'geoviewLayerName': 'Permafrost by Ecoprovince', + 'metadataAccessPath': 'https://agriculture.canada.ca/atlas/rest/services/mapservices/aafc_national_ecological_framework_of_canada/MapServer', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -239,29 +229,25 @@

3. Metadata Extent Issue Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'LYR1', - 'geoviewLayerName': { 'en': 'Water quality in Canadian rivers' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/' - }, + 'geoviewLayerName': 'Water quality in Canadian rivers', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '5', - 'layerName': { 'en': 'Water quality at monitoring sites, Canada' } + 'layerName': 'Water quality at monitoring sites, Canada' } ] }, { 'geoviewLayerId': 'LYR2', - 'geoviewLayerName': { 'en': 'Reported releases to surface water for 2020' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/NPRI_INRP/NPRI_INRP/MapServer/' - }, + 'geoviewLayerName': 'Reported releases to surface water for 2020', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/NPRI_INRP/NPRI_INRP/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '3', - 'layerName': { 'en': 'Reported releases to surface water for 2020' } + 'layerName': 'Reported releases to surface water for 2020' } ] } diff --git a/packages/geoview-core/public/templates/outliers/outlier-style.html b/packages/geoview-core/public/templates/outliers/outlier-style.html index 049820bfb90..63650d530ad 100644 --- a/packages/geoview-core/public/templates/outliers/outlier-style.html +++ b/packages/geoview-core/public/templates/outliers/outlier-style.html @@ -73,34 +73,32 @@

1. Style Issue Layers

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'geojsonlyr2', - 'geoviewLayerName': { 'en': 'Point and Polygon Layer' }, + 'geoviewLayerName': 'Point and Polygon Layer', 'geoviewLayerType': 'GeoJSON', 'listOfLayerEntryConfig': [ { 'layerId': 'pointPolygon', - 'layerName': { 'en': 'Point and Polygon Layer' }, + 'layerName': 'Point and Polygon Layer', 'initialSettings': { 'states': { 'visible': false } }, 'source': { - 'dataAccessPath': { - 'en': './datasets/geojson/projects.json' - } + 'dataAccessPath': './datasets/geojson/projects.json' } } ] }, { 'geoviewLayerId': 'HRDEM-dsm-hillshade', - 'geoviewLayerName': { 'en': 'DSM Hillshade' }, - 'metadataAccessPath': { 'en': 'https://datacube.services.geo.ca/ows/elevation' }, + 'geoviewLayerName': 'DSM Hillshade', + 'metadataAccessPath': 'https://datacube.services.geo.ca/ows/elevation', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': 'dsm-hillshade', - 'layerName': { 'en': 'DSM-Hillshade' }, + 'layerName': 'DSM-Hillshade', 'initialSettings': { 'states': { 'visible': false @@ -111,15 +109,13 @@

1. Style Issue Layers

}, { 'geoviewLayerId': 'cesi', - 'geoviewLayerName': { 'en': 'CESI' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/' - }, + 'geoviewLayerName': 'CESI', + 'metadataAccessPath': 'https://maps-cartes.ec.gc.ca/arcgis/rest/services/CESI/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { 'layerId': '32', - 'layerName': { 'en': 'CESI' }, + 'layerName': 'CESI', 'initialSettings': { 'states': { 'visible': false @@ -130,24 +126,20 @@

1. Style Issue Layers

}, { 'geoviewLayerId': 'FSI', - 'geoviewLayerName': { 'en': 'Flood susceptibility index' }, - 'metadataAccessPath': { - 'en': 'https://datacube.services.geo.ca/web/flood-susceptibility.xml' - }, + 'geoviewLayerName': 'Flood susceptibility index', + 'metadataAccessPath': 'https://datacube.services.geo.ca/web/flood-susceptibility.xml', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { 'layerId': 'FS-national-2015-index', - 'layerName': { 'en': 'Flood susceptibility index' } + 'layerName': 'Flood susceptibility index' } ] }, { 'geoviewLayerId': 'Canadian Disasters, by Event Type***38633a35', - 'geoviewLayerName': { 'en': 'Canadian Disasters, by Event Type' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/PS/canadian_disasters_en/MapServer' - }, + 'geoviewLayerName': 'Canadian Disasters, by Event Type', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/PS/canadian_disasters_en/MapServer', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/pygeoapi-processes.html b/packages/geoview-core/public/templates/pygeoapi-processes.html index 2485310218b..850b1e7843b 100644 --- a/packages/geoview-core/public/templates/pygeoapi-processes.html +++ b/packages/geoview-core/public/templates/pygeoapi-processes.html @@ -65,14 +65,8 @@

GeoJSON Layer

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'NHN', - 'geoviewLayerName': { - 'en': 'Hydro Network', - 'fr': 'Hydro Network' - }, - 'metadataAccessPath': { - 'en': 'https://maps.geogratis.gc.ca/wms/hydro_network_en', - 'fr': 'https://maps.geogratis.gc.ca/wms/hydro_network_en' - }, + 'geoviewLayerName': 'Hydro Network', + 'metadataAccessPath': 'https://maps.geogratis.gc.ca/wms/hydro_network_en', 'geoviewLayerType': 'ogcWms', 'listOfLayerEntryConfig': [ { @@ -80,10 +74,7 @@

GeoJSON Layer

'initialSettings': { 'states': {'visible' : false} }, - 'layerName': { - 'en': 'Hydro Network', - 'fr': 'Hydro Network' - } + 'layerName': 'Hydro Network' } ] } @@ -171,11 +162,8 @@

GeoJSON Layer

const addResult = cgpv.api.maps['LYR5'].layer.addGeoviewLayer( { geoviewLayerId: 'GeoMetGeoJsonProcess', - metadataAccessPath: { 'en': './datasets/geojson/processes-metadata.json' }, - geoviewLayerName: { - en: 'GeoMet-OGC-API', - fr: 'GeoMet-OGC-API', - }, + metadataAccessPath: './datasets/geojson/processes-metadata.json' , + geoviewLayerName: 'GeoMet-OGC-API', geoviewLayerType: 'GeoJSON', 'listOfLayerEntryConfig': [ { @@ -220,10 +208,8 @@

GeoJSON Layer

const addResult = cgpv.api.maps['LYR5'].layer.addGeoviewLayer( { geoviewLayerId: 'HydroGeoJsonProcess', - metadataAccessPath: { 'en': './datasets/geojson/hydro-metadata.json' }, - geoviewLayerName: { - en: 'Downstream Analysis' - }, + metadataAccessPath: './datasets/geojson/hydro-metadata.json', + geoviewLayerName: 'Downstream Analysis', geoviewLayerType: 'GeoJSON', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/sandbox.html b/packages/geoview-core/public/templates/sandbox.html index c1a7c5657f1..ff90303917c 100644 --- a/packages/geoview-core/public/templates/sandbox.html +++ b/packages/geoview-core/public/templates/sandbox.html @@ -125,14 +125,8 @@

Sandbox

}, 'listOfGeoviewLayerConfig': [{ 'geoviewLayerId': 'wmsLYR1', - 'geoviewLayerName': { - 'en': 'earthquakes', - 'fr': 'earthquakes' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', - 'fr': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/' - }, + 'geoviewLayerName': 'earthquakes', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { @@ -339,14 +333,8 @@

Sanbox Map

}, 'listOfGeoviewLayerConfig': [{ 'geoviewLayerId': 'wmsLYR1', - 'geoviewLayerName': { - 'en': 'earthquakes', - 'fr': 'earthquakes' - }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', - 'fr': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/' - }, + 'geoviewLayerName': 'earthquakes', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/earthquakes_en/MapServer/', 'geoviewLayerType': 'esriDynamic', 'listOfLayerEntryConfig': [ { diff --git a/packages/geoview-core/public/templates/test.html b/packages/geoview-core/public/templates/test.html index 732f440041c..5e02fbb93eb 100644 --- a/packages/geoview-core/public/templates/test.html +++ b/packages/geoview-core/public/templates/test.html @@ -74,8 +74,8 @@

1. Many ESRI Dynamic Layers with legend settings in the config1. Many ESRI Dynamic Layers with legend settings in the config1. Many ESRI Dynamic Layers with legend settings in the config1. Slider MUI Component

'listOfGeoviewLayerConfig': [ { 'geoviewLayerId': 'historical-flood', - 'geoviewLayerName': { 'en': 'Historical Flood Events (HFE)' }, - 'metadataAccessPath': { - 'en': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer' - }, + 'geoviewLayerName': 'Historical Flood Events (HFE)', + 'metadataAccessPath': 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/historical_flood_event_en/MapServer', 'geoviewLayerType': 'esriFeature', 'listOfLayerEntryConfig': [ { @@ -81,11 +79,12 @@

1. Slider MUI Component

}, 'theme': 'geo.ca', 'corePackages': [] - }"> -

- -

-  
+ }" + > +

+ +

+    

@@ -173,7 +172,9 @@

Accessing slider value from outside of the core viewer using api event liste ], track: 'normal', onChange: (dates) => { - const field = cgpv.api.maps.UI1.layer.getGeoviewLayerHybrid('historical-flood/0').getTemporalDimension('historical-flood/0').field; + const field = cgpv.api.maps.UI1.layer + .getGeoviewLayerHybrid('historical-flood/0') + .getTemporalDimension('historical-flood/0').field; cgpv.api.maps.UI1.layer .getGeoviewLayerHybrid('historical-flood/0') .applyViewFilter('historical-flood/0', `${field} >= date '${dates[0]}-01-01' and ${field} <= date '${dates[1]}-12-31'`); diff --git a/packages/geoview-core/schema.json b/packages/geoview-core/schema.json index 959c99496b8..d6002080c1d 100644 --- a/packages/geoview-core/schema.json +++ b/packages/geoview-core/schema.json @@ -7,21 +7,6 @@ "comments": "Configuration for GeoView core packages, each packages manages it own schema. It correspond to the TypeMapFeaturesInstance type.", "additionalProperties": false, "definitions": { - "TypeLocalizedString": { - "additionalProperties": false, - "minProperties": 1, - "type": "object", - "properties": { - "en": { - "type": "string", - "description": "The English version of the string." - }, - "fr": { - "type": "string", - "description": "The French version of the string. " - } - } - }, "TypeFeatureInfoLayerConfig": { "additionalProperties": false, "type": "object", @@ -574,8 +559,8 @@ "type": "object", "properties": { "dataAccessPath": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The path (English/French) to reach the data to display. If not specified, metadataAccessPath will be assigned to it." + "type": "string", + "description": "The path to reach the data to display. If not specified, metadataAccessPath will be assigned to it." }, "postSettings": { "type": "object", @@ -614,7 +599,7 @@ "type": "object", "properties": { "dataAccessPath": { - "$ref": "#/definitions/TypeLocalizedString", + "type": "string", "description": "The path (English/French) to reach the data to display. If not specified, metadatAccessPath will be assigne dto it." }, "crossOrigin": { @@ -658,7 +643,7 @@ "type": "object", "properties": { "dataAccessPath": { - "$ref": "#/definitions/TypeLocalizedString", + "type": "string", "description": "The path (English/French) to reach the data to display. If not specified, metadatAccessPath will be assigne dto it." }, "crossOrigin": { @@ -688,7 +673,7 @@ "type": "object", "properties": { "dataAccessPath": { - "$ref": "#/definitions/TypeLocalizedString", + "type": "string", "description": "The path (English/French) to reach the data to display. If not specified, metadatAccessPath will be assigne dto it." }, "crossOrigin": { @@ -721,7 +706,7 @@ "additionalProperties": false, "properties": { "dataAccessPath": { - "$ref": "#/definitions/TypeLocalizedString", + "type": "string", "description": "The path (English/French) to reach the data to display. If not specified, metadatAccessPath will be assigne dto it." }, "crossOrigin": { @@ -804,8 +789,8 @@ "description": "The id of the layer to display on the map." }, "layerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "layerFilter": { "type": "string", @@ -850,8 +835,8 @@ "description": "The id of the layer to display on the map." }, "layerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "layerFilter": { "type": "string", @@ -883,7 +868,7 @@ "description": "Layer sources providing vector data divided into a tile grid.", "properties": { "dataAccessPath": { - "$ref": "#/definitions/TypeLocalizedString", + "type": "string", "description": "The path (English/French) to reach the data to display. If not specified, metadatAccessPath will be assigne dto it." }, "format": { @@ -921,8 +906,8 @@ "description": "The ending element of the layer configuration path." }, "layerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "layerFilter": { "type": "string", @@ -966,8 +951,8 @@ "description": "The ending element of the layer configuration path." }, "layerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "layerFilter": { "type": "string", @@ -1011,8 +996,8 @@ "description": "The ending element of the layer configuration path." }, "layerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "layerFilter": { "type": "string", @@ -1056,8 +1041,8 @@ "description": "The ending element of the layer configuration path." }, "layerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "initialSettings": { "$ref": "#/definitions/TypeLayerInitialSettings", @@ -1094,8 +1079,8 @@ "description": "The id of the layer to display on the map." }, "layerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "initialSettings": { "$ref": "#/definitions/TypeLayerInitialSettings", @@ -1136,8 +1121,8 @@ } }, "layerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer group (English/French)." + "type": "string", + "description": "The display name of the layer group." }, "initialSettings": { "$ref": "#/definitions/TypeLayerInitialSettings", @@ -1497,12 +1482,12 @@ "description": "The id of the layer for referencing within the viewer (does not relate directly to any external service). The id will have the language extension (id-'lang')." }, "geoviewLayerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "metadataAccessPath": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The GeoView layer access path (English/French)." + "type": "string", + "description": "The GeoView layer access path." }, "geoviewLayerType": { "$ref": "#/definitions/TypeGeoviewLayerType", @@ -1544,8 +1529,8 @@ "description": "Type of GeoCore layer." }, "geoviewLayerName": { - "$ref": "#/definitions/TypeLocalizedString", - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information." + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "initialSettings": { "$ref": "#/definitions/TypeLayerInitialSettings", diff --git a/packages/geoview-core/src/api/config/config-api.ts b/packages/geoview-core/src/api/config/config-api.ts index 01a1d6e4676..799fd9b81f7 100644 --- a/packages/geoview-core/src/api/config/config-api.ts +++ b/packages/geoview-core/src/api/config/config-api.ts @@ -12,7 +12,7 @@ import { } from '@config/types/map-schema-types'; import { MapConfigError } from '@config/types/classes/config-exceptions'; -import { createLocalizedString, generateId, isJsonString, removeCommentsFromJSON } from '@/core/utils/utilities'; +import { generateId, isJsonString, removeCommentsFromJSON } from '@/core/utils/utilities'; import { logger } from '@/core//utils/logger'; /** @@ -494,9 +494,9 @@ export class ConfigApi { // Create a GeoView Json configuration object. geoviewLayerConfig = toJsonObject({ geoviewLayerId: generateId(), - geoviewLayerName: { en: 'unknown', fr: 'inconnu' }, + geoviewLayerName: language === 'en' ? 'unknown' : 'inconnue', geoviewLayerType: layerType, - metadataAccessPath: createLocalizedString(serviceAccessString), + metadataAccessPath: serviceAccessString, listOfLayerEntryConfig: listOfLayerId.map((layerId) => { return { layerId }; }), diff --git a/packages/geoview-core/src/api/config/types/classes/geoview-config/abstract-geoview-esri-layer-config.ts b/packages/geoview-core/src/api/config/types/classes/geoview-config/abstract-geoview-esri-layer-config.ts index 9d114b2d986..af93c77e216 100644 --- a/packages/geoview-core/src/api/config/types/classes/geoview-config/abstract-geoview-esri-layer-config.ts +++ b/packages/geoview-core/src/api/config/types/classes/geoview-config/abstract-geoview-esri-layer-config.ts @@ -5,7 +5,7 @@ import { EsriGroupLayerConfig } from '@config/types/classes/sub-layer-config/gro import { GeoviewLayerConfigError, GeoviewLayerInvalidParameterError } from '@config/types/classes/config-exceptions'; import { EntryConfigBaseClass } from '@/api/config/types/classes/sub-layer-config/entry-config-base-class'; -import { createLocalizedString, getXMLHttpRequest } from '@/core/utils/utilities'; +import { getXMLHttpRequest } from '@/core/utils/utilities'; import { logger } from '@/core/utils/logger'; // ======================== @@ -110,7 +110,7 @@ export abstract class AbstractGeoviewEsriLayerConfig extends AbstractGeoviewLaye if (layerId !== (serviceMetadata.name as string)) throw new GeoviewLayerInvalidParameterError('LayerIdNotFound', [layerId]); const layerConfig = toJsonObject({ layerId, - layerName: createLocalizedString(layerId), + layerName: layerId, }); return this.createLeafNode(layerConfig, this.getLanguage(), this, parentNode)!; } @@ -124,7 +124,7 @@ export abstract class AbstractGeoviewEsriLayerConfig extends AbstractGeoviewLaye if (layerFound && layerFound.type !== 'Group Layer') { const layerConfig = toJsonObject({ layerId: layerFound.id.toString(), - layerName: createLocalizedString(layerFound.name), + layerName: layerFound.name, geometryType: AbstractGeoviewEsriLayerConfig.convertEsriGeometryTypeToOLGeometryType(layerFound.geometryType as string), }); return this.createLeafNode(layerConfig, this.getLanguage(), this, parentNode)!; @@ -150,7 +150,7 @@ export abstract class AbstractGeoviewEsriLayerConfig extends AbstractGeoviewLaye this.createLeafNode( toJsonObject({ layerId: serviceMetadata.name, - layerName: createLocalizedString(serviceMetadata.name)!, + layerName: serviceMetadata.name!, }), this.getLanguage(), this @@ -169,7 +169,7 @@ export abstract class AbstractGeoviewEsriLayerConfig extends AbstractGeoviewLaye this.createLeafNode( toJsonObject({ layerId: layers[0].id.toString(), - layerName: createLocalizedString(layers[0].name)!, + layerName: layers[0].name!, geometryType: AbstractGeoviewEsriLayerConfig.convertEsriGeometryTypeToOLGeometryType(layers[0].geometryType as string), }), this.getLanguage(), @@ -217,7 +217,7 @@ export abstract class AbstractGeoviewEsriLayerConfig extends AbstractGeoviewLaye accumulator.push( toJsonObject({ layerId: layer.id.toString(), - layerName: createLocalizedString(layer.name), + layerName: layer.name, geometryType: AbstractGeoviewEsriLayerConfig.convertEsriGeometryTypeToOLGeometryType(layer.geometryType as string), }) ); @@ -228,7 +228,7 @@ export abstract class AbstractGeoviewEsriLayerConfig extends AbstractGeoviewLaye return toJsonObject({ layerId: parentId === -1 ? groupName : `${parentId}`, - layerName: createLocalizedString(groupName), + layerName: groupName, isLayerGroup: true, listOfLayerEntryConfig, }); diff --git a/packages/geoview-core/src/api/config/types/classes/geoview-config/abstract-geoview-layer-config.ts b/packages/geoview-core/src/api/config/types/classes/geoview-config/abstract-geoview-layer-config.ts index 33295f438ab..25d8e7bd90a 100644 --- a/packages/geoview-core/src/api/config/types/classes/geoview-config/abstract-geoview-layer-config.ts +++ b/packages/geoview-core/src/api/config/types/classes/geoview-config/abstract-geoview-layer-config.ts @@ -3,12 +3,12 @@ import cloneDeep from 'lodash/cloneDeep'; import { Cast, TypeJsonObject, TypeJsonArray } from '@config/types/config-types'; import { TypeGeoviewLayerType, TypeDisplayLanguage } from '@config/types/map-schema-types'; -import { isvalidComparedToInputSchema, isvalidComparedToInternalSchema, normalizeLocalizedString } from '@config/utils'; +import { isvalidComparedToInputSchema, isvalidComparedToInternalSchema } from '@config/utils'; import { layerEntryIsGroupLayer } from '@config/types/type-guards'; import { EntryConfigBaseClass } from '@config/types/classes/sub-layer-config/entry-config-base-class'; import { ConfigError, GeoviewLayerConfigError } from '@config/types/classes/config-exceptions'; -import { createLocalizedString, generateId } from '@/core/utils/utilities'; +import { generateId } from '@/core/utils/utilities'; import { logger } from '@/core/utils/logger'; // ======================== @@ -105,9 +105,9 @@ export abstract class AbstractGeoviewLayerConfig { // GV: GeoCore layers are processed by the configApi. GeoView layer instances do not recognize them as a valid geoView layer Type. // GV: However, whe have the isGeocore flag to keep track of geocore layers that were converted to geoview layers. this.isGeocore = (userGeoviewLayerConfig.isGeocore as boolean) || false; - if (this.isGeocore) this.geoviewLayerName = userGeoviewLayerConfig.geoviewLayerName[this.#language] as string; + if (this.isGeocore) this.geoviewLayerName = userGeoviewLayerConfig.geoviewLayerName as string; this.geoviewLayerId = (userGeoviewLayerConfig.geoviewLayerId || generateId()) as string; - this.metadataAccessPath = normalizeLocalizedString(userGeoviewLayerConfig.metadataAccessPath)![this.#language]!; + this.metadataAccessPath = userGeoviewLayerConfig.metadataAccessPath as string; // Validate the structure of the sublayer list and correct it if needed. switch ((this.#userGeoviewLayerConfig?.listOfLayerEntryConfig as TypeJsonArray)?.length) { @@ -123,7 +123,7 @@ export abstract class AbstractGeoviewLayerConfig { (this.#userGeoviewLayerConfig.listOfLayerEntryConfig as TypeJsonArray) = [ Cast({ layerId: this.#userGeoviewLayerConfig.geoviewLayerId, - layerName: { ...(this.#userGeoviewLayerConfig.geoviewLayerName as object) }, + layerName: this.#userGeoviewLayerConfig.geoviewLayerName, isLayerGroup: true, listOfLayerEntryConfig: this.#userGeoviewLayerConfig.listOfLayerEntryConfig as TypeJsonArray, }), @@ -290,7 +290,7 @@ export abstract class AbstractGeoviewLayerConfig { layerTreeFilter = [ Cast({ layerId: this.geoviewLayerId, - layerName: createLocalizedString(this.geoviewLayerName), + layerName: this.geoviewLayerName, isLayerGroup: true, listOfLayerEntryConfig: layerTreeFilter, }), @@ -458,19 +458,17 @@ export abstract class AbstractGeoviewLayerConfig { // configuration because we're modifying it and don't want it to leak back to the original object. const geoviewLayerConfig = cloneDeep(userGeoviewLayerConfig || this.#userGeoviewLayerConfig); - if (geoviewLayerConfig.geoviewLayerName) this.geoviewLayerName = geoviewLayerConfig.geoviewLayerName[this.#language] as string; + if (geoviewLayerConfig.geoviewLayerName) this.geoviewLayerName = geoviewLayerConfig.geoviewLayerName as string; if (geoviewLayerConfig.serviceDateFormat) this.serviceDateFormat = geoviewLayerConfig.serviceDateFormat as string; if (geoviewLayerConfig.externalDateFormat) this.externalDateFormat = geoviewLayerConfig.externalDateFormat as string; const convertUserConfigToInternalConfig = (listOfLayerEntryConfig: TypeJsonArray): TypeJsonArray => { return listOfLayerEntryConfig.map((sublayer): TypeJsonObject => { - // We disable the eslint no-param-reassign because we want to keep the modifications made to the object passed as parameter. - // eslint-disable-next-line no-param-reassign - if (sublayer.layerName) sublayer.layerName = sublayer.layerName[this.#language]; if (sublayer.isLayerGroup) convertUserConfigToInternalConfig(sublayer.listOfLayerEntryConfig as TypeJsonArray); return sublayer; }); }; + const internalConfig = convertUserConfigToInternalConfig(geoviewLayerConfig.listOfLayerEntryConfig as TypeJsonArray); this.listOfLayerEntryConfig = mergeWith(this.listOfLayerEntryConfig, internalConfig, (target, newValue, key) => { // Keep the listOfLayerEntryConfig as it is. Do not replace it with the user' array. Only the internal properties will be replaced. diff --git a/packages/geoview-core/src/api/config/types/classes/geoview-config/raster-config/wms-config.ts b/packages/geoview-core/src/api/config/types/classes/geoview-config/raster-config/wms-config.ts index 85214d2e32c..acfc71d13e8 100644 --- a/packages/geoview-core/src/api/config/types/classes/geoview-config/raster-config/wms-config.ts +++ b/packages/geoview-core/src/api/config/types/classes/geoview-config/raster-config/wms-config.ts @@ -11,7 +11,7 @@ import { layerEntryIsGroupLayer } from '@config/types/type-guards'; import { GeoviewLayerConfigError, GeoviewLayerInvalidParameterError } from '@config/types/classes/config-exceptions'; import { logger } from '@/core/utils/logger'; -import { createLocalizedString, xmlToJson } from '@/core/utils/utilities'; +import { xmlToJson } from '@/core/utils/utilities'; export type TypeWmsLayerNode = WmsGroupLayerConfig | WmsLayerEntryConfig; @@ -191,7 +191,7 @@ export class WmsLayerConfig extends AbstractGeoviewLayerConfig { // Create a single layer using the metadata const layerConfig = toJsonObject({ layerId: metadataLayer.Name, - layerName: createLocalizedString(metadataLayer.Name), + layerName: metadataLayer.Name, }); return [this.createLeafNode(layerConfig, this.getLanguage(), this)!]; } @@ -222,7 +222,7 @@ export class WmsLayerConfig extends AbstractGeoviewLayerConfig { // Create the layer using the metadata const layerConfig = toJsonObject({ layerId, - layerName: createLocalizedString(layerFound.Title), + layerName: layerFound.Title, }); return this.createLeafNode(layerConfig, this.getLanguage(), this, parentNode)!; } @@ -247,7 +247,7 @@ export class WmsLayerConfig extends AbstractGeoviewLayerConfig { accumulator.push( toJsonObject({ layerId: layer.Name, - layerName: createLocalizedString(layer.Name), + layerName: layer.Name, }) ); } @@ -256,7 +256,7 @@ export class WmsLayerConfig extends AbstractGeoviewLayerConfig { return toJsonObject({ layerId: groupId, - layerName: createLocalizedString(groupId), + layerName: groupId, isLayerGroup: true, listOfLayerEntryConfig, }); @@ -265,7 +265,7 @@ export class WmsLayerConfig extends AbstractGeoviewLayerConfig { /** *************************************************************************************************************************** * This method reads the service metadata from a XML metadataAccessPath. * - * @param {string} metadataUrl The localized value of the metadataAccessPath + * @param {string} metadataUrl The metadataAccessPath * * @returns {Promise} A promise that the execution is completed. * @private @async diff --git a/packages/geoview-core/src/api/config/types/classes/geoview-config/vector-config/geojson-config.ts b/packages/geoview-core/src/api/config/types/classes/geoview-config/vector-config/geojson-config.ts index e050e29cdb8..81b74fd9c54 100644 --- a/packages/geoview-core/src/api/config/types/classes/geoview-config/vector-config/geojson-config.ts +++ b/packages/geoview-core/src/api/config/types/classes/geoview-config/vector-config/geojson-config.ts @@ -10,7 +10,6 @@ import { GeoviewLayerConfigError, GeoviewLayerInvalidParameterError } from '@con import { layerEntryIsGroupLayer } from '@config/types/type-guards'; import { mergeWith } from 'lodash'; import { logger } from '@/core/utils/logger'; -import { createLocalizedString } from '@/core/utils/utilities'; import { Cast } from '@/app'; export type TypeGeoJsonLayerNode = GeoJsonGroupLayerConfig | GeoJsonLayerEntryConfig; @@ -56,7 +55,7 @@ export class GeoJsonLayerConfig extends AbstractGeoviewLayerConfig { logger.logError('When a GeoJson metadataAccessPath ends with a layer file name, the listOfLayerEntryConfig must be empty.'); } this.listOfLayerEntryConfig = [ - this.createLeafNode(toJsonObject({ layerId: lastPathItem, layerName: createLocalizedString(lastPathItem) }), language, this)!, + this.createLeafNode(toJsonObject({ layerId: lastPathItem, layerName: lastPathItem }), language, this)!, ]; } } @@ -163,12 +162,7 @@ export class GeoJsonLayerConfig extends AbstractGeoviewLayerConfig { protected override createLayerEntryNode(layerId: string, parentNode: EntryConfigBaseClass | undefined): EntryConfigBaseClass { // GV: To determine if service metadata exists, we must verify that the object is not empty. if (Object.keys(this.getServiceMetadata()).length === 0) - return this.createLeafNode( - toJsonObject({ layerId, layerName: createLocalizedString(layerId) }), - this.getLanguage(), - this, - parentNode - )!; + return this.createLeafNode(toJsonObject({ layerId, layerName: layerId }), this.getLanguage(), this, parentNode)!; // If we cannot find the layerId in the layer definitions, throw an error. const layerFound = this.findLayerMetadataEntry(layerId); @@ -177,7 +171,7 @@ export class GeoJsonLayerConfig extends AbstractGeoviewLayerConfig { } const layerConfig = mergeWith({}, layerFound, (destValue, sourceValue, key) => { - if (key === 'layerName') return createLocalizedString(sourceValue); + if (key === 'layerName') return sourceValue; return undefined; }); @@ -203,7 +197,7 @@ export class GeoJsonLayerConfig extends AbstractGeoviewLayerConfig { }); const layerConfig = mergeWith({}, layerTree, (destValue, sourceValue, key) => { - if (key === 'layerName') return createLocalizedString(sourceValue); + if (key === 'layerName') return sourceValue; return undefined; }) as TypeJsonObject; diff --git a/packages/geoview-core/src/api/config/types/classes/geoview-config/vector-config/wfs-config.ts b/packages/geoview-core/src/api/config/types/classes/geoview-config/vector-config/wfs-config.ts index ce2074a6713..267d92f7fbc 100644 --- a/packages/geoview-core/src/api/config/types/classes/geoview-config/vector-config/wfs-config.ts +++ b/packages/geoview-core/src/api/config/types/classes/geoview-config/vector-config/wfs-config.ts @@ -8,7 +8,7 @@ import { EntryConfigBaseClass } from '@config/types/classes/sub-layer-config/ent import { GeoviewLayerConfigError, GeoviewLayerInvalidParameterError } from '@config/types/classes/config-exceptions'; import { logger } from '@/core/utils/logger'; -import { createLocalizedString, findPropertyNameByRegex, getXMLHttpRequest, xmlToJson } from '@/core/utils/utilities'; +import { findPropertyNameByRegex, getXMLHttpRequest, xmlToJson } from '@/core/utils/utilities'; export type TypeWfsLayerNode = WfsGroupLayerConfig | WfsLayerEntryConfig; @@ -137,12 +137,12 @@ export class WfsLayerConfig extends AbstractGeoviewLayerConfig { if (featureType.length > 1) { const groupConfig = toJsonObject({ layerId: this.geoviewLayerId, - layerName: { en: 'Layer Group', fr: 'Groupe de couches' }, + layerName: this.getLanguage() === 'en' ? 'Layer Group' : 'Groupe de couches', isLayerGroup: true, listOfLayerEntryConfig: featureType.map((layerMetadata) => { return toJsonObject({ layerId: layerMetadata.Name['#text'], - layerName: createLocalizedString(layerMetadata.Title['#text']), + layerName: layerMetadata.Title['#text'], }); }), }); @@ -152,7 +152,7 @@ export class WfsLayerConfig extends AbstractGeoviewLayerConfig { // Create a single layer using the metadata. const layerConfig = toJsonObject({ layerId: featureType[0].Name['#text'], - layerName: createLocalizedString(featureType[0].Title['#text']), + layerName: featureType[0].Title['#text'], }); return [this.createLeafNode(layerConfig, this.getLanguage(), this)!]; } @@ -177,7 +177,7 @@ export class WfsLayerConfig extends AbstractGeoviewLayerConfig { // Create the layer using the metadata. WFS metadata has no layer group definition. const layerConfig = toJsonObject({ layerId, - layerName: createLocalizedString(layerFound.Title['#text']), + layerName: layerFound.Title['#text'], }); return this.createLeafNode(layerConfig, this.getLanguage(), this, parentNode)!; } diff --git a/packages/geoview-core/src/api/config/types/classes/sub-layer-config/entry-config-base-class.ts b/packages/geoview-core/src/api/config/types/classes/sub-layer-config/entry-config-base-class.ts index 96c777b6a34..b030c816913 100644 --- a/packages/geoview-core/src/api/config/types/classes/sub-layer-config/entry-config-base-class.ts +++ b/packages/geoview-core/src/api/config/types/classes/sub-layer-config/entry-config-base-class.ts @@ -105,7 +105,7 @@ export abstract class EntryConfigBaseClass { this.#parentNode = parentNode; this.layerId = layerConfig.layerId as string; - this.layerName = (layerConfig?.layerName?.[this.#language] as string) || 'undefined'; + this.layerName = (layerConfig?.layerName as string) || 'undefined'; this.entryType = this.getEntryType(); this.isLayerGroup = (layerConfig.isLayerGroup as boolean) || false; diff --git a/packages/geoview-core/src/api/config/types/config-validation-schema.json b/packages/geoview-core/src/api/config/types/config-validation-schema.json index 7f9ba66dc47..27c2ffda854 100644 --- a/packages/geoview-core/src/api/config/types/config-validation-schema.json +++ b/packages/geoview-core/src/api/config/types/config-validation-schema.json @@ -365,34 +365,16 @@ "type": "boolean" }, "geoviewLayerName": { - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information.", - "oneOf": [ - { - "description": "Used by the input schema.", - "$ref": "#/definitions/TypeLocalizedString" - }, - { - "description": "Used by the internal schema.", - "type": "string" - } - ] + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "isGeocore": { "description": "A flag used to indicate that the layer is a GeoCore layer.", "type": "boolean" }, "metadataAccessPath": { - "description": "The GeoView layer service access path (English/French).", - "oneOf": [ - { - "description": "Used by the input schema.", - "$ref": "#/definitions/TypeLocalizedString" - }, - { - "description": "Used by the internal schema.", - "type": "string" - } - ] + "type": "string", + "description": "The GeoView layer service access path." }, "geoviewLayerType": { "description": "Type of GeoView layer.", @@ -435,7 +417,7 @@ "type": "string" }, "metadataAccessPath": { - "description": "The GeoView layer service access path (English/French).", + "description": "The GeoView layer service access path.", "type": "string" } } @@ -444,12 +426,12 @@ "description": "Use Input Schema", "properties": { "geoviewLayerName": { - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information.", - "$ref": "#/definitions/TypeLocalizedString" + "type": "string", + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "metadataAccessPath": { - "description": "The GeoView layer service access path (English/French).", - "$ref": "#/definitions/TypeLocalizedString" + "type": "string", + "description": "The GeoView layer service access path." } } }, @@ -572,21 +554,6 @@ "description": "Display languages supported.", "enum": ["en", "fr"] }, - "TypeLocalizedString": { - "additionalProperties": false, - "minProperties": 1, - "type": "object", - "properties": { - "en": { - "description": "The English version of the string.", - "type": "string" - }, - "fr": { - "description": "The French version of the string.", - "type": "string" - } - } - }, "TypeGeoviewLayerType": { "description": "Type of GeoView layer.", "type": "string", @@ -914,17 +881,8 @@ "type": "boolean" }, "layerName": { - "description": "The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information.", - "oneOf": [ - { - "description": "Used by the input schema.", - "$ref": "#/definitions/TypeLocalizedString" - }, - { - "description": "Used by the internal schema.", - "type": "string" - } - ] + "description": "The display name of the layer. If it is not present the viewer will make an attempt to scrape this information.", + "type": "string" }, "attributions": { "type": "array", @@ -986,8 +944,8 @@ "description": "Use Input Schema", "properties": { "layerName": { - "description": "Used by the input schema. The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this information.", - "$ref": "#/definitions/TypeLocalizedString" + "type": "string", + "description": "Used by the input schema. The display name of the layer. If it is not present the viewer will make an attempt to scrape this information." }, "entryType": { "description": "Input schema does not allow the user to specify the entryType property.", @@ -1597,7 +1555,7 @@ "type": "string" }, "range": { - "type":"array", + "type": "array", "minItems": 2, "maxItems": 2, "items": { diff --git a/packages/geoview-core/src/api/config/types/map-schema-types.ts b/packages/geoview-core/src/api/config/types/map-schema-types.ts index 657085e69f0..08f27848c2f 100644 --- a/packages/geoview-core/src/api/config/types/map-schema-types.ts +++ b/packages/geoview-core/src/api/config/types/map-schema-types.ts @@ -11,17 +11,6 @@ export type Extent = Array; /** ISO 639-1 language code prefix. */ export type TypeDisplayLanguage = 'en' | 'fr'; -export type TypeLocalizedString = TypeLocalizedStringEnAndFr | TypeLocalizedStringFr | TypeLocalizedStringEn; - -/** Definition of a bilingual string, only English provided. */ -export type TypeLocalizedStringEn = Pick & Partial>; - -/** Definition of a bilingual string, only French provided. */ -export type TypeLocalizedStringFr = Pick & Partial>; - -/** Definition of a bilingual string, both English and French provided. */ -export type TypeLocalizedStringEnAndFr = Required>; - /** Definition of the post settings type needed when the GeoView GeoJSON layers need to use a POST instead of a GET. */ export type TypePostSettings = { header?: Record; data: unknown }; diff --git a/packages/geoview-core/src/api/config/utils.ts b/packages/geoview-core/src/api/config/utils.ts index 12edc4199bd..abde860efec 100644 --- a/packages/geoview-core/src/api/config/utils.ts +++ b/packages/geoview-core/src/api/config/utils.ts @@ -3,10 +3,9 @@ import addErrors from 'ajv-errors'; import cloneDeep from 'lodash/cloneDeep'; import { CV_CONST_SUB_LAYER_TYPES, CV_CONST_LAYER_TYPES } from '@config/types/config-constants'; -import { TypeJsonObject } from '@config/types/config-types'; import schema from '@config/types/config-validation-schema.json'; import { MapFeatureConfig } from '@config/types/classes/map-feature-config'; -import { TypeGeoviewLayerType, TypeLayerEntryType, TypeLocalizedString } from '@config/types/map-schema-types'; +import { TypeGeoviewLayerType, TypeLayerEntryType } from '@config/types/map-schema-types'; import { EntryConfigBaseClass } from '@/api/config/types/classes/sub-layer-config/entry-config-base-class'; import { logger } from '@/core/utils/logger'; @@ -110,20 +109,3 @@ export function isvalidComparedToInternalSchema(schemaPath: string, targetObject if (useInternalSchema) Object.assign(targetObjectToValidate, { useInternalSchema }); return isvalidComparedToInputSchema(schemaPath, targetObjectToValidate); } - -/** - * Normalize the localized string parameter. If a language is set and the other is not, the undefined language is set to - * the value of the other. - * @param {TypeLocalizedString | TypeJsonObject} localizedString The localized string to normalize. - * - * @returns {TypeLocalizedString | undefined} A normalized localized string. - */ -export function normalizeLocalizedString(localizedString: TypeLocalizedString | TypeJsonObject): TypeLocalizedString | undefined { - const returnValue = { en: localizedString?.en as string, fr: localizedString?.fr as string } as TypeLocalizedString; - if (localizedString && (returnValue.en || returnValue.fr)) { - if (!returnValue.fr) returnValue.fr = returnValue.en; - if (!returnValue.en) returnValue.en = returnValue.fr; - return returnValue; - } - return undefined; -} diff --git a/packages/geoview-core/src/api/config/uuid-config-reader.ts b/packages/geoview-core/src/api/config/uuid-config-reader.ts index 3cd63d58cd4..2e50c04b183 100644 --- a/packages/geoview-core/src/api/config/uuid-config-reader.ts +++ b/packages/geoview-core/src/api/config/uuid-config-reader.ts @@ -2,7 +2,7 @@ import axios, { AxiosResponse } from 'axios'; import { TypeJsonObject, TypeJsonArray, toJsonObject } from '@config/types/config-types'; import { CV_CONST_LAYER_TYPES } from '@config/types/config-constants'; -import { createLocalizedString, deepMergeObjects } from '@/core/utils/utilities'; +import { deepMergeObjects } from '@/core/utils/utilities'; import { logger } from '@/core/utils/logger'; // The GeoChart Json object coming out of the GeoCore response @@ -65,11 +65,12 @@ export class UUIDmapConfigReader { const isFeature = (url as string).indexOf('FeatureServer') > -1; + // TODO: Simplify this wherever possible if (layerType === CV_CONST_LAYER_TYPES.ESRI_DYNAMIC && !isFeature) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.ESRI_DYNAMIC, isGeocore: true, isTimeAware, @@ -91,8 +92,8 @@ export class UUIDmapConfigReader { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(serviceUrl), + geoviewLayerName: name, + metadataAccessPath: serviceUrl, geoviewLayerType: CV_CONST_LAYER_TYPES.ESRI_FEATURE, isGeocore: true, isTimeAware, @@ -106,8 +107,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.ESRI_FEATURE) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.ESRI_FEATURE, isGeocore: true, isTimeAware, @@ -123,8 +124,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.WMS) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.WMS, isGeocore: true, isTimeAware, @@ -151,8 +152,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.WFS) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.WFS, isGeocore: true, isTimeAware, @@ -172,8 +173,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.OGC_FEATURE) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.OGC_FEATURE, isGeocore: true, isTimeAware, @@ -192,8 +193,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.GEOJSON) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.GEOJSON, isGeocore: true, isTimeAware, @@ -212,8 +213,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.XYZ_TILES) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.XYZ_TILES, isGeocore: true, isTimeAware, @@ -229,8 +230,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.VECTOR_TILES) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.VECTOR_TILES, isGeocore: true, isTimeAware, @@ -241,7 +242,7 @@ export class UUIDmapConfigReader { layerId: `${item.id}`, tileGrid: item.tileGrid, source: { - dataAccessPath: createLocalizedString(url), + dataAccessPath: url, }, }); } @@ -250,8 +251,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.GEOPACKAGE) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.GEOPACKAGE, isGeocore: true, isTimeAware, @@ -270,8 +271,8 @@ export class UUIDmapConfigReader { } else if (layerType === CV_CONST_LAYER_TYPES.IMAGE_STATIC) { const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.IMAGE_STATIC, isTimeAware, }); @@ -289,8 +290,8 @@ export class UUIDmapConfigReader { // GV: but we need to create a layerEntryConfig in the list for the layer to be displayed. const geoviewLayerConfig = toJsonObject({ geoviewLayerId: `${id}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name, + metadataAccessPath: url, geoviewLayerType: CV_CONST_LAYER_TYPES.ESRI_IMAGE, isGeocore: true, isTimeAware, diff --git a/packages/geoview-core/src/api/event-processors/event-processor-children/legend-event-processor.ts b/packages/geoview-core/src/api/event-processors/event-processor-children/legend-event-processor.ts index 17aa12e5467..4666b40043a 100644 --- a/packages/geoview-core/src/api/event-processors/event-processor-children/legend-event-processor.ts +++ b/packages/geoview-core/src/api/event-processors/event-processor-children/legend-event-processor.ts @@ -10,7 +10,6 @@ import { } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; import { ConfigBaseClass } from '@/core/utils/config/validation-classes/config-base-class'; import { ILayerState, TypeLegend, TypeLegendResultSetEntry } from '@/core/stores/store-interface-and-intial-values/layer-state'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { AbstractEventProcessor } from '@/api/event-processors/abstract-event-processor'; import { @@ -20,7 +19,6 @@ import { isUniqueValueStyleConfig, layerEntryIsGroupLayer, } from '@/geo/map/map-schema-types'; -import { AppEventProcessor } from './app-event-processor'; import { MapEventProcessor } from './map-event-processor'; // GV Important: See notes in header of MapEventProcessor file for information on the paradigm to apply when working with UIEventProcessor vs UIState @@ -272,9 +270,9 @@ export class LegendEventProcessor extends AbstractEventProcessor { // Interpret the layer name the best we can const layerName = - getLocalizedValue(layer?.getLayerName(entryLayerPath), AppEventProcessor.getDisplayLanguage(mapId)) || - getLocalizedValue(layerConfig.layerName, AppEventProcessor.getDisplayLanguage(mapId)) || - getLocalizedValue(layerConfig.geoviewLayerConfig.geoviewLayerName, AppEventProcessor.getDisplayLanguage(mapId)) || + layer?.getLayerName(entryLayerPath) || + layerConfig.layerName || + layerConfig.geoviewLayerConfig.geoviewLayerName || layerConfig.layerPath; let entryIndex = existingEntries.findIndex((entry) => entry.layerPath === entryLayerPath); diff --git a/packages/geoview-core/src/core/components/layers/left-panel/add-new-layer/add-new-layer.tsx b/packages/geoview-core/src/core/components/layers/left-panel/add-new-layer/add-new-layer.tsx index 60b6a72ecd1..e7a938a54d5 100644 --- a/packages/geoview-core/src/core/components/layers/left-panel/add-new-layer/add-new-layer.tsx +++ b/packages/geoview-core/src/core/components/layers/left-panel/add-new-layer/add-new-layer.tsx @@ -24,7 +24,6 @@ import { TypeWFSLayerConfig, WFS as WfsGeoviewClass } from '@/geo/layer/geoview- import { TypeCSVLayerConfig, CSV as CsvGeoviewClass } from '@/geo/layer/geoview-layers/vector/csv'; import { Cast, TypeJsonArray, TypeJsonObject } from '@/core/types/global-types'; import { useGeoViewMapId } from '@/core/stores/geoview-store'; -import { createLocalizedString } from '@/core/utils/utilities'; import { useLayerStoreActions } from '@/core/stores/store-interface-and-intial-values/layer-state'; import { api } from '@/app'; import { logger } from '@/core/utils/logger'; @@ -215,7 +214,7 @@ export function AddNewLayer(): JSX.Element { const wmsGeoviewLayerConfig = { geoviewLayerType: WMS, listOfLayerEntryConfig: [] as OgcWmsLayerEntryConfig[], - metadataAccessPath: createLocalizedString(accessPath), + metadataAccessPath: accessPath, } as TypeWMSLayerConfig; const wmsGeoviewLayerInstance = new WmsGeoviewClass(mapId, wmsGeoviewLayerConfig); // Synchronize the geoviewLayerId. @@ -248,7 +247,7 @@ export function AddNewLayer(): JSX.Element { new OgcWmsLayerEntryConfig({ geoviewLayerConfig: wmsGeoviewLayerConfig, layerId: childLayer.Name as string, - layerName: createLocalizedString(childLayer.Title as string), + layerName: childLayer.Title as string, } as OgcWmsLayerEntryConfig) ); } @@ -263,7 +262,7 @@ export function AddNewLayer(): JSX.Element { } if (layers.length === 1) { - setLayerName(layers[0].layerName!.en!); + setLayerName(layers[0].layerName!); setLayerEntries([layers[0]]); } else { setLayerList(layers); @@ -291,7 +290,7 @@ export function AddNewLayer(): JSX.Element { const wfsGeoviewLayerConfig = { geoviewLayerType: WFS, listOfLayerEntryConfig: [] as WfsLayerEntryConfig[], - metadataAccessPath: createLocalizedString(layerURL), + metadataAccessPath: layerURL, } as TypeWFSLayerConfig; const wfsGeoviewLayerInstance = new WfsGeoviewClass(mapId, wfsGeoviewLayerConfig); // Synchronize the geoviewLayerId. @@ -306,12 +305,12 @@ export function AddNewLayer(): JSX.Element { new WfsLayerEntryConfig({ geoviewLayerConfig: wfsGeoviewLayerConfig, layerId: (aFeatureType.Name['#text'] as string).split(':')[1] as string, - layerName: createLocalizedString(aFeatureType.Title['#text'] as string), + layerName: aFeatureType.Title['#text'] as string, } as WfsLayerEntryConfig) ); if (layers.length === 1) { - setLayerName(layers[0].layerName!.en! as string); + setLayerName(layers[0].layerName as string); setLayerEntries([layers[0]]); } else { setLayerList(layers); @@ -334,7 +333,7 @@ export function AddNewLayer(): JSX.Element { const ogcFeatureGeoviewLayerConfig = { geoviewLayerType: OGC_FEATURE, listOfLayerEntryConfig: [] as OgcFeatureLayerEntryConfig[], - metadataAccessPath: createLocalizedString(layerURL.split('collections')[0]), + metadataAccessPath: layerURL.split('collections')[0], } as TypeOgcFeatureLayerConfig; const ogcFeatureInstance = new OgcFeature(mapId, ogcFeatureGeoviewLayerConfig); // Synchronize the geoviewLayerId. @@ -359,7 +358,7 @@ export function AddNewLayer(): JSX.Element { setLayerEntries([ new TypeOgcFeatureLayerEntryConfig({ layerId: ogcFeatureMetadata.id as string, - layerName: createLocalizedString(ogcFeatureMetadata.title as string), + layerName: ogcFeatureMetadata.title as string, } as TypeOgcFeatureLayerEntryConfig), ]); setLayerName(ogcFeatureMetadata.title as string); @@ -380,7 +379,7 @@ export function AddNewLayer(): JSX.Element { new OgcFeatureLayerEntryConfig({ geoviewLayerConfig: ogcFeatureGeoviewLayerConfig, layerId: aFeatureType.id as string, - layerName: createLocalizedString(aFeatureType.title as string), + layerName: aFeatureType.title as string, } as OgcFeatureLayerEntryConfig) ); } @@ -394,13 +393,13 @@ export function AddNewLayer(): JSX.Element { new OgcFeatureLayerEntryConfig({ geoviewLayerConfig: ogcFeatureGeoviewLayerConfig, layerId: aFeatureType.id as string, - layerName: createLocalizedString(aFeatureType.title as string), + layerName: aFeatureType.title as string, } as OgcFeatureLayerEntryConfig) ); } if (layers.length === 1) { - setLayerName(layers[0].layerName!.en! as string); + setLayerName(layers[0].layerName!); setLayerEntries([layers[0]]); } else { setLayerList(layers); @@ -426,7 +425,7 @@ export function AddNewLayer(): JSX.Element { const layers = await geoCoreGeoviewLayerInstance.createLayersFromUUID(layerURL); if (layers.length === 1) { if (layers.length === 1) { - setLayerName(layers[0].geoviewLayerName!.en! as string); + setLayerName(layers[0].geoviewLayerName!); setLayerEntries(layers); } else { setLayerList(layers); @@ -453,12 +452,12 @@ export function AddNewLayer(): JSX.Element { ? ({ geoviewLayerType: type, listOfLayerEntryConfig: [] as EsriDynamicLayerEntryConfig[], - metadataAccessPath: createLocalizedString(layerURL), + metadataAccessPath: layerURL, } as TypeEsriDynamicLayerConfig) : ({ geoviewLayerType: type, listOfLayerEntryConfig: [] as EsriFeatureLayerEntryConfig[], - metadataAccessPath: createLocalizedString(layerURL.substring(0, layerURL.lastIndexOf('/'))), + metadataAccessPath: layerURL.substring(0, layerURL.lastIndexOf('/')), } as TypeEsriFeatureLayerConfig); const esriGeoviewLayerInstance = type === ESRI_DYNAMIC @@ -481,7 +480,7 @@ export function AddNewLayer(): JSX.Element { new EsriDynamicLayerEntryConfig({ geoviewLayerConfig: esriGeoviewLayerConfig, layerId: aLayer.id as string, - layerName: createLocalizedString(aLayer.name as string), + layerName: aLayer.name as string, } as EsriDynamicLayerEntryConfig) ) ); @@ -490,13 +489,13 @@ export function AddNewLayer(): JSX.Element { new EsriFeatureLayerEntryConfig({ geoviewLayerConfig: esriGeoviewLayerConfig, layerId: esriMetadata.layers[0].id as string, - layerName: createLocalizedString(esriMetadata.layers[0].name as string), + layerName: esriMetadata.layers[0].name as string, } as EsriFeatureLayerEntryConfig) ); } if (layers.length === 1) { - setLayerName(layers[0].layerName!.en!); + setLayerName(layers[0].layerName); setLayerEntries([layers[0]]); } else { setLayerList(layers); @@ -522,7 +521,7 @@ export function AddNewLayer(): JSX.Element { const esriImageGeoviewLayerConfig = { geoviewLayerType: ESRI_IMAGE, listOfLayerEntryConfig: [] as EsriImageLayerEntryConfig[], - metadataAccessPath: createLocalizedString(layerURL), + metadataAccessPath: layerURL, } as TypeEsriImageLayerConfig; const esriImageGeoviewLayerInstance = new EsriImage(mapId, esriImageGeoviewLayerConfig); // Synchronize the geoviewLayerId. @@ -533,15 +532,13 @@ export function AddNewLayer(): JSX.Element { new EsriImageLayerEntryConfig({ geoviewLayerConfig: esriImageGeoviewLayerConfig, layerId: esriImageGeoviewLayerConfig.geoviewLayerId, - layerName: createLocalizedString( - typeof esriImageGeoviewLayerInstance.metadata?.name === 'string' ? esriImageGeoviewLayerInstance.metadata?.name : '' - ), + layerName: typeof esriImageGeoviewLayerInstance.metadata?.name === 'string' ? esriImageGeoviewLayerInstance.metadata?.name : '', source: { - dataAccessPath: createLocalizedString(layerURL), + dataAccessPath: layerURL, }, } as EsriImageLayerEntryConfig), ]; - setLayerName(layers[0].layerName!.en!); + setLayerName(layers[0].layerName!); setLayerEntries([layers[0]]); } catch (err) { emitErrorServer('ESRI Image'); @@ -578,13 +575,13 @@ export function AddNewLayer(): JSX.Element { new XYZTilesLayerEntryConfig({ geoviewLayerConfig: xyzGeoviewLayerConfig, layerId: xyzGeoviewLayerConfig.geoviewLayerId, - layerName: createLocalizedString(''), + layerName: '', source: { - dataAccessPath: createLocalizedString(layerURL), + dataAccessPath: layerURL, }, } as XYZTilesLayerEntryConfig), ]; - setLayerName(layers[0].layerName!.en!); + setLayerName(layers[0].layerName!); setLayerEntries([layers[0]]); } catch (err) { emitErrorServer('XYZ Tile'); @@ -615,14 +612,14 @@ export function AddNewLayer(): JSX.Element { new CsvLayerEntryConfig({ geoviewLayerConfig: csvGeoviewLayerConfig, layerId: csvGeoviewLayerConfig.geoviewLayerId, - layerName: createLocalizedString(''), + layerName: '', schemaTag: CONST_LAYER_TYPES.CSV, source: { - dataAccessPath: createLocalizedString(layerURL), + dataAccessPath: layerURL, }, } as CsvLayerEntryConfig), ]; - setLayerName(layers[0].layerName!.en!); + setLayerName(layers[0].layerName!); setLayerEntries([layers[0]]); } catch (err) { emitErrorServer('CSV'); @@ -645,7 +642,7 @@ export function AddNewLayer(): JSX.Element { const geojsonGeoviewLayerConfig = { geoviewLayerType: GEOJSON, listOfLayerEntryConfig: [] as GeoJSONLayerEntryConfig[], - metadataAccessPath: createLocalizedString(layerURL), + metadataAccessPath: layerURL, } as TypeGeoJSONLayerConfig; const geojsonGeoviewLayerInstance = new GeoJSON(mapId, geojsonGeoviewLayerConfig); // Synchronize the geoviewLayerId. @@ -660,7 +657,7 @@ export function AddNewLayer(): JSX.Element { ConfigValidation.validateListOfGeoviewLayerConfig(api.maps[mapId].getDisplayLanguage(), [geojsonGeoviewLayerConfig]); const layers = geojsonGeoviewLayerConfig.listOfLayerEntryConfig; if (layers.length === 1) { - setLayerName(layers[0].layerName!.en! as string); + setLayerName(layers[0].layerName as string); setLayerEntries([Cast(layers[0])]); } else { setLayerList(Cast(layers)); @@ -681,13 +678,13 @@ export function AddNewLayer(): JSX.Element { new GeoJSONLayerEntryConfig({ geoviewLayerConfig: geojsonGeoviewLayerConfig, layerId: geojsonGeoviewLayerConfig.geoviewLayerId, - layerName: createLocalizedString(''), + layerName: '', source: { - dataAccessPath: createLocalizedString(layerURL), + dataAccessPath: layerURL, }, } as GeoJSONLayerEntryConfig), ]; - setLayerName(layers[0].layerName!.en!); + setLayerName(layers[0].layerName!); setLayerEntries([layers[0]]); } } catch (err) { @@ -718,13 +715,13 @@ export function AddNewLayer(): JSX.Element { new GeoPackageLayerEntryConfig({ geoviewLayerConfig: geoPackageGeoviewLayerConfig, layerId: geoPackageGeoviewLayerConfig.geoviewLayerId, - layerName: createLocalizedString(''), + layerName: '', source: { - dataAccessPath: createLocalizedString(layerURL), + dataAccessPath: layerURL, }, } as GeoPackageLayerEntryConfig), ]; - setLayerName(layers[0].layerName!.en!); + setLayerName(layers[0].layerName!); setLayerEntries([layers[0]]); } catch (err) { emitErrorServer('GeoPackage'); @@ -894,8 +891,8 @@ export function AddNewLayer(): JSX.Element { geoviewLayerConfig.listOfLayerEntryConfig = layerEntries as TypeLayerEntryConfig[]; // TODO: Bug - Fix this layer naming not working, wasn't working before the refactor either, leaving it as-is - geoviewLayerConfig.geoviewLayerName = createLocalizedString(layerName); - if (layerType === XYZ_TILES) (layerEntries[0] as TypeLayerEntryConfig).layerName = createLocalizedString(layerName); + geoviewLayerConfig.geoviewLayerName = layerName; + if (layerType === XYZ_TILES) (layerEntries[0] as TypeLayerEntryConfig).layerName = layerName; if (geoviewLayerConfig.listOfLayerEntryConfig.length === 1) geoviewLayerConfig.listOfLayerEntryConfig[0].layerName = geoviewLayerConfig.geoviewLayerName; @@ -992,13 +989,13 @@ export function AddNewLayer(): JSX.Element { if (isMultiple()) { if (!((newValue as TypeLayerEntryConfig[]).length === 0)) { setLayerEntries(newValue as TypeLayerEntryConfig[]); - setLayerName((newValue as TypeLayerEntryConfig[]).map((layerConfig) => layerConfig.layerName!.en).join(', ')); + setLayerName((newValue as TypeLayerEntryConfig[]).map((layerConfig) => layerConfig.layerName).join(', ')); setStepButtonDisable(false); } } else { setLayerEntries([newValue as TypeLayerEntryConfig]); - setLayerName((newValue as TypeLayerEntryConfig).layerName!.en!); + setLayerName((newValue as TypeLayerEntryConfig).layerName!); setStepButtonDisable(false); } @@ -1288,12 +1285,12 @@ export function AddNewLayer(): JSX.Element { id="service-layer-label" options={layerList as TypeLayerEntryConfig[]} getOptionLabel={(option) => - `${(option as TypeLayerEntryConfig).layerName!.en} (${(option as TypeLayerEntryConfig).layerId})` + `${(option as TypeLayerEntryConfig).layerName} (${(option as TypeLayerEntryConfig).layerId})` } renderOption={(props, option, { selected }) => ( -
  • +
  • - {(option as TypeLayerEntryConfig).layerName!.en} + {(option as TypeLayerEntryConfig).layerName}
  • )} // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -1310,13 +1307,13 @@ export function AddNewLayer(): JSX.Element { id="service-layer-label" options={layerList as TypeGeoviewLayerConfig[]} getOptionLabel={(option) => - `${(option as TypeGeoviewLayerConfig).geoviewLayerName!.en} (${(option as TypeGeoviewLayerConfig).geoviewLayerId})` + `${(option as TypeGeoviewLayerConfig).geoviewLayerName} (${(option as TypeGeoviewLayerConfig).geoviewLayerId})` } disableCloseOnSelect renderOption={(props, option, { selected }) => ( -
  • +
  • - {(option as TypeGeoviewLayerConfig).geoviewLayerName!.en} + {(option as TypeGeoviewLayerConfig).geoviewLayerName}
  • )} // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/geoview-core/src/core/utils/config/config-validation.ts b/packages/geoview-core/src/core/utils/config/config-validation.ts index a626b772f91..9c43715ecb3 100644 --- a/packages/geoview-core/src/core/utils/config/config-validation.ts +++ b/packages/geoview-core/src/core/utils/config/config-validation.ts @@ -7,8 +7,7 @@ import { AnyValidateFunction } from 'ajv/dist/types'; import defaultsDeep from 'lodash/defaultsDeep'; -import { TypeDisplayLanguage, TypeLocalizedString } from '@config/types/map-schema-types'; -// import { layerEntryIsGroupLayer } from '@config/types/type-guards'; +import { TypeDisplayLanguage } from '@config/types/map-schema-types'; import { geoviewEntryIsWMS } from '@/geo/layer/geoview-layers/raster/wms'; import { geoviewEntryIsImageStatic } from '@/geo/layer/geoview-layers/raster/image-static'; @@ -28,7 +27,7 @@ import { mapConfigLayerEntryIsGeoCore, layerEntryIsGroupLayer, } from '@/geo/map/map-schema-types'; -import { Cast, toJsonObject, TypeJsonObject } from '@/core/types/global-types'; +import { TypeJsonObject } from '@/core/types/global-types'; import { CONST_GEOVIEW_SCHEMA_BY_TYPE, CONST_LAYER_TYPES, TypeGeoviewLayerType } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; import { geoviewEntryIsEsriImage } from '@/geo/layer/geoview-layers/raster/esri-image'; import { logger } from '@/core/utils/logger'; @@ -191,7 +190,6 @@ export class ConfigValidation { } } - ConfigValidation.#processLocalizedString([this.displayLanguage], listOfGeoviewLayerConfig); ConfigValidation.#doExtraValidation(listOfGeoviewLayerConfig); return listOfGeoviewLayerConfig; @@ -203,9 +201,6 @@ export class ConfigValidation { * validate. */ static validateListOfGeoviewLayerConfig(language: TypeDisplayLanguage, listOfGeoviewLayerConfig?: TypeGeoviewLayerConfig[]): void { - // TODO: refactor - We will only support these 3 bilingual fields: geoviewLayerName, metadataAccessPath and layerName after the refactor. - // TODO: New config validation classes should already support this. - ConfigValidation.#processLocalizedString([language], listOfGeoviewLayerConfig); ConfigValidation.#doExtraValidation(listOfGeoviewLayerConfig); } @@ -359,80 +354,4 @@ export class ConfigValidation { ); }); } - - /** *************************************************************************************************************************** - * Synchronize the English and French strings. - * @param {TypeLocalizedString} localizedString - The localized string to synchronize the en and fr string. - * @param {TypeDisplayLanguage} sourceKey - The source's key. - * @param {TypeDisplayLanguage} destinationKey - The destination's key. - * @private - */ - static #synchronizeLocalizedString( - localizedString: TypeLocalizedString, - sourceKey: TypeDisplayLanguage, - destinationKey: TypeDisplayLanguage - ): void { - localizedString[destinationKey] = localizedString[sourceKey]; - } - - /** *************************************************************************************************************************** - * Adjust the map features configuration localized strings according to the supported languages array content. - * @param {TypeListOfLocalizedLanguages} suportedLanguages - The list of supported languages. - * @param {MapConfigLayerEntry[]} listOfMapConfigLayerEntry - The list of Map Config Layer Entry configuration to adjust according - * to the supported languages array content. - * @private - */ - static #processLocalizedString(suportedLanguages: TypeDisplayLanguage[], listOfMapConfigLayerEntry?: MapConfigLayerEntry[]): void { - if (suportedLanguages.includes('en') && suportedLanguages.includes('fr') && listOfMapConfigLayerEntry) { - const validateLocalizedString = (config: TypeJsonObject): void => { - if (typeof config === 'object') { - Object.keys(config).forEach((key) => { - if (!key.startsWith('_') && config[key] !== null && typeof config[key] === 'object') { - if (config?.[key]?.en || config?.[key]?.fr) { - // delete empty localized strings - if (!config[key].en && !config[key].fr) delete config[key]; - else if (!config[key].en || !config[key].fr) { - throw new Error('When you support both languages, you must set all en and fr properties of localized strings.'); - } - } - // Avoid the 'geoviewLayerConfig' and 'parentLayerConfig' properties because they loop on themself and cause a - // stack overflow error. - else if (!['geoviewLayerConfig', 'parentLayerConfig'].includes(key)) validateLocalizedString(config[key]); - } - }); - } - }; - listOfMapConfigLayerEntry.forEach((geoviewLayerConfig) => validateLocalizedString(toJsonObject(geoviewLayerConfig))); - return; - } - - let sourceKey: TypeDisplayLanguage; - let destinationKey: TypeDisplayLanguage; - if (suportedLanguages.includes('en')) { - sourceKey = 'en'; - destinationKey = 'fr'; - } else { - sourceKey = 'fr'; - destinationKey = 'en'; - } - - if (listOfMapConfigLayerEntry) { - const propagateLocalizedString = (config: TypeJsonObject): void => { - if (typeof config === 'object') { - Object.keys(config).forEach((key) => { - if (!key.startsWith('_') && config[key] !== null && typeof config[key] === 'object') { - // Leaving the commented line here in case a developer needs to quickly uncomment it again to troubleshoot - // logger.logDebug(`Key=${key}`, config[key]); - if (config?.[key]?.en || config?.[key]?.fr) - ConfigValidation.#synchronizeLocalizedString(Cast(config[key]), sourceKey, destinationKey); - // Avoid the 'geoviewLayerConfig' and 'parentLayerConfig' properties because they loop on themself and cause a - // stack overflow error. - else if (!['geoviewLayerConfig', 'parentLayerConfig'].includes(key)) propagateLocalizedString(config[key]); - } - }); - } - }; - listOfMapConfigLayerEntry.forEach((geoviewLayerConfig) => propagateLocalizedString(toJsonObject(geoviewLayerConfig))); - } - } } diff --git a/packages/geoview-core/src/core/utils/config/reader/uuid-config-reader.ts b/packages/geoview-core/src/core/utils/config/reader/uuid-config-reader.ts index 4c88314ba15..ca3c3d9b5ce 100644 --- a/packages/geoview-core/src/core/utils/config/reader/uuid-config-reader.ts +++ b/packages/geoview-core/src/core/utils/config/reader/uuid-config-reader.ts @@ -13,7 +13,7 @@ import { TypeGeoJSONLayerConfig } from '@/geo/layer/geoview-layers/vector/geojso import { TypeGeoPackageLayerConfig } from '@/geo/layer/geoview-layers/vector/geopackage'; import { TypeXYZTilesConfig } from '@/geo/layer/geoview-layers/raster/xyz-tiles'; import { TypeVectorTilesConfig } from '@/geo/layer/geoview-layers/raster/vector-tiles'; -import { createLocalizedString, deepMergeObjects } from '@/core/utils/utilities'; +import { deepMergeObjects } from '@/core/utils/utilities'; import { logger } from '@/core/utils/logger'; import { WfsLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/wfs-layer-entry-config'; import { OgcFeatureLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/ogc-layer-entry-config'; @@ -99,8 +99,8 @@ export class UUIDmapConfigReader { if (layerType === CONST_LAYER_TYPES.ESRI_DYNAMIC && !isFeature) { const geoviewLayerConfig: TypeEsriDynamicLayerConfig = { geoviewLayerId: idClean, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.ESRI_DYNAMIC, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -112,7 +112,7 @@ export class UUIDmapConfigReader { entryType: CONST_LAYER_ENTRY_TYPES.RASTER_IMAGE, layerId: `${item.index}`, source: { - dataAccessPath: createLocalizedString(url), + dataAccessPath: url, }, }; @@ -135,8 +135,8 @@ export class UUIDmapConfigReader { const geoviewLayerConfig: TypeEsriFeatureLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(serviceUrl), + geoviewLayerName: name as string, + metadataAccessPath: serviceUrl, geoviewLayerType: CONST_LAYER_TYPES.ESRI_FEATURE, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -149,7 +149,7 @@ export class UUIDmapConfigReader { layerId, source: { format: 'EsriJSON', - dataAccessPath: createLocalizedString(serviceUrl), + dataAccessPath: serviceUrl, }, } as EsriFeatureLayerEntryConfig), ]; @@ -157,8 +157,8 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.ESRI_FEATURE) { const geoviewLayerConfig: TypeEsriFeatureLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.ESRI_FEATURE, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -171,7 +171,7 @@ export class UUIDmapConfigReader { layerId: `${item.index}`, source: { format: 'EsriJSON', - dataAccessPath: createLocalizedString(url), + dataAccessPath: url as string, }, } as EsriFeatureLayerEntryConfig); return esriFeatureLayerEntryConfig; @@ -180,8 +180,8 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.WMS) { const geoviewLayerConfig: TypeWMSLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.WMS, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -193,7 +193,7 @@ export class UUIDmapConfigReader { entryType: CONST_LAYER_ENTRY_TYPES.RASTER_IMAGE, layerId: `${item.id}`, source: { - dataAccessPath: createLocalizedString(url), + dataAccessPath: url, serverType: (serverType === undefined ? 'mapserver' : serverType) as TypeOfServer, }, }; @@ -211,8 +211,8 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.WFS) { const geoviewLayerConfig: TypeWFSLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.WFS, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -226,7 +226,7 @@ export class UUIDmapConfigReader { source: { format: 'WFS', strategy: 'all', - dataAccessPath: createLocalizedString(url), + dataAccessPath: url as string, }, } as WfsLayerEntryConfig); return wfsLayerEntryConfig; @@ -235,8 +235,8 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.OGC_FEATURE) { const geoviewLayerConfig: TypeOgcFeatureLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.OGC_FEATURE, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -249,7 +249,7 @@ export class UUIDmapConfigReader { layerId: `${item.id}`, source: { format: 'featureAPI', - dataAccessPath: createLocalizedString(url), + dataAccessPath: url as string, }, } as OgcFeatureLayerEntryConfig); return ogcFeatureLayerEntryConfig; @@ -258,8 +258,8 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.GEOJSON) { const geoviewLayerConfig: TypeGeoJSONLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.GEOJSON, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -272,7 +272,7 @@ export class UUIDmapConfigReader { layerId: `${item.id}`, source: { format: 'GeoJSON', - dataAccessPath: createLocalizedString(url), + dataAccessPath: url as string, }, } as GeoJSONLayerEntryConfig); return geoJSONLayerEntryConfig; @@ -281,8 +281,8 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.XYZ_TILES) { const geoviewLayerConfig: TypeXYZTilesConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.XYZ_TILES, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -294,7 +294,7 @@ export class UUIDmapConfigReader { entryType: CONST_LAYER_ENTRY_TYPES.RASTER_TILE, layerId: `${item.id}`, source: { - dataAccessPath: createLocalizedString(url), + dataAccessPath: url as string, }, } as XYZTilesLayerEntryConfig); return xyzTilesLayerEntryConfig; @@ -303,8 +303,8 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.VECTOR_TILES) { const geoviewLayerConfig: TypeVectorTilesConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.VECTOR_TILES, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -316,7 +316,7 @@ export class UUIDmapConfigReader { layerId: `${item.id}`, tileGrid: item.tileGrid as unknown as TypeTileGrid, source: { - dataAccessPath: createLocalizedString(url), + dataAccessPath: url as string, }, } as VectorTilesLayerEntryConfig); return vectorTilesLayerEntryConfig; @@ -325,7 +325,7 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.GEOPACKAGE) { const geoviewLayerConfig: TypeGeoPackageLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), + geoviewLayerName: name as string, geoviewLayerType: CONST_LAYER_TYPES.GEOPACKAGE, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -338,7 +338,7 @@ export class UUIDmapConfigReader { layerId: `${item.id}`, source: { format: 'GeoPackage', - dataAccessPath: createLocalizedString(url), + dataAccessPath: url as string, }, } as GeoPackageLayerEntryConfig); return geoPackageLayerEntryConfig; @@ -347,8 +347,8 @@ export class UUIDmapConfigReader { } else if (layerType === CONST_LAYER_TYPES.IMAGE_STATIC) { const geoviewLayerConfig: TypeImageStaticLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.IMAGE_STATIC, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], @@ -360,7 +360,7 @@ export class UUIDmapConfigReader { entryType: CONST_LAYER_ENTRY_TYPES.RASTER_IMAGE, layerId: `${item.id}`, source: { - dataAccessPath: createLocalizedString(url), + dataAccessPath: url as string, }, } as ImageStaticLayerEntryConfig); return imageStaticLayerEntryConfig; @@ -372,8 +372,8 @@ export class UUIDmapConfigReader { // GV: but we need to create a layerEntryConfig in the list for the layer to be displayed. const geoviewLayerConfig: TypeEsriImageLayerConfig = { geoviewLayerId: `${idClean}`, - geoviewLayerName: createLocalizedString(name), - metadataAccessPath: createLocalizedString(url), + geoviewLayerName: name as string, + metadataAccessPath: url as string, geoviewLayerType: CONST_LAYER_TYPES.ESRI_IMAGE, isTimeAware: isTimeAware as boolean, listOfLayerEntryConfig: [], diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/config-base-class.ts b/packages/geoview-core/src/core/utils/config/validation-classes/config-base-class.ts index 3446e555547..b570ef3e581 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/config-base-class.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/config-base-class.ts @@ -1,4 +1,3 @@ -import { TypeLocalizedString } from '@config/types/map-schema-types'; import EventHelper, { EventDelegateBase } from '@/api/events/event-helper'; import { TypeGeoviewLayerType } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; import { @@ -35,7 +34,7 @@ export abstract class ConfigBaseClass { layerIdExtension?: string; /** The display name of the layer (English/French). */ - layerName?: TypeLocalizedString; + layerName?: string; /** Tag used to link the entry to a specific schema. This element is part of the schema. */ schemaTag?: TypeGeoviewLayerType; diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/esri-dynamic-layer-entry-config.ts b/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/esri-dynamic-layer-entry-config.ts index 333f317a37f..8cebd5d98cf 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/esri-dynamic-layer-entry-config.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/esri-dynamic-layer-entry-config.ts @@ -27,6 +27,6 @@ export class EsriDynamicLayerEntryConfig extends AbstractBaseLayerEntryConfig { Object.assign(this, layerConfig); // if layerConfig.source.dataAccessPath is undefined, we assign the metadataAccessPath of the GeoView layer to it. if (!this.source) this.source = {}; - if (!this.source.dataAccessPath) this.source.dataAccessPath = { ...this.geoviewLayerConfig.metadataAccessPath! }; + if (!this.source.dataAccessPath) this.source.dataAccessPath = this.geoviewLayerConfig.metadataAccessPath; } } diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/esri-image-layer-entry-config.ts b/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/esri-image-layer-entry-config.ts index 0eb3688a928..5d9711838a7 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/esri-image-layer-entry-config.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/esri-image-layer-entry-config.ts @@ -31,6 +31,6 @@ export class EsriImageLayerEntryConfig extends AbstractBaseLayerEntryConfig { } // if layerConfig.source.dataAccessPath is undefined, we assign the metadataAccessPath of the GeoView layer to it. if (!this.source) this.source = {}; - if (!this.source.dataAccessPath) this.source.dataAccessPath = { ...this.geoviewLayerConfig.metadataAccessPath! }; + if (!this.source.dataAccessPath) this.source.dataAccessPath = this.geoviewLayerConfig.metadataAccessPath; } } diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/ogc-wms-layer-entry-config.ts b/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/ogc-wms-layer-entry-config.ts index 6f3975e3c6f..b29c257b6e4 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/ogc-wms-layer-entry-config.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/raster-validation-classes/ogc-wms-layer-entry-config.ts @@ -1,7 +1,6 @@ import { CONST_LAYER_TYPES } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; import { CONST_LAYER_ENTRY_TYPES, TypeSourceImageWmsInitialConfig } from '@/geo/map/map-schema-types'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; -import { createLocalizedString } from '@/core/utils/utilities'; /** ****************************************************************************************************************************** * Type used to define a GeoView image layer to display on the map. @@ -34,13 +33,11 @@ export class OgcWmsLayerEntryConfig extends AbstractBaseLayerEntryConfig { // set to '' and will be filled in the fetchServiceMetadata method of the class WMS. So, we begin with the assumption // that both en and fr end with ".xml". Be aware that in metadataAccessPath, one language can ends with ".xml" and the // other not. - this.source.dataAccessPath = createLocalizedString(''); + this.source.dataAccessPath = ''; // When the dataAccessPath is undefined and the metadataAccessPath does not end with ".xml", the dataAccessPath is set // to the same value of the corresponding metadataAccessPath. - if (this.geoviewLayerConfig.metadataAccessPath!.en!.slice(-4).toLowerCase() !== '.xml') - this.source.dataAccessPath.en = this.geoviewLayerConfig.metadataAccessPath!.en; - if (this.geoviewLayerConfig.metadataAccessPath!.fr!.slice(-4).toLowerCase() !== '.xml') - this.source.dataAccessPath.fr = this.geoviewLayerConfig.metadataAccessPath!.fr; + if (this.geoviewLayerConfig.metadataAccessPath!.slice(-4).toLowerCase() !== '.xml') + this.source.dataAccessPath = this.geoviewLayerConfig.metadataAccessPath; } // Default value for layerConfig.source.serverType is 'mapserver'. if (!this.source.serverType) this.source.serverType = 'mapserver'; diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/csv-layer-entry-config.ts b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/csv-layer-entry-config.ts index 807f6d9126d..028ac4df2bc 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/csv-layer-entry-config.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/csv-layer-entry-config.ts @@ -31,21 +31,17 @@ export class CsvLayerEntryConfig extends VectorLayerEntryConfig { if (!this.source.format) this.source.format = 'CSV'; if (!this.source.separator) this.source.separator = ','; if (!this.source.dataAccessPath) { - let { en, fr } = this.geoviewLayerConfig.metadataAccessPath!; - en = en!.split('/').length > 1 ? en!.split('/').slice(0, -1).join('/') : './'; - fr = fr!.split('/').length > 1 ? fr!.split('/').slice(0, -1).join('/') : './'; - this.source.dataAccessPath = { en, fr }; + let accessPath = this.geoviewLayerConfig.metadataAccessPath!; + accessPath = accessPath!.split('/').length > 1 ? accessPath!.split('/').slice(0, -1).join('/') : './'; + this.source.dataAccessPath = accessPath; } if ( - !(this.source.dataAccessPath!.en?.startsWith('blob') && !this.source.dataAccessPath!.en?.endsWith('/')) && - !this.source.dataAccessPath!.en?.toUpperCase().endsWith('.CSV') + !(this.source.dataAccessPath!.startsWith('blob') && !this.source.dataAccessPath!.endsWith('/')) && + !this.source.dataAccessPath!.toUpperCase().endsWith('.CSV') ) { - this.source.dataAccessPath!.en = this.source.dataAccessPath!.en!.endsWith('/') - ? `${this.source.dataAccessPath!.en}${this.layerId}` - : `${this.source.dataAccessPath!.en}/${this.layerId}`; - this.source.dataAccessPath!.fr = this.source.dataAccessPath!.fr!.endsWith('/') - ? `${this.source.dataAccessPath!.fr}${this.layerId}` - : `${this.source.dataAccessPath!.fr}/${this.layerId}`; + this.source.dataAccessPath! = this.source.dataAccessPath!.endsWith('/') + ? `${this.source.dataAccessPath!}${this.layerId}` + : `${this.source.dataAccessPath!}/${this.layerId}`; } if (!this.source.dataProjection) this.source.dataProjection = Projection.PROJECTION_NAMES.LNGLAT; } diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/esri-feature-layer-entry-config.ts b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/esri-feature-layer-entry-config.ts index 8edadb3a234..096bcf09e70 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/esri-feature-layer-entry-config.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/esri-feature-layer-entry-config.ts @@ -20,6 +20,6 @@ export class EsriFeatureLayerEntryConfig extends VectorLayerEntryConfig { // Value for this.source.format can only be EsriJSON. if (!this.source) this.source = { format: 'EsriJSON' }; if (!this.source.format) this.source.format = 'EsriJSON'; - if (!this.source.dataAccessPath) this.source.dataAccessPath = { ...this.geoviewLayerConfig.metadataAccessPath! }; + if (!this.source.dataAccessPath) this.source.dataAccessPath = this.geoviewLayerConfig.metadataAccessPath; } } diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/geojson-layer-entry-config.ts b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/geojson-layer-entry-config.ts index 7b20423d94c..29883ab9a2d 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/geojson-layer-entry-config.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/geojson-layer-entry-config.ts @@ -27,24 +27,20 @@ export class GeoJSONLayerEntryConfig extends VectorLayerEntryConfig { // if this.source.dataAccessPath is undefined, we assign the metadataAccessPath of the GeoView layer to it // and place the layerId at the end of it. if (!this.source.dataAccessPath) { - let { en, fr } = this.geoviewLayerConfig.metadataAccessPath!; + let accessPath = this.geoviewLayerConfig.metadataAccessPath!; // Remove the metadata file name and keep only the path to the directory where the metadata resides - en = en!.split('/').length > 1 ? en!.split('/').slice(0, -1).join('/') : './'; - fr = fr!.split('/').length > 1 ? fr!.split('/').slice(0, -1).join('/') : './'; - this.source.dataAccessPath = { en, fr }; + accessPath = accessPath!.split('/').length > 1 ? accessPath!.split('/').slice(0, -1).join('/') : './'; + this.source.dataAccessPath = accessPath; } if ( - !(this.source.dataAccessPath!.en?.startsWith('blob') && !this.source.dataAccessPath!.en?.endsWith('/')) && - !this.source.dataAccessPath!.en?.toUpperCase().endsWith('.JSON') && - !this.source.dataAccessPath!.en?.toUpperCase().endsWith('.GEOJSON') && - !this.source.dataAccessPath!.en?.toUpperCase().endsWith('=JSON') + !(this.source.dataAccessPath!.startsWith('blob') && !this.source.dataAccessPath!.endsWith('/')) && + !this.source.dataAccessPath!.toUpperCase().endsWith('.JSON') && + !this.source.dataAccessPath!.toUpperCase().endsWith('.GEOJSON') && + !this.source.dataAccessPath!.toUpperCase().endsWith('=JSON') ) { - this.source.dataAccessPath!.en = this.source.dataAccessPath!.en!.endsWith('/') - ? `${this.source.dataAccessPath!.en}${this.layerId}` - : `${this.source.dataAccessPath!.en}/${this.layerId}`; - this.source.dataAccessPath!.fr = this.source.dataAccessPath!.fr!.endsWith('/') - ? `${this.source.dataAccessPath!.fr}${this.layerId}` - : `${this.source.dataAccessPath!.fr}/${this.layerId}`; + this.source.dataAccessPath! = this.source.dataAccessPath!.endsWith('/') + ? `${this.source.dataAccessPath!}${this.layerId}` + : `${this.source.dataAccessPath!}/${this.layerId}`; } if (!this.source.dataProjection) this.source.dataProjection = Projection.PROJECTION_NAMES.LNGLAT; } diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/geopackage-layer-config-entry.ts b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/geopackage-layer-config-entry.ts index af6a43b960d..d87a4277d77 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/geopackage-layer-config-entry.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/geopackage-layer-config-entry.ts @@ -21,21 +21,17 @@ export class GeoPackageLayerEntryConfig extends VectorLayerEntryConfig { if (!this.source) this.source = { format: 'GeoPackage' }; if (!this.source.format) this.source.format = 'GeoPackage'; if (!this.source.dataAccessPath) { - let { en, fr } = this.geoviewLayerConfig.metadataAccessPath!; - en = en!.split('/').length > 1 ? en!.split('/').slice(0, -1).join('/') : './'; - fr = fr!.split('/').length > 1 ? fr!.split('/').slice(0, -1).join('/') : './'; - this.source.dataAccessPath = { en, fr }; + let accessPath = this.geoviewLayerConfig.metadataAccessPath!; + accessPath = accessPath!.split('/').length > 1 ? accessPath!.split('/').slice(0, -1).join('/') : './'; + this.source.dataAccessPath = accessPath; } if ( - !(this.source.dataAccessPath!.en?.startsWith('blob') && !this.source.dataAccessPath!.en?.endsWith('/')) && - !this.source.dataAccessPath!.en?.toLowerCase().endsWith('.gpkg') + !(this.source.dataAccessPath!.startsWith('blob') && !this.source.dataAccessPath!.endsWith('/')) && + !this.source.dataAccessPath!.toLowerCase().endsWith('.gpkg') ) { - this.source.dataAccessPath!.en = this.source.dataAccessPath!.en!.endsWith('/') - ? `${this.source.dataAccessPath!.en}${this.layerId}` - : `${this.source.dataAccessPath!.en}/${this.layerId}`; - this.source.dataAccessPath!.fr = this.source.dataAccessPath!.fr!.endsWith('/') - ? `${this.source.dataAccessPath!.fr}${this.layerId}` - : `${this.source.dataAccessPath!.fr}/${this.layerId}`; + this.source.dataAccessPath = this.source.dataAccessPath!.endsWith('/') + ? `${this.source.dataAccessPath!}${this.layerId}` + : `${this.source.dataAccessPath!}/${this.layerId}`; } if (!this?.source?.dataProjection) this.source.dataProjection = Projection.PROJECTION_NAMES.LNGLAT; } diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/ogc-layer-entry-config.ts b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/ogc-layer-entry-config.ts index 30ed65fc6ec..2ccf141aea6 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/ogc-layer-entry-config.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/ogc-layer-entry-config.ts @@ -17,7 +17,7 @@ export class OgcFeatureLayerEntryConfig extends VectorLayerEntryConfig { // Value for this.source.format can only be featureAPI. if (!this.source) this.source = { format: 'featureAPI' }; if (!this?.source?.format) this.source.format = 'featureAPI'; - if (!this.source.dataAccessPath) this.source.dataAccessPath = { ...this.geoviewLayerConfig.metadataAccessPath! }; + if (!this.source.dataAccessPath) this.source.dataAccessPath = this.geoviewLayerConfig.metadataAccessPath; if (!this.source.dataProjection) this.source.dataProjection = Projection.PROJECTION_NAMES.LNGLAT; } } diff --git a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/wfs-layer-entry-config.ts b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/wfs-layer-entry-config.ts index 55e5c43477d..897d8578bdb 100644 --- a/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/wfs-layer-entry-config.ts +++ b/packages/geoview-core/src/core/utils/config/validation-classes/vector-validation-classes/wfs-layer-entry-config.ts @@ -17,7 +17,7 @@ export class WfsLayerEntryConfig extends VectorLayerEntryConfig { // Value for this.source.format can only be WFS. if (!this.source) this.source = { format: 'WFS' }; if (!this.source.format) this.source.format = 'WFS'; - if (!this.source.dataAccessPath) this.source.dataAccessPath = { ...this.geoviewLayerConfig.metadataAccessPath! }; + if (!this.source.dataAccessPath) this.source.dataAccessPath = this.geoviewLayerConfig.metadataAccessPath; if (!this.source.dataProjection) this.source.dataProjection = Projection.PROJECTION_NAMES.LNGLAT; } } diff --git a/packages/geoview-core/src/core/utils/utilities.ts b/packages/geoview-core/src/core/utils/utilities.ts index 731d34eac8e..507ac6d97ca 100644 --- a/packages/geoview-core/src/core/utils/utilities.ts +++ b/packages/geoview-core/src/core/utils/utilities.ts @@ -4,34 +4,12 @@ import i18n from 'i18next'; import sanitizeHtml from 'sanitize-html'; -import { TypeDisplayLanguage, TypeLocalizedString } from '@config/types/map-schema-types'; +import { TypeDisplayLanguage } from '@config/types/map-schema-types'; import { Cast, TypeJsonArray, TypeJsonObject, TypeJsonValue } from '@/core/types/global-types'; import { logger } from '@/core/utils/logger'; import { TypeGuideObject } from '../stores/store-interface-and-intial-values/app-state'; -/** - * Create a localized string and set its "en" and "fr" properties to the same value. - * @param {string | TypeJsonObject} value The value to assign to the en and fr properties. - * - * @returns {TypeLocalizedString} The localized (en/fr) object - */ -export function createLocalizedString(value: string | TypeJsonObject): TypeLocalizedString { - return { en: value as string, fr: value as string }; -} - -/** - * Get the string associated to the current display language for localized object type. - * - * @param {TypeLocalizedString} localizedString the localized string to process. - * - * @returns {string} The string value according to the map display language, - */ -export function getLocalizedValue(localizedString: TypeLocalizedString | undefined, language: TypeDisplayLanguage): string | undefined { - if (localizedString) return localizedString[language]; - return undefined; -} - /** * Return proper language Geoview localized values from map i18n instance * diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts b/packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts index e47dcd432c2..c41bdee8136 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/abstract-geoview-layers.ts @@ -11,9 +11,9 @@ import Feature from 'ol/Feature'; import Source from 'ol/source/Source'; import { shared as iconImageCache } from 'ol/style/IconImageCache'; -import { TypeLocalizedString, TypeOutfieldsType } from '@config/types/map-schema-types'; +import { TypeOutfieldsType } from '@config/types/map-schema-types'; -import { generateId, getXMLHttpRequest, createLocalizedString, getLocalizedValue, whenThisThen } from '@/core/utils/utilities'; +import { generateId, getXMLHttpRequest, whenThisThen } from '@/core/utils/utilities'; import { TypeJsonObject, toJsonObject } from '@/core/types/global-types'; import { TimeDimension, TypeDateFragments, DateMgt } from '@/core/utils/date-mgt'; import { logger } from '@/core/utils/logger'; @@ -24,7 +24,6 @@ import { VectorLayerEntryConfig } from '@/core/utils/config/validation-classes/v import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; import { GroupLayerEntryConfig } from '@/core/utils/config/validation-classes/group-layer-entry-config'; import EventHelper, { EventDelegateBase } from '@/api/events/event-helper'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { LegendEventProcessor } from '@/api/event-processors/event-processor-children/legend-event-processor'; import { MapEventProcessor } from '@/api/event-processors/event-processor-children/map-event-processor'; import { @@ -96,10 +95,10 @@ export abstract class AbstractGeoViewLayer { /** The GeoView layer name. The value of this attribute is extracted from the mapLayerConfig parameter. If its value is * undefined, a default value is generated. */ - geoviewLayerName: TypeLocalizedString = createLocalizedString(''); + geoviewLayerName: string = ''; /** The GeoView layer metadataAccessPath. The name attribute is optional */ - metadataAccessPath: TypeLocalizedString = createLocalizedString(''); + metadataAccessPath: string = ''; /** * An array of layer settings. In the schema, this attribute is optional. However, we define it as mandatory and if the @@ -120,7 +119,7 @@ export abstract class AbstractGeoViewLayer { metadata: TypeJsonObject | null = null; /** Layer name */ - #layerName: Record = {}; + #layerName: Record = {}; /** Layer metadata */ #layerMetadata: Record = {}; @@ -187,14 +186,8 @@ export abstract class AbstractGeoViewLayer { this.mapId = mapId; this.type = type; this.geoviewLayerId = geoviewLayerConfig.geoviewLayerId || generateId(''); - this.geoviewLayerName.en = geoviewLayerConfig?.geoviewLayerName?.en - ? geoviewLayerConfig.geoviewLayerName.en - : DEFAULT_LAYER_NAMES[type]; - this.geoviewLayerName.fr = geoviewLayerConfig?.geoviewLayerName?.fr - ? geoviewLayerConfig.geoviewLayerName.fr - : DEFAULT_LAYER_NAMES[type]; - if (geoviewLayerConfig.metadataAccessPath?.en) this.metadataAccessPath.en = geoviewLayerConfig.metadataAccessPath.en.trim(); - if (geoviewLayerConfig.metadataAccessPath?.fr) this.metadataAccessPath.fr = geoviewLayerConfig.metadataAccessPath.fr.trim(); + this.geoviewLayerName = geoviewLayerConfig?.geoviewLayerName ? geoviewLayerConfig.geoviewLayerName : DEFAULT_LAYER_NAMES[type]; + if (geoviewLayerConfig.metadataAccessPath) this.metadataAccessPath = geoviewLayerConfig.metadataAccessPath.trim(); this.initialSettings = geoviewLayerConfig.initialSettings; this.serverDateFragmentsOrder = geoviewLayerConfig.serviceDateFormat ? DateMgt.getDateFragmentsOrder(geoviewLayerConfig.serviceDateFormat) @@ -275,9 +268,9 @@ export abstract class AbstractGeoViewLayer { /** *************************************************************************************************************************** * Gets the Geoview layer name. - * @returns {TypeLocalizedString | undefined} The geoview layer name + * @returns {string | undefined} The geoview layer name */ - getGeoviewLayerName(): TypeLocalizedString | undefined { + getGeoviewLayerName(): string | undefined { return this.geoviewLayerName; } @@ -292,9 +285,9 @@ export abstract class AbstractGeoViewLayer { /** *************************************************************************************************************************** * Gets the layer name. - * @returns {TypeLocalizedString | undefined} The geoview layer name + * @returns {string | undefined} The geoview layer name */ - getLayerName(layerPath: string): TypeLocalizedString | undefined { + getLayerName(layerPath: string): string | undefined { // If a new layer name is set if (this.#layerName[layerPath]) return this.#layerName[layerPath]; // TODO: Refactor - Temporary patch until configs refactoring is done, the style should have been set already @@ -305,9 +298,9 @@ export abstract class AbstractGeoViewLayer { /** *************************************************************************************************************************** * Sets the layer name. * @param {string} layerPath The layer path. - * @param {TypeLocalizedString} name The layer name. + * @param {string} name The layer name. */ - setLayerName(layerPath: string, name: TypeLocalizedString | undefined): void { + setLayerName(layerPath: string, name: string | undefined): void { this.#layerName[layerPath] = name; this.#emitLayerNameChanged({ layerPath, layerName: name }); } @@ -492,10 +485,9 @@ export abstract class AbstractGeoViewLayer { * @returns {Promise} A promise that the execution is completed. */ protected async fetchServiceMetadata(): Promise { - const metadataUrl = getLocalizedValue(this.metadataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)); - if (metadataUrl) { + if (this.metadataAccessPath) { try { - const metadataString = await getXMLHttpRequest(`${metadataUrl}?f=json`); + const metadataString = await getXMLHttpRequest(`${this.metadataAccessPath}?f=json`); if (metadataString === '{}') this.metadata = null; else { this.metadata = toJsonObject(JSON.parse(metadataString)); @@ -1074,11 +1066,11 @@ export abstract class AbstractGeoViewLayer { * @param {string} fieldName field name for which we want to get the type. * @param {TypeLayerEntryConfig} layerConfig layer configuration. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ // Added eslint-disable here, because we do want to override this method in children and keep 'this'. // eslint-disable-next-line @typescript-eslint/class-methods-use-this - protected getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): 'string' | 'date' | 'number' { + protected getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): TypeOutfieldsType { // Log logger.logWarning(`getFieldType is not implemented for ${fieldName} - ${layerConfig}`); return 'string'; @@ -2005,7 +1997,7 @@ type LayerNameChangedDelegate = EventDelegateBase} A promise that the execution is completed. */ export async function commonfetchServiceMetadata(layer: EsriDynamic | EsriFeature): Promise { - const metadataUrl = getLocalizedValue(layer.metadataAccessPath, AppEventProcessor.getDisplayLanguage(layer.mapId)); + const metadataUrl = layer.metadataAccessPath; if (metadataUrl) { try { const metadataString = await getXMLHttpRequest(`${metadataUrl}?f=json`); @@ -127,15 +126,8 @@ export function commonValidateListOfLayerEntryConfig( switchToGroupLayer.entryType = CONST_LAYER_ENTRY_TYPES.GROUP; // Only switch the layer name by the metadata if there were none pre-set (config wins over metadata rule?) - if (!switchToGroupLayer.layerName) { - switchToGroupLayer.layerName = { - en: layer.metadata!.layers[esriIndex].name as string, - fr: layer.metadata!.layers[esriIndex].name as string, - }; - } else { - if (!switchToGroupLayer.layerName.en) switchToGroupLayer.layerName.en = layer.metadata!.layers[esriIndex].name as string; - if (!switchToGroupLayer.layerName.fr) switchToGroupLayer.layerName.fr = layer.metadata!.layers[esriIndex].name as string; - } + if (!switchToGroupLayer.layerName) switchToGroupLayer.layerName = layer.metadata!.layers[esriIndex].name as string; + switchToGroupLayer.isMetadataLayerGroup = true; switchToGroupLayer.listOfLayerEntryConfig = newListOfLayerEntryConfig; @@ -162,10 +154,7 @@ export function commonValidateListOfLayerEntryConfig( // TO.DOCONT: with the correct values directly? Especially now that we copy the config to prevent leaking. subLayerEntryConfig.parentLayerConfig = groupLayerConfig; subLayerEntryConfig.layerId = `${layerId}`; - subLayerEntryConfig.layerName = { - en: (layer.metadata!.layers as TypeJsonArray).filter((item) => item.id === layerId)[0].name as string, - fr: (layer.metadata!.layers as TypeJsonArray).filter((item) => item.id === layerId)[0].name as string, - }; + subLayerEntryConfig.layerName = (layer.metadata!.layers as TypeJsonArray).filter((item) => item.id === layerId)[0].name as string; newListOfLayerEntryConfig.push(subLayerEntryConfig); // FIXME: Temporary patch to keep the behavior until those layer classes don't exist @@ -182,11 +171,7 @@ export function commonValidateListOfLayerEntryConfig( return; } - if (!layerConfig.layerName) - layerConfig.layerName = { - en: layer.metadata!.layers[esriIndex].name as string, - fr: layer.metadata!.layers[esriIndex].name as string, - }; + if (!layerConfig.layerName) layerConfig.layerName = layer.metadata!.layers[esriIndex].name as string; }); } @@ -197,13 +182,13 @@ export function commonValidateListOfLayerEntryConfig( * @param {string} fieldName field name for which we want to get the domain. * @param {AbstractBaseLayerEntryConfig} layerConfig layer configuration. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ export function commonGetFieldType( layer: EsriDynamic | EsriFeature | EsriImage, fieldName: string, layerConfig: AbstractBaseLayerEntryConfig -): 'string' | 'date' | 'number' { +): TypeOutfieldsType { const esriFieldDefinitions = layer.getLayerMetadata(layerConfig.layerPath).fields as TypeJsonArray; const fieldDefinition = esriFieldDefinitions.find((metadataEntry) => metadataEntry.name === fieldName); if (!fieldDefinition) return 'string'; @@ -375,7 +360,7 @@ export async function commonProcessLayerMetadata< if (layerEntryIsGroupLayer(layerConfig) && !layerConfig.isMetadataLayerGroup) return layerConfig; const { layerPath } = layerConfig; - let queryUrl = getLocalizedValue(layer.metadataAccessPath, AppEventProcessor.getDisplayLanguage(layer.mapId)); + let queryUrl = layer.metadataAccessPath; if (queryUrl) { if (layerConfig.geoviewLayerConfig.geoviewLayerType !== CONST_LAYER_TYPES.ESRI_IMAGE) queryUrl = queryUrl.endsWith('/') ? `${queryUrl}${layerConfig.layerId}` : `${queryUrl}/${layerConfig.layerId}`; diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/raster/esri-dynamic.ts b/packages/geoview-core/src/geo/layer/geoview-layers/raster/esri-dynamic.ts index a53c64aa5ff..1dc158bd4c5 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/raster/esri-dynamic.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/raster/esri-dynamic.ts @@ -13,7 +13,6 @@ import Feature from 'ol/Feature'; import Geometry from 'ol/geom/Geometry'; import { GeometryApi } from '@/geo/layer/geometry/geometry'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { AbstractGeoViewLayer, CONST_LAYER_TYPES } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; import { AbstractGeoViewRaster } from '@/geo/layer/geoview-layers/raster/abstract-geoview-raster'; import { validateExtent, getMinOrMaxExtents } from '@/geo/utils/utilities'; @@ -46,8 +45,8 @@ import { commonProcessTemporalDimension, commonValidateListOfLayerEntryConfig, } from '@/geo/layer/geoview-layers/esri-layer-common'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; type TypeFieldOfTheSameValue = { value: string | number | Date; nbOccurence: number }; type TypeQueryTree = { fieldValue: string | number | Date; nextField: TypeQueryTree }[]; @@ -187,10 +186,10 @@ export class EsriDynamic extends AbstractGeoViewRaster { * @param {string} fieldName field name for which we want to get the type. * @param {AbstractBaseLayerEntryConfig} layerConfig layer configuration. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ // GV Layers Refactoring - Obsolete (in config?) - protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): TypeOutfieldsType { return commonGetFieldType(this, fieldName, layerConfig); } @@ -271,7 +270,7 @@ export class EsriDynamic extends AbstractGeoViewRaster { const sourceOptions: SourceOptions = {}; sourceOptions.attributions = [(this.metadata?.copyrightText ? this.metadata?.copyrightText : '') as string]; - sourceOptions.url = getLocalizedValue(layerConfig.source.dataAccessPath!, AppEventProcessor.getDisplayLanguage(this.mapId)); + sourceOptions.url = layerConfig.source.dataAccessPath!; sourceOptions.params = { LAYERS: `show:${layerConfig.layerId}` }; if (layerConfig.source.transparent) sourceOptions.params.transparent = layerConfig.source.transparent!; if (layerConfig.source.format) sourceOptions.params.format = layerConfig.source.format!; @@ -342,7 +341,7 @@ export class EsriDynamic extends AbstractGeoViewRaster { const [geometryType] = layerConfig.getTypeGeometries(); // Fetch the features - let urlRoot = layerConfig.geoviewLayerConfig.metadataAccessPath![AppEventProcessor.getDisplayLanguage(this.mapId)]!; + let urlRoot = layerConfig.geoviewLayerConfig.metadataAccessPath!; if (!urlRoot.endsWith('/')) urlRoot += '/'; // TODO: we put false so on heavy geometry, dynamic layer can load datatable. If not the fetch fails. const url = `${urlRoot}${layerConfig.layerId}/query?where=1=1&outFields=*&f=json&returnGeometry=false`; @@ -505,7 +504,7 @@ export class EsriDynamic extends AbstractGeoViewRaster { // If not queryable if (!layerConfig.source?.featureInfo?.queryable) return []; - let identifyUrl = getLocalizedValue(layerConfig.source?.dataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)); + let identifyUrl = layerConfig.source?.dataAccessPath; if (!identifyUrl) return []; identifyUrl = identifyUrl.endsWith('/') ? identifyUrl : `${identifyUrl}/`; @@ -1013,7 +1012,7 @@ export class EsriDynamic extends AbstractGeoViewRaster { override async getExtentFromFeatures(layerPath: string, objectIds: string[]): Promise { // Get url for service from layer entry config const layerEntryConfig = this.getLayerConfig(layerPath)! as EsriDynamicLayerEntryConfig; - let baseUrl = getLocalizedValue(layerEntryConfig.source.dataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)); + let baseUrl = layerEntryConfig.source.dataAccessPath; const idString = objectIds.join('%2C'); if (baseUrl) { diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/raster/esri-image.ts b/packages/geoview-core/src/geo/layer/geoview-layers/raster/esri-image.ts index e158d52e2b5..62152c4f87c 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/raster/esri-image.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/raster/esri-image.ts @@ -5,7 +5,6 @@ import { Options as ImageOptions } from 'ol/layer/BaseImage'; import { Image as ImageLayer } from 'ol/layer'; import { Extent } from 'ol/extent'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { DateMgt } from '@/core/utils/date-mgt'; import { TypeJsonObject } from '@/core/types/global-types'; import { logger } from '@/core/utils/logger'; @@ -32,10 +31,10 @@ import { commonProcessLayerMetadata, commonProcessTemporalDimension, } from '@/geo/layer/geoview-layers/esri-layer-common'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { validateExtent } from '@/geo/utils/utilities'; import { getLegendStyles } from '@/geo/utils/renderer/geoview-renderer'; import { TypeLegend } from '@/core/stores/store-interface-and-intial-values/layer-state'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; export interface TypeEsriImageLayerConfig extends TypeGeoviewLayerConfig { geoviewLayerType: typeof CONST_LAYER_TYPES.ESRI_IMAGE; @@ -137,10 +136,7 @@ export class EsriImage extends AbstractGeoViewRaster { try { const layerConfig = this.getLayerConfig(layerPath) as EsriImageLayerEntryConfig | undefined | null; if (!layerConfig) return null; - const legendUrl = `${getLocalizedValue( - layerConfig.geoviewLayerConfig.metadataAccessPath, - AppEventProcessor.getDisplayLanguage(this.mapId) - )}/legend?f=json`; + const legendUrl = `${layerConfig.geoviewLayerConfig.metadataAccessPath}/legend?f=json`; const response = await fetch(legendUrl); const legendJson: TypeEsriImageLayerLegend = await response.json(); let legendInfo; @@ -231,10 +227,10 @@ export class EsriImage extends AbstractGeoViewRaster { * @param {string} fieldName field name for which we want to get the type. * @param {TypeLayerEntryConfig} layerConfig layer configuration. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ // GV Layers Refactoring - Obsolete (in layers) - protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): TypeOutfieldsType { // TODO: Refactor - Layers refactoring. Is this function really valid for an esri-image? Remove? return commonGetFieldType(this, fieldName, layerConfig); } @@ -316,7 +312,7 @@ export class EsriImage extends AbstractGeoViewRaster { const sourceOptions: SourceOptions = {}; sourceOptions.attributions = [(this.metadata!.copyrightText ? this.metadata!.copyrightText : '') as string]; - sourceOptions.url = getLocalizedValue(layerConfig.source.dataAccessPath!, AppEventProcessor.getDisplayLanguage(this.mapId)); + sourceOptions.url = layerConfig.source.dataAccessPath!; sourceOptions.params = { LAYERS: `show:${layerConfig.layerId}` }; if (layerConfig.source.transparent) sourceOptions.params.transparent = layerConfig.source.transparent!; if (layerConfig.source.format) sourceOptions.params.format = layerConfig.source.format!; diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/raster/image-static.ts b/packages/geoview-core/src/geo/layer/geoview-layers/raster/image-static.ts index be240d1e810..2c66ce5871b 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/raster/image-static.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/raster/image-static.ts @@ -10,10 +10,9 @@ import { Cast, TypeJsonObject } from '@/core/types/global-types'; import { AbstractGeoViewLayer, CONST_LAYER_TYPES } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; import { AbstractGeoViewRaster } from '@/geo/layer/geoview-layers/raster/abstract-geoview-raster'; import { TypeLayerEntryConfig, TypeGeoviewLayerConfig, layerEntryIsGroupLayer } from '@/geo/map/map-schema-types'; -import { getLocalizedValue } from '@/core/utils/utilities'; + import { logger } from '@/core/utils/logger'; import { ImageStaticLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/image-static-layer-entry-config'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { loadImage } from '@/geo/utils/renderer/geoview-renderer'; import { TypeLegend } from '@/core/stores/store-interface-and-intial-values/layer-state'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; @@ -107,7 +106,7 @@ export class ImageStatic extends AbstractGeoViewRaster { * @private */ // GV Layers Refactoring - Obsolete (in layers) - #getLegendImage(layerConfig: ImageStaticLayerEntryConfig): Promise { + static #getLegendImage(layerConfig: ImageStaticLayerEntryConfig): Promise { const promisedImage = new Promise((resolve) => { const readImage = (blob: Blob): Promise => // eslint-disable-next-line @typescript-eslint/no-shadow @@ -118,10 +117,7 @@ export class ImageStatic extends AbstractGeoViewRaster { reader.readAsDataURL(blob); }); - let legendUrl: string | undefined = getLocalizedValue( - layerConfig.source.dataAccessPath, - AppEventProcessor.getDisplayLanguage(this.mapId) - ); + let legendUrl: string | undefined = layerConfig.source.dataAccessPath; if (legendUrl) { legendUrl = legendUrl.toLowerCase().startsWith('http:') ? `https${legendUrl.slice(4)}` : legendUrl; @@ -151,7 +147,7 @@ export class ImageStatic extends AbstractGeoViewRaster { const layerConfig = this.getLayerConfig(layerPath) as ImageStaticLayerEntryConfig | undefined | null; if (!layerConfig) return null; - const legendImage = await this.#getLegendImage(layerConfig!); + const legendImage = await ImageStatic.#getLegendImage(layerConfig!); if (!legendImage) { const legend: TypeLegend = { type: CONST_LAYER_TYPES.IMAGE_STATIC, @@ -253,7 +249,7 @@ export class ImageStatic extends AbstractGeoViewRaster { if (!layerConfig?.source?.extent) throw new Error('Parameter extent is not defined in source element of layerConfig.'); const sourceOptions: SourceOptions = { - url: getLocalizedValue(layerConfig.source.dataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)) || '', + url: layerConfig.source.dataAccessPath || '', imageExtent: layerConfig.source.extent, }; diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/raster/vector-tiles.ts b/packages/geoview-core/src/geo/layer/geoview-layers/raster/vector-tiles.ts index c3122955da6..b79fabd7ef7 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/raster/vector-tiles.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/raster/vector-tiles.ts @@ -9,7 +9,6 @@ import { Extent } from 'ol/extent'; import { applyStyle } from 'ol-mapbox-style'; import { MVT } from 'ol/format'; -import { TypeLocalizedString } from '@config/types/map-schema-types'; import { AbstractGeoViewLayer, CONST_LAYER_TYPES } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; import { AbstractGeoViewRaster } from '@/geo/layer/geoview-layers/raster/abstract-geoview-raster'; import { @@ -18,15 +17,15 @@ import { TypeGeoviewLayerConfig, TypeTileGrid, layerEntryIsGroupLayer, + TypeFeatureInfoLayerConfig, } from '@/geo/map/map-schema-types'; -import { getLocalizedValue } from '@/core/utils/utilities'; -import { Cast, TypeJsonObject } from '@/core/types/global-types'; +import { TypeJsonObject } from '@/core/types/global-types'; import { validateExtentWhenDefined } from '@/geo/utils/utilities'; import { api } from '@/app'; import { VectorTilesLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/vector-tiles-layer-entry-config'; import { logger } from '@/core/utils/logger'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; // TODO: Implement method to validate Vector Tiles service // TODO: Add more customization (minZoom, maxZoom, TMS) @@ -115,20 +114,14 @@ export class VectorTiles extends AbstractGeoViewRaster { * @param {string} fieldName field name for which we want to get the type. * @param {TypeLayerEntryConfig} layerConfig layer configuration. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ // GV Layers Refactoring - Obsolete (in layers) // TODO refactor - this looks like it will not work, investigate further - protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): 'string' | 'date' | 'number' { - const fieldDefinitions = this.getLayerMetadata(layerConfig.layerPath).source.featureInfo; - const fieldIndex = getLocalizedValue( - Cast(fieldDefinitions.outfields), - AppEventProcessor.getDisplayLanguage(this.mapId) - ) - ?.split(',') - .indexOf(fieldName); - if (!fieldIndex || fieldIndex === -1) return 'string'; - return (fieldDefinitions.fieldTypes as string).split(',')[fieldIndex!] as 'string' | 'date' | 'number'; + protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): TypeOutfieldsType { + const fieldDefinitions = this.getLayerMetadata(layerConfig.layerPath).source.featureInfo as unknown as TypeFeatureInfoLayerConfig; + const outFieldEntry = fieldDefinitions.outfields?.find((fieldDefinition) => fieldDefinition.name === fieldName); + return outFieldEntry?.type || 'string'; } /** *************************************************************************************************************************** @@ -176,7 +169,7 @@ export class VectorTiles extends AbstractGeoViewRaster { if (!(layerConfig instanceof VectorTilesLayerEntryConfig)) throw new Error('Invalid layer configuration type provided'); const sourceOptions: SourceOptions = { - url: getLocalizedValue(layerConfig.source.dataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)), + url: layerConfig.source.dataAccessPath, }; if ( @@ -252,13 +245,9 @@ export class VectorTiles extends AbstractGeoViewRaster { const resolutions = sourceOptions.tileGrid.getResolutions(); if (this.metadata?.defaultStyles) - applyStyle( - olLayer, - `${getLocalizedValue(this.metadataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId))}${ - this.metadata.defaultStyles - }/root.json`, - { resolutions: resolutions?.length ? resolutions : [] } - ).catch((error) => { + applyStyle(olLayer, `${this.metadataAccessPath}${this.metadata.defaultStyles}/root.json`, { + resolutions: resolutions?.length ? resolutions : [], + }).catch((error) => { // Log logger.logPromiseFailed('applyStyle in processOneLayerEntry in VectorTiles', error); }); diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/raster/wms.ts b/packages/geoview-core/src/geo/layer/geoview-layers/raster/wms.ts index 1520ec6ecd8..80e78be8460 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/raster/wms.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/raster/wms.ts @@ -30,7 +30,7 @@ import { layerEntryIsGroupLayer, TypeFeatureInfoEntry, } from '@/geo/map/map-schema-types'; -import { xmlToJson, getLocalizedValue } from '@/core/utils/utilities'; +import { xmlToJson } from '@/core/utils/utilities'; import { DateMgt } from '@/core/utils/date-mgt'; import { getExtentIntersection, validateExtent, validateExtentWhenDefined } from '@/geo/utils/utilities'; import { api } from '@/app'; @@ -40,7 +40,6 @@ import { OgcWmsLayerEntryConfig } from '@/core/utils/config/validation-classes/r import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; import { GroupLayerEntryConfig } from '@/core/utils/config/validation-classes/group-layer-entry-config'; import { TypeLegend } from '@/core/stores/store-interface-and-intial-values/layer-state'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { loadImage } from '@/geo/utils/renderer/geoview-renderer'; export interface TypeWMSLayerConfig extends Omit { @@ -117,7 +116,7 @@ export class WMS extends AbstractGeoViewRaster { */ // GV Layers Refactoring - Obsolete (in config) protected override async fetchServiceMetadata(): Promise { - const metadataUrl = getLocalizedValue(this.metadataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)); + const metadataUrl = this.metadataAccessPath; if (metadataUrl) { const metadataAccessPathIsXmlFile = metadataUrl.slice(-4).toLowerCase() === '.xml'; if (metadataAccessPathIsXmlFile) { @@ -210,7 +209,7 @@ export class WMS extends AbstractGeoViewRaster { /** *************************************************************************************************************************** * This method reads the service metadata from a XML metadataAccessPath. * - * @param {string} metadataUrl The localized value of the metadataAccessPath + * @param {string} metadataUrl The metadataAccessPath * * @returns {Promise} A promise that the execution is completed. * @private @@ -225,15 +224,13 @@ export class WMS extends AbstractGeoViewRaster { if (this.metadata) { this.#processMetadataInheritance(); const metadataAccessPath = this.metadata?.Capability.Request.GetMap.DCPType[0].HTTP.Get.OnlineResource as string; - this.metadataAccessPath.en = metadataAccessPath; - this.metadataAccessPath.fr = metadataAccessPath; + this.metadataAccessPath = metadataAccessPath; const dataAccessPath = this.metadata?.Capability.Request.GetMap.DCPType[0].HTTP.Get.OnlineResource as string; const setDataAccessPath = (listOfLayerEntryConfig: TypeLayerEntryConfig[]): void => { listOfLayerEntryConfig.forEach((layerConfig) => { if (layerEntryIsGroupLayer(layerConfig)) setDataAccessPath(layerConfig.listOfLayerEntryConfig); else { - layerConfig.source!.dataAccessPath!.en = dataAccessPath; - layerConfig.source!.dataAccessPath!.fr = dataAccessPath; + layerConfig.source!.dataAccessPath = dataAccessPath; } }); }; @@ -420,11 +417,7 @@ export class WMS extends AbstractGeoViewRaster { return; } - if (!layerConfig.layerName) - layerConfig.layerName = { - en: layerFound.Title as string, - fr: layerFound.Title as string, - }; + if (!layerConfig.layerName) layerConfig.layerName = layerFound.Title as string; } }); } @@ -450,10 +443,7 @@ export class WMS extends AbstractGeoViewRaster { const subLayerEntryConfig: TypeLayerEntryConfig = cloneDeep(layerConfig); subLayerEntryConfig.parentLayerConfig = Cast(layerConfig); subLayerEntryConfig.layerId = subLayer.Name as string; - subLayerEntryConfig.layerName = { - en: subLayer.Title as string, - fr: subLayer.Title as string, - }; + subLayerEntryConfig.layerName = subLayer.Title as string; newListOfLayerEntryConfig.push(subLayerEntryConfig); // FIXME: Temporary patch to keep the behavior until those layer classes don't exist @@ -462,10 +452,7 @@ export class WMS extends AbstractGeoViewRaster { const switchToGroupLayer = Cast(layerConfig); switchToGroupLayer.entryType = CONST_LAYER_ENTRY_TYPES.GROUP; - switchToGroupLayer.layerName = { - en: layer.Title as string, - fr: layer.Title as string, - }; + switchToGroupLayer.layerName = layer.Title as string; switchToGroupLayer.isMetadataLayerGroup = true; switchToGroupLayer.listOfLayerEntryConfig = newListOfLayerEntryConfig; this.validateListOfLayerEntryConfig(newListOfLayerEntryConfig); @@ -517,7 +504,7 @@ export class WMS extends AbstractGeoViewRaster { if (geoviewEntryIsWMS(layerConfig)) { const layerCapabilities = this.#getLayerMetadataEntry(layerConfig.layerId); if (layerCapabilities) { - const dataAccessPath = getLocalizedValue(layerConfig.source.dataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId))!; + const dataAccessPath = layerConfig.source.dataAccessPath!; let styleToUse = ''; if (Array.isArray(layerConfig.source?.style) && layerConfig.source?.style) { @@ -852,10 +839,7 @@ export class WMS extends AbstractGeoViewRaster { const legendUrlFromCapabilities = this.#getLegendUrlFromCapabilities(layerConfig, chosenStyle); if (legendUrlFromCapabilities) queryUrl = legendUrlFromCapabilities.OnlineResource as string; else if (Object.keys(this.metadata?.Capability.Request || {}).includes('GetLegendGraphic')) - queryUrl = `${getLocalizedValue( - this.metadataAccessPath, - AppEventProcessor.getDisplayLanguage(this.mapId) - )!}service=WMS&version=1.3.0&request=GetLegendGraphic&FORMAT=image/png&layer=${layerConfig.layerId}`; + queryUrl = `${this.metadataAccessPath}service=WMS&version=1.3.0&request=GetLegendGraphic&FORMAT=image/png&layer=${layerConfig.layerId}`; if (queryUrl) { queryUrl = queryUrl.toLowerCase().startsWith('http:') ? `https${queryUrl.slice(4)}` : queryUrl; diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/raster/xyz-tiles.ts b/packages/geoview-core/src/geo/layer/geoview-layers/raster/xyz-tiles.ts index 00fa968f07c..34577272554 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/raster/xyz-tiles.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/raster/xyz-tiles.ts @@ -7,8 +7,6 @@ import { Extent } from 'ol/extent'; import defaultsDeep from 'lodash/defaultsDeep'; -import { TypeLocalizedString } from '@config/types/map-schema-types'; - import { AbstractGeoViewLayer, CONST_LAYER_TYPES } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; import { AbstractGeoViewRaster } from '@/geo/layer/geoview-layers/raster/abstract-geoview-raster'; import { @@ -16,13 +14,13 @@ import { TypeSourceTileInitialConfig, TypeGeoviewLayerConfig, layerEntryIsGroupLayer, + TypeFeatureInfoLayerConfig, } from '@/geo/map/map-schema-types'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { Cast, toJsonObject } from '@/core/types/global-types'; import { validateExtentWhenDefined } from '@/geo/utils/utilities'; import { XYZTilesLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/xyz-layer-entry-config'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; // ? Do we keep this TODO ? Dynamic parameters can be placed on the dataAccessPath and initial settings can be used on xyz-tiles. // TODO: Implement method to validate XYZ tile service @@ -107,19 +105,13 @@ export class XYZTiles extends AbstractGeoViewRaster { * @param {string} fieldName field name for which we want to get the type. * @param {TypeLayerEntryConfig} layerConfig layer configuration. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ // GV Layers Refactoring - Obsolete (in layers) - protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): 'string' | 'date' | 'number' { - const fieldDefinitions = this.getLayerMetadata(layerConfig.layerPath).source.featureInfo; - const fieldIndex = getLocalizedValue( - Cast(fieldDefinitions.outfields), - AppEventProcessor.getDisplayLanguage(this.mapId) - ) - ?.split(',') - .indexOf(fieldName); - if (!fieldIndex || fieldIndex === -1) return 'string'; - return (fieldDefinitions.fieldTypes as string).split(',')[fieldIndex!] as 'string' | 'date' | 'number'; + protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): TypeOutfieldsType { + const fieldDefinitions = this.getLayerMetadata(layerConfig.layerPath).source.featureInfo as unknown as TypeFeatureInfoLayerConfig; + const outFieldEntry = fieldDefinitions.outfields?.find((fieldDefinition) => fieldDefinition.name === fieldName); + return outFieldEntry?.type || 'string'; } /** *************************************************************************************************************************** @@ -191,7 +183,7 @@ export class XYZTiles extends AbstractGeoViewRaster { if (!(layerConfig instanceof XYZTilesLayerEntryConfig)) throw new Error('Invalid layer configuration type provided'); const sourceOptions: SourceOptions = { - url: getLocalizedValue(layerConfig.source.dataAccessPath as TypeLocalizedString, AppEventProcessor.getDisplayLanguage(this.mapId)), + url: layerConfig.source.dataAccessPath, }; if (layerConfig.source.crossOrigin) { sourceOptions.crossOrigin = layerConfig.source.crossOrigin; diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/vector/abstract-geoview-vector.ts b/packages/geoview-core/src/geo/layer/geoview-layers/vector/abstract-geoview-vector.ts index 76925624559..99d2ed42898 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/vector/abstract-geoview-vector.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/vector/abstract-geoview-vector.ts @@ -17,20 +17,22 @@ import { ProjectionLike } from 'ol/proj'; import { Point } from 'ol/geom'; import { getUid } from 'ol/util'; -import { TypeLocalizedString, TypeOutfields } from '@config/types/map-schema-types'; +import { TypeOutfields, TypeOutfieldsType } from '@config/types/map-schema-types'; import { api } from '@/app'; import { AbstractGeoViewLayer, CONST_LAYER_TYPES } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; -import { TypeBaseSourceVectorInitialConfig, TypeFeatureInfoEntry, TypeLayerEntryConfig } from '@/geo/map/map-schema-types'; -import { getLocalizedValue } from '@/core/utils/utilities'; +import { + TypeBaseSourceVectorInitialConfig, + TypeFeatureInfoEntry, + TypeFeatureInfoLayerConfig, + TypeLayerEntryConfig, +} from '@/geo/map/map-schema-types'; import { DateMgt } from '@/core/utils/date-mgt'; import { NodeType } from '@/geo/utils/renderer/geoview-renderer-types'; import { VECTOR_LAYER } from '@/core/utils/constant'; import { logger } from '@/core/utils/logger'; import { VectorLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-layer-entry-config'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; -import { Cast } from '@/core/types/global-types'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { analyzeLayerFilter } from '@/geo/utils/renderer/geoview-renderer'; import { AbstractGVVector } from '../../gv-layers/vector/abstract-gv-vector'; import { MapEventProcessor } from '@/api/event-processors/event-processor-children/map-event-processor'; @@ -94,19 +96,13 @@ export abstract class AbstractGeoViewVector extends AbstractGeoViewLayer { * @param {string} fieldName field name for which we want to get the type. * @param {AbstractBaseLayerEntryConfig} layerConfig layer configuration. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ // GV Layers Refactoring - Obsolete (in layers) - protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): 'string' | 'date' | 'number' { - const fieldDefinitions = this.getLayerMetadata(layerConfig.layerPath).source.featureInfo; - const fieldIndex = getLocalizedValue( - Cast(fieldDefinitions.outfields), - AppEventProcessor.getDisplayLanguage(this.mapId) - ) - ?.split(',') - .indexOf(fieldName); - if (!fieldIndex || fieldIndex === -1) return 'string'; - return (fieldDefinitions.fieldTypes as string).split(',')[fieldIndex!] as 'string' | 'date' | 'number'; + protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): TypeOutfieldsType { + const fieldDefinitions = this.getLayerMetadata(layerConfig.layerPath).source.featureInfo as unknown as TypeFeatureInfoLayerConfig; + const outFieldEntry = fieldDefinitions.outfields?.find((fieldDefinition) => fieldDefinition.name === fieldName); + return outFieldEntry?.type || 'string'; } /** *************************************************************************************************************************** @@ -337,11 +333,8 @@ export abstract class AbstractGeoViewVector extends AbstractGeoViewLayer { */ // GV Layers Refactoring - Obsolete (this is bridging between config and layers, okay) protected createVectorLayer(layerConfig: VectorLayerEntryConfig, vectorSource: VectorSource): VectorLayer { - // TODO: remove link to language, layer should be created in one language and recreated if needed to change - const language = AppEventProcessor.getDisplayLanguage(this.mapId); - // Get the style label - const label = getLocalizedValue(layerConfig.layerName, language) || layerConfig.layerId; + const label = layerConfig.layerName || layerConfig.layerId; // GV Time to request an OpenLayers layer! const requestResult = this.emitLayerRequesting({ config: layerConfig, source: vectorSource }); diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/vector/csv.ts b/packages/geoview-core/src/geo/layer/geoview-layers/vector/csv.ts index 6d69e0d5639..c70c26790c0 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/vector/csv.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/vector/csv.ts @@ -18,11 +18,9 @@ import { TypeBaseSourceVectorInitialConfig, layerEntryIsGroupLayer, } from '@/geo/map/map-schema-types'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { CsvLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/csv-layer-entry-config'; import { VectorLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-layer-entry-config'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; // GV: CONFIG EXTRACTION // GV: This section of code was extracted and copied to the geoview config section @@ -173,7 +171,7 @@ export class CSV extends AbstractGeoViewVector { readOptions: ReadOptions = {} ): VectorSource { readOptions.dataProjection = (layerConfig.source as TypeBaseSourceVectorInitialConfig).dataProjection; - sourceOptions.url = getLocalizedValue(layerConfig.source!.dataAccessPath!, AppEventProcessor.getDisplayLanguage(this.mapId)); + sourceOptions.url = layerConfig.source!.dataAccessPath; sourceOptions.format = new FormatGeoJSON(); const vectorSource = super.createVectorSource(layerConfig, sourceOptions, readOptions); return vectorSource; diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/vector/esri-feature.ts b/packages/geoview-core/src/geo/layer/geoview-layers/vector/esri-feature.ts index 5b8504c3bfb..a84d51b7a66 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/vector/esri-feature.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/vector/esri-feature.ts @@ -4,7 +4,6 @@ import { EsriJSON } from 'ol/format'; import { ReadOptions } from 'ol/format/Feature'; import Feature from 'ol/Feature'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { AbstractGeoViewVector } from './abstract-geoview-vector'; import { TypeJsonObject } from '@/core/types/global-types'; import { EsriFeatureLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/esri-feature-layer-entry-config'; @@ -28,7 +27,7 @@ import { commonProcessTemporalDimension, commonValidateListOfLayerEntryConfig, } from '@/geo/layer/geoview-layers/esri-layer-common'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; export interface TypeSourceEsriFeatureInitialConfig extends Omit { format: 'EsriJSON'; @@ -148,10 +147,10 @@ export class EsriFeature extends AbstractGeoViewVector { * @param {string} fieldName field name for which we want to get the type. * @param {TypeLayerEntryConfig} layerConfig layer configuration. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ // GV Layers Refactoring - Obsolete (in layers) - protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string, layerConfig: AbstractBaseLayerEntryConfig): TypeOutfieldsType { return commonGetFieldType(this, fieldName, layerConfig); } @@ -233,7 +232,7 @@ export class EsriFeature extends AbstractGeoViewVector { // eslint-disable-next-line no-var var vectorSource: VectorSource; // eslint-disable-next-line no-param-reassign - sourceOptions.url = getLocalizedValue(layerConfig.source!.dataAccessPath!, AppEventProcessor.getDisplayLanguage(this.mapId)); + sourceOptions.url = layerConfig.source!.dataAccessPath!; // eslint-disable-next-line no-param-reassign sourceOptions.url = `${sourceOptions.url}/${layerConfig.layerId}/query?f=json&where=1%3D1&returnCountOnly=true`; // eslint-disable-next-line no-param-reassign diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/vector/geojson.ts b/packages/geoview-core/src/geo/layer/geoview-layers/vector/geojson.ts index 410e245fe9f..af18328f163 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/vector/geojson.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/vector/geojson.ts @@ -8,8 +8,6 @@ import Feature from 'ol/Feature'; import defaultsDeep from 'lodash/defaultsDeep'; -import { TypeLocalizedString } from '@config/types/map-schema-types'; - import VectorLayer from 'ol/layer/Vector'; import { GeoJSONObject } from 'ol/format/GeoJSON'; import { AbstractGeoViewLayer, CONST_LAYER_TYPES } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; @@ -23,12 +21,10 @@ import { } from '@/geo/map/map-schema-types'; import { validateExtentWhenDefined } from '@/geo/utils/utilities'; import { Cast, TypeJsonObject } from '@/core/types/global-types'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { logger } from '@/core/utils/logger'; import { GeoJSONLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/geojson-layer-entry-config'; import { VectorLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-layer-entry-config'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { Projection } from '@/geo/utils/projection'; import { LegendEventProcessor } from '@/api/event-processors/event-processor-children/legend-event-processor'; import { DataTableEventProcessor } from '@/api/event-processors/event-processor-children/data-table-event-processor'; @@ -201,26 +197,13 @@ export class GeoJSON extends AbstractGeoViewVector { // layerId ending, chances are that it was set by the config-validation because of an empty dataAcessPath value in the config. // This situation means that we want to use the dataAccessPath found in the metadata if it is set, otherwise we will keep the // config dataAccessPath value. - let metadataAccessPathRoot = getLocalizedValue( - layerConfig.geoviewLayerConfig?.metadataAccessPath as TypeLocalizedString, - AppEventProcessor.getDisplayLanguage(this.mapId) - ); + let metadataAccessPathRoot = layerConfig.geoviewLayerConfig?.metadataAccessPath; if (metadataAccessPathRoot) { metadataAccessPathRoot = metadataAccessPathRoot.split('/').length > 1 ? metadataAccessPathRoot.split('/').slice(0, -1).join('/') : './'; const metadataAccessPathRootPlusLayerId = `${metadataAccessPathRoot}/${layerConfig.layerId}`; - if ( - metadataAccessPathRootPlusLayerId === - getLocalizedValue( - layerConfig.source?.dataAccessPath as TypeLocalizedString, - AppEventProcessor.getDisplayLanguage(this.mapId) - ) && - getLocalizedValue( - layerMetadataFound.source?.dataAccessPath as TypeLocalizedString, - AppEventProcessor.getDisplayLanguage(this.mapId) - ) - ) { - layerConfig.source!.dataAccessPath = { ...layerMetadataFound.source!.dataAccessPath } as TypeLocalizedString; + if (metadataAccessPathRootPlusLayerId === layerConfig.source?.dataAccessPath && layerMetadataFound.source?.dataAccessPath) { + layerConfig.source!.dataAccessPath = layerMetadataFound.source!.dataAccessPath; } } } @@ -250,10 +233,7 @@ export class GeoJSON extends AbstractGeoViewVector { readOptions: ReadOptions = {} ): VectorSource { readOptions.dataProjection = (layerConfig.source as TypeBaseSourceVectorInitialConfig).dataProjection; - sourceOptions.url = getLocalizedValue( - layerConfig.source!.dataAccessPath! as TypeLocalizedString, - AppEventProcessor.getDisplayLanguage(this.mapId) - ); + sourceOptions.url = layerConfig.source!.dataAccessPath!; sourceOptions.format = new FormatGeoJSON(); const vectorSource = super.createVectorSource(layerConfig, sourceOptions, readOptions); return vectorSource; diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/vector/geopackage.ts b/packages/geoview-core/src/geo/layer/geoview-layers/vector/geopackage.ts index 8b0017e22cd..0ec4062c848 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/vector/geopackage.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/vector/geopackage.ts @@ -26,12 +26,10 @@ import { CONST_LAYER_ENTRY_TYPES, layerEntryIsGroupLayer, } from '@/geo/map/map-schema-types'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { GeoPackageLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/geopackage-layer-config-entry'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; import { VectorLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-layer-entry-config'; import { GroupLayerEntryConfig } from '@/core/utils/config/validation-classes/group-layer-entry-config'; -import { createLocalizedString, getLocalizedValue } from '@/core/utils/utilities'; import { logger } from '@/core/utils/logger'; import { TypeOutfields } from '@/api/config/types/map-schema-types'; @@ -280,7 +278,7 @@ export class GeoPackage extends AbstractGeoViewVector { readOptions: ReadOptions = {} ): Promise<[LayerData[], SldsInterface]> { const promisedGeopackageData = new Promise<[LayerData[], SldsInterface]>((resolve) => { - const url = getLocalizedValue(layerConfig.source!.dataAccessPath!, AppEventProcessor.getDisplayLanguage(this.mapId)); + const url = layerConfig.source!.dataAccessPath!; const attributions = this.getAttributions(); if (attributions.length > 0) sourceOptions.attributions = attributions; const layersInfo: LayerData[] = []; @@ -607,7 +605,7 @@ export class GeoPackage extends AbstractGeoViewVector { // "Clone" the config, patch until that layer type logic is rebuilt const newLayerEntryConfig = new GeoPackageLayerEntryConfig(layerConfig as GeoPackageLayerEntryConfig); newLayerEntryConfig.layerId = layers[i].name; - newLayerEntryConfig.layerName = createLocalizedString(layers[i].name); + newLayerEntryConfig.layerName = layers[i].name; newLayerEntryConfig.entryType = CONST_LAYER_ENTRY_TYPES.VECTOR; newLayerEntryConfig.parentLayerConfig = Cast(layerConfig); diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/vector/ogc-feature.ts b/packages/geoview-core/src/geo/layer/geoview-layers/vector/ogc-feature.ts index 2b6df31f50c..2020f6156a2 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/vector/ogc-feature.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/vector/ogc-feature.ts @@ -26,8 +26,6 @@ import { logger } from '@/core/utils/logger'; import { OgcFeatureLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/ogc-layer-entry-config'; import { VectorLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-layer-entry-config'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; -import { getLocalizedValue } from '@/core/utils/utilities'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { TypeOutfields } from '@/api/config/types/map-schema-types'; export interface TypeSourceOgcFeatureInitialConfig extends TypeVectorSourceInitialConfig { @@ -132,7 +130,7 @@ export class OgcFeature extends AbstractGeoViewVector { // GV Layers Refactoring - Obsolete (in config?) protected override fetchServiceMetadata(): Promise { const promisedExecution = new Promise((resolve) => { - const metadataUrl = getLocalizedValue(this.metadataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)); + const metadataUrl = this.metadataAccessPath; if (metadataUrl) { const queryUrl = metadataUrl.endsWith('/') ? `${metadataUrl}collections?f=json` : `${metadataUrl}/collections?f=json`; axios @@ -190,11 +188,7 @@ export class OgcFeature extends AbstractGeoViewVector { return; } - if (foundCollection.description) - layerConfig.layerName = { - en: foundCollection.description as string, - fr: foundCollection.description as string, - }; + if (foundCollection.description) layerConfig.layerName = foundCollection.description as string; layerConfig.initialSettings.extent = validateExtentWhenDefined(layerConfig.initialSettings.extent); @@ -228,7 +222,7 @@ export class OgcFeature extends AbstractGeoViewVector { if (!(layerConfig instanceof VectorLayerEntryConfig)) throw new Error('Invalid layer configuration type provided'); try { - const metadataUrl = getLocalizedValue(this.metadataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)); + const metadataUrl = this.metadataAccessPath; if (metadataUrl) { const queryUrl = metadataUrl.endsWith('/') ? `${metadataUrl}collections/${layerConfig.layerId}/queryables?f=json` @@ -308,7 +302,7 @@ export class OgcFeature extends AbstractGeoViewVector { readOptions: ReadOptions = {} ): VectorSource { readOptions.dataProjection = (layerConfig.source as TypeBaseSourceVectorInitialConfig).dataProjection; - sourceOptions.url = getLocalizedValue(layerConfig.source!.dataAccessPath!, AppEventProcessor.getDisplayLanguage(this.mapId)); + sourceOptions.url = layerConfig.source!.dataAccessPath!; sourceOptions.url = `${sourceOptions.url}/collections/${layerConfig.layerId}/items?f=json`; sourceOptions.format = new FormatGeoJSON(); const vectorSource = super.createVectorSource(layerConfig, sourceOptions, readOptions); diff --git a/packages/geoview-core/src/geo/layer/geoview-layers/vector/wfs.ts b/packages/geoview-core/src/geo/layer/geoview-layers/vector/wfs.ts index 8602c625701..b0586335576 100644 --- a/packages/geoview-core/src/geo/layer/geoview-layers/vector/wfs.ts +++ b/packages/geoview-core/src/geo/layer/geoview-layers/vector/wfs.ts @@ -20,12 +20,11 @@ import { layerEntryIsGroupLayer, } from '@/geo/map/map-schema-types'; -import { getLocalizedValue, getXMLHttpRequest, xmlToJson, findPropertyNameByRegex } from '@/core/utils/utilities'; +import { getXMLHttpRequest, xmlToJson, findPropertyNameByRegex } from '@/core/utils/utilities'; import { logger } from '@/core/utils/logger'; import { WfsLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/wfs-layer-entry-config'; import { VectorLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-layer-entry-config'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { validateExtentWhenDefined } from '@/geo/utils/utilities'; import { TypeOutfields } from '@/api/config/types/map-schema-types'; @@ -127,7 +126,7 @@ export class WFS extends AbstractGeoViewVector { // GV Layers Refactoring - Obsolete (in config?) protected override fetchServiceMetadata(): Promise { const promisedExecution = new Promise((resolve) => { - let metadataUrl = getLocalizedValue(this.metadataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)) as string; + let metadataUrl = this.metadataAccessPath; // check if url contains metadata parameters for the getCapabilities request and reformat the urls const getCapabilitiesUrl = @@ -153,7 +152,7 @@ export class WFS extends AbstractGeoViewVector { }) .catch((reason) => { this.setAllLayerStatusTo('error', this.listOfLayerEntryConfig, 'Unable to read metadata'); - logger.logError('Unableto fetch metadata', this.metadataAccessPath, reason); + logger.logError('Unable to fetch metadata', this.metadataAccessPath, reason); resolve(); }); } else { @@ -239,7 +238,7 @@ export class WFS extends AbstractGeoViewVector { if (!(layerConfig instanceof VectorLayerEntryConfig)) throw new Error('Invalid layer configuration type provided'); try { - let queryUrl = getLocalizedValue(layerConfig.source!.dataAccessPath, AppEventProcessor.getDisplayLanguage(this.mapId)); + let queryUrl = layerConfig.source!.dataAccessPath; // check if url contains metadata parameters for the getCapabilities request and reformat the urls queryUrl = queryUrl!.indexOf('?') > -1 ? queryUrl!.substring(0, queryUrl!.indexOf('?')) : queryUrl; @@ -359,7 +358,7 @@ export class WFS extends AbstractGeoViewVector { sourceOptions.url = (extent): string => { // check if url contains metadata parameters for the getCapabilities request and reformat the urls - let sourceUrl = getLocalizedValue(layerConfig.source!.dataAccessPath!, AppEventProcessor.getDisplayLanguage(this.mapId)); + let sourceUrl = layerConfig.source!.dataAccessPath!; sourceUrl = sourceUrl!.indexOf('?') > -1 ? sourceUrl!.substring(0, sourceUrl!.indexOf('?')) : sourceUrl; // GV: Use processUrlParameters('GetFeature') method of GeoView layer config to get the sourceUrl and append &typeName= to it. sourceUrl = `${sourceUrl}?service=WFS&request=getFeature&version=${this.#version}`; diff --git a/packages/geoview-core/src/geo/layer/gv-layers/abstract-base-layer.ts b/packages/geoview-core/src/geo/layer/gv-layers/abstract-base-layer.ts index 14e7281b810..65081e6489b 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/abstract-base-layer.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/abstract-base-layer.ts @@ -1,6 +1,6 @@ import BaseLayer from 'ol/layer/Base'; -import { Extent, TypeLocalizedString } from '@/api/config/types/map-schema-types'; +import { Extent } from '@/api/config/types/map-schema-types'; import EventHelper, { EventDelegateBase } from '@/api/events/event-helper'; import { ConfigBaseClass } from '@/core/utils/config/validation-classes/config-base-class'; import { TypeLayerStatus } from '@/geo/map/map-schema-types'; @@ -20,7 +20,7 @@ export abstract class AbstractBaseLayer { protected olLayer!: BaseLayer; // The layer name - #layerName: TypeLocalizedString | undefined; + #layerName: string | undefined; // Keep all callback delegates references #onLayerNameChangedHandlers: LayerNameChangedDelegate[] = []; @@ -90,9 +90,9 @@ export abstract class AbstractBaseLayer { /** * Gets the geoview layer name. - * @returns {TypeLocalizedString | undefined} The layer name + * @returns {string | undefined} The layer name */ - getGeoviewLayerName(): TypeLocalizedString | undefined { + getGeoviewLayerName(): string | undefined { return this.#layerConfig.geoviewLayerConfig.geoviewLayerName; } @@ -112,16 +112,16 @@ export abstract class AbstractBaseLayer { * @returns The layer name */ // eslint-disable-next-line @typescript-eslint/no-unused-vars - getLayerName(layerPath: string): TypeLocalizedString | undefined { + getLayerName(layerPath: string): string | undefined { // TODO: Refactor - After layers refactoring, remove the layerPath parameter here (gotta keep it in the signature for now for the layers-set active switch) return this.#layerName; } /** * Sets the layer name - * @param {TypeLocalizedString | undefined} name - The layer name + * @param {string | undefined} name - The layer name */ - setLayerName(layerPath: string, name: TypeLocalizedString | undefined): void { + setLayerName(layerPath: string, name: string | undefined): void { // TODO: Refactor - After layers refactoring, remove the layerPath parameter here (gotta keep it in the signature for now for the layers-set active switch) this.#layerName = name; this.#emitLayerNameChanged({ layerPath, layerName: name }); @@ -316,7 +316,7 @@ export abstract class AbstractBaseLayer { */ export type LayerNameChangedEvent = { // The new layer name. - layerName?: TypeLocalizedString; + layerName?: string; // TODO: Refactor - Layers refactoring. Remove the layerPath parameter once hybrid work is done // The layer path. layerPath: string; diff --git a/packages/geoview-core/src/geo/layer/gv-layers/abstract-gv-layer.ts b/packages/geoview-core/src/geo/layer/gv-layers/abstract-gv-layer.ts index b51f89331a7..c047d4405f4 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/abstract-gv-layer.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/abstract-gv-layer.ts @@ -32,6 +32,7 @@ import { TypeLegend } from '@/core/stores/store-interface-and-intial-values/laye import { MapEventProcessor } from '@/api/event-processors/event-processor-children/map-event-processor'; import { MapViewer } from '@/geo/map/map-viewer'; import { AbstractBaseLayer } from './abstract-base-layer'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; /** * Abstract Geoview Layer managing an OpenLayer layer. @@ -387,9 +388,9 @@ export abstract class AbstractGVLayer extends AbstractBaseLayer { * Overridable function to return the type of the specified field from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. * - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected getFieldType(fieldName: string): TypeOutfieldsType { // Log logger.logWarning(`getFieldType is not implemented for ${fieldName} on layer path ${this.getLayerPath()}`); return 'string'; @@ -479,10 +480,10 @@ export abstract class AbstractGVLayer extends AbstractBaseLayer { * since the base date. Vector feature dates must be in ISO format. * @param {Feature} features - The features that hold the field values. * @param {string} fieldName - The field name. - * @param {'number' | 'string' | 'date'} fieldType - The field type. + * @param {TypeOutfieldsType} fieldType - The field type. * @returns {string | number | Date} The formatted value of the field. */ - protected getFieldValue(feature: Feature, fieldName: string, fieldType: 'number' | 'string' | 'date'): string | number | Date { + protected getFieldValue(feature: Feature, fieldName: string, fieldType: TypeOutfieldsType): string | number | Date { const fieldValue = feature.get(fieldName); let returnValue: string | number | Date; if (fieldType === 'date') { @@ -567,7 +568,7 @@ export abstract class AbstractGVLayer extends AbstractBaseLayer { // Hold a dictionary built on the fly for the field domains const dictFieldDomains: { [fieldName: string]: codedValueType | rangeDomainType | null } = {}; // Hold a dictionary build on the fly for the field types - const dictFieldTypes: { [fieldName: string]: 'string' | 'number' | 'date' } = {}; + const dictFieldTypes: { [fieldName: string]: TypeOutfieldsType } = {}; // Loop on the promised feature infos let featureKeyCounter = 0; diff --git a/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-esri-dynamic.ts b/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-esri-dynamic.ts index 92fe0bbcf9c..0bf60a27acf 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-esri-dynamic.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-esri-dynamic.ts @@ -9,10 +9,8 @@ import Feature from 'ol/Feature'; import Geometry from 'ol/geom/Geometry'; import { GeometryApi } from '@/geo/layer/geometry/geometry'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { validateExtent, getMinOrMaxExtents } from '@/geo/utils/utilities'; import { Projection } from '@/geo/utils/projection'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { logger } from '@/core/utils/logger'; import { DateMgt } from '@/core/utils/date-mgt'; import { EsriDynamicLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/esri-dynamic-layer-entry-config'; @@ -29,6 +27,7 @@ import { } from '@/geo/map/map-schema-types'; import { esriGetFieldType, esriGetFieldDomain } from '../utils'; import { AbstractGVRaster } from './abstract-gv-raster'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; type TypeFieldOfTheSameValue = { value: string | number | Date; nbOccurence: number }; type TypeQueryTree = { fieldValue: string | number | Date; nextField: TypeQueryTree }[]; @@ -98,9 +97,9 @@ export class GVEsriDynamic extends AbstractGVRaster { /** * Overrides the return of the field type from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected override getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string): TypeOutfieldsType { // Redirect return esriGetFieldType(this.getLayerConfig(), fieldName); } @@ -129,7 +128,7 @@ export class GVEsriDynamic extends AbstractGVRaster { const [geometryType] = layerConfig.getTypeGeometries(); // Fetch the features - let urlRoot = layerConfig.geoviewLayerConfig.metadataAccessPath![AppEventProcessor.getDisplayLanguage(this.getMapId())]!; + let urlRoot = layerConfig.geoviewLayerConfig.metadataAccessPath!; if (!urlRoot.endsWith('/')) urlRoot += '/'; // TODO: we put false so on heavy geometry, dynamic layer can load datatable. If not the featch fails. const url = `${urlRoot}${layerConfig.layerId}/query?where=1=1&outFields=*&f=json&returnGeometry=false`; @@ -275,7 +274,7 @@ export class GVEsriDynamic extends AbstractGVRaster { // If not queryable if (!layerConfig.source?.featureInfo?.queryable) return []; - let identifyUrl = getLocalizedValue(layerConfig.source?.dataAccessPath, AppEventProcessor.getDisplayLanguage(this.getMapId())); + let identifyUrl = layerConfig.source?.dataAccessPath; if (!identifyUrl) return []; identifyUrl = identifyUrl.endsWith('/') ? identifyUrl : `${identifyUrl}/`; @@ -757,7 +756,7 @@ export class GVEsriDynamic extends AbstractGVRaster { override async getExtentFromFeatures(layerPath: string, objectIds: string[]): Promise { // Get url for service from layer entry config const layerEntryConfig = this.getLayerConfig(); - let baseUrl = getLocalizedValue(layerEntryConfig.source.dataAccessPath, AppEventProcessor.getDisplayLanguage(this.getMapId())); + let baseUrl = layerEntryConfig.source.dataAccessPath; const idString = objectIds.join('%2C'); if (baseUrl) { diff --git a/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-esri-image.ts b/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-esri-image.ts index b00c296ff70..a7c00b9007d 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-esri-image.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-esri-image.ts @@ -3,7 +3,6 @@ import { Options as ImageOptions } from 'ol/layer/BaseImage'; import { Image as ImageLayer } from 'ol/layer'; import { Extent } from 'ol/extent'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { DateMgt } from '@/core/utils/date-mgt'; import { logger } from '@/core/utils/logger'; import { EsriImageLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/esri-image-layer-entry-config'; @@ -16,11 +15,11 @@ import { rangeDomainType, } from '@/geo/map/map-schema-types'; import { esriGetFieldType, esriGetFieldDomain } from '../utils'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { validateExtent } from '@/geo/utils/utilities'; import { getLegendStyles } from '@/geo/utils/renderer/geoview-renderer'; import { AbstractGVRaster } from './abstract-gv-raster'; import { TypeLegend } from '@/core/stores/store-interface-and-intial-values/layer-state'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; /** * Manages an Esri Image layer. @@ -81,9 +80,9 @@ export class GVEsriImage extends AbstractGVRaster { /** * Overrides the return of the field type from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected override getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string): TypeOutfieldsType { // TODO: Refactor - Layers refactoring. Is this function really valid for an esri-image? Remove? // Redirect return esriGetFieldType(this.getLayerConfig(), fieldName); @@ -107,10 +106,7 @@ export class GVEsriImage extends AbstractGVRaster { const layerConfig = this.getLayerConfig(); try { if (!layerConfig) return null; - const legendUrl = `${getLocalizedValue( - layerConfig.geoviewLayerConfig.metadataAccessPath, - AppEventProcessor.getDisplayLanguage(this.getMapId()) - )}/legend?f=json`; + const legendUrl = `${layerConfig.geoviewLayerConfig.metadataAccessPath}/legend?f=json`; const response = await fetch(legendUrl); const legendJson: TypeEsriImageLayerLegend = await response.json(); let legendInfo; diff --git a/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-image-static.ts b/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-image-static.ts index e21e2cfe34a..897a23c52cc 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-image-static.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-image-static.ts @@ -6,10 +6,8 @@ import axios from 'axios'; import { Cast, TypeJsonObject } from '@/core/types/global-types'; import { CONST_LAYER_TYPES } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { logger } from '@/core/utils/logger'; import { ImageStaticLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/image-static-layer-entry-config'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { loadImage } from '@/geo/utils/renderer/geoview-renderer'; import { AbstractGVRaster } from './abstract-gv-raster'; import { TypeLegend } from '@/core/stores/store-interface-and-intial-values/layer-state'; @@ -73,7 +71,7 @@ export class GVImageStatic extends AbstractGVRaster { * @returns {blob} A promise of an image blob * @private */ - #getLegendImage(layerConfig: ImageStaticLayerEntryConfig): Promise { + static #getLegendImage(layerConfig: ImageStaticLayerEntryConfig): Promise { const promisedImage = new Promise((resolve) => { const readImage = (blob: Blob): Promise => // eslint-disable-next-line @typescript-eslint/no-shadow @@ -84,10 +82,7 @@ export class GVImageStatic extends AbstractGVRaster { reader.readAsDataURL(blob); }); - let legendUrl: string | undefined = getLocalizedValue( - layerConfig.source.dataAccessPath, - AppEventProcessor.getDisplayLanguage(this.getMapId()) - ); + let legendUrl: string | undefined = layerConfig.source.dataAccessPath; if (legendUrl) { legendUrl = legendUrl.toLowerCase().startsWith('http:') ? `https${legendUrl.slice(4)}` : legendUrl; @@ -110,7 +105,7 @@ export class GVImageStatic extends AbstractGVRaster { override async getLegend(): Promise { const layerConfig = this.getLayerConfig(); try { - const legendImage = await this.#getLegendImage(layerConfig!); + const legendImage = await GVImageStatic.#getLegendImage(layerConfig!); if (!legendImage) { const legend: TypeLegend = { type: CONST_LAYER_TYPES.IMAGE_STATIC, diff --git a/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-wms.ts b/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-wms.ts index ec26a3e296f..447f57baaaf 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-wms.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/raster/gv-wms.ts @@ -9,13 +9,12 @@ import { Extent } from 'ol/extent'; import { Cast, TypeJsonArray, TypeJsonObject } from '@/core/types/global-types'; import { CONST_LAYER_TYPES, TypeWmsLegend, TypeWmsLegendStyle } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; -import { xmlToJson, getLocalizedValue } from '@/core/utils/utilities'; +import { xmlToJson } from '@/core/utils/utilities'; import { DateMgt } from '@/core/utils/date-mgt'; import { getExtentIntersection, validateExtentWhenDefined } from '@/geo/utils/utilities'; import { logger } from '@/core/utils/logger'; import { OgcWmsLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/ogc-wms-layer-entry-config'; import { TypeFeatureInfoEntry } from '@/geo/map/map-schema-types'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { loadImage } from '@/geo/utils/renderer/geoview-renderer'; import { AbstractGVRaster } from './abstract-gv-raster'; import { TypeLegend } from '@/core/stores/store-interface-and-intial-values/layer-state'; @@ -327,10 +326,8 @@ export class GVWMS extends AbstractGVRaster { const legendUrlFromCapabilities = this.#getLegendUrlFromCapabilities(layerConfig, chosenStyle); if (legendUrlFromCapabilities) queryUrl = legendUrlFromCapabilities.OnlineResource as string; else if (Object.keys(this.getLayerConfig().getServiceMetadata()?.Capability?.Request || {}).includes('GetLegendGraphic')) - queryUrl = `${getLocalizedValue( - this.getLayerConfig().geoviewLayerConfig.metadataAccessPath, - AppEventProcessor.getDisplayLanguage(this.getMapId()) - )!}service=WMS&version=1.3.0&request=GetLegendGraphic&FORMAT=image/png&layer=${layerConfig.layerId}`; + queryUrl = `${this.getLayerConfig().geoviewLayerConfig + .metadataAccessPath!}service=WMS&version=1.3.0&request=GetLegendGraphic&FORMAT=image/png&layer=${layerConfig.layerId}`; if (queryUrl) { queryUrl = queryUrl.toLowerCase().startsWith('http:') ? `https${queryUrl.slice(4)}` : queryUrl; diff --git a/packages/geoview-core/src/geo/layer/gv-layers/tile/gv-xyz-tiles.ts b/packages/geoview-core/src/geo/layer/gv-layers/tile/gv-xyz-tiles.ts index 823d4f8131e..89fdc9508ef 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/tile/gv-xyz-tiles.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/tile/gv-xyz-tiles.ts @@ -3,11 +3,11 @@ import { Options as TileOptions } from 'ol/layer/BaseTile'; import XYZ from 'ol/source/XYZ'; import { Extent } from 'ol/extent'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { XYZTilesLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/xyz-layer-entry-config'; import { AbstractGVTile } from './abstract-gv-tile'; import { featureInfoGetFieldType } from '../utils'; import { validateExtent } from '@/geo/utils/utilities'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; /** * Manages a Tile layer. @@ -65,11 +65,11 @@ export class GVXYZTiles extends AbstractGVTile { /** * Overrides the return of the field type from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected override getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string): TypeOutfieldsType { // Redirect - return featureInfoGetFieldType(this.getLayerConfig(), fieldName, AppEventProcessor.getDisplayLanguage(this.getMapId())); + return featureInfoGetFieldType(this.getLayerConfig(), fieldName); } /** diff --git a/packages/geoview-core/src/geo/layer/gv-layers/utils.ts b/packages/geoview-core/src/geo/layer/gv-layers/utils.ts index 82235deecff..be05fb60ebf 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/utils.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/utils.ts @@ -6,9 +6,9 @@ import { codedValueType, rangeDomainType, TypeFieldEntry, + TypeFeatureInfoLayerConfig, } from '@/geo/map/map-schema-types'; -import { TypeDisplayLanguage, TypeLocalizedString } from '@/api/config/types/map-schema-types'; -import { getLocalizedValue } from '@/core/utils/utilities'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; import { EsriDynamicLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/esri-dynamic-layer-entry-config'; import { EsriFeatureLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/esri-feature-layer-entry-config'; @@ -18,29 +18,24 @@ import { EsriImageLayerEntryConfig } from '@/core/utils/config/validation-classe * Returns the type of the specified field. * @param {AbstractBaseLayerEntryConfig} layerConfig The layer config * @param {string} fieldName field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ -export function featureInfoGetFieldType( - layerConfig: AbstractBaseLayerEntryConfig, - fieldName: string, - language: TypeDisplayLanguage -): 'string' | 'date' | 'number' { - const fieldDefinitions = layerConfig.getLayerMetadata()!.source.featureInfo; - const fieldIndex = getLocalizedValue(Cast(fieldDefinitions.outfields), language)?.split(',').indexOf(fieldName); - if (!fieldIndex || fieldIndex === -1) return 'string'; - return (fieldDefinitions.fieldTypes as string).split(',')[fieldIndex!] as 'string' | 'date' | 'number'; +export function featureInfoGetFieldType(layerConfig: AbstractBaseLayerEntryConfig, fieldName: string): TypeOutfieldsType { + const fieldDefinitions = layerConfig.getLayerMetadata()?.source.featureInfo as unknown as TypeFeatureInfoLayerConfig; + const outFieldEntry = fieldDefinitions.outfields?.find((fieldDefinition) => fieldDefinition.name === fieldName); + return outFieldEntry?.type || 'string'; } /** * Returns the type of the specified field. * @param {EsriDynamicLayerEntryConfig | EsriFeatureLayerEntryConfig | EsriImageLayerEntryConfig} layerConfig The ESRI layer config * @param {string} fieldName field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ export function esriGetFieldType( layerConfig: EsriDynamicLayerEntryConfig | EsriFeatureLayerEntryConfig | EsriImageLayerEntryConfig, fieldName: string -): 'string' | 'date' | 'number' { +): TypeOutfieldsType { const esriFieldDefinitions = layerConfig.getLayerMetadata()?.fields as TypeJsonArray; const fieldDefinition = esriFieldDefinitions.find((metadataEntry) => metadataEntry.name === fieldName); if (!fieldDefinition) return 'string'; diff --git a/packages/geoview-core/src/geo/layer/gv-layers/vector/abstract-gv-vector.ts b/packages/geoview-core/src/geo/layer/gv-layers/vector/abstract-gv-vector.ts index ae87356e7f7..93aae8d9437 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/vector/abstract-gv-vector.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/vector/abstract-gv-vector.ts @@ -12,7 +12,6 @@ import { ProjectionLike } from 'ol/proj'; import { DateMgt } from '@/core/utils/date-mgt'; import { FilterNodeArrayType, NodeType } from '@/geo/utils/renderer/geoview-renderer-types'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { logger } from '@/core/utils/logger'; import { VectorLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-layer-entry-config'; import { TypeFeatureInfoEntry } from '@/geo/map/map-schema-types'; @@ -20,8 +19,8 @@ import { analyzeLayerFilter, getAndCreateFeatureStyle } from '@/geo/utils/render import { featureInfoGetFieldType } from '../utils'; import { AbstractGVLayer } from '../abstract-gv-layer'; import { AbstractGeoViewLayer } from '../../geoview-layers/abstract-geoview-layers'; -import { getLocalizedValue } from '@/core/utils/utilities'; import { getMinOrMaxExtents } from '@/geo/utils/utilities'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; /** * Abstract Geoview Layer managing an OpenLayer vector type layer. @@ -36,11 +35,8 @@ export abstract class AbstractGVVector extends AbstractGVLayer { protected constructor(mapId: string, olSource: VectorSource, layerConfig: VectorLayerEntryConfig) { super(mapId, olSource, layerConfig); - // TODO: remove link to language, layer should be created in one language and recreated if needed to change - const language = AppEventProcessor.getDisplayLanguage(mapId); - // Get the style label in case we need it later - const label = getLocalizedValue(layerConfig.layerName, language) || layerConfig.layerId; + const label = layerConfig.layerName || layerConfig.layerId; // Create the vector layer options. const layerOptions: VectorLayerOptions = { @@ -99,12 +95,11 @@ export abstract class AbstractGVVector extends AbstractGVLayer { /** * Overrides the return of the field type from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. - * @param {AbstractBaseLayerEntryConfig} layerConfig - The layer configuration. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected override getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string): TypeOutfieldsType { // Redirect - return featureInfoGetFieldType(this.getLayerConfig(), fieldName, AppEventProcessor.getDisplayLanguage(this.getMapId())); + return featureInfoGetFieldType(this.getLayerConfig(), fieldName); } /** diff --git a/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-esri-feature.ts b/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-esri-feature.ts index 92ad3509336..fac831cf400 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-esri-feature.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-esri-feature.ts @@ -4,6 +4,7 @@ import { EsriFeatureLayerEntryConfig } from '@/core/utils/config/validation-clas import { codedValueType, rangeDomainType } from '@/geo/map/map-schema-types'; import { esriGetFieldType, esriGetFieldDomain } from '../utils'; import { AbstractGVVector } from './abstract-gv-vector'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; /** * Manages an Esri Feature layer. @@ -34,9 +35,9 @@ export class GVEsriFeature extends AbstractGVVector { /** * Overrides the return of the field type from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected override getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string): TypeOutfieldsType { // Redirect return esriGetFieldType(this.getLayerConfig(), fieldName); } diff --git a/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-ogc-feature.ts b/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-ogc-feature.ts index deb5bd3cc6c..8e32af28ca4 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-ogc-feature.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-ogc-feature.ts @@ -1,6 +1,7 @@ import VectorSource from 'ol/source/Vector'; import { AbstractGVVector } from './abstract-gv-vector'; import { OgcFeatureLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/ogc-layer-entry-config'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; /** * Manages an OGC-Feature layer. @@ -33,9 +34,9 @@ export class GVOGCFeature extends AbstractGVVector { /** * Overrides the return of the field type from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected override getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string): TypeOutfieldsType { const fieldDefinitions = this.getLayerConfig().getLayerMetadata()!; const fieldEntryType = (fieldDefinitions[fieldName].type as string).split(':').slice(-1)[0] as string; if (fieldEntryType === 'date') return 'date'; diff --git a/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-vector-tiles.ts b/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-vector-tiles.ts index c5b198bf6e2..fb418da78a1 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-vector-tiles.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-vector-tiles.ts @@ -2,10 +2,10 @@ import VectorTileLayer from 'ol/layer/VectorTile'; import { Options as TileOptions } from 'ol/layer/BaseTile'; import { VectorTile } from 'ol/source'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { VectorTilesLayerEntryConfig } from '@/core/utils/config/validation-classes/raster-validation-classes/vector-tiles-layer-entry-config'; import { featureInfoGetFieldType } from '../utils'; import { AbstractGVVectorTile } from './abstract-gv-vector-tile'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; /** * Manages a Vector Tiles layer. @@ -45,10 +45,10 @@ export class GVVectorTiles extends AbstractGVVectorTile { /** * Overrides the return of the field type from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected override getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string): TypeOutfieldsType { // Redirect - return featureInfoGetFieldType(this.getLayerConfig(), fieldName, AppEventProcessor.getDisplayLanguage(this.getMapId())); + return featureInfoGetFieldType(this.getLayerConfig(), fieldName); } } diff --git a/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-wfs.ts b/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-wfs.ts index 1c699e48603..e5f0ce6dea0 100644 --- a/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-wfs.ts +++ b/packages/geoview-core/src/geo/layer/gv-layers/vector/gv-wfs.ts @@ -2,6 +2,7 @@ import { Vector as VectorSource } from 'ol/source'; import { TypeJsonArray } from '@/core/types/global-types'; import { AbstractGVVector } from './abstract-gv-vector'; import { WfsLayerEntryConfig } from '@/core/utils/config/validation-classes/vector-validation-classes/wfs-layer-entry-config'; +import { TypeOutfieldsType } from '@/api/config/types/map-schema-types'; /** * Manages a WFS layer. @@ -34,9 +35,9 @@ export class GVWFS extends AbstractGVVector { /** * Overrides the return of the field type from the metadata. If the type can not be found, return 'string'. * @param {string} fieldName - The field name for which we want to get the type. - * @returns {'string' | 'date' | 'number'} The type of the field. + * @returns {TypeOutfieldsType} The type of the field. */ - protected override getFieldType(fieldName: string): 'string' | 'date' | 'number' { + protected override getFieldType(fieldName: string): TypeOutfieldsType { const fieldDefinitions = this.getLayerConfig().getLayerMetadata() as TypeJsonArray; const fieldDefinition = fieldDefinitions.find((metadataEntry) => metadataEntry.name === fieldName); if (!fieldDefinition) return 'string'; diff --git a/packages/geoview-core/src/geo/layer/layer-mockup.ts b/packages/geoview-core/src/geo/layer/layer-mockup.ts index 5c1b5ec6d6c..c95a39990e6 100644 --- a/packages/geoview-core/src/geo/layer/layer-mockup.ts +++ b/packages/geoview-core/src/geo/layer/layer-mockup.ts @@ -35,8 +35,8 @@ export abstract class LayerMockup { return { geoviewLayerId: 'esriTop100', geoviewLayerType: 'esriFeature', - geoviewLayerName: { en: 'My custom default label for creation' }, - metadataAccessPath: { en: 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer' }, + geoviewLayerName: 'My custom default label for creation', + metadataAccessPath: 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/900A_and_top_100_en/MapServer', serviceDateFormat: 'DD/MM/YYYY HH:MM:SSZ', externalDateFormat: 'DD/MM/YYYY HH:MM:SSZ', listOfLayerEntryConfig: [ @@ -979,7 +979,7 @@ export abstract class LayerMockup { static configPolygonsMetadata(): TypeJsonObject { return { layerId: 'polygons.json', - layerName: { en: 'Polygons' }, + layerName: 'Polygons', source: { featureInfo: { queryable: true, @@ -1066,7 +1066,7 @@ export abstract class LayerMockup { static configLinesMetadata(): TypeJsonObject { return { layerId: 'lines.json', - layerName: { en: 'Lines' }, + layerName: 'Lines', source: { featureInfo: { queryable: false, @@ -1111,7 +1111,7 @@ export abstract class LayerMockup { static configIconPointsMetadata(): TypeJsonObject { return { layerId: 'icon_points.json', - layerName: { en: 'Icons' }, + layerName: 'Icons', source: { featureInfo: { queryable: true, @@ -1156,7 +1156,7 @@ export abstract class LayerMockup { static configPointsMetadata(): TypeJsonObject { return { layerId: 'points.json', - layerName: { en: 'Points' }, + layerName: 'Points', source: { featureInfo: { queryable: false, @@ -1217,7 +1217,7 @@ export abstract class LayerMockup { static configPoints1Metadata(): TypeJsonObject { return { layerId: 'points_1.json', - layerName: { en: 'Points_1' }, + layerName: 'Points_1', source: { featureInfo: { queryable: true, @@ -1278,7 +1278,7 @@ export abstract class LayerMockup { static configPoints2Metadata(): TypeJsonObject { return { layerId: 'points_2.json', - layerName: { en: 'Points_1' }, + layerName: 'Points_1', source: { featureInfo: { queryable: true, @@ -1339,7 +1339,7 @@ export abstract class LayerMockup { static configPoints3Metadata(): TypeJsonObject { return { layerId: 'points_3.json', - layerName: { en: 'Points_1' }, + layerName: 'Points_1', source: { featureInfo: { queryable: false, diff --git a/packages/geoview-core/src/geo/layer/layer-sets/abstract-layer-set.ts b/packages/geoview-core/src/geo/layer/layer-sets/abstract-layer-set.ts index 8dcccd024ea..0b9e30c1237 100644 --- a/packages/geoview-core/src/geo/layer/layer-sets/abstract-layer-set.ts +++ b/packages/geoview-core/src/geo/layer/layer-sets/abstract-layer-set.ts @@ -12,10 +12,9 @@ import { import { TypeAllFeatureInfoResultSetEntry } from '@/core/stores/store-interface-and-intial-values/data-table-state'; import { TypeFeatureInfoResultSetEntry, TypeHoverResultSetEntry } from '@/core/stores/store-interface-and-intial-values/feature-info-state'; import { AbstractGeoViewLayer, LayerNameChangedEvent } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; -import { generateId, getLocalizedValue, whenThisThen } from '@/core/utils/utilities'; +import { generateId, whenThisThen } from '@/core/utils/utilities'; import { ConfigBaseClass, LayerStatusChangedEvent } from '@/core/utils/config/validation-classes/config-base-class'; import { LayerApi } from '@/geo/layer/layer'; -import { AppEventProcessor } from '@/api/event-processors/event-processor-children/app-event-processor'; import { AbstractGVLayer } from '../gv-layers/abstract-gv-layer'; import { AbstractBaseLayerEntryConfig } from '@/core/utils/config/validation-classes/abstract-base-layer-entry-config'; import { EsriDynamic } from '../geoview-layers/raster/esri-dynamic'; @@ -183,7 +182,7 @@ export abstract class AbstractLayerSet { this.resultSet[layerConfig.layerPath] = { layerPath: layerConfig.layerPath, layerStatus: layerConfig.layerStatus, - layerName: getLocalizedValue(layerConfig.layerName, AppEventProcessor.getDisplayLanguage(this.getMapId()))!, + layerName: layerConfig.layerName!, }; // Register the layer status changed handler @@ -247,7 +246,7 @@ export abstract class AbstractLayerSet { // TODO: Refactor - Layers refactoring. Remove the layerPath parameter once hybrid work is done // Get layer name - const layerName = getLocalizedValue(layer.getLayerName(layerPath), AppEventProcessor.getDisplayLanguage(this.getMapId()))!; + const layerName = layer.getLayerName(layerPath)!; // If not there (wasn't pre-registered via a config-registration) if (!(layerPath in this.resultSet)) { @@ -344,10 +343,7 @@ export abstract class AbstractLayerSet { // If the layer path exists for the layer name that changed if (this.resultSet[layerNameEvent.layerPath]) { // Call the overridable function to process a layer name change - this.onProcessNameChanged( - layerNameEvent.layerPath, - getLocalizedValue(layerNameEvent.layerName, AppEventProcessor.getDisplayLanguage(this.getMapId()))! - ); + this.onProcessNameChanged(layerNameEvent.layerPath, layerNameEvent.layerName!); // Propagate to the store this.onPropagateToStore(this.resultSet[layerNameEvent.layerPath], 'layerName'); @@ -372,10 +368,7 @@ export abstract class AbstractLayerSet { // Update the name with a possibly updated layerName during layer status progression // (depending on how this translates in the new layers process, might not need this anymore) - this.resultSet[layerConfig.layerPath].layerName = getLocalizedValue( - layerConfig.layerName || layerConfig.geoviewLayerConfig.geoviewLayerName, - AppEventProcessor.getDisplayLanguage(this.getMapId()) - )!; + this.resultSet[layerConfig.layerPath].layerName = layerConfig.layerName || layerConfig.geoviewLayerConfig.geoviewLayerName!; } /** diff --git a/packages/geoview-core/src/geo/layer/layer.ts b/packages/geoview-core/src/geo/layer/layer.ts index 173021d044d..e690bf452c3 100644 --- a/packages/geoview-core/src/geo/layer/layer.ts +++ b/packages/geoview-core/src/geo/layer/layer.ts @@ -13,7 +13,7 @@ import { FeatureHighlight } from '@/geo/map/feature-highlight'; import { MapEventProcessor } from '@/api/event-processors/event-processor-children/map-event-processor'; import { ConfigValidation } from '@/core/utils/config/config-validation'; -import { createLocalizedString, generateId, whenThisThen } from '@/core/utils/utilities'; +import { generateId, whenThisThen } from '@/core/utils/utilities'; import { ConfigBaseClass } from '@/core/utils/config/validation-classes/config-base-class'; import { logger } from '@/core/utils/logger'; import { AbstractGeoViewLayer, LayerCreationEvent, LayerRequestingEvent } from '@/geo/layer/geoview-layers/abstract-geoview-layers'; @@ -1514,7 +1514,7 @@ export class LayerApi { // If found if (layer) { // Set the layer name on the layer - layer.setLayerName(layerPath, createLocalizedString(name)); + layer.setLayerName(layerPath, name); } else { logger.logError(`Unable to find layer ${layerPath}`); } diff --git a/packages/geoview-core/src/geo/map/map-schema-types.ts b/packages/geoview-core/src/geo/map/map-schema-types.ts index 821bb25dcad..4f646b0292b 100644 --- a/packages/geoview-core/src/geo/map/map-schema-types.ts +++ b/packages/geoview-core/src/geo/map/map-schema-types.ts @@ -13,7 +13,6 @@ import { TypeOverlayObjects, TypeValidMapProjectionCodes, TypeDisplayTheme, - TypeLocalizedString, TypeLayerStates, TypeLayerControls, TypePostSettings, @@ -84,7 +83,7 @@ export type TypeFeatureInfoLayerConfig = { export type TypeBaseSourceVectorInitialConfig = { /** Path used to access the data. */ - dataAccessPath?: TypeLocalizedString; + dataAccessPath?: string; /** Settings to use when loading a GeoJSON layer using a POST instead of a GET */ postSettings?: TypePostSettings; /** The feature format used by the XHR feature loader when url is set. */ @@ -290,7 +289,7 @@ export type TypeBaseSourceImageInitialConfig = { * The service endpoint of the layer (English/French). If not specified, the metadataAccessPath of the GeoView parent * layer is used */ - dataAccessPath?: TypeLocalizedString; + dataAccessPath?: string; /** * The crossOrigin attribute for loaded images. Note that you must provide a crossOrigin value if you want to access pixel data * with the Canvas renderer. @@ -377,9 +376,9 @@ export type TypeGeoviewLayerConfig = { * The display name of the layer (English/French). If it is not present the viewer will make an attempt to scrape this * information. */ - geoviewLayerName?: TypeLocalizedString; + geoviewLayerName?: string; /** The GeoView layer access path (English/French). */ - metadataAccessPath?: TypeLocalizedString; + metadataAccessPath?: string; /** Type of GeoView layer. */ geoviewLayerType: TypeGeoviewLayerType; /** Date format used by the service endpoint. */ @@ -413,7 +412,7 @@ export type GeoCoreLayerConfig = { // TO.DOCONT: I think it is working with other type of layer. Now having geocore not a layer type anymore, we should be able to overrides. // TO.DOCONT: For this we will need a little trick because when we create the config the setting are set at the root level and in our config it will take it from the layerID. // TO.DOCONT: There is refactor to do to make this work for all layer type. Global setting should be cascade to child of the root layer. - geoviewLayerName: TypeLocalizedString; + geoviewLayerName: string; }; /** diff --git a/packages/geoview-time-slider/schema.json b/packages/geoview-time-slider/schema.json index d7a27a3c85f..e305fdd55a3 100644 --- a/packages/geoview-time-slider/schema.json +++ b/packages/geoview-time-slider/schema.json @@ -12,34 +12,14 @@ "type": "object", "properties": { "title": { - "type": "object", - "properties": { - "en": { - "type": "string", - "default": "Time slider title", - "description": "The English version of the string." - }, - "fr": { - "type": "string", - "default": "Titre du curseur temporel", - "description": "The French version of the string. " - } - } + "type": "string", + "default": "Time slider title", + "description": "The title to display" }, "description": { - "type": "object", - "properties": { - "en": { - "type": "string", - "default": "Time slider description", - "description": "The English version of the string." - }, - "fr": { - "type": "string", - "default": "Description du curseur temporel", - "description": "The French version of the string. " - } - } + "type": "string", + "default": "Time slider description", + "description": "The description to use." }, "locked": { "type": "boolean", diff --git a/packages/geoview-time-slider/src/time-slider-types.tsx b/packages/geoview-time-slider/src/time-slider-types.tsx index 70b24083e36..dfd29bc8504 100644 --- a/packages/geoview-time-slider/src/time-slider-types.tsx +++ b/packages/geoview-time-slider/src/time-slider-types.tsx @@ -1,10 +1,9 @@ import { TimeDimension } from 'geoview-core/src/core/utils/date-mgt'; -import { TypeLocalizedString } from 'geoview-core/src/api/config/types/map-schema-types'; export type SliderProps = { layerPaths: string[]; - title: TypeLocalizedString; - description: TypeLocalizedString; + title: string; + description: string; locked: boolean; reversed: boolean; defaultValue: string; diff --git a/packages/geoview-time-slider/src/time-slider.tsx b/packages/geoview-time-slider/src/time-slider.tsx index e675e246a34..c5353176607 100644 --- a/packages/geoview-time-slider/src/time-slider.tsx +++ b/packages/geoview-time-slider/src/time-slider.tsx @@ -7,7 +7,7 @@ import { } from 'geoview-core/src/core/stores/store-interface-and-intial-values/time-slider-state'; import { useLayerLegendLayers } from 'geoview-core/src/core/stores/store-interface-and-intial-values/layer-state'; import { LegendEventProcessor } from 'geoview-core/src/api/event-processors/event-processor-children/legend-event-processor'; -import { getLocalizedValue, getLocalizedMessage } from 'geoview-core/src/core/utils/utilities'; +import { getLocalizedMessage } from 'geoview-core/src/core/utils/utilities'; import { useAppDisplayLanguage } from 'geoview-core/src/core/stores/store-interface-and-intial-values/app-state'; import { logger } from 'geoview-core/src/core/utils/logger'; @@ -224,8 +224,8 @@ export function TimeSlider(props: TimeSliderProps): JSX.Element { // TODO: add mechanism to initialize these values during store onInitialize const sliderConfig = config?.sliders?.find((o: { layerPaths: string[] }) => o.layerPaths.includes(layerPath)); - if (title === undefined) setTitle(layerPath, getLocalizedValue(sliderConfig?.title, displayLanguage) || ''); - if (description === undefined) setDescription(layerPath, getLocalizedValue(sliderConfig?.description, displayLanguage) || ''); + if (title === undefined) setTitle(layerPath, sliderConfig?.title || ''); + if (description === undefined) setDescription(layerPath, sliderConfig?.description || ''); if (locked === undefined) setLocked(layerPath, sliderConfig?.locked !== undefined ? sliderConfig?.locked : false); if (reversed === undefined) setReversed(layerPath, sliderConfig?.reversed !== undefined ? sliderConfig?.reversed : false); if (defaultValue === undefined) setDefaultValue(layerPath, sliderConfig?.defaultValue || '');