From bdbf207baebb3a2aa8c99b8254d0d583bbdddd32 Mon Sep 17 00:00:00 2001 From: Jakob Miksch Date: Tue, 4 Oct 2022 16:22:40 +0000 Subject: [PATCH 1/2] feat: add plugin-chart-cartodiagram --- docs/docs/security/security.mdx | 3 + superset-frontend/jest.config.js | 2 +- superset-frontend/package-lock.json | 1748 +++++++++++++++-- superset-frontend/package.json | 8 + .../superset-ui-chart-controls/src/index.ts | 1 + .../src/chart/types/QueryResponse.ts | 8 + .../test/chart/types/QueryResponse.test.ts | 68 + .../plugin-chart-cartodiagram/README.md | 67 + .../plugin-chart-cartodiagram/package.json | 51 + .../src/CartodiagramPlugin.tsx | 59 + .../src/components/ChartLayer.tsx | 282 +++ .../src/components/ChartWrapper.tsx | 53 + .../src/components/OlChartMap.tsx | 409 ++++ .../src/images/example1.png | Bin 0 -> 274679 bytes .../src/images/example2.png | Bin 0 -> 223202 bytes .../src/images/loading.gif | Bin 0 -> 79023 bytes .../src/images/thumbnail.png | Bin 0 -> 56888 bytes .../plugin-chart-cartodiagram/src/index.ts | 20 + .../src/plugin/buildQuery.ts | 58 + .../src/plugin/controlPanel.ts | 203 ++ .../src/plugin/index.ts | 77 + .../src/plugin/transformProps.ts | 92 + .../src/typeguards.ts | 31 + .../plugin-chart-cartodiagram/src/types.ts | 210 ++ .../src/util/chartUtil.tsx | 86 + .../src/util/controlPanelUtil.tsx | 128 ++ .../src/util/geometryUtil.ts | 60 + .../src/util/layerUtil.tsx | 160 ++ .../src/util/mapUtil.tsx | 52 + .../src/util/serviceUtil.ts | 59 + .../src/util/transformPropsUtil.ts | 340 ++++ .../src/util/zoomUtil.ts | 21 + .../test/components/chartLayer.test.ts | 48 + .../test/index.test.ts | 33 + .../test/plugin/buildQuery.test.ts | 66 + .../test/plugin/index.test.ts | 26 + .../test/plugin/transformProps.test.ts | 150 ++ .../test/testData.ts | 113 ++ .../test/tsconfig.json | 22 + .../test/util/chartUtil.test.ts | 77 + .../test/util/controlPanelUtil.test.tsx | 212 ++ .../test/util/geometryUtil.test.ts | 102 + .../test/util/layerUtil.test.ts | 95 + .../test/util/mapUtil.test.ts | 116 ++ .../test/util/serviceUtil.test.ts | 46 + .../test/util/transformPropsUtil.test.ts | 249 +++ .../plugin-chart-cartodiagram/tsconfig.json | 25 + .../types/external.d.ts | 28 + .../plugins/plugin-chart-echarts/package.json | 2 +- .../plugin-chart-table/src/utils/extent.ts | 1 - .../LayerConfigsControl/FlatLayerTree.tsx | 146 ++ .../LayerConfigsControl/GeoStylerWrapper.tsx | 38 + .../LayerConfigsControl.tsx | 193 ++ .../LayerConfigsPopoverContent.tsx | 506 +++++ .../LayerConfigsControl/LayerTreeItem.tsx | 72 + .../LayerConfigsControl/dragDropUtil.tsx | 64 + .../LayerConfigsControl/serviceUtil.ts | 39 + .../LayerConfigsControl/typeguards.ts | 31 + .../controls/LayerConfigsControl/types.ts | 92 + .../controls/MapViewControl/ExtentTag.tsx | 48 + .../MapViewControl/MapViewControl.tsx | 192 ++ .../MapViewControl/MapViewPopoverContent.tsx | 200 ++ .../controls/MapViewControl/types.ts | 43 + .../controls/SelectAsyncControl/index.tsx | 22 +- .../ZoomConfigControl/ZoomConfigControl.tsx | 251 +++ .../ZoomConfigControl/ZoomConfigsChart.tsx | 183 ++ .../controls/ZoomConfigControl/typeguards.ts | 36 + .../controls/ZoomConfigControl/types.ts | 93 + .../ZoomConfigControl/zoomUtil.test.ts | 199 ++ .../controls/ZoomConfigControl/zoomUtil.ts | 348 ++++ .../src/explore/components/controls/index.js | 6 + .../src/visualizations/presets/MainPreset.js | 14 + superset/config.py | 2 + 73 files changed, 8448 insertions(+), 137 deletions(-) create mode 100644 superset-frontend/packages/superset-ui-core/test/chart/types/QueryResponse.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/README.md create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/package.json create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/CartodiagramPlugin.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/components/ChartLayer.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/components/ChartWrapper.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/components/OlChartMap.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/images/example1.png create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/images/example2.png create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/images/loading.gif create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/images/thumbnail.png create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/index.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/buildQuery.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/controlPanel.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/index.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/transformProps.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/typeguards.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/types.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/util/chartUtil.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/util/controlPanelUtil.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/util/geometryUtil.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/util/layerUtil.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/util/mapUtil.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/util/serviceUtil.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/util/transformPropsUtil.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/src/util/zoomUtil.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/components/chartLayer.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/index.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/buildQuery.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/index.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/transformProps.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/testData.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/tsconfig.json create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/util/chartUtil.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/util/controlPanelUtil.test.tsx create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/util/geometryUtil.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/util/layerUtil.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/util/mapUtil.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/util/serviceUtil.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/util/transformPropsUtil.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/tsconfig.json create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/types/external.d.ts create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/FlatLayerTree.tsx create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/GeoStylerWrapper.tsx create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsControl.tsx create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsPopoverContent.tsx create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerTreeItem.tsx create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/dragDropUtil.tsx create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/serviceUtil.ts create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/typeguards.ts create mode 100644 superset-frontend/src/explore/components/controls/LayerConfigsControl/types.ts create mode 100644 superset-frontend/src/explore/components/controls/MapViewControl/ExtentTag.tsx create mode 100644 superset-frontend/src/explore/components/controls/MapViewControl/MapViewControl.tsx create mode 100644 superset-frontend/src/explore/components/controls/MapViewControl/MapViewPopoverContent.tsx create mode 100644 superset-frontend/src/explore/components/controls/MapViewControl/types.ts create mode 100644 superset-frontend/src/explore/components/controls/ZoomConfigControl/ZoomConfigControl.tsx create mode 100644 superset-frontend/src/explore/components/controls/ZoomConfigControl/ZoomConfigsChart.tsx create mode 100644 superset-frontend/src/explore/components/controls/ZoomConfigControl/typeguards.ts create mode 100644 superset-frontend/src/explore/components/controls/ZoomConfigControl/types.ts create mode 100644 superset-frontend/src/explore/components/controls/ZoomConfigControl/zoomUtil.test.ts create mode 100644 superset-frontend/src/explore/components/controls/ZoomConfigControl/zoomUtil.ts diff --git a/docs/docs/security/security.mdx b/docs/docs/security/security.mdx index 5425e7368c05a..b2e805c2b57e2 100644 --- a/docs/docs/security/security.mdx +++ b/docs/docs/security/security.mdx @@ -253,6 +253,9 @@ You can get current nonce value by calling jinja macro `csp_nonce()`. connect-src 'self' https://api.mapbox.com https://events.mapbox.com ``` +- Cartodiagram charts request map data (image and json) from external resources that can be edited by users, +and therefore either require a list of allowed domains to request from or a wildcard (`'*'`) for `img-src` and `connect-src`. + * Other CSP directives default to `'self'` to limit content to the same origin as the Superset server. In order to adjust provided CSP configuration to your needs, follow the instructions and examples provided in diff --git a/superset-frontend/jest.config.js b/superset-frontend/jest.config.js index 22e5db98b312d..23482723a4ed0 100644 --- a/superset-frontend/jest.config.js +++ b/superset-frontend/jest.config.js @@ -56,7 +56,7 @@ module.exports = { moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'], snapshotSerializers: ['@emotion/jest/enzyme-serializer'], transformIgnorePatterns: [ - 'node_modules/(?!d3-(interpolate|color|time)|remark-gfm|markdown-table|micromark-*.|decode-named-character-reference|character-entities|mdast-util-*.|unist-util-*.|ccount|escape-string-regexp|nanoid|@rjsf/*.|sinon|echarts|zrender|fetch-mock|pretty-ms|parse-ms)', + 'node_modules/(?!d3-(interpolate|color|time)|remark-gfm|markdown-table|micromark-*.|decode-named-character-reference|character-entities|mdast-util-*.|unist-util-*.|ccount|escape-string-regexp|nanoid|@rjsf/*.|sinon|echarts|zrender|fetch-mock|pretty-ms|parse-ms|ol)', ], globals: { __DEV__: true, diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index c19eafc75c2c4..a3f41c75b5438 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -44,6 +44,7 @@ "@superset-ui/legacy-plugin-chart-world-map": "file:./plugins/legacy-plugin-chart-world-map", "@superset-ui/legacy-preset-chart-deckgl": "file:./plugins/legacy-preset-chart-deckgl", "@superset-ui/legacy-preset-chart-nvd3": "file:./plugins/legacy-preset-chart-nvd3", + "@superset-ui/plugin-chart-cartodiagram": "file:./plugins/plugin-chart-cartodiagram", "@superset-ui/plugin-chart-echarts": "file:./plugins/plugin-chart-echarts", "@superset-ui/plugin-chart-handlebars": "file:./plugins/plugin-chart-handlebars", "@superset-ui/plugin-chart-pivot-table": "file:./plugins/plugin-chart-pivot-table", @@ -71,11 +72,17 @@ "d3-scale": "^2.1.2", "dayjs": "^1.11.13", "dom-to-image-more": "^3.2.0", + "echarts": "^5.4.1", "emotion-rgba": "0.0.12", "fast-glob": "^3.3.2", "fs-extra": "^11.2.0", "fuse.js": "^7.0.0", "geolib": "^2.0.24", + "geostyler": "^12.0.2", + "geostyler-data": "^1.0.0", + "geostyler-openlayers-parser": "^4.3.0", + "geostyler-style": "^7.5.0", + "geostyler-wfs-parser": "^2.0.3", "googleapis": "^130.0.0", "html-webpack-plugin": "^5.3.2", "immer": "^10.1.1", @@ -95,6 +102,7 @@ "mousetrap": "^1.6.5", "mustache": "^4.2.0", "nanoid": "^5.0.7", + "ol": "^7.5.2", "polished": "^4.3.1", "prop-types": "^15.8.1", "query-string": "^6.13.7", @@ -3509,27 +3517,28 @@ "node": ">=0.1.95" } }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "dev": true, + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "license": "MIT", - "peer": true, "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { "node": ">=12" } }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@ctrl/tinycolor": { "version": "3.6.1", "license": "MIT", @@ -4548,6 +4557,83 @@ "node": ">=10.0.0" } }, + "node_modules/@dnd-kit/accessibility": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz", + "integrity": "sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/accessibility/node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "license": "0BSD" + }, + "node_modules/@dnd-kit/core": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.1.0.tgz", + "integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==", + "license": "MIT", + "dependencies": { + "@dnd-kit/accessibility": "^3.1.0", + "@dnd-kit/utilities": "^3.2.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/core/node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "license": "0BSD" + }, + "node_modules/@dnd-kit/sortable": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "license": "MIT", + "dependencies": { + "@dnd-kit/utilities": "^3.2.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.0.7", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/sortable/node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "license": "0BSD" + }, + "node_modules/@dnd-kit/utilities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", + "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/utilities/node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "license": "0BSD" + }, "node_modules/@emnapi/core": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz", @@ -5586,6 +5672,15 @@ "node": ">=6.9.0" } }, + "node_modules/@icons/material": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", + "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, "node_modules/@inquirer/figures": { "version": "1.0.3", "devOptional": true, @@ -7452,6 +7547,28 @@ "node": ">= 0.6" } }, + "node_modules/@mapbox/mapbox-gl-style-spec": { + "version": "13.28.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz", + "integrity": "sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==", + "license": "ISC", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/unitbezier": "^0.0.0", + "csscolorparser": "~1.0.2", + "json-stringify-pretty-compact": "^2.0.0", + "minimist": "^1.2.6", + "rw": "^1.3.3", + "sort-object": "^0.3.2" + }, + "bin": { + "gl-style-composite": "bin/gl-style-composite.js", + "gl-style-format": "bin/gl-style-format.js", + "gl-style-migrate": "bin/gl-style-migrate.js", + "gl-style-validate": "bin/gl-style-validate.js" + } + }, "node_modules/@mapbox/mapbox-gl-supported": { "version": "2.0.1", "license": "BSD-3-Clause" @@ -7583,6 +7700,32 @@ "version": "1.0.1", "license": "MIT" }, + "node_modules/@monaco-editor/loader": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz", + "integrity": "sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" + }, + "peerDependencies": { + "monaco-editor": ">= 0.21.0 < 1" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.6.0.tgz", + "integrity": "sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.4.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", @@ -8900,6 +9043,12 @@ "@octokit/openapi-types": "^11.2.0" } }, + "node_modules/@petamoriken/float16": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.7.tgz", + "integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "license": "MIT", @@ -12488,6 +12637,10 @@ "resolved": "plugins/legacy-preset-chart-nvd3", "link": true }, + "node_modules/@superset-ui/plugin-chart-cartodiagram": { + "resolved": "plugins/plugin-chart-cartodiagram", + "link": true + }, "node_modules/@superset-ui/plugin-chart-echarts": { "resolved": "plugins/plugin-chart-echarts", "link": true @@ -12908,7 +13061,6 @@ }, "node_modules/@swc/core": { "version": "1.4.0", - "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "optional": true, @@ -12963,14 +13115,12 @@ }, "node_modules/@swc/counter": { "version": "0.1.3", - "dev": true, "license": "Apache-2.0", "optional": true, "peer": true }, "node_modules/@swc/types": { "version": "0.1.5", - "dev": true, "license": "Apache-2.0", "optional": true, "peer": true @@ -13157,27 +13307,19 @@ }, "node_modules/@tsconfig/node10": { "version": "1.0.8", - "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.9", - "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.1", - "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.2", - "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", @@ -13369,10 +13511,40 @@ "@types/node": "*" } }, + "node_modules/@types/chroma-js": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.4.4.tgz", + "integrity": "sha512-/DTccpHTaKomqussrn+ciEvfW4k6NAHzNzs/sts1TCqg333qNxOhy8TNIoQCmbGG3Tl8KdEhkGAssb1n3mTXiQ==", + "license": "MIT" + }, "node_modules/@types/classnames": { "version": "2.2.10", "license": "MIT" }, + "node_modules/@types/color": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.6.tgz", + "integrity": "sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==", + "license": "MIT", + "dependencies": { + "@types/color-convert": "*" + } + }, + "node_modules/@types/color-convert": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.4.tgz", + "integrity": "sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==", + "license": "MIT", + "dependencies": { + "@types/color-name": "^1.1.0" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.5.tgz", + "integrity": "sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==", + "license": "MIT" + }, "node_modules/@types/connect": { "version": "3.4.35", "license": "MIT", @@ -13580,8 +13752,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/file-saver": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz", + "integrity": "sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==", + "license": "MIT" + }, "node_modules/@types/geojson": { - "version": "7946.0.8", + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", "license": "MIT" }, "node_modules/@types/glob": { @@ -13676,12 +13856,10 @@ }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", - "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" @@ -13689,7 +13867,6 @@ }, "node_modules/@types/istanbul-reports": { "version": "1.1.2", - "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*", @@ -13762,8 +13939,9 @@ "license": "MIT" }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "devOptional": true, + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, "node_modules/@types/json5": { @@ -13781,7 +13959,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.182", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==", "license": "MIT" }, "node_modules/@types/lodash-es": { @@ -13892,6 +14072,16 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-color": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.12.tgz", + "integrity": "sha512-pr3uKE3lSvf7GFo1Rn2K3QktiZQFFrSgSGJ/3iMvSOYWt2pPAJ97rVdVfhWxYJZ8prAEXzoP2XX//3qGSQgu7Q==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "@types/reactcss": "*" + } + }, "node_modules/@types/react-dom": { "version": "16.9.8", "license": "MIT", @@ -14002,6 +14192,15 @@ "@types/react": "*" } }, + "node_modules/@types/reactcss": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.12.tgz", + "integrity": "sha512-BrXUQ86/wbbFiZv8h/Q1/Q1XOsaHneYmCb/tHe9+M8XBAAUc2EHfdY0DY22ZZjVSaXr5ix7j+zsqO2eGZub8lQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/redux-localstorage": { "version": "1.0.8", "dev": true, @@ -14259,7 +14458,6 @@ }, "node_modules/@types/yargs-parser": { "version": "15.0.0", - "dev": true, "license": "MIT" }, "node_modules/@types/yauzl": { @@ -14711,6 +14909,12 @@ "version": "1.2.0", "license": "ISC" }, + "node_modules/@ungap/url-search-params": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@ungap/url-search-params/-/url-search-params-0.2.2.tgz", + "integrity": "sha512-qQsguKXZVKdCixOHX9jqnX/K/1HekPDpGKyEcXHT+zR6EjGA7S4boSuelL4uuPv6YfhN0n8c4UxW+v/Z3gM2iw==", + "license": "ISC" + }, "node_modules/@visx/annotation": { "version": "3.3.0", "license": "MIT", @@ -16977,9 +17181,7 @@ }, "node_modules/arg": { "version": "4.1.3", - "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", @@ -18290,6 +18492,15 @@ "node": ">= 6" } }, + "node_modules/blob": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.1.0.tgz", + "integrity": "sha512-k+GwK+4Rj+MPNT4qu+y6+kHp+mPmmNd+28zdrIo69QM9UvypK5Vhcw7jnRiY4KaOMAiOdn0NtPQGTb+Ox1Dtng==", + "license": "MIT", + "dependencies": { + "esm": "^3.2.25" + } + }, "node_modules/blob-util": { "version": "2.0.2", "dev": true, @@ -19311,6 +19522,12 @@ "dev": true, "license": "ISC" }, + "node_modules/chroma-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.6.0.tgz", + "integrity": "sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A==", + "license": "(BSD-3-Clause AND Apache-2.0)" + }, "node_modules/chrome-trace-event": { "version": "1.0.2", "devOptional": true, @@ -20473,9 +20690,7 @@ }, "node_modules/create-require": { "version": "1.1.1", - "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cross-env": { "version": "7.0.3", @@ -20611,6 +20826,12 @@ "postcss": "^8.0.9" } }, + "node_modules/css-font-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-font-parser/-/css-font-parser-2.0.1.tgz", + "integrity": "sha512-C4aQOpCmQL/Arl68chQatNh7/Nfyty15kbLNZezGudjcKSqHHVoHQEeb9IJcjgQ6CiurrHZoEt47yce891vjGw==", + "license": "BSD-3-Clause" + }, "node_modules/css-in-js-utils": { "version": "2.0.1", "license": "MIT", @@ -22491,9 +22712,7 @@ }, "node_modules/diff": { "version": "4.0.2", - "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.3.1" } @@ -24883,6 +25102,15 @@ "node": ">= 8" } }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/espree": { "version": "9.6.1", "dev": true, @@ -25954,6 +26182,12 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==", + "license": "MIT" + }, "node_modules/file-system-cache": { "version": "2.3.0", "license": "MIT", @@ -26853,6 +27087,15 @@ "node": ">=6.9.0" } }, + "node_modules/geojson": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/geojson/-/geojson-0.5.0.tgz", + "integrity": "sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/geojson-flatten": { "version": "1.0.4", "license": "BSD-2-Clause", @@ -26878,6 +27121,411 @@ "node_modules/geolib": { "version": "2.0.24" }, + "node_modules/geostyler": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/geostyler/-/geostyler-12.0.2.tgz", + "integrity": "sha512-H5Jgszl+UU6/mrMznRTh815ZQpv4zkPwv4Nomi3jS68I6Afmx01s+403UGPTufiT/j7g/ZOSyOH3avBhAYvbaw==", + "license": "BSD-2-Clause", + "dependencies": { + "@babel/polyfill": "^7.12.1", + "@dnd-kit/core": "^6.0.6", + "@dnd-kit/sortable": "^7.0.1", + "@dnd-kit/utilities": "^3.2.1", + "@monaco-editor/react": "^4.4.6", + "@types/chroma-js": "^2.1.4", + "@types/color": "^3.0.3", + "@types/file-saver": "^2.0.5", + "@types/geojson": "^7946.0.10", + "@types/lodash": "^4.14.188", + "@types/react-color": "^3.0.6", + "@ungap/url-search-params": "^0.2.2", + "blob": "^0.1.0", + "chroma-js": "^2.4.2", + "color": "^4.2.3", + "csstype": "^3.1.1", + "file-saver": "^2.0.5", + "geostyler-cql-parser": "^3.0.1", + "geostyler-data": "^1.0.0", + "geostyler-geojson-parser": "^1.0.1", + "geostyler-openlayers-parser": "^4.1.0", + "geostyler-sld-parser": "^5.0.0", + "geostyler-style": "^7.2.0", + "geostyler-wfs-parser": "^2.0.0", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "monaco-editor": "^0.34.1", + "react-color": "^2.19.3", + "react-rnd": "^10.3.7", + "typescript-json-schema": "^0.55.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "@ant-design/icons": ">=4.x", + "@types/react": ">=16.x", + "@types/react-dom": ">=16.x", + "antd": "4.x", + "ol": ">=6.x", + "react": ">=16.x", + "react-dom": ">=16.x" + } + }, + "node_modules/geostyler-cql-parser": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/geostyler-cql-parser/-/geostyler-cql-parser-3.0.2.tgz", + "integrity": "sha512-nfQOnWwFSrWtgl7DRmhwoa3r0BnpsMvEv7rb5D8ihpCUQS/YP09C2C1j6zKQVSnYRMl0545VnhtYtqejMgPaBg==", + "license": "BSD-2-Clause", + "dependencies": { + "geostyler-style": "^7.2.0", + "lodash": "^4.17.21" + } + }, + "node_modules/geostyler-data": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/geostyler-data/-/geostyler-data-1.0.0.tgz", + "integrity": "sha512-ctmk6OsunL427Uaa1HME/blTyBbl0Ihu+vPV1Irqz3ip80qvNLwDEr46xI5HwMeyrsWH8o76kfA0sF6oecW1BA==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/geojson": "7946.0.7", + "@types/json-schema": "7.0.3" + } + }, + "node_modules/geostyler-data/node_modules/@types/geojson": { + "version": "7946.0.7", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==", + "license": "MIT" + }, + "node_modules/geostyler-data/node_modules/@types/json-schema": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", + "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==", + "license": "MIT" + }, + "node_modules/geostyler-geojson-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/geostyler-geojson-parser/-/geostyler-geojson-parser-1.0.1.tgz", + "integrity": "sha512-b7eJ2sCrYCC7fIDItxfbDH9r55dE58OXTQjPb/kIlXgH+7A2o2xp7pQlRXu5xCqM5lucQAAM9A7IfLLhbflznw==", + "license": "BSD-2-Clause", + "dependencies": { + "@babel/polyfill": "^7.4.4", + "@types/geojson": "^7946.0.7", + "@types/jest": "^24.0.18", + "@types/json-schema": "^7.0.3", + "@types/node": "^12.7.3", + "geostyler-data": "^1.0.0" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "license": "MIT", + "dependencies": { + "jest-diff": "^24.3.0" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" + }, + "node_modules/geostyler-geojson-parser/node_modules/@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/geostyler-geojson-parser/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/geostyler-openlayers-parser": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/geostyler-openlayers-parser/-/geostyler-openlayers-parser-4.3.0.tgz", + "integrity": "sha512-9LoctzoxorZogOpp6nXT6SZGnISRpNR9M+MLyhYVTFlOtDi4Gb4fWbUnpqVzDxqMNl8anMmv7cpMsmw1bjWsLw==", + "license": "BSD-2-Clause", + "dependencies": { + "css-font-parser": "^2.0.0", + "geostyler-style": "^8.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + }, + "peerDependencies": { + "ol": ">=7.4" + } + }, + "node_modules/geostyler-openlayers-parser/node_modules/geostyler-style": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-8.1.0.tgz", + "integrity": "sha512-8NgtzRc63bxC+1Vgqj/mMj77GX38CXXXWQ93PeZBdoMTkY9C/H0Anz38OrrlKdUgNVFZ/GJTNYwnX4wdaO5j6A==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/lodash": "^4.14.201", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=6.0.0" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, + "node_modules/geostyler-sld-parser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/geostyler-sld-parser/-/geostyler-sld-parser-5.4.0.tgz", + "integrity": "sha512-TY/gwMoE/M8Xv8ykviC1NqygykrojvrFSCRIc/+CNww5VS0Qf9pu9JxiSQONGfR6QWDPtQrfFIoazyH67c0jTg==", + "license": "BSD-2-Clause", + "dependencies": { + "fast-xml-parser": "^4.2.2", + "geostyler-style": "^8.1.0", + "i18next": "^23.11.5", + "lodash": "^4.17.21" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, + "node_modules/geostyler-sld-parser/node_modules/geostyler-style": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-8.1.0.tgz", + "integrity": "sha512-8NgtzRc63bxC+1Vgqj/mMj77GX38CXXXWQ93PeZBdoMTkY9C/H0Anz38OrrlKdUgNVFZ/GJTNYwnX4wdaO5j6A==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/lodash": "^4.14.201", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=6.0.0" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, + "node_modules/geostyler-style": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-7.5.0.tgz", + "integrity": "sha512-0qlFOwDl9cdiiNUk6ijRSpBq+W3Kpry1aZS++BE8EPBxvbFgoTsKU6JIriKLmCqPqBmJIVnMFMUEk6Sf3n0ZIA==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/lodash": "^4.14.201", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=6.0.0" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, + "node_modules/geostyler-wfs-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/geostyler-wfs-parser/-/geostyler-wfs-parser-2.0.3.tgz", + "integrity": "sha512-23gmufyveYB/jhVzxPj/eb/zkI+xWSzTKqGO7gcAh0NYUFPI+UG3WTJhzT4Dj9G+ZTpSUnXOSmkHr4M7jZsakA==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/geojson": "^7946.0.14", + "@types/json-schema": "^7.0.15", + "@types/lodash": "^4.17.4", + "fast-xml-parser": "^4.4.0", + "geostyler-data": "^1.0.0", + "lodash": "^4.17.21" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, + "node_modules/geostyler/node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/geostyler/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/geostyler/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/geotiff": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.1.3.tgz", + "integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==", + "license": "MIT", + "dependencies": { + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2", + "zstddec": "^0.1.0" + }, + "engines": { + "node": ">=10.19" + } + }, + "node_modules/geotiff/node_modules/lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==", + "license": "Apache-2.0" + }, + "node_modules/geotiff/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, + "node_modules/geotiff/node_modules/quick-lru": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz", + "integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "license": "ISC", @@ -28928,6 +29576,29 @@ "version": "1.0.4", "license": "BSD-3-Clause" }, + "node_modules/i18next": { + "version": "23.16.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.0.tgz", + "integrity": "sha512-Ni3CG6c14teOogY19YNRl+kYaE/Rb59khy0VyHVn4uOZ97E2E/Yziyi6r3C3s9+wacjdLZiq/LLYyx+Cgd+FCw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "license": "MIT", @@ -34690,9 +35361,7 @@ }, "node_modules/make-error": { "version": "1.3.6", - "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/make-fetch-happen": { "version": "13.0.1", @@ -34802,6 +35471,12 @@ "kdbush": "^3.0.0" } }, + "node_modules/mapbox-to-css-font": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.5.tgz", + "integrity": "sha512-VJ6nB8emkO9VODI0Fk+TQ/0zKBTqmf/Pkt8Xv0kHstoc0iXRajA00DAid4Kc3K5xeFIOoiZrVxijEzj0GLVO2w==", + "license": "BSD-2-Clause" + }, "node_modules/markdown-extensions": { "version": "1.1.1", "dev": true, @@ -40293,6 +40968,12 @@ "node": "*" } }, + "node_modules/monaco-editor": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", + "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==", + "license": "MIT" + }, "node_modules/moo": { "version": "0.4.3", "dev": true, @@ -42143,6 +42824,34 @@ "dev": true, "license": "MIT" }, + "node_modules/ol": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/ol/-/ol-7.5.2.tgz", + "integrity": "sha512-HJbb3CxXrksM6ct367LsP3N+uh+iBBMdP3DeGGipdV9YAYTP0vTJzqGnoqQ6C2IW4qf8krw9yuyQbc9fjOIaOQ==", + "license": "BSD-2-Clause", + "dependencies": { + "earcut": "^2.2.3", + "geotiff": "^2.0.7", + "ol-mapbox-style": "^10.1.0", + "pbf": "3.2.1", + "rbush": "^3.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openlayers" + } + }, + "node_modules/ol-mapbox-style": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-10.7.0.tgz", + "integrity": "sha512-S/UdYBuOjrotcR95Iq9AejGYbifKeZE85D9VtH11ryJLQPTZXZSW1J5bIXcr4AlAH6tyjPPHTK34AdkwB32Myw==", + "license": "BSD-2-Clause", + "dependencies": { + "@mapbox/mapbox-gl-style-spec": "^13.23.1", + "mapbox-to-css-font": "^2.4.1", + "ol": "^7.3.0" + } + }, "node_modules/omggif": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", @@ -42973,6 +43682,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "license": "MIT" + }, "node_modules/parse-json": { "version": "4.0.0", "dev": true, @@ -43074,6 +43789,12 @@ "dev": true, "license": "MIT" }, + "node_modules/path-equal": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/path-equal/-/path-equal-1.2.5.tgz", + "integrity": "sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g==", + "license": "MIT" + }, "node_modules/path-exists": { "version": "3.0.0", "dev": true, @@ -44854,6 +45575,15 @@ "node": ">= 0.8" } }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "license": "MIT", + "dependencies": { + "quickselect": "^2.0.0" + } + }, "node_modules/rc": { "version": "1.2.8", "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", @@ -45565,14 +46295,21 @@ } }, "node_modules/react-color": { - "version": "2.14.1", + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", + "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", "license": "MIT", "dependencies": { - "lodash": "^4.0.1", + "@icons/material": "^0.2.4", + "lodash": "^4.17.15", + "lodash-es": "^4.17.15", "material-colors": "^1.2.1", "prop-types": "^15.5.10", "reactcss": "^1.2.0", "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "react": "*" } }, "node_modules/react-colorful": { @@ -46048,6 +46785,27 @@ "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-rnd": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.13.tgz", + "integrity": "sha512-Vgbf0iihspcQ6nkaFhpOGWfmnuVbhkhoB0hBbYl8aRDA4horsQHESc4E1z7O/P27kFFjK2aqM0u5CGzfr9gEZA==", + "license": "MIT", + "dependencies": { + "re-resizable": "6.10.0", + "react-draggable": "4.4.6", + "tslib": "2.6.2" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/react-rnd/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, "node_modules/react-router": { "version": "5.3.4", "license": "MIT", @@ -48691,7 +49449,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "dev": true, "engines": { "node": ">=10" } @@ -49501,6 +50258,22 @@ "atomic-sleep": "^1.0.0" } }, + "node_modules/sort-asc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz", + "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-desc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz", + "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -49513,6 +50286,18 @@ "node": ">=4" } }, + "node_modules/sort-object": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz", + "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==", + "dependencies": { + "sort-asc": "^0.1.0", + "sort-desc": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sort-object-keys": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", @@ -50007,6 +50792,12 @@ "node": ">=8" } }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", + "license": "MIT" + }, "node_modules/static-eval": { "version": "2.1.0", "license": "MIT", @@ -51572,12 +52363,12 @@ "license": "ISC" }, "node_modules/ts-node": { - "version": "10.7.0", - "dev": true, + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "license": "MIT", - "peer": true, "dependencies": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -51588,7 +52379,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { @@ -51616,9 +52407,7 @@ }, "node_modules/ts-node/node_modules/acorn-walk": { "version": "8.2.0", - "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.4.0" } @@ -51831,6 +52620,44 @@ "node": ">=4.2.0" } }, + "node_modules/typescript-json-schema": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.55.0.tgz", + "integrity": "sha512-BXaivYecUdiXWWNiUqXgY6A9cMWerwmhtO+lQE7tDZGs7Mf38sORDeQZugfYOZOHPZ9ulsD+w0LWjFDOQoXcwg==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/node": "^16.9.2", + "glob": "^7.1.7", + "path-equal": "^1.1.2", + "safe-stable-stringify": "^2.2.0", + "ts-node": "^10.9.1", + "typescript": "~4.8.2", + "yargs": "^17.1.1" + }, + "bin": { + "typescript-json-schema": "bin/typescript-json-schema" + } + }, + "node_modules/typescript-json-schema/node_modules/@types/node": { + "version": "16.18.114", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.114.tgz", + "integrity": "sha512-7oAtnxrgkMNzyzT443UDWwzkmYew81F1ZSPm3/lsITJfW/WludaSOpegTvUG+UdapcbrtWOtY/E4LyTkhPGJ5Q==", + "license": "MIT" + }, + "node_modules/typescript-json-schema/node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/ua-parser-js": { "version": "0.7.33", "funding": [ @@ -52454,10 +53281,10 @@ } }, "node_modules/v8-compile-cache-lib": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "peer": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.2.0", @@ -52779,6 +53606,12 @@ "node": ">= 8" } }, + "node_modules/web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", + "license": "Apache-2.0" + }, "node_modules/webdriver": { "version": "7.31.1", "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.31.1.tgz", @@ -54188,6 +55021,12 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/xml-utils": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.10.1.tgz", + "integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==", + "license": "CC0-1.0" + }, "node_modules/xmlbuilder": { "version": "15.0.0", "dev": true, @@ -54280,9 +55119,7 @@ }, "node_modules/yn": { "version": "3.1.1", - "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -54330,6 +55167,12 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" }, + "node_modules/zstddec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.1.0.tgz", + "integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==", + "license": "MIT AND BSD-3-Clause" + }, "node_modules/zwitch": { "version": "2.0.4", "license": "MIT", @@ -58114,19 +58957,43 @@ "version": "3.1.0", "license": "(MPL-2.0 OR Apache-2.0)" }, + "plugins/plugin-chart-cartodiagram": { + "version": "0.0.1", + "license": "Apache-2.0", + "dependencies": { + "@types/geojson": "^7946.0.10", + "geojson": "^0.5.0", + "lodash": "^4.17.21", + "ol": "^7.1.0" + }, + "peerDependencies": { + "@ant-design/icons": "^5.0.1", + "@superset-ui/chart-controls": "*", + "@superset-ui/core": "*", + "antd": "^4.10.3", + "geostyler": "^12.0.0", + "geostyler-data": "^1.0.0", + "geostyler-openlayers-parser": "^4.0.0", + "geostyler-style": "^7.2.0", + "geostyler-wfs-parser": "^2.0.0", + "polished": "*", + "react": "^16.13.1", + "react-dom": "^16.13.0" + } + }, "plugins/plugin-chart-echarts": { "name": "@superset-ui/plugin-chart-echarts", "version": "0.18.25", "license": "Apache-2.0", "dependencies": { "d3-array": "^1.2.0", - "echarts": "^5.4.1", "lodash": "^4.17.21", "moment": "^2.30.1" }, "peerDependencies": { "@superset-ui/chart-controls": "*", "@superset-ui/core": "*", + "echarts": "*", "memoize-one": "*", "react": "^16.13.1" } @@ -60392,17 +61259,23 @@ "minimist": "^1.2.0" } }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "dev": true, - "peer": true - }, "@cspotcode/source-map-support": { - "version": "0.7.0", - "dev": true, - "peer": true, + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "requires": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } } }, "@ctrl/tinycolor": { @@ -61178,6 +62051,69 @@ "version": "0.5.7", "dev": true }, + "@dnd-kit/accessibility": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz", + "integrity": "sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" + } + } + }, + "@dnd-kit/core": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.1.0.tgz", + "integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==", + "requires": { + "@dnd-kit/accessibility": "^3.1.0", + "@dnd-kit/utilities": "^3.2.2", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" + } + } + }, + "@dnd-kit/sortable": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "requires": { + "@dnd-kit/utilities": "^3.2.0", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" + } + } + }, + "@dnd-kit/utilities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", + "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" + } + } + }, "@emnapi/core": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz", @@ -61862,6 +62798,12 @@ "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true }, + "@icons/material": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", + "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", + "requires": {} + }, "@inquirer/figures": { "version": "1.0.3", "devOptional": true @@ -63214,6 +64156,21 @@ "@mapbox/jsonlint-lines-primitives": { "version": "2.0.2" }, + "@mapbox/mapbox-gl-style-spec": { + "version": "13.28.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz", + "integrity": "sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==", + "requires": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/unitbezier": "^0.0.0", + "csscolorparser": "~1.0.2", + "json-stringify-pretty-compact": "^2.0.0", + "minimist": "^1.2.6", + "rw": "^1.3.3", + "sort-object": "^0.3.2" + } + }, "@mapbox/mapbox-gl-supported": { "version": "2.0.1" }, @@ -63319,6 +64276,22 @@ "@mihkeleidast/storybook-addon-source": { "version": "1.0.1" }, + "@monaco-editor/loader": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz", + "integrity": "sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==", + "requires": { + "state-local": "^1.0.6" + } + }, + "@monaco-editor/react": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.6.0.tgz", + "integrity": "sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==", + "requires": { + "@monaco-editor/loader": "^1.4.0" + } + }, "@napi-rs/wasm-runtime": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", @@ -64256,6 +65229,11 @@ "@octokit/openapi-types": "^11.2.0" } }, + "@petamoriken/float16": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.7.tgz", + "integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==" + }, "@pkgjs/parseargs": { "version": "0.11.0", "optional": true @@ -68702,11 +69680,19 @@ } } }, + "@superset-ui/plugin-chart-cartodiagram": { + "version": "file:plugins/plugin-chart-cartodiagram", + "requires": { + "@types/geojson": "^7946.0.10", + "geojson": "^0.5.0", + "lodash": "^4.17.21", + "ol": "^7.1.0" + } + }, "@superset-ui/plugin-chart-echarts": { "version": "file:plugins/plugin-chart-echarts", "requires": { "d3-array": "^1.2.0", - "echarts": "^5.4.1", "lodash": "^4.17.21", "moment": "^2.30.1" } @@ -69054,7 +70040,6 @@ }, "@swc/core": { "version": "1.4.0", - "dev": true, "optional": true, "peer": true, "requires": { @@ -69080,13 +70065,11 @@ }, "@swc/counter": { "version": "0.1.3", - "dev": true, "optional": true, "peer": true }, "@swc/types": { "version": "0.1.5", - "dev": true, "optional": true, "peer": true }, @@ -69210,24 +70193,16 @@ "dev": true }, "@tsconfig/node10": { - "version": "1.0.8", - "dev": true, - "peer": true + "version": "1.0.8" }, "@tsconfig/node12": { - "version": "1.0.9", - "dev": true, - "peer": true + "version": "1.0.9" }, "@tsconfig/node14": { - "version": "1.0.1", - "dev": true, - "peer": true + "version": "1.0.1" }, "@tsconfig/node16": { - "version": "1.0.2", - "dev": true, - "peer": true + "version": "1.0.2" }, "@tufjs/canonical-json": { "version": "2.0.0", @@ -69396,9 +70371,35 @@ "@types/node": "*" } }, + "@types/chroma-js": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.4.4.tgz", + "integrity": "sha512-/DTccpHTaKomqussrn+ciEvfW4k6NAHzNzs/sts1TCqg333qNxOhy8TNIoQCmbGG3Tl8KdEhkGAssb1n3mTXiQ==" + }, "@types/classnames": { "version": "2.2.10" }, + "@types/color": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.6.tgz", + "integrity": "sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==", + "requires": { + "@types/color-convert": "*" + } + }, + "@types/color-convert": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.4.tgz", + "integrity": "sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==", + "requires": { + "@types/color-name": "^1.1.0" + } + }, + "@types/color-name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.5.tgz", + "integrity": "sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==" + }, "@types/connect": { "version": "3.4.35", "requires": { @@ -69573,8 +70574,15 @@ "version": "7.3.5", "dev": true }, + "@types/file-saver": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz", + "integrity": "sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==" + }, "@types/geojson": { - "version": "7946.0.8" + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" }, "@types/glob": { "version": "8.1.0", @@ -69659,19 +70667,16 @@ } }, "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "dev": true + "version": "2.0.3" }, "@types/istanbul-lib-report": { "version": "3.0.0", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" } }, "@types/istanbul-reports": { "version": "1.1.2", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "*", "@types/istanbul-lib-report": "*" @@ -69728,8 +70733,9 @@ "version": "1.0.4" }, "@types/json-schema": { - "version": "7.0.9", - "devOptional": true + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "@types/json5": { "version": "0.0.29", @@ -69745,7 +70751,9 @@ } }, "@types/lodash": { - "version": "4.14.182" + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==" }, "@types/lodash-es": { "version": "4.17.12", @@ -69841,6 +70849,15 @@ "csstype": "^3.0.2" } }, + "@types/react-color": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.12.tgz", + "integrity": "sha512-pr3uKE3lSvf7GFo1Rn2K3QktiZQFFrSgSGJ/3iMvSOYWt2pPAJ97rVdVfhWxYJZ8prAEXzoP2XX//3qGSQgu7Q==", + "requires": { + "@types/react": "^16.9.53", + "@types/reactcss": "*" + } + }, "@types/react-dom": { "version": "16.9.8", "requires": { @@ -69940,6 +70957,14 @@ "@types/react": "^16.9.53" } }, + "@types/reactcss": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.12.tgz", + "integrity": "sha512-BrXUQ86/wbbFiZv8h/Q1/Q1XOsaHneYmCb/tHe9+M8XBAAUc2EHfdY0DY22ZZjVSaXr5ix7j+zsqO2eGZub8lQ==", + "requires": { + "@types/react": "^16.9.53" + } + }, "@types/redux-localstorage": { "version": "1.0.8", "dev": true, @@ -70156,8 +71181,7 @@ } }, "@types/yargs-parser": { - "version": "15.0.0", - "dev": true + "version": "15.0.0" }, "@types/yauzl": { "version": "2.9.2", @@ -70403,6 +71427,11 @@ "@ungap/structured-clone": { "version": "1.2.0" }, + "@ungap/url-search-params": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@ungap/url-search-params/-/url-search-params-0.2.2.tgz", + "integrity": "sha512-qQsguKXZVKdCixOHX9jqnX/K/1HekPDpGKyEcXHT+zR6EjGA7S4boSuelL4uuPv6YfhN0n8c4UxW+v/Z3gM2iw==" + }, "@visx/annotation": { "version": "3.3.0", "requires": { @@ -72018,9 +73047,7 @@ "peer": true }, "arg": { - "version": "4.1.3", - "dev": true, - "peer": true + "version": "4.1.3" }, "argparse": { "version": "1.0.10", @@ -72903,6 +73930,14 @@ } } }, + "blob": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.1.0.tgz", + "integrity": "sha512-k+GwK+4Rj+MPNT4qu+y6+kHp+mPmmNd+28zdrIo69QM9UvypK5Vhcw7jnRiY4KaOMAiOdn0NtPQGTb+Ox1Dtng==", + "requires": { + "esm": "^3.2.25" + } + }, "blob-util": { "version": "2.0.2", "dev": true, @@ -73579,6 +74614,11 @@ "version": "1.1.4", "dev": true }, + "chroma-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.6.0.tgz", + "integrity": "sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A==" + }, "chrome-trace-event": { "version": "1.0.2", "devOptional": true, @@ -74376,9 +75416,7 @@ } }, "create-require": { - "version": "1.1.1", - "dev": true, - "peer": true + "version": "1.1.1" }, "cross-env": { "version": "7.0.3", @@ -74463,6 +75501,11 @@ "dev": true, "requires": {} }, + "css-font-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-font-parser/-/css-font-parser-2.0.1.tgz", + "integrity": "sha512-C4aQOpCmQL/Arl68chQatNh7/Nfyty15kbLNZezGudjcKSqHHVoHQEeb9IJcjgQ6CiurrHZoEt47yce891vjGw==" + }, "css-in-js-utils": { "version": "2.0.1", "requires": { @@ -75715,9 +76758,7 @@ "dev": true }, "diff": { - "version": "4.0.2", - "dev": true, - "peer": true + "version": "4.0.2" }, "diff-match-patch": { "version": "1.0.5" @@ -77253,6 +78294,11 @@ "version": "3.4.3", "dev": true }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + }, "espree": { "version": "9.6.1", "dev": true, @@ -77995,6 +79041,11 @@ "flat-cache": "^3.0.4" } }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, "file-system-cache": { "version": "2.3.0", "requires": { @@ -78566,6 +79617,11 @@ "gensync": { "version": "1.0.0-beta.2" }, + "geojson": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/geojson/-/geojson-0.5.0.tgz", + "integrity": "sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==" + }, "geojson-flatten": { "version": "1.0.4", "requires": { @@ -78584,6 +79640,302 @@ "geolib": { "version": "2.0.24" }, + "geostyler": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/geostyler/-/geostyler-12.0.2.tgz", + "integrity": "sha512-H5Jgszl+UU6/mrMznRTh815ZQpv4zkPwv4Nomi3jS68I6Afmx01s+403UGPTufiT/j7g/ZOSyOH3avBhAYvbaw==", + "requires": { + "@babel/polyfill": "^7.12.1", + "@dnd-kit/core": "^6.0.6", + "@dnd-kit/sortable": "^7.0.1", + "@dnd-kit/utilities": "^3.2.1", + "@monaco-editor/react": "^4.4.6", + "@types/chroma-js": "^2.1.4", + "@types/color": "^3.0.3", + "@types/file-saver": "^2.0.5", + "@types/geojson": "^7946.0.10", + "@types/lodash": "^4.14.188", + "@types/react-color": "^3.0.6", + "@ungap/url-search-params": "^0.2.2", + "blob": "^0.1.0", + "chroma-js": "^2.4.2", + "color": "^4.2.3", + "csstype": "^3.1.1", + "file-saver": "^2.0.5", + "geostyler-cql-parser": "^3.0.1", + "geostyler-data": "^1.0.0", + "geostyler-geojson-parser": "^1.0.1", + "geostyler-openlayers-parser": "^4.1.0", + "geostyler-sld-parser": "^5.0.0", + "geostyler-style": "^7.2.0", + "geostyler-wfs-parser": "^2.0.0", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "monaco-editor": "^0.34.1", + "react-color": "^2.19.3", + "react-rnd": "^10.3.7", + "typescript-json-schema": "^0.55.0" + }, + "dependencies": { + "color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "requires": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, + "geostyler-cql-parser": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/geostyler-cql-parser/-/geostyler-cql-parser-3.0.2.tgz", + "integrity": "sha512-nfQOnWwFSrWtgl7DRmhwoa3r0BnpsMvEv7rb5D8ihpCUQS/YP09C2C1j6zKQVSnYRMl0545VnhtYtqejMgPaBg==", + "requires": { + "geostyler-style": "^7.2.0", + "lodash": "^4.17.21" + } + }, + "geostyler-data": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/geostyler-data/-/geostyler-data-1.0.0.tgz", + "integrity": "sha512-ctmk6OsunL427Uaa1HME/blTyBbl0Ihu+vPV1Irqz3ip80qvNLwDEr46xI5HwMeyrsWH8o76kfA0sF6oecW1BA==", + "requires": { + "@types/geojson": "7946.0.7", + "@types/json-schema": "7.0.3" + }, + "dependencies": { + "@types/geojson": { + "version": "7946.0.7", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" + }, + "@types/json-schema": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", + "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==" + } + } + }, + "geostyler-geojson-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/geostyler-geojson-parser/-/geostyler-geojson-parser-1.0.1.tgz", + "integrity": "sha512-b7eJ2sCrYCC7fIDItxfbDH9r55dE58OXTQjPb/kIlXgH+7A2o2xp7pQlRXu5xCqM5lucQAAM9A7IfLLhbflznw==", + "requires": { + "@babel/polyfill": "^7.4.4", + "@types/geojson": "^7946.0.7", + "@types/jest": "^24.0.18", + "@types/json-schema": "^7.0.3", + "@types/node": "^12.7.3", + "geostyler-data": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "geostyler-openlayers-parser": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/geostyler-openlayers-parser/-/geostyler-openlayers-parser-4.3.0.tgz", + "integrity": "sha512-9LoctzoxorZogOpp6nXT6SZGnISRpNR9M+MLyhYVTFlOtDi4Gb4fWbUnpqVzDxqMNl8anMmv7cpMsmw1bjWsLw==", + "requires": { + "css-font-parser": "^2.0.0", + "geostyler-style": "^8.1.0" + }, + "dependencies": { + "geostyler-style": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-8.1.0.tgz", + "integrity": "sha512-8NgtzRc63bxC+1Vgqj/mMj77GX38CXXXWQ93PeZBdoMTkY9C/H0Anz38OrrlKdUgNVFZ/GJTNYwnX4wdaO5j6A==", + "requires": { + "@types/lodash": "^4.14.201", + "lodash": "^4.17.21" + } + } + } + }, + "geostyler-sld-parser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/geostyler-sld-parser/-/geostyler-sld-parser-5.4.0.tgz", + "integrity": "sha512-TY/gwMoE/M8Xv8ykviC1NqygykrojvrFSCRIc/+CNww5VS0Qf9pu9JxiSQONGfR6QWDPtQrfFIoazyH67c0jTg==", + "requires": { + "fast-xml-parser": "^4.2.2", + "geostyler-style": "^8.1.0", + "i18next": "^23.11.5", + "lodash": "^4.17.21" + }, + "dependencies": { + "geostyler-style": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-8.1.0.tgz", + "integrity": "sha512-8NgtzRc63bxC+1Vgqj/mMj77GX38CXXXWQ93PeZBdoMTkY9C/H0Anz38OrrlKdUgNVFZ/GJTNYwnX4wdaO5j6A==", + "requires": { + "@types/lodash": "^4.14.201", + "lodash": "^4.17.21" + } + } + } + }, + "geostyler-style": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-7.5.0.tgz", + "integrity": "sha512-0qlFOwDl9cdiiNUk6ijRSpBq+W3Kpry1aZS++BE8EPBxvbFgoTsKU6JIriKLmCqPqBmJIVnMFMUEk6Sf3n0ZIA==", + "requires": { + "@types/lodash": "^4.14.201", + "lodash": "^4.17.21" + } + }, + "geostyler-wfs-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/geostyler-wfs-parser/-/geostyler-wfs-parser-2.0.3.tgz", + "integrity": "sha512-23gmufyveYB/jhVzxPj/eb/zkI+xWSzTKqGO7gcAh0NYUFPI+UG3WTJhzT4Dj9G+ZTpSUnXOSmkHr4M7jZsakA==", + "requires": { + "@types/geojson": "^7946.0.14", + "@types/json-schema": "^7.0.15", + "@types/lodash": "^4.17.4", + "fast-xml-parser": "^4.4.0", + "geostyler-data": "^1.0.0", + "lodash": "^4.17.21" + } + }, + "geotiff": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.1.3.tgz", + "integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==", + "requires": { + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2", + "zstddec": "^0.1.0" + }, + "dependencies": { + "lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==" + }, + "pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "quick-lru": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz", + "integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==" + } + } + }, "get-caller-file": { "version": "2.0.5" }, @@ -79915,6 +81267,14 @@ "hyphenate-style-name": { "version": "1.0.4" }, + "i18next": { + "version": "23.16.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.0.tgz", + "integrity": "sha512-Ni3CG6c14teOogY19YNRl+kYaE/Rb59khy0VyHVn4uOZ97E2E/Yziyi6r3C3s9+wacjdLZiq/LLYyx+Cgd+FCw==", + "requires": { + "@babel/runtime": "^7.23.2" + } + }, "iconv-lite": { "version": "0.4.24", "requires": { @@ -83680,9 +85040,7 @@ } }, "make-error": { - "version": "1.3.6", - "dev": true, - "peer": true + "version": "1.3.6" }, "make-fetch-happen": { "version": "13.0.1", @@ -83770,6 +85128,11 @@ } } }, + "mapbox-to-css-font": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.5.tgz", + "integrity": "sha512-VJ6nB8emkO9VODI0Fk+TQ/0zKBTqmf/Pkt8Xv0kHstoc0iXRajA00DAid4Kc3K5xeFIOoiZrVxijEzj0GLVO2w==" + }, "markdown-extensions": { "version": "1.1.1", "dev": true @@ -86670,6 +88033,11 @@ "moment": "^2.29.4" } }, + "monaco-editor": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", + "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==" + }, "moo": { "version": "0.4.3", "dev": true @@ -87918,6 +89286,28 @@ "version": "1.1.3", "dev": true }, + "ol": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/ol/-/ol-7.5.2.tgz", + "integrity": "sha512-HJbb3CxXrksM6ct367LsP3N+uh+iBBMdP3DeGGipdV9YAYTP0vTJzqGnoqQ6C2IW4qf8krw9yuyQbc9fjOIaOQ==", + "requires": { + "earcut": "^2.2.3", + "geotiff": "^2.0.7", + "ol-mapbox-style": "^10.1.0", + "pbf": "3.2.1", + "rbush": "^3.0.1" + } + }, + "ol-mapbox-style": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-10.7.0.tgz", + "integrity": "sha512-S/UdYBuOjrotcR95Iq9AejGYbifKeZE85D9VtH11ryJLQPTZXZSW1J5bIXcr4AlAH6tyjPPHTK34AdkwB32Myw==", + "requires": { + "@mapbox/mapbox-gl-style-spec": "^13.23.1", + "mapbox-to-css-font": "^2.4.1", + "ol": "^7.3.0" + } + }, "omggif": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", @@ -88452,6 +89842,11 @@ } } }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "parse-json": { "version": "4.0.0", "dev": true, @@ -88524,6 +89919,11 @@ "version": "1.0.1", "dev": true }, + "path-equal": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/path-equal/-/path-equal-1.2.5.tgz", + "integrity": "sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g==" + }, "path-exists": { "version": "3.0.0", "dev": true @@ -89628,6 +91028,14 @@ } } }, + "rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "requires": { + "quickselect": "^2.0.0" + } + }, "rc": { "version": "1.2.8", "requires": { @@ -90072,9 +91480,13 @@ } }, "react-color": { - "version": "2.14.1", + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", + "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", "requires": { - "lodash": "^4.0.1", + "@icons/material": "^0.2.4", + "lodash": "^4.17.15", + "lodash-es": "^4.17.15", "material-colors": "^1.2.1", "prop-types": "^15.5.10", "reactcss": "^1.2.0", @@ -90371,6 +91783,23 @@ "version": "2.1.1", "requires": {} }, + "react-rnd": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.13.tgz", + "integrity": "sha512-Vgbf0iihspcQ6nkaFhpOGWfmnuVbhkhoB0hBbYl8aRDA4horsQHESc4E1z7O/P27kFFjK2aqM0u5CGzfr9gEZA==", + "requires": { + "re-resizable": "6.10.0", + "react-draggable": "4.4.6", + "tslib": "2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, "react-router": { "version": "5.3.4", "requires": { @@ -92024,8 +93453,7 @@ "safe-stable-stringify": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "dev": true + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==" }, "safer-buffer": { "version": "2.1.2" @@ -92615,6 +94043,16 @@ "atomic-sleep": "^1.0.0" } }, + "sort-asc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz", + "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==" + }, + "sort-desc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz", + "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==" + }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -92624,6 +94062,15 @@ "is-plain-obj": "^1.0.0" } }, + "sort-object": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz", + "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==", + "requires": { + "sort-asc": "^0.1.0", + "sort-desc": "^0.1.1" + } + }, "sort-object-keys": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", @@ -92961,6 +94408,11 @@ } } }, + "state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==" + }, "static-eval": { "version": "2.1.0", "requires": { @@ -93969,11 +95421,11 @@ } }, "ts-node": { - "version": "10.7.0", - "dev": true, - "peer": true, + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "requires": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -93984,14 +95436,12 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "dependencies": { "acorn-walk": { - "version": "8.2.0", - "dev": true, - "peer": true + "version": "8.2.0" } } }, @@ -94134,6 +95584,33 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, + "typescript-json-schema": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.55.0.tgz", + "integrity": "sha512-BXaivYecUdiXWWNiUqXgY6A9cMWerwmhtO+lQE7tDZGs7Mf38sORDeQZugfYOZOHPZ9ulsD+w0LWjFDOQoXcwg==", + "requires": { + "@types/json-schema": "^7.0.9", + "@types/node": "^16.9.2", + "glob": "^7.1.7", + "path-equal": "^1.1.2", + "safe-stable-stringify": "^2.2.0", + "ts-node": "^10.9.1", + "typescript": "~4.8.2", + "yargs": "^17.1.1" + }, + "dependencies": { + "@types/node": { + "version": "16.18.114", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.114.tgz", + "integrity": "sha512-7oAtnxrgkMNzyzT443UDWwzkmYew81F1ZSPm3/lsITJfW/WludaSOpegTvUG+UdapcbrtWOtY/E4LyTkhPGJ5Q==" + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" + } + } + }, "ua-parser-js": { "version": "0.7.33" }, @@ -94502,9 +95979,9 @@ } }, "v8-compile-cache-lib": { - "version": "3.0.0", - "dev": true, - "peer": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "v8-to-istanbul": { "version": "9.2.0", @@ -94733,6 +96210,11 @@ "version": "3.3.2", "dev": true }, + "web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + }, "webdriver": { "version": "7.31.1", "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.31.1.tgz", @@ -95642,6 +97124,11 @@ "version": "3.0.0", "dev": true }, + "xml-utils": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.10.1.tgz", + "integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==" + }, "xmlbuilder": { "version": "15.0.0", "dev": true @@ -95700,9 +97187,7 @@ } }, "yn": { - "version": "3.1.1", - "dev": true, - "peer": true + "version": "3.1.1" }, "yocto-queue": { "version": "0.1.0" @@ -95732,6 +97217,11 @@ } } }, + "zstddec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.1.0.tgz", + "integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==" + }, "zwitch": { "version": "2.0.4" } diff --git a/superset-frontend/package.json b/superset-frontend/package.json index 736c294de0ea6..43725d07ffa49 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -110,6 +110,7 @@ "@superset-ui/legacy-plugin-chart-world-map": "file:./plugins/legacy-plugin-chart-world-map", "@superset-ui/legacy-preset-chart-deckgl": "file:./plugins/legacy-preset-chart-deckgl", "@superset-ui/legacy-preset-chart-nvd3": "file:./plugins/legacy-preset-chart-nvd3", + "@superset-ui/plugin-chart-cartodiagram": "file:./plugins/plugin-chart-cartodiagram", "@superset-ui/plugin-chart-echarts": "file:./plugins/plugin-chart-echarts", "@superset-ui/plugin-chart-handlebars": "file:./plugins/plugin-chart-handlebars", "@superset-ui/plugin-chart-pivot-table": "file:./plugins/plugin-chart-pivot-table", @@ -137,11 +138,17 @@ "d3-scale": "^2.1.2", "dayjs": "^1.11.13", "dom-to-image-more": "^3.2.0", + "echarts": "^5.4.1", "emotion-rgba": "0.0.12", "fast-glob": "^3.3.2", "fs-extra": "^11.2.0", "fuse.js": "^7.0.0", "geolib": "^2.0.24", + "geostyler": "^12.0.2", + "geostyler-data": "^1.0.0", + "geostyler-openlayers-parser": "^4.3.0", + "geostyler-style": "^7.5.0", + "geostyler-wfs-parser": "^2.0.3", "googleapis": "^130.0.0", "html-webpack-plugin": "^5.3.2", "immer": "^10.1.1", @@ -161,6 +168,7 @@ "mousetrap": "^1.6.5", "mustache": "^4.2.0", "nanoid": "^5.0.7", + "ol": "^7.5.2", "polished": "^4.3.1", "prop-types": "^15.8.1", "query-string": "^6.13.7", diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/index.ts b/superset-frontend/packages/superset-ui-chart-controls/src/index.ts index fed32cae3a287..f97f24ca7f7c3 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/index.ts +++ b/superset-frontend/packages/superset-ui-chart-controls/src/index.ts @@ -33,6 +33,7 @@ export * from './components/Dropdown'; export * from './components/Menu'; export * from './components/MetricOption'; export * from './components/Tooltip'; +export { default as ControlHeader } from './components/ControlHeader'; export * from './shared-controls'; export * from './types'; diff --git a/superset-frontend/packages/superset-ui-core/src/chart/types/QueryResponse.ts b/superset-frontend/packages/superset-ui-core/src/chart/types/QueryResponse.ts index d5b12e89c28fc..563c0a2d2491d 100644 --- a/superset-frontend/packages/superset-ui-core/src/chart/types/QueryResponse.ts +++ b/superset-frontend/packages/superset-ui-core/src/chart/types/QueryResponse.ts @@ -31,6 +31,14 @@ export interface TimeseriesDataRecord extends DataRecord { __timestamp: number | string | Date | null; } +export const isTimeseriesDataRecord = ( + item: any, +): item is TimeseriesDataRecord => Object.keys(item).includes('__timestamp'); + +export const isTimeseriesDataRecordList = ( + items: any[], +): items is TimeseriesDataRecord[] => items.every(isTimeseriesDataRecord); + // data record value filters from FilterBox export interface DataRecordFilters { [key: string]: DataRecordValue[]; diff --git a/superset-frontend/packages/superset-ui-core/test/chart/types/QueryResponse.test.ts b/superset-frontend/packages/superset-ui-core/test/chart/types/QueryResponse.test.ts new file mode 100644 index 0000000000000..38007e11cea5f --- /dev/null +++ b/superset-frontend/packages/superset-ui-core/test/chart/types/QueryResponse.test.ts @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { + isTimeseriesDataRecord, + isTimeseriesDataRecordList, +} from '@superset-ui/core'; + +describe('QueryResponse', () => { + describe('TypeGuards', () => { + it('correctly determines a TimeseriesDataRecord', () => { + const timeseriesDataRecord = { + foo: 'bar', + __timestamp: 0, + }; + expect(isTimeseriesDataRecord(timeseriesDataRecord)).toBe(true); + }); + + it('correctly determines if a DataRecord is not a TimeseriesDataRecord', () => { + const timeseriesDataRecord = { + foo: 'bar', + }; + expect(isTimeseriesDataRecord(timeseriesDataRecord)).toBe(false); + }); + + it('correctly determines a TimeseriesDataRecordList', () => { + const timeseriesDataRecordList = [ + { + foo: 'bar', + __timestamp: 0, + }, + { + foo: 'baz', + __timestamp: 1, + }, + ]; + expect(isTimeseriesDataRecordList(timeseriesDataRecordList)).toBe(true); + }); + + it('correctly determines if a DataRecordList is not a TimeseriesDataRecordList', () => { + const timeseriesDataRecordList = [ + { + foo: 'bar', + }, + { + foo: 'baz', + }, + ]; + expect(isTimeseriesDataRecordList(timeseriesDataRecordList)).toBe(false); + }); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/README.md b/superset-frontend/plugins/plugin-chart-cartodiagram/README.md new file mode 100644 index 0000000000000..8037296234f0c --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/README.md @@ -0,0 +1,67 @@ + + +## @superset-ui/plugin-chart-cartodiagram + +This plugin allows visualizing charts on a map. To do so, the plugin makes use of existing charts and renders them on the +provided locations. + +Configuring the charts: Charts will be configured in their respective editors. So all configuration options of any chart are supported. + +Configuring the map: For the map, an arbitrary number of background layers (WMS, WFS, XYZ), the initial map extent, the chart background color and border radius, as well as the chart size (per zoom level) can be configured. + +### Usage + +The plugin is configured in `superset-frontend/src/visualizations/presets/MainPreset.js`. + +```js +import { CartodiagramPlugin } from '@superset-ui/plugin-chart-cartodiagram'; + +new CartodiagramPlugin().configure({ key: 'cartodiagram' }).register(); +``` + +Default layers can be added to the constructor. These layers will be added to each chart by default (but can be removed by editors). See also `./src/types.ts` for the definitions of types `WmsLayerConf`, `WfsLayerConf` and `XyzLayerConf`. + +Example for an XYZ default layer: + +```js +import { CartodiagramPlugin } from '@superset-ui/plugin-chart-cartodiagram'; + +const opts = { + defaultLayers: [ + { + type: 'XYZ', + url: 'example.com/path/to/xyz/layer', + title: 'my default layer title', + attribution: 'my default layer attribution', + }, + ], +}; + +new CartodiagramPlugin(opts).configure({ key: 'cartodiagram' }).register(); +``` + +Please note that by default, Superset rejects requests to third-party domains. If you want to include +layers from those, you have to adjust the CSP settings. See also docs/docs/security/security.mdx. + +### Geometry Column + +The plugin requires the selection of a geometry column for a dataset. +This is expected to be a GeoJSON-Point-Geometry string in WGS 84/Pseudo-Mercator (EPSG:3857). Other formats and projections +will be supported in the future. diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/package.json b/superset-frontend/plugins/plugin-chart-cartodiagram/package.json new file mode 100644 index 0000000000000..585884f2116dd --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/package.json @@ -0,0 +1,51 @@ +{ + "name": "@superset-ui/plugin-chart-cartodiagram", + "version": "0.0.1", + "description": "An OpenLayers map that displays charts for single features.", + "sideEffects": false, + "main": "lib/index.js", + "module": "esm/index.js", + "files": [ + "esm", + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/apache-superset/superset-ui.git" + }, + "keywords": [ + "superset" + ], + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/apache-superset/superset-ui/issues" + }, + "homepage": "https://github.com/apache-superset/superset-ui#readme", + "contributors": [ + "terrestris GmbH & Co. KG (https://www.terrestris.de)", + "meggsimum - Büro für Geoinformatik (https://meggsimum.de)" + ], + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@types/geojson": "^7946.0.10", + "geojson": "^0.5.0", + "lodash": "^4.17.21", + "ol": "^7.1.0" + }, + "peerDependencies": { + "@ant-design/icons": "^5.0.1", + "@superset-ui/chart-controls": "*", + "@superset-ui/core": "*", + "antd": "^4.10.3", + "geostyler": "^12.0.0", + "geostyler-data": "^1.0.0", + "geostyler-openlayers-parser": "^4.0.0", + "geostyler-style": "^7.2.0", + "geostyler-wfs-parser": "^2.0.0", + "polished": "*", + "react": "^16.13.1", + "react-dom": "^16.13.0" + } +} diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/CartodiagramPlugin.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/src/CartodiagramPlugin.tsx new file mode 100644 index 0000000000000..6598bbd5a2761 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/CartodiagramPlugin.tsx @@ -0,0 +1,59 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { createRef, useState } from 'react'; +import { styled, useTheme } from '@superset-ui/core'; +import OlMap from 'ol/Map'; +import { + CartodiagramPluginProps, + CartodiagramPluginStylesProps, +} from './types'; + +import OlChartMap from './components/OlChartMap'; + +import 'ol/ol.css'; + +// The following Styles component is a
element, which has been styled using Emotion +// For docs, visit https://emotion.sh/docs/styled + +// Theming variables are provided for your use via a ThemeProvider +// imported from @superset-ui/core. For variables available, please visit +// https://github.com/apache-superset/superset-ui/blob/master/packages/superset-ui-core/src/style/index.ts + +const Styles = styled.div` + height: ${({ height }) => height}px; + width: ${({ width }) => width}px; +`; + +export default function CartodiagramPlugin(props: CartodiagramPluginProps) { + const { height, width } = props; + const theme = useTheme(); + + const rootElem = createRef(); + + const [mapId] = useState( + `cartodiagram-plugin-${Math.floor(Math.random() * 1000)}`, + ); + const [olMap] = useState(new OlMap({})); + + return ( + + + + ); +} diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/ChartLayer.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/ChartLayer.tsx new file mode 100644 index 0000000000000..8800f3da38c96 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/ChartLayer.tsx @@ -0,0 +1,282 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import Layer from 'ol/layer/Layer'; +import { FrameState } from 'ol/Map'; +import { apply as applyTransform } from 'ol/transform'; +import ReactDOM from 'react-dom'; +import { SupersetTheme } from '@superset-ui/core'; +import { ChartConfig, ChartLayerOptions, ChartSizeValues } from '../types'; +import { createChartComponent } from '../util/chartUtil'; +import { getProjectedCoordinateFromPointGeoJson } from '../util/geometryUtil'; + +import Loader from '../images/loading.gif'; + +/** + * Custom OpenLayers layer that displays charts on given locations. + */ +export class ChartLayer extends Layer { + charts: any[] = []; + + chartConfigs: ChartConfig = { + type: 'FeatureCollection', + features: [], + }; + + chartSizeValues: ChartSizeValues = {}; + + chartVizType: string; + + div: HTMLDivElement; + + loadingMask: HTMLDivElement; + + chartBackgroundCssColor = ''; + + chartBackgroundBorderRadius = 0; + + theme: SupersetTheme; + + /** + * Create a ChartLayer. + * + * @param {ChartLayerOptions} options The options to create a ChartLayer + * @param {ChartHtmlElement[]} options.charts An array with the chart objects containing the HTML element and the coordinate + * @param {ChartConfig} options.chartConfigs The chart configuration for the charts + * @param {ChartSizeValues} options.chartSizeValues The values for the chart sizes + * @param {String} options.chartVizType The viztype of the charts + * @param {String} options.chartBackgroundCssColor The color of the additionally added chart background + * @param {Number} options.chartBackgroundBorderRadius The border radius in percent of the additionally added chart background + * @param {Function} options.onMouseOver The handler function to execute when the mouse entering a HTML element + * @param {Function} options.onMouseOut The handler function to execute when the mouse leaves a HTML element + * @param {SupersetTheme} options.theme The superset theme + */ + constructor(options: ChartLayerOptions) { + super(options); + + this.chartVizType = options.chartVizType; + + if (options.chartConfigs) { + this.chartConfigs = options.chartConfigs; + } + + if (options.chartSizeValues) { + this.chartSizeValues = options.chartSizeValues; + } + + if (options.chartBackgroundCssColor) { + this.chartBackgroundCssColor = options.chartBackgroundCssColor; + } + + if (options.chartBackgroundBorderRadius) { + this.chartBackgroundBorderRadius = options.chartBackgroundBorderRadius; + } + + if (options.theme) { + this.theme = options.theme; + } + + const spinner = document.createElement('img'); + spinner.src = Loader; + spinner.style.position = 'relative'; + spinner.style.width = '50px'; + spinner.style.top = '50%'; + spinner.style.left = '50%'; + spinner.style.transform = 'translate(-50%, -50%)'; + + this.loadingMask = document.createElement('div'); + this.loadingMask.style.position = 'relative'; + this.loadingMask.style.height = '100%'; + this.loadingMask.appendChild(spinner); + + this.div = document.createElement('div'); + + // TODO: consider creating an OpenLayers event + if (options.onMouseOver) { + this.div.onmouseover = options.onMouseOver; + } + + // TODO: consider creating an OpenLayers event + if (options.onMouseOut) { + this.div.onmouseout = options.onMouseOut; + } + } + + setChartConfig(chartConfigs: ChartConfig, silent = false) { + this.chartConfigs = chartConfigs; + if (!silent) { + this.changed(); + } + } + + setChartVizType(chartVizType: string, silent = false) { + this.chartVizType = chartVizType; + if (!silent) { + this.changed(); + } + } + + setChartSizeValues(chartSizeValues: ChartSizeValues, silent = false) { + this.chartSizeValues = chartSizeValues; + if (!silent) { + this.changed(); + } + } + + setChartBackgroundCssColor(chartBackgroundCssColor: string, silent = false) { + this.chartBackgroundCssColor = chartBackgroundCssColor; + if (!silent) { + this.changed(); + } + } + + setChartBackgroundBorderRadius( + chartBackgroundBorderRadius: number, + silent = false, + ) { + this.chartBackgroundBorderRadius = chartBackgroundBorderRadius; + if (!silent) { + this.changed(); + } + } + + /** + * Unmount and remove all created chart elements from the DOM. + */ + removeAllChartElements() { + this.charts.forEach(chart => { + ReactDOM.unmountComponentAtNode(chart.htmlElement); + chart.htmlElement.remove(); + }); + this.charts = []; + } + + createCharts(zoom: number) { + const charts = this.chartConfigs.features.map(feature => { + const container = document.createElement('div'); + + let chartWidth = 0; + let chartHeight = 0; + if (this.chartSizeValues[zoom]) { + chartWidth = this.chartSizeValues[zoom].width; + chartHeight = this.chartSizeValues[zoom].height; + } + + const chartComponent = createChartComponent( + this.chartVizType, + feature, + chartWidth, + chartHeight, + this.theme, + ); + ReactDOM.render(chartComponent, container); + + return { + htmlElement: container, + coordinate: getProjectedCoordinateFromPointGeoJson(feature.geometry), + width: chartWidth, + height: chartHeight, + feature, + }; + }); + + this.charts = charts; + } + + updateCharts(zoom: number) { + const charts = this.charts.map(chart => { + let chartWidth = 0; + let chartHeight = 0; + if (this.chartSizeValues[zoom]) { + chartWidth = this.chartSizeValues[zoom].width; + chartHeight = this.chartSizeValues[zoom].height; + } + + // only rerender chart if size changes + if (chartWidth === chart.width && chartHeight === chart.height) { + return chart; + } + + const chartComponent = createChartComponent( + this.chartVizType, + chart.feature, + chartWidth, + chartHeight, + this.theme, + ); + ReactDOM.render(chartComponent, chart.htmlElement); + + return { + ...chart, + width: chartWidth, + height: chartHeight, + }; + }); + + this.charts = charts; + } + + render(frameState: FrameState | null) { + if (!frameState) { + return this.div; + } + + const { viewState } = frameState; + const currentZoom = Math.round(viewState.zoom); + + // nextResolution is only defined while an animation + // is in action. For this time we show a loading mask + // to keep the amount of chart rerenderings as low as possible. + if (viewState.nextResolution) { + return this.loadingMask; + } + + if (this.charts.length === 0) { + this.createCharts(currentZoom); + } else { + this.updateCharts(currentZoom); + } + + this.charts.forEach(chartObject => { + const { htmlElement, coordinate, width, height } = chartObject; + + // clone, because applyTransform modifies in place + const coordCopy = [...coordinate]; + + const [x, y] = applyTransform( + frameState.coordinateToPixelTransform, + coordCopy, + ); + + // left and top are corrected to place the center of the chart to its location + htmlElement.style.left = `${x - width / 2}px`; + htmlElement.style.top = `${y - height / 2}px`; + htmlElement.style.position = 'absolute'; + htmlElement.style['background-color' as any] = + this.chartBackgroundCssColor; + htmlElement.style['border-radius' as any] = + `${this.chartBackgroundBorderRadius}%`; + }); + + // TODO should we always replace the html elements or is there a better way? + const htmlElements = this.charts.map(c => c.htmlElement); + this.div.replaceChildren(...htmlElements); + + return this.div; + } +} diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/ChartWrapper.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/ChartWrapper.tsx new file mode 100644 index 0000000000000..ed441a7181ec3 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/ChartWrapper.tsx @@ -0,0 +1,53 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { getChartComponentRegistry, ThemeProvider } from '@superset-ui/core'; +import { FC, useEffect, useState } from 'react'; +import { ChartWrapperProps } from '../types'; + +export const ChartWrapper: FC = ({ + vizType, + theme, + height, + width, + chartConfig, +}) => { + const [Chart, setChart] = useState(); + + const getChartFromRegistry = async (vizType: string) => { + const registry = getChartComponentRegistry(); + const c = await registry.getAsPromise(vizType); + setChart(() => c); + }; + + useEffect(() => { + getChartFromRegistry(vizType); + }, [vizType]); + + return ( + + {Chart === undefined ? ( + <> + ) : ( + + )} + + ); +}; + +export default ChartWrapper; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/OlChartMap.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/OlChartMap.tsx new file mode 100644 index 0000000000000..4982c5b95e44c --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/components/OlChartMap.tsx @@ -0,0 +1,409 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { useEffect, useState } from 'react'; + +import Point from 'ol/geom/Point'; +import { View } from 'ol'; +import BaseEvent from 'ol/events/Event'; +import { unByKey } from 'ol/Observable'; +import { toLonLat } from 'ol/proj'; +import { debounce } from 'lodash'; +import { fitMapToCharts } from '../util/mapUtil'; +import { ChartLayer } from './ChartLayer'; +import { createLayer } from '../util/layerUtil'; +import { + ChartConfig, + LayerConf, + MapViewConfigs, + OlChartMapProps, +} from '../types'; +import { isChartConfigEqual } from '../util/chartUtil'; + +/** The name to reference the chart layer */ +const CHART_LAYER_NAME = 'openlayers-chart-layer'; + +export const OlChartMap = (props: OlChartMapProps) => { + const { + height, + width, + mapId, + olMap, + chartConfigs, + chartSize, + chartVizType, + layerConfigs, + mapView, + chartBackgroundColor, + chartBackgroundBorderRadius, + setControlValue, + theme, + } = props; + + const [currentChartConfigs, setCurrentChartConfigs] = + useState(chartConfigs); + const [currentMapView, setCurrentMapView] = useState(mapView); + + /** + * Add map to correct DOM element. + */ + useEffect(() => { + olMap.setTarget(mapId); + }, [olMap, mapId]); + + /** + * Update map size if size of parent container changes. + */ + useEffect(() => { + olMap.updateSize(); + }, [olMap, width, height]); + + /** + * The prop chartConfigs will always be created on the fly, + * therefore the shallow comparison of the effect hooks will + * always trigger. In this hook, we make a 'deep comparison' + * between the incoming prop and the state. Only if the objects + * differ will we set the state to the new object. All other + * effect hooks that depend on chartConfigs should now depend + * on currentChartConfigs instead. + */ + useEffect(() => { + setCurrentChartConfigs(oldCurrentChartConfigs => { + if (isChartConfigEqual(chartConfigs, oldCurrentChartConfigs)) { + return oldCurrentChartConfigs; + } + return chartConfigs; + }); + }, [chartConfigs]); + + /** + * The prop mapView will always be created on the fly, + * therefore the shallow comparison of the effect hooks will + * always trigger. In this hook, we compare only those props + * that might be changed from outside of the component, i.e the + * fixed properties and the mode. Only if these values differ will + * we set the state to the new object. All other effect hooks that + * depend on mapView should now depend on currentMapView instead. + */ + useEffect(() => { + setCurrentMapView(oldCurrentMapView => { + const sameFixedZoom = oldCurrentMapView.fixedZoom === mapView.fixedZoom; + const sameFixedLon = + oldCurrentMapView.fixedLongitude === mapView.fixedLongitude; + const sameFixedLat = + oldCurrentMapView.fixedLatitude === mapView.fixedLatitude; + const sameMode = oldCurrentMapView.mode === mapView.mode; + if (sameFixedZoom && sameFixedLon && sameFixedLat && sameMode) { + return oldCurrentMapView; + } + return mapView; + }); + }, [mapView]); + + /** + * Set initial map extent. + */ + useEffect(() => { + const view = olMap.getView(); + const { mode, fixedLatitude, fixedLongitude, fixedZoom } = mapView; + + switch (mode) { + case 'CUSTOM': { + const fixedCenter = new Point([fixedLongitude, fixedLatitude]); + fixedCenter.transform('EPSG:4326', 'EPSG:3857'); // in-place + + view.setZoom(fixedZoom); + view.setCenter(fixedCenter.getCoordinates()); + break; + } + default: { + fitMapToCharts(olMap, chartConfigs); + + const zoom = view.getZoom(); + const centerCoord = view.getCenter(); + if (!centerCoord) return; + + const centerPoint = new Point(centerCoord); + centerPoint.transform('EPSG:3857', 'EPSG:4326'); // in-place + + const [longitude, latitude] = centerPoint.getCoordinates(); + + setControlValue('map_view', { + ...mapView, + zoom, + longitude, + latitude, + fixedLatitude: latitude, + fixedLongitude: longitude, + fixedZoom: zoom, + }); + + break; + } + } + }, []); + + /** + * Update non-chart layers + */ + useEffect(() => { + // clear existing layers + // We first filter the layers we want to remove, + // because removing items from an array during a loop can be erroneous. + const layersToRemove = olMap + .getLayers() + .getArray() + .filter(layer => !(layer instanceof ChartLayer)); + + layersToRemove.forEach(layer => { + olMap.removeLayer(layer); + }); + + const addLayers = async (configs: LayerConf[]) => { + // Loop through layer configs, create layers and add them to map. + // The first layer in the list will be the upmost layer on the map. + // With insertAt(0) we ensure that the chart layer will always + // stay on top, though. + const createdLayersPromises = configs.map(createLayer); + const createdLayers = await Promise.allSettled(createdLayersPromises); + createdLayers.forEach((createdLayer, idx) => { + if (createdLayer.status === 'fulfilled' && createdLayer.value) { + olMap.getLayers().insertAt(0, createdLayer.value); + } else { + console.warn(`Layer could not be created: ${configs[idx]}`); + } + }); + }; + + addLayers(layerConfigs); + }, [olMap, layerConfigs]); + + /** + * Create listener on map movement + */ + useEffect(() => { + const { fixedLatitude, fixedLongitude, fixedZoom } = currentMapView; + + const view = olMap.getView(); + + const onViewChange = (event: BaseEvent) => { + const targetView: View = event.target as unknown as View; + + const center = targetView.getCenter(); + const zoom = targetView.getZoom(); + if (!center) { + return; + } + const [longitude, latitude] = toLonLat(center); + + setControlValue('map_view', { + ...currentMapView, + zoom, + longitude, + latitude, + fixedLatitude, + fixedLongitude, + fixedZoom, + }); + }; + + // TODO: maybe replace with debounce from lodash + // timeout=100ms seems to work well, 1000ms has other side-effects + function debounce(func: Function, timeout = 100) { + let timer: number; + return function (this: any, ...args: any) { + clearTimeout(timer); + timer = window.setTimeout(() => func.apply(this, args), timeout); + }; + } + + const debouncedOnViewChange = debounce((event: BaseEvent) => { + onViewChange(event); + }); + + const listenerKey = view.on('change', debouncedOnViewChange); + + // this is executed before the next render, + // here we cleanup the listener + return () => { + unByKey(listenerKey); + }; + }, [olMap, setControlValue, currentMapView, currentChartConfigs]); + + useEffect(() => { + if (currentMapView.mode === 'FIT_DATA') { + const layers = olMap.getLayers(); + const chartLayer = layers + .getArray() + .find(layer => layer instanceof ChartLayer) as ChartLayer; + + if (!chartLayer) { + return; + } + const extent = chartLayer.getExtent(); + if (!extent) { + return; + } + const view = olMap.getView(); + view.fit(extent, { + size: [250, 250], + }); + } + }, [olMap, currentMapView.mode]); + + /** + * Send updated zoom to chart config control. + */ + useEffect(() => { + const view = olMap.getView(); + + const onViewChange = (event: BaseEvent) => { + const targetView: View = event.target as unknown as View; + + // ensure only zoom has changed + const zoom = targetView.getZoom(); + + // needed for TypeScript + if (!zoom) return; + + // round zoom to full integer + const previousZoom = Math.round(chartSize.configs.zoom); + const newZoom = Math.round(zoom); + + // if zoom has not changed, we return and do not update the controls + if (previousZoom === newZoom) return; + + const updatedChartSizeConf = { + ...chartSize, + configs: { + ...chartSize.configs, + zoom: newZoom, + }, + }; + + setControlValue('chart_size', updatedChartSizeConf); + }; + + const debouncedOnZoomChange = debounce((event: BaseEvent) => { + onViewChange(event); + }, 100); + + const listenerKey = view.on('change:resolution', debouncedOnZoomChange); + + // This is executed before the next render, + // here we cleanup our listener. + return () => { + unByKey(listenerKey); + }; + }, [olMap, setControlValue, chartSize]); + + /** + * Handle changes that trigger changes of charts. Also instantiate + * the chart layer, if it does not exist yet. + */ + useEffect(() => { + const layers = olMap.getLayers(); + const chartLayer = layers + .getArray() + .find(layer => layer instanceof ChartLayer) as ChartLayer; + + const { r, g, b, a } = chartBackgroundColor; + const cssColor = `rgba(${r}, ${g}, ${b}, ${a})`; + + if (!chartLayer) { + layers.forEach(layer => { + if (!(layer instanceof ChartLayer)) { + return; + } + // remove all chart elements from dom. + layer.removeAllChartElements(); + // delete previous chart layers + olMap.removeLayer(layer); + }); + + // prevent map interactions when mouse is over chart element + // inspired by https://gis.stackexchange.com/questions/303331 + const deactivateInteractions = () => { + olMap.getInteractions().forEach(interaction => { + interaction.setActive(false); + }); + }; + + const activateInteractions = () => { + olMap.getInteractions().forEach(interaction => { + interaction.setActive(true); + }); + }; + + const newChartLayer = new ChartLayer({ + name: CHART_LAYER_NAME, + chartConfigs: currentChartConfigs, + chartVizType, + chartSizeValues: chartSize.values, + chartBackgroundCssColor: cssColor, + chartBackgroundBorderRadius, + onMouseOver: deactivateInteractions, + onMouseOut: activateInteractions, + theme, + }); + + olMap.addLayer(newChartLayer); + } else { + let recreateCharts = false; + if (chartVizType !== chartLayer.chartVizType) { + chartLayer.setChartVizType(chartVizType, true); + recreateCharts = true; + } + if (!isChartConfigEqual(currentChartConfigs, chartLayer.chartConfigs)) { + chartLayer.setChartConfig(currentChartConfigs, true); + recreateCharts = true; + } + // Only the last setter triggers rerendering of charts + chartLayer.setChartBackgroundBorderRadius( + chartBackgroundBorderRadius, + true, + ); + chartLayer.setChartBackgroundCssColor(cssColor, true); + chartLayer.setChartSizeValues(chartSize.values, true); + if (recreateCharts) { + chartLayer.removeAllChartElements(); + } + chartLayer.changed(); + } + }, [ + olMap, + theme, + currentChartConfigs, + chartVizType, + chartSize.values, + chartBackgroundColor, + chartBackgroundBorderRadius, + ]); + + return ( +
+ ); +}; + +export default OlChartMap; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/images/example1.png b/superset-frontend/plugins/plugin-chart-cartodiagram/src/images/example1.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe034477b8a4fbb1bc08140442a1e36938eda98 GIT binary patch literal 274679 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¬$#XLejCk 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

B0y0i_J(Ry6T>rI z@w$VM&r%U6H4_mT+Ja!yA8RF7vtE5dTRLbrAD_F;&5nhZ#n@NG#8_mB@1wy%H@^X< z;iddm%AkbXty(_0WM8Y7_aUU<7nnni4&|Gsz=7c4pLx4a;HjKH96xPnWyKnrvkRxf zOe`nqJ%wNovY(>8hE_z?lk5RfeRm9GqqT)D&aG1HX5t8YYF~z$i|ypqhAgZVpOz zI8W~g?V}u1)Hs+|TJKN+khu8`wy>w2{)ch~JV2hXSOD#0A$5ew4|Fw97_qt&y(LR` zZ1)saS>yffjm4s@Em)LQ=$peStF8A)#c=v7f-hr5PGO7^4x=Ef=F-Cb?S)( z>cGEyKFeFB*gqE;$dw=Kc++}uZ~qc?bRi_Au=ZpcC-b-xDHL`DNHx#wJLQ^t?7oFF z<%PV|Zw6=S&(XgA8ADO^{r5z)Q=uh`nEWWsj6%N;%et45&kc8$Dxlz!{9o7zUHzxq zr#{>=Qd3aKfKWC!m-cy9*GvRttJQRiVy_F$Di!7AhTW^-bq2Qn+~<+A9|X=#r$4|g zU}0$oY1A1Q15;8MaB=V6y@OPyr51<2j*lxVG=AVup}j9h*bH@lQsFi*sfhC@s#yzS?k4KfAr`a;@QwZi#dT5?FGXovK(N) zLtGb_;BPMuyZl8w*h z#dne*)FE_)f=nPN#p-O78m|osdG9z>cy2R~aKX>i_2FCOfWgW~7fR7WUqwyL&%w>` z{;&*~sYSraQczG(S?Py#CWI;EvZJ#QLWusd@VndxtcdEzar-jqC|k_M*x3S`#VIY} zg(euJl7GtSnz5S?Xn%Vczy*|SMz=r_1gY||L{di3M;y*P^zP$bmZxJW)|}4WDI)Ur z!L5d4$TtsyUdKabdOxyl;%39Ft)Jlz8js{r-$DWoY30&%rJ&Ay!~-GHmB-eGT#rM4G(I_PuS9c;fEo37z*H8$G66G4+spF*JI=j}yn} zL?~_ZN{;NaBHE9!jJs)faYjBRyDi0}Ul60!g==K|7ak*9lgs3u3@?2AUvr)u-QoyPxIFl#RK3jc5PvQu~}7%k{?k)SvGhA-@36{|g(J6z=pTtaw>47|>|OvGE`8zLQt;=9~DvTV!i3ks&O zIui{`aCQ|JyDGSgdU@x?nc4%AFc2n%+>Q-AntmVTViAO3}e@av^ZxKhi?%HW$b z4+-Kh6tRNURhbkq9C9Tu?{^>UlE4jC zLo|?JYHwmf$MqZe75^oNl139r$va4N$BP*mE3c?1k&x2VeDvUft<>dH6E!;!4?W!x zO-k;E{pXO>3&E}ReULs6DGgWUljj7)6xu0EX5X%&nX{j!OEM?|`bMmSWes{DiJKU2 zb^eft247oCJRaW{za0k~yq!9-^5R%kP6+6}g+TbvQIUsKd)Pz@zQMGELfpO|gkO3W_s~Y|ISN3~ zVhkcI97AQoc==fQLm$1x`<;}*Vz3MiVY@QD(iOdB3car|9R&tHLu!b$DArP9VhVje ztbr&1Mh9K%a}X;E3TrB#cB>degZT0#t`G-HON83d4IWjwm)|#sy#;+wNR_m=r&Bx5 zWi<71Xqn1 z`E25CL_t3t%^SH%9HTC3#+q_ZDMi zoWhim0$r>87kSU(9M1P>l`MaO`a=Ra@2%kR>^cb^@o~9Uj zU!khM@f43<1RcxfT)S~Y6My#R4K~`O1!R?@RT|QS8(J5UzpjocD4*#SR_5A?7X0Yh zf~OqB<`tI}reFQ%ET(RUJz8Yx?KOd9%XK#niRiznVmps!QT7YQv_y9D-ib;d)^kC| znC>`LcErZU2J(zT$Y46iAMSJeLmc45j1A9=lT^T7!gL-ZKQTd zNs+u_hg~i%_^U=}Z!E}#n+P1pC0mBl4Rkf$Gt_Bck#twCu*KX?pxO64dOF96JueHa zm^sE7s#vRuhS=$_rdHdj z@-g|UK#t18$=QG(4FKKq7cW2&)#m5mI=|!JCx76HL7KB@znzq)B`zqlOH?Dl8@1NlQ(xQb-tW)sMG))M48nC}USHU%wph4gK zH7h?~kd+n1%^@jUWhv@4$6!s3s4Qqh&WsX`?LYi=tZ zHuogSokDK2Rm$%gQ!eP|X57Kl=S%e{zq_<@t- z-=gSj8W3Aj5{+Bqa`MxoQ&I6{@bptn{97S4=8U%}pC* z?A1~DmeEFAo)k-=xn;=7?|JXpYQuoXZ%Ea?pVw3fff)mv%ID9Yb9)h(rmY=P#FS+oWh+wb1^hUr7tOz#>&VEI!b@w5Wh$U)3bCNj#{vCO zR#uKsN#JGL!Asr;pD%DvgjeEDKaZ5hc18!Ho$$fPeVf1;)*;AQ#*UW%#jYUo__1S! z-pA`5!0>gf0ew&ilB`6x zm(gUz$)k0LjmfLVqEb!J)#o9f=$`4bkxFTOcV;-XrA? z<9S}GFjwjbV-g#2EJ@#5nuT_iM1^1TYc+8a^~yu7)}Ob(TK9F@*8CAZ6CKZIXeB79 zcJxN@vfW{J_r~_zv^^(3wD(xaa5OvJ2bO|C{-}>oL;v6)si6@&J3gb|U>NX0GSvqx z+acU~96!&04p~Ii9)(V;qUs*e5FaLTl`9YM zx-13YQ$l1ilp8qX5#NG!l9^xK#?G!0YuwG70@Zd5X4*+b?eF&S_kZ|SJ*a*CS`&AA zblufz*+M3=_r0*@qdHjq2JKymq^QY86n^|=T<(E_4sOB;Ur0%OD=rG8efYKkD5O{8 zE)$|Idyy50nw@Ex&&|cPzOwbtFS=vo)vLpfj++oy zqn`^U;?JHvgM&`&E@nUXYE>nr?aud+eG$=uW(cdDHI@w2Q zWccDHnLCuf`?1!&Z7oO=J!3Bm+kRL?xSl!O;H0oFI?}YYe`IlM^gT zdL>LF9)*^T!259&p;`=oCnkn+*1=#*S!Ng7iT}MK#Wn+Tgvw*P@W!=EhwbE4_UyS8 zGw4RB@d`=knFaFS($W$Y6@_U8tvj@_omlFD4_?3C0*w^3S4IW~_mJF!)~j>Vku*pd zCmbGsu+`%;-xesNM_seBlbXw74Dx-bAt8#VcBB|yD}B`-#+vov>hYVB5)#0Cf5E7M zJ03`28_AU_S&ttGnm_83pYez@jt31=@H-}-&Xwt7iLynOtfs?+Wk^@*-{sn22I?-T zLIBlHhYF!M=*C`?Z;81-@v|9d8>2;M|6Z!p&WggJIp`H|-n9&?2zr~T%|Y;0_B zK;vJ!0Hz>)f2e*@(}fs?REG*`_ODpkZsg`R0@x?DCImObM>~e?trDG@fUU4~lpWD; z@CUw+BNWGjOZeX(z&;B2sK4+8^Q0f@XEdPOmPV+I;YwsoKQ#If*-PWT_iW*Hi_HpyZyZ9)9?qhYDh_I2Daj95m z9v(SDqXT;-lV%k~L~+C%(ERZnJtEDx&uWJ6Rs!^wtmPL@EsQx zZ~`I%`V&W25JH0l`0`e7;#6pUb1BL+G_)BG1>9-*iU{mJ6krgkb01-*XpGjd6?$EC z>z0N1K@*b!q#ZoWEtX;RJV9+uq+0Rt3YAeOkkg*XUP~#wE{y_2Uj|dl$Yst($Nc2M~BE2*It0 zXHXJ{j??1!n5H2up;0?WN5~!Sjx7}&MPLIebnYCy4dsLI{%GG)*hHNNNmm4$DZ&#CtSw2urs3DL{RGVJ?AbjprvQ)J z1e92N16&Xx8h`5KN+~KcJQZ3t2oo~{1H)8MGrdyLv}-;pNL-qOQwz>QI8W%t(!>%@ zQBZ)!7Pw0|Ug^X`m<8oSbO#GRzb4wjsW`>HZ?*lD>NtC{u2V*r$NJJ)^&5~yp=RC! zPx(K8T1-nipBd#jn#skXA8W)xh~>}Um2ev3Z2c?e$?BthfK@?;A(9`b7Qg{KiGlqX z8xt~ljoPaY8+E<-91PKl6fuc+&nZkM$vv4+;xNS{ml@+6KpS9%AZ#$fnVP;v7Ebt| zzHp&hnpTP*(sqZtnj;4n{!JofeWy zG%q>1!_gdkr#+&Rm7gEZ9<{~rEU#sB?CA_ricMHtQ+b200x^|_fZs&Tu`0748y8j^ zqx^O^RrAG}Bzdy4UJ`vJ$jzO2g~34x_a_}49jJNr8?r9v;*E`@v%Xk$@ur zqYY#@ot=$d<1t+`s8j>)j882phO+vuyCC2KJXVgKI&})GrlA!^5K{{a%`+dfF%!gU@w$SK49le9}r}icXYgO1HE0Uy)5G&LxOh`zG$X0U-Gb4K_oV412i{ z1ure7kSF7Nj`fqYn;{y`@?3vhZm_R%uY8qk%5$X+x|wUiwwFy8 zU^PP>CFC4B(rRbFI3Zi*$k{ibe%TQ#C8J|&`x4O=1HIG1&6}tfQ$x@?AoMBXt)ij} zTKNMWAhR(6>*(W&v$}-*P8b&w4d8;HjSpaijNYdn%_HR1jKd?2hO(I8?3I>0gaW~= z>HZM3AYTTDyA8i#nQL5{5Nb#=2*s`9!*6#1iQMaFfh%Etz}LcHn2sPujdpX<({j6Z zkz#L1`aTtvxR(-5Hqc#3htxD?g006k&&f$6drpGr0G$eS2~JK^?d=3HIuZ{fX}KK_ zF(oeK@LfQV>h9h309BtaPyTthm3-8SF}+}tt^|1lfV%ylM*N$GxeEm_ms9VG&??9t zwTPja|Fy|Z--F8s@70&q%~Ki$(7*Yn!@b#`Axet%LD?n3D@a+r7r|%4J7ABWqKjF( z1tR*jHALsrQ4b?FcBSdV&BM;;Q0j64+CL&a36;mQij#9|ai6w2JZuxbOtE@cOF?zy z3@%_tfw6C0C$AK|2Wnq)A8yA(kY1@NifLhAQ+$zNO^7=;_(};oC6} zkBFM6QxCdk4TZcmgXCc%G7X!-pCIX~915_~jdQIsFkIU0CP_5{YF6(6&t*UJ~+)wce46 z$2O)`*fhJ$%91>GcJ-X*N@M%jY#DN$#&k!zJr@@j!I0Vc65)E+WAaDS-ehtY)hP$L-QI?OOZFo>Hy4o< zqrBfY|6(nbmuA*zZ>Jjdj2>^5Zc9cO{)uL}y=(y|Y z&f$HO5q}A+g1l)^rQn5GQeic;va&L0Q2u^It>&6QS!eXiI6c{@Y`mR8>Nrb~4ca#c z4LI^${);OH$O@BjXDitO4JD=1Xc?}sz15vWpf^*=b{)^)EI1*5I`S38b#ls-O3J%? zbPCY)ZcW@RFCU>eimBAz#wNxO+f?J#5lRgII0m*}J$sd0L@9HxSYqYZrm%9#D(!4<`YAoCVN5xrRqbyg{*ljqa+Oc;)?CU*xWL2Dk0dZWLRYOSY_FxKqsS^@ zZFnKDnnOR7F1-YJ90Vz8!AW|^sd4GP5@CIRuz9xk!AcXVv_9utq$foVhk zW8HEkAdOgBz6s`Zk*VjhSNTw*gOTxxnOF@H6p=AfTokRy{9aXp12Y6vKiJ6dzmO$A z)+%O69m8`>pNjmcoaH;Aa!u|(&oev4CI4l8ks~{oIcoSoJtomOt%{wj5REJuR-?+P zQEI}0GodDxObyb)!eo_m$$!GMr^mLMkLVt~)_4?t3b2)^^G2QFvPb(mEIpPi?O9-f zj|l!*hxR#FG&li~0vK_PN}Oa@mX^Te(Z`DLF<}g2e8>>7`_?nWsV(6t#W&Up?z%Gk zue3NpY!34okv`T&>ht1aBji6Uh116i-T>T25WuvsScWlbvn=`WtiT2>o+Zh}fV5>;_)^x$-pR~F-xE)ZkW$T6K|G_7!7REKHMV4a;J^pP zQg(@TOCr_Hcu3XJAs-Dg1NfIJRY8!63bms66(*rTX!-Q^u`*{YCW{IqiHVe{(f5z)w5Wd&VZb>&gi(5=g4SM2SQxkr zI^DWYt$(&N$8!;}Do{(|hcvpS`#x2fb1)x@C2!&1TWhrOU7ocVWsZ4zLbw=@F{!@= zPAF9UImyyE#TFk7(Gl+5O%$IUF>OzV%z-3t1o4Qw2AQwC%B%x_-Le)VCu4${nyzXH z9JoCONJ?U?YHb^yeK@|lyFtNkcihCB>f)0BZsi?{-4R6uZx>d1?>O#@(gxfQZ--E< zmZ2Ww)T#TmwFkwsA_Ee3OwO%Awux|C)N$rUryszDptqRTUYY)@U>BM0_M{?~+FQq{ zEGg8tflV3@aEqmiqs@2>`;?_NCdI@{myGzSE}Wb9$4%xcq7w+vRYF#lI+yCD#&oqc zaYxQzhj6RaP14P)jyB7KFD-eHS$>Np&)m=z)JXli3kac(4uMmn|Sl)q&&t+ z9!qm)`f^>GFQrNJI?vwuG-i$nnzcdRW?>OKAt~QZG!&*nc1nF{&fsNGXx!Xt^78)6 z4`l&Aq<%ZeW)7KJ3JpITABJVPzVp!8SXR|b#e_I&S4(p6w(8*d;;xJJ00 zFo@(7C9{4IS|umoUuKC(#>TiCn4A!8zI4LT;qgKqwTE z|DElo#<0y7ztG}>=ishgsCI^3Bd?S!=j-`L>FYgJMrUcvbHLa``n$_rd~M?o&_{M@ zTjf1_w(mKGN_Oy06?!S!WJi}AZESEe7~5YdlCV~Tbg}>OWAgsv?(UsF^`wS#{DKs= zq@+ZiJ1H$K-k%uXr7IRYtM&WQbTx(<)E?L>yaB-9|sjV~pbQc58lTq)(j@l8ZdwgAhEV z{Ew{kh%GNIHO*bx3;JQ?qnJTEdG|t~E-mgstQ7?3si{%P&+P--S*A{wi;`PV z`oe5?s5(WbEn-l$Fg+|2Mi8yY!%#v;#_JhM;2}Gz+}Vt&8k1{G6-cSY;0r5=iAQ$_ zP{qf`rfPBK0}lYRM}7}8A=*LSo^5)Yd}*`cUWL@atz7d{OOZZOJdf;*B2JB?dh@3z z?s{mo0LmdX0ACnCkjIgEhLC%W8)m}??#k@ZR81-8Hu#38WXC5YlImOB`_EHkXoX;O z_ED&^)AuQ#yk$otjN_Z@?(XrR$=kU?Q-^m6=xU2zu;i+L=4k16%nUG)c3xd+==kWY|`hl!i zr-wn3d-gOG6@i}7anb<$j;kl+U|oN; zRt$C64h3}Vt_z++>v_?3@Ki>gmqMwy%u&)LZW8n`|$~D9yz2Fuol+TJhNj zYGcGU_&74&=ZA7Hj%2D}ite;&7wy$`^}TyX9RVKMl`3c=F&aq`*snp+l46S8KC*q! z1C~omY1slVHDYst9oV6}++19VClyIv#v+hNq2L#*=lCu_OL(+-DN@{|pV-y^7DqF_ zacWk|TD|cP5ZD=@5N_ucPbm#{ZYMw})FDYSUU~p>m*A-(URjG^!_t@&H z5C~D;arhrqvJz|QQf_nai&_x1LQ|Mv?I0rxMh?R=2dc-Epq zuo9)RMG}!ZfSUV0e8Vy{N^2uQ^jC?@9$j7c_%$sNs?lFOyK`kCGvi*=Ij&}6uiJT7 zKBm4Ie`sis88A{MuZa5kD{?NET!^f!SOsVZ>M5`7PXsc zy+SNWmow?FnZk2i`#7f;hg&A44qG#@1+s3Sk2M$vBrG5;oktUE3f5Zz+g!W0S6SJk z+D;2lHi%&?gXlp9wvNdzWjj+moC9cBfaMmZR69JB(#uTHt4f(uw(#~J#yWwtzJ)*t z@|>WO-n;kOUvp%YSk}V*3O$*$bUB{D*VJD}V!lMg7zkV_OCZR@E0?ythnxh|jN(HG zYYPV^hCo(ji?oy!31Skd2irZt9mg_+7{HQz;ibcBhy*M$G!!7ocsd_QgNCq|2dser z{oKAHDBw4m^L)I#2t&W1T*PgQ+Yn!y5ad?b`H^sfoGCt<%VN~8y>rm}lC z22%GuCETo$*R;GK6v&4yjagR)yU*LR7=B|!5*7DwvlXA~)nexED&9%CqSY>b)ZHCi zO;ukE_lD{{u7pW&4OsMbILbz*&*728RwJaw%gZ~q6ogM5hz&9Wzy;_l@md`GSvXcE z&~!pHhbc2`UwF8-p_Qdo)H7wN4Lr!v%W9QsTwPho+|97;3<*1#0YICpV#9zqOvI zLStwJ?*qD20H_~h4wawq&ifgnK@!Gdij9L_k^H(vRELnq`5yhghB~YPjC>X^KfA_`5u6Sn9 z{%>42iyZ!flp!fUptr(B!%2$Ycn=i_V8!+MtOFpma3I3j6^?>+c%=kIa^deF{RZO> z4o@__0ip(^51X?;b~5-}|BHy0g*h(6m{bxdL58o1sSxB7+7TyAB#78JVQ=4nRc7?C zC{29f;#?^XB(IR|tJ1-8#tj*!(pT6)Ee1Eo>bW7k;r9h_mtg+Q4!=!EpfzS$vkQCd z6|m39NaR{~W@MnW?*WATOb1f_^-U_mKm^Gm%3sLIpIN}m4C^W^Xk|f2=zxeHJ;&iu zqak2KVEU_j==VZOG}R=y#JR$D?k>k8ds6G9r|{f;BdcsD*?k&@R?q+a-GtUGs>2o9 z-T4`iK5HQn*H<_GU=s0gD4s)M5{_4$!L3(mkn|vh_Yd#Ki{$9V-}Agl}Mc zoHpGUH8^OUZVKG-oMbHIXX=B=Qn3X&-*3XqLoR3u`Zk~!c3YINi!e&5*Gh+IaA zed+3CVN9WYv+{p!B6WcGVJrYvgmmIZEb z>V;X(gp9)l%_1Nr--2BJ@@)gtAKW^$WTNnoqTDR}bQ6g;fg0QTj^*d?=O5iZkdN46 zRi(|ZNv9PB-q?4|1p*K=7w;O2w4Oz(h13kDQ4t@4AbhN|0ifz}c_-O-1Q0nmX2UBG ze2*T8!39JNA)?=vm--W}>^khZEb8K zKI)7GnVAj3bBq@jh))^9VX+0(li*D-iGw#8Xuxqn%TF1t+vF7X>d4uN&p+kb{#Z*8 zPvMCqD|-s?B($a|rnVg)&`-?jSzGABfPoe2ZO?|{DzKf3uI!2Jq zFe#)90_nz6YB*n8kd_jYEXZ-Vq7X%g9~O_rAKF{rw4qZ+v^f{UKX5_e@Zq6ohUt#Y z?;cJUEY>i8VXq0s148h^Dyh^dO;G#(3m-V}K=b2cgKRH74zdC;rOd~&;A?|=7BOfm z&T>z`2Nr;f}p_myy;D z?`@%x^-(6#`-l`DJ%L*xkAfjbrM-@BeW3(Oomo~KlU(E$wy9j zQ$oT)_Z{yoI+QfR|6MqJy0&i)lnd&LOLCll!(Ow3nkJb90Ihf>%o?jYfZwJ%3%*dr z-Ur(8y$<(t>z}V?8OC)G=j8ugJ`O2_9qyjhCq#6+7tiXxwhC+8Lh9pUHqHlj4i5L;jvF+MJ0rZe z(bHp&%FnQZ0g%$IXXO`mX}r)Ru4Kui5*MAvs>MS(&JZGUVW7xJBv;vJ5_@Za>mk-hE^x8u!s3|nKEtnBU_Brpnk(T-cRPQs;vzLG^h{o9t7v-5P>3P#*V7vKmafw^&k-TRR$HU3r!+0@wDT(Y;=>M~OCjg2 z?5v@AuQI|}Mhae^pO5IH@E$enwho*Q^7t%NvWlc-l7#`LGUS5;Ix3VvhYa~0c0Mty zP~A&>{QRjZX-2mqt+}OY7u~SnfVURDg1bcBx*D8z4+fk*IP0ZYiZHKP3a+XhP^0KvBeL#yCsO*J)cmemn9 z&7(<0^30N+1EpMjjzOD<$Yp&2#bM3Sdw`7%?${vi?H8PHZ-E2C_=yxr*p>H|zxa&; z$qp&H1)eEs;=M!<3Llw9D~Lz(b8~faTY&4zNN-EoA(7C#=u7c0{&><2x(nw0FDNFF zB7g<(r@XxHxEjYx@+#KCvk~gMA3TJF@7j}}h#`ZnZv6E0L4TX5%Y5g(g-U=SRoHG; ze!owi@@B8h4MGiy$`r4Xa7b$tiQ%Xtlz++Bi6~+L-X)^=cLr5jcx%2))W-keONqpq z7*4gOE8vnF={N1U-`pG=MdK>LKHgLHPIqSU)TxFK3kzq?p1tMDq}+|>6NVR-`+&Vt zxiTyBSW=9tjC}ghZ*Ma7_!v{tF?z$ts(hs;m)f}#J27}af|3_ckgY(|tJ#xfrtDIqJnjC7g1Hg~a? zL~Rs-K9EYPvZ!i1WoOkWqm3dy_n&TSZe3&&w!f2a%5oIpVnO<+@0*90jk9C93sg*Q zoYN2>ya=I?xQ5Fck}?Qw?dy6n&mnaevkxrpzzqaLmleRH-qR-5agGYEvC3czr$r;( zDI}gKfP%!yeXmzp^m2@0{;mtLePl`M?G2cKFeqb6hHgaavJb0bY|Kr*xH#j8_r&ep zr@8vhU)Xjown!p3lu(_b8Rf*w&1Gz@Fg|{VU3^Ck8M@aoWx6& zmhO_nQ14Y#APVE!G(~Ug5Bw$HWcr`KGA3iP?m0DmB^@mpT-L-xc6N3yF7L+28v_?e zQDr#9C4OB%?Cf|ds}q(0oWzAn2*U~A+I)vpidG2n_?TdU=7W+BG$_8T7gJVcZ!=pcBD^;wj;EIq(m(>dO|k;hDlUMJv19r_6g!++9$)I z&+!_$6;C{UnUibiV~&R0&`G1M^Tx)6NR)`Lj&6aLW@6jOQld#?>DRAcIbAMTiDZOm z+{C^Pr6S>JmMTaY9CqXdQoVS1e8=3);N49!ycZR9`l^r``M8YmQ$n0dO}jmCFRThU zk>nnIw?2IM6=cly$A@nM5rxhH5vgCstLF~4{U)Uf%+D9wmOtA1x2X+VDQ3lIYrogh z!WnY4Hsf7iQ#huyXd!E4DM-WwSx6WO@Ewd#Lj?yHOkyH3NN@?e#vvdmXig}<(W{SM ziPDJcedghGI*jDN_VsU#7RaVPX5%=vs?N#mb2&!2e5Oi0l)!R(ASr*8Op)<2Uc&uWZ9YM zE&aaBL{|$yl$6wCpL#YYK5qugp(1@n;hKeXt_!23Q9n+>-1hPoVBLg~YLz!WQ_mPo zSvI!k9Mdy0HF4wEcG=_1{MQkIEYlL?U6j870z}@iZP#I3-K;0;(g9L?cocWdAaW$i zh(YRGgaxARU_2Al3dvE}MfI2`;`ZE@H8Hk;v6@GPO(#dvGhbRl0Xrz}SxLZTR3A7Y4NC8ai9C97q1tB*+r3k*Q&wk;X@M1Ie8PXoB-hMEtx)+ZV z;39?ttfrY4wAx_aUHPT2`yLDf@;y5_a%smI%2w2gSObcruV!W{V%Prr`v;=D-F~}f zv>Z}9x%6rIaAV30?Y~5G*7^w@q4wb9WBc}tU2v<+Uyc&4ivfH;!~Z)i0R7hq>Z)p- z`J>V?JGTeZ&Nn4!jc|A#q`};J_jG#=C|^Lq^Yb3EIgZZGt%zUU`dzt2Pf3n2rX#Hv znvBJMLjuPnsD%nY5~(N>0!Up)&F-H=csix;09>PH{$w`=~~Ua@Tm|&VML*D!4Smu!mo; zI4r7`O!)I!2p)YP%#eNuVQzoFDpVqlj=XQ*y?eI>Zy@#@6mqS9Um7DCo_q8bvVxD$ zvq3J#ET2eNjq zAm9(lV9%b3WDSsdG%=s%?>&18>pJdngmqj*o=N_>_g4X1<9@yTe=?;cMKwbyS&W?AbGz1V=TH?)O!oyUyUQks}YX zB2u|&&i?3|Tl*8%HsNcugN%`jC0doifo>_5lnVL7<>C(vi|F8K30iuF*G)%c>GmYwkj{EYbM>mn26fc}HfOt1I!%h*I#nZ8+{(LmV~1lx zFK#bsyv0?-FK5FFJ~92d`zCY*AOcVjVM=gYkaykn)7g;LXxUI@h)q%`nqy=JhM$H> z5Yn&;92ip$6q41K^$?`&&{fe649qKxs`)_96g+h4ZaaX4l(vpJ>hzlOa_EqeL^b|+ z`nGP{<*vpJs}yFS6Di5bjxP3bG%;kNY>DH=CTxqybL#5e*PpO$jNt?4opGG#*hHYj z!x)!nARHecZjdqX;Tyb`KYsrF8q$JD{PqpnM<%WX5~b$k_vQcyudd1)RAKTeFuk0a z86{4BpGA7NO$}ig_5k2dc)-Y0wqeJJ9FAf~pPl~4#KuUOwfVShlu=k=EF~aJr>xH= znd2~CJiFK6{WqPaJB*pGVthpEYnv;1*qAkCXqA=BY3|?6Q@a;cGX8Nm&qvQb1|jp- zBb-peMQZe9@P9D;q1K^d{K~)#G9AOVAiRM;X(ZAP84}Rnt9OwyU=&fyU;`}Q$?4B* zvfONd-n=_@XRJ0!*GVEYZ||D_X#w!~!5yYiOjcA>1nBi2(2&1#fg68t=aHH(ymrp! z;6`}%%-T1flt?bbNL4SZ=!bnSaxY;U4f!V09Toy3@0yI&8H+_}%KA|GK9lY5hla)S z8nDLO_734@X^xtqLCg9nZ&oc%RM;K(abA-x+(4RWh|C4ZMI3mu6=^5KLqZxKJ;HJ9 z@(%1vTHhwNBy0z=F0ISoHe7|U!ze2$MHe1Ca^!F4HaQZm`s2mn^$=6j#~2_#z_k_{ z3iCj-TUXpQ=L_e~ZIHqX&>Yyy>o-3?kJ$zt1FbmZKq6pga!8i1?2K&T3k~1De?O#D zm}jiGsjI8&>wloo5Mdk$&f0=L6+#eF`T;gRk zDu9cwJwZvb_U}beRZdW)Vmo%QUfY9Ad37%3YN7LqJFY$V8&K>JNLqd-=j%fP2LWuEH zA65@@v$IouYsV%I{d9Ic)*f*1Ha5hv-Nk(914OYBsmi{4)JwT@yaegA2s42KE#183 zg$_B_GcV;ZOk(@kR%mST=dYT6$F~8q{WE@Mxb-2)uBTCnM{MaXy*$^Eb1K? zUwt+V^;G49%D3|&scNxE_#PJE?oT?T4%p0JLn*D&Sh@=QjV%H zZ|uF1D+EcZ*E)qdhp9c)vzHWgCYxR_DegL^zQAKDX%<;?CA&&Y*u&*|&!xHXwNtyU z-0R8oHLH;^Q-7D%{Ncv-2|DlNt-okEGtw?SJ@@K(Q~svPwZg5vFv((0!v!NCV}~?E zECKV_8-(WpNTNgtX0nZFV=?k1wbq><0-G=p?qD0h{@DJJQ9s2k7ec|dcg$17q=(Zh zSPh@Op%;YcqR^PC*Hc4ap91|;?JLoQwK)N#O~3=_Cy!2@8`xMfXq$ekAVa`k73kr& z^o2TMkIEN5N2|v%8luuw{RTr92HLp`nS%=<7E)x`fv5j@s#-tA+c$Cu1(c;ImfGNO+ zaXq^H{dgEGN1O-A$gzbRALKPqcX@_d+;4Ctd4TrEtO28ku1VH_2TA+2gvxcqqRjX^ zoqn=A$R8Q9NMV4I)waR`t<$ewyf}nW1(|Ta>9hCdyRf5z83<+&wdF_T%{;DI#^0ok zA0j3iKn?-tpu0WCk82~gws&l>oPa3;DYktshRf->9_s0pcV?MVh{L>9T1vu&;a;M! z^eLFTwII3br*m@_eJp$TY2;tx>0)>7q${YBoFkG6p8!+N{1`n~5vx`Bv&wY#Bg&Lq5G$U?<3GW%`gYs`18 zYPxe8saFm2-n7%V|0A?{-F!lMdY9j_7a_}Ehm7UyTH)m)x$uoaSj!%RkiX1qH{u9c zZMMF!WBS>^sQ8m%VQ**r(V>fmf;>CD-C7A!c304OjcE^{Akr)f3z5L$3_ew21o@Q^ zG=$+#r)PVTp~(M2g$5HbHc+4h8r>D_ceGX7T4dCb4>Zow>~5jm4JJ*-0T0GN2eB*b z#}QslA?_@mHFK}iVm(&q@C3>;K%owQX!f7cLvi-3z8NyRlzEmTFiXmCG}P4r!Ji>X zU4Onl0R$6fVN#k1W&=y>;}Uy1wc~a|*$;6jVn$vdk=wsX=e zPn>p8?&|OB^;Owg@6(RE&;Ny??mJZS4vvnyILz==J#ZlHh0i1Ge}*EXxC;;f1X&N- z3og_HrVrC%=lXv%eRn+7egFTlH^)dwR*GaLA&Fz=LL$mYLP(O8gk;ZTWtYr^mRV-m z*+o=TvWujwLW$q=+`q@S|L*>vwd)`Mlq+*K<}tqYHKOxpr2K4or6Fc@yH)oMiAf zJl;IKDP)CBt1(Kmq2I9rZqrazQpap}lS^}L$Tc8VO>_O9J|V=5Gde8j-2Bw*BbkCT z-cUwB3ZGeytAFm-i9Pf}T1JjxLK2`2!-%bM;37#Ud&(ubX&zaoIh7sC%?|}msUC91z%$VqT0=$xmW=6MvR!ALgE5bWD5`rfp{?@ zebCKqiQ_H`G39h0*brd&_*4lzeEh5!n1l`%ZP!=I`eZN1pdxzRfp82vrTTlo`MxBB4BnH7AB=8 z**!U7BlfQp2XLZpCW^PfSYV(J_upCLKPk40AuTkl?RaQo<$3oWXk9|{h_mT!2VxaA zy|s2|=m~vlA|N+{oUcc%Z3CxFq~^CKr`{cOk>Q+Rp1Tu4OZxh}}CJ zRU{Y@N7QE5Sr_y&ZU5CKmNH;F9S5@D49DpSZRzRJKiomH@VtZ2I?wY37AC;egs3@k z-~5-`7p1N1eIOWvIUC}pYuI)ugAqzsS6s}%NJF+L{CSfGZ4N|(hgcXdU81QtE6Q=mYliqHfHK$yMUYaoccOWZ*Y z;T+L=1scj@_ zRoDASr$P4y(=a)<5}~Hp>;-BLJx>=58&l-_)9rDPBRxSfUW}$uu$5tnU(!$0D*OBo z;3WxcsQ+uX+utLS>Y#1Z)cA_&MowEr@F;S}kwrAP`{(hoL)t2`bwwh|D7k%Vg0d~=css5DHlE7hveQoVRpuycXZ(c_=Q$wPB;VPGV zYud~Ndetx`K_JcQ=QL!2?zf@#Emn?2BXLnK#wxebO#r>PTJBx$lV!w^veKu$n9%RE z0icHIEdlX9Q5Gr!4Ol4-WZXpm8T5MaM4$sCB8WSzL1$Nul`8TT&TjoW>snP;S;_T{&F}eUS-Su@{l@Jez7R$O zkvumS*Y}aSs>hFkdqQ_Wzdr#~v&oq1SVtJKRNPh&>OW1(wOGZ^z&V{RU4lFkNQGYE z0I*g-SWZqI&~81@q*pJ?)yZE+W@I_81D+$5emaE%ZIg?b(8HciE>;iBQfIS_-=u;V zGu=A1orC)FHmhvtQZ^plF_)yRPzswbHf+DeQn?p_At;pPY4%b+X3RENoOgIe9WTdXJIwR)I!uPCstAf9JS9@^$ z1!l&x_iDJqJV>Q1QmUrW?AErtZ5~F;$v@g83op_8&_9zhA8mBjI7xkI+h(WU4sN+4 zKbuba&=?W6=HxP5klF?Yfn3L!ddRQ@4Q^b&%OshU#EZ`55}!9-P?#_yav*OCZd<4e zY^FQTSi0+6IX+Vs`;W0mT9#>-G4-pL{B&YpOf;tEzd&c5VIaamFX7x;u#iuB8QnHv zDiN+p`BX%*J7gdKWcv2WX~oPEn>%l3y)deefVcR3ziUfuOL%=#`PY~QYo3N6NA*P| z(R5Sa)xwXG|D*zjcHQZPH9hFX&cP+5S$aWM2myTzkP*FdnblhxiWW=quN*5(m3EaJ zGc5*&jS{Uj==`T@)@>3_oeu^h2c{Ac{`=HJP{@k;lJ3Y3u#D ziUK*e50wledlyU)kmupCi1dW44T@Cx#u6S~(^Gl{CrBxvfy#!+#lC}sm3D16AS^d}WiQqx zWqf7`oGf}yS5N#ViW1si)U*`X!jj1P52O#dR-xyeLjwXNj9P$bo}if%Sx05&$bE)$ z6%F!;n+4b#Y@&xwXkqLvXF#4Zh9~sWvZ#5JrVjH)7#Ex3^YT5Al*Q@m2qh7Xgk**R zI!eCQ)FAsznF`^k(*<5kr^|DtodMSi5p8Pi+jAdmQ6I2DF9DAjt zPCk4KE-OW^_^mS!qxhAh)O&u?i+-9oyEI&s5?ggY$i=06Lq_CVvuDnwXe~;~g9;ws zyQ{Z7vvhW%@@*CKZDK*|BcPxgibQ%LL4z8P3jW=WpHq*HGBtzxrFNFX#ic5|{*c?7$72 zUvalVVAkEF@_g##baNouO7AUgKIoDn(j#;tYQ}i|IDO4+&Wj$Q?U)-85%f9RCXF}t zC8AnwECnnCS9aah$%m~j=0lle9X7L6hkpTqZf+$(Nu@o9pUm_i6`uY-CqjHUq41y6h^d#t1p((1^))IobcyVuVeJWSO5q~ zJs^t9MkG-QvU8lI9kM-%yNP@ zMr+w2Ndx|tkU78SFA&ONBa3W(_~64ej8C6tdVaw z4UgFi0ES`2AU*}xPd-5I$aTpWt5E&aeu!`l@#^HguwN=s*Qtm|*8`(wclp9goBkF# z8grZ~_fPCy_&AZ-@<%KBGl*x6Tv+VfPn4+KUpvJA292X%mv<+1);qCvCz7RzfBaR0 zoXn*K2{CV+pGu_Y%`gE+0&N$hdW45QzCUt&%wONq&1E3 zqNfzRWAiXamQ0K*Fazl0@PdemJn1~A-MmDRm4QiCFz*JhkpaQlh&A`E^Y)`b39k_x z;DGXWrYxbT7x@FwOO>BpAP21;dp$r=aFjin!NcFquTf&R%AQ0lSEjkbpLGvxZ?sI( zXEWWj&nZnqRlJ3T@4{FUq=jJ7aPj6^g$YJYT$`UdQ5QLVD{W9KC$Qki&B24;6`XJ9 zysk*&knF3r`+PAk0b13NL1S1s_T*%$XW<*CyXqMo9k}fhUZ3P--$hR3S|f7TvG=w~ zp<%H6<;ANgseRTA;S--ZLe=o@ASoBhLr|npfO7@Lv{N10(RYgSI$gMwket!cwgv&( zxS)%(ULR(?G$^R|S%`8p8N6^GZ@%?mLDy<=E_v(zOIc>6=HQhqQr>wZ;rEY`x#e}_FgMu@ zApxm2@v4S@m!4a1-5K5Z zf*6Gw{4EzRUM$;d)O8C2vI-MYZ@&p$?91~DXAuR=e8lrYf}6Jz)CW5e6bB`NlH8h$ z0@Ep%1tSu_ukGG-khKH-fJJ{O=HE##er2zlloN8-mqz(l%?uh z0$1<|GKS}&N@=IQl+z0jbYuI_C_h?gG*3n7l^kCzE?OVU%)2X6OV$ZL+Pqc^r$yHM z1di;Sm*(OiYUG^zk3J(iJMv}vz$}WhG<)2U*DU_C`>*n6rkXdX?SmRl>*CDKkh|>B zT8*F4ZN<$RiQRJDU6^qW30IkS@3xhKXu=U}l>VlL>K}A7-@UIP9#`Je!-b2BtIvs7 ztx9XhR`!WvFZ9BomJ$5+;p=}Yhh1ph8gE^W$R^~!I-(%GztH*kSFx7x9NRy1p-qrx z{`lc4@r86oyjfWHa@q;$u_7vZ3ldEkIfo~3rT?hSUc_R-iQ1lfOto05MxgW~WuiJc zHWr)J>8H-yjHJ>2oc%bLrSm`7=HR`34}$@;7ImX4mPv0$e3s)S=rL5Dx<-tYa7*F5fl*|MI)~5 zxil~AQyqj&ST1}}IWAvf8xzKJ11XL3^9Y;4D@6K&bnMfvHSjW#)ml8|;Jn1Ld?q5* zHqhLC4Nuw3b*!~yfdu*{$!S95a10o6@MA(M8K%y@CuAE0tGc4l9{$2Cf@}huvFkBs zHzvS-gN3t5Jy~puwUW$gH7v%u`Tv_cyXvEYVOhg-$BLzHzq;Z$lt#uMmK*~VTM<@Gmp1y&nx4qk1VH>yM1N7NM(BP-9URo6->g81+WYunTCa- zIftKfc&V2%9k2qx8rNng{=E+WN!jHKS1!k0j0yDXT=<)^L+vE2ii`J|*(e*g+fYe~ z8o2RA?Ftj(&_5K*BYg-4>~dVuP!4Wx`07naPq8ab=4fnVRO9RPY!e&&L;IY*EpcG^ zN@rSLOk#rsg?>}DP=vv#zI59A!NH(@mi2AaPmp;5W7tksI;(Nu^@tqT4Gi8Nx0R3b zU(^=g{fF~{LS@@&lh0x7p2`I|_i=D^*9EC6JY_{^S5%WZ>-v95aoAi?(ARhan1lpl za3gI^CEuai7zAz0n-mz6EfSB=uH_NAOoz35+OyBO2gfDB-*Hk*|Sl_M0+fnT{# zp6IkMho)&PeI`=G*$gOMPPh>euKDKs{~R88mzQ?20nk8_9nqfCJ#0%ieYt6_)Bz36 zAc_~cb@ex2-?{8symlhGm_M=jd z9)s9Gdi?vjodEE7d4@OMC;}+3 ziz$wHajIhOK8}Q#LbZRhCH~XDa02KQ#AC zK-J&J+Z%n*0xCYGpxA3_&}X2&9Z^n*9+_JIO4dW;?Zyy74lY)>15~!r^{!eVT&Gs~ z{h}PvYFq2C;c~RG8KYBMQwQ+{^c|x*B=sL5wZZU?l`B%fPn?JO#mXCfSPwT5^#hpw zDPEU`(QJ_1(`PpwK(Aqs!w3aR{B!M;cMqFcTN~CHd*M*y&={+fW2SQA6uyV&2V1%4^q*=DpV9hD$$JjTWiUq- zpuy>_bNEt1lTA?O+^wp%bG9x2i)kVa;!ZuEWmpw!$RAF7l4a35~|G3@<#)+{z%lo zyR7K;`R37oh}NqFg-yN%$Zs(@qpnRRVE>)o7i$wSlHE9QysuoD|5Rfl%8|?Z1ueWr z4{?|sS6OU*T=g0AM<6-^Al{2|2XGauV{+nzCmP4vt{GX292MoTodHjNfdeKS;vBaE zwcSp9y0VAN%YtkE*amqcA@9=r|jt_9UkdQ{ptgbc6NEdxcc7lAFaAQ`8GkSrYM~M5Rsc{ zsGh`}jymdAWROyQR_b_eDaoDc;BgB3o`od$74?qh`eNgqrWffLgzbyxWqWVQv-c1g zjJa#+56NqGFc*sp&FeKC)O#ml@rN8r@hV#lc1OkmYGqZgl8(7BE9t_w&f6G~R7o*N z91gaZLq=_h|M9RCtL1tD~*jLH*IBLM4sb!m#m^XxJ`o>9l zv@E?tO-d2VH+ls%txQd^`2jD%OWh>YL9=b5&pEH zY5O+NHG_D+!U2eIqORGg80p;BD+t=RTO~5hF4&1R!`+7Q6X$*rT)c7_@I63Yd_;h4 zY!jyhMCE0B{qMR7G~1)G1oNaCQu_el2L^5hQ_+zVCy+mJn|9$=j?YD$qf@itDio_iJ2qBwymUS#h`G2?BTzyEad6K&JMXFWa@Q(Q1GySXU1)o(BNZwiKE6qm<51|KbX z`Wf?67E%|~h7EXa!VEvSAL2yoU$(+I+)iKn-OQiPw2U{^Bk4EOSQ}B%$e8+UC0oe;PjCy`ig#a z+^BsGHWuFY_S6fnFda44-Y+Z^wzH}F=pnf{iYHElRVGo_W^Z29jpN*6W8cgf#5B}> z2qMk@IS$CPHS{N(gAtsES^R>S)hz>e-tcSRI)(26q*7OJmNifjpu0^LJ+@Y-i()R6 zq#IPoFaW9$vX<-pPatWg<3!A6(#HiA-mKTpRkW3pdlVkqWVl3Y>SM%K$pSHU^R$XU z`*3vCeP&6Y?LZ^JO?oMhK&>Iy1jQM$u4wK&M$~-MonA+j0*Q;IcoMR&>#veDAYvoeP$MLe7ArwV4t-Fi`10r5) zRmNRz)q8)?I?f@AXl+eNkYq@|K6i0w-aEoJ=-Nw{eaJeX9ze4FtC5%Yla5NWI`d+p z`Q@kHsOiCo0}mNK=ep|HqEd6KqqO**1#CJl;q04b#LUcR zCyL48n327f;#>g#5nAI7Nkfp`#2)c56~C1kY~2x&WVxZOM#tLP8jIp5!j$}0Q)9L9 znKLYx+35ZgB9e4b#)McDOjMA*mL7$|8=fcFH~weHhMd2j+S%EBBHgJXh z2Se4zOBKVQkK|pQR?hur^l1Xe2GAJdTkOb(;%?A-TIn*vMu&hN7~N6aW*jW=oeOwz z$@@tkstTqc$kaf(7xO6CEoU>2ga&`=#F>4cm8_qE;T<$f4j#>dSt}HNlmGMFfM` zT|@ZVOeG5XorHGNMLlSrq_`F9HYZh+CtI*q`eC0u4-w2(eSJNetk7*zPYZy<$0uEx zqGO1xw14<;4ywCiQE>Ds?d2#+!Hkpnp1St#E{!zDxrYQR7O0IY4`$D)&b@#G1s zHT$y~Q;DaDGQ|&slLFvG9x!{3Xn6&NfFGB$^Cy}9CNB`m*XpsHnq>bOL=A@V3`)A8 z5g|joHO7rwrIIn%E%N)#AHTyR3sez~^fLPmV|3Bv=+b?&L^sDRmfgr$U@d$Fz*mx^ zuZgHZ8QcgV*wPjkZ&LUR+Ep&8A~m>E0O^K)K3sO1^Imu*%FIbTvGZ(Y4&p&Z4}6B!W{3u&d}DUi z4`e!C<<|4n?HFeW%C&6)SJ0~S-){C)7s+lc*I}AA%;Q>N+OOH9_ov-ZC^nVYx149P zHkwwqJUSBBK0LYjef!OjJ6F;SbcK)7F#Mp+q(}%43t%x4OSchkxHg?)CcZ#@L1m~I zi}1%PvS0uu64gIn{N;%tBkRZv%j+*f=Gg4)1+*@TIHGDte6@b|{+$czEH*A%@g_$D!_!pnpgCc!8zB?Z14#BK!QJJB>xpO$Z2>(tFPGDqWl zqOK5IEJNVZ)PF?>n5y+eKTun>?ccmXM9jL@U4|_^V+ewf3HA3M+~AUON8n`Ez8wa% z`Yh(AH4jn|RdM**;d-;DmUj&cg_CJ|Tmc+Ye*=fGGJu~bK5%1Ki!4;_;I5{Rqx_Av z_0Y`c{WJ$MfZqG#;e-?z0jRL!HT}0Isi_#<22Fp1E-UdcEAz+UXWsy^9XR2keIT+g zg>X_@!c&xk;hq7h;0BSJRhIf+k+BLiir;rS^!{mm>3;Bm+2#F~@_aOTp3qSJTt!p} zfNz66m*EHnvwTzDRFJ$C17T{kKF4#vriS-*h8`lNwhvWcHAIj#SOD0YiFv{7jpZ)* zy^%Dp$LRYWHi9Pa`)+iyl+I-yruh>G**;v`So27Az}7Mhh#PUkXV0psszPz_9r5_( zSf6c#H99G{?|qyH*Gziy(Y1;^CAgAl6d%m6Fdsuv@B@4Y%tVm%kW5w4EJ>EsgJFU2 z#^ltgh-&#aWeH)BZIF|!FDZP)u8uhqi_MML@2E`}eR|Oh@dh1@M%|yFq32?xh`EGF z?KV3+NE@rjRKuod`p`eW8V>k{#H>zR6^P8Xh&?8T$<6vqCsz|Yb3fbCcoaVuG6;;(uU~sfI zzeHJi!gV(NrOG5<4}oC7=p7mTc1ek-e~xeb;-Z9e+6r~l#EJAoIk?ai!H zY7cmBlw-en+wJ}i_NQ5wYxoCyj1?rHknjQ&9Tcz(AP7I(J>iG2#KYl1mgjAeXK7^0 znwzhEdsw0h^9H7S(6w#%|3OB*0r8o_onCTyQ~>KOnpv+u2-c|uvWNuVCiGuz_GBD@ z0v@(rNEd)wuaG01@f;zW8N&_`rWZ?H`_%sQ$Gg_f-p5}WszJXfmYT1BzXUftvi9E3 zX_sd@SY#O7#}M09>(f!r-_GcLfaf%G$tUv;hRz#CFMq)kXd#)3D|ZoC#q8W%-R7S; z7+@g0kW*I1`U{}<%h|0z?{N+E;5X90w;zgD7`CrA{5=z8W&8xlpt$*L6{?qIP)K*A`{uF+3}2Y_XaK? zne8CjTrjPGw6%Ucx!5Q9DkYx!w&2T7wh6-x20>_6(q(bQ+sok^4Q>)sZvg%KEs1A-c<*i;Bw zA`U5cGcuqRU4y3HkY4@EC`xALf0IX5Bw&POFtfG*fAa@iPABgL-5Y)r_3`&eQzKhk zQ0F{4itD!F*JHP6C0~;H911P>5w_2I`5{UUCu{i86h#p{X7IHj!&I|D_<{@o{uy#YGG3eiX`FGC$gJSR^~vg!h{v#vEw- z$VVr+{6qt#7rbZ*{{9_=4(J-iPwtxVFl9nWs6pWaGaz!hDCZcr9o-XFDhUqTt!A1V zzH+?Q&=h0d!FLC51@hD})*?>C&k-W5pPyzwSOdQ`Z2fHjXBPPD;n@+N$ymTiLU|wE8qSC$ zlC_qjYcCaHL&VXIHQZE!49Yn(FD@$?3+t+9^ZaKzR7%vP8D@KKg9b?Gqz8-K@4;^^ z&ILFsk*e7~7B90d%o}E$DVQ30$;_7whtx%g(w&2oKEOGv)B$8Yp3+(7tbV&NVY zZykd2tVuN2-Wcs#p{w-LPO?W_ezK-5i|Z!He%CB_-2) zzrglmu!ky>iRPYzul8SNI-i!`^Q(Vh9ikx2{;!4}=p(vB@h(W>rI??;f*(eg`yHOS_k%CMMXmIU1WhWrLKo#h0YwfSZ|tR;FwrEH^aAS{mXt$;^Xa2=5ar6ISeBV8M!d+WX}}wJh)4Yo0wCmB~2R3 z+?H#kdE<)1h?L1J%{FWMe%q!xjPsg^U-@z3zXp}<64&-h(fr#2&^x$GI2m0u>c`<| z7gubbX1>l`tC5R!&O%^h_a&Ui$d6+!+JdJTReY9JjFB=@kEkK!$Ya3z$)99s$wmv``~7Zxfx>Lzyx1a;wSBA*La6_7_n-^ zZlqTEtj7Ed-I|@BKLbmEEYCd#&@JR>NQ~jrKH9gzp}%^76ecF*1Ib88lz*JZ#{zy({y^ean=&iRZ!;`hpRjr$rDj}sCu^j2 z3E7TK4*B@bI!H7uI025}9VoHCn5!_!0WX2N2~ff+R2eTftE-)97OihP+#E~hxfX_=X|HyF^Eja;I4@3^V^4m`)Z9WiAlJS4kC07yn)}dqoC7&xIqvsN zCD>Ky3`J!qbQTBvFOpvUPIeUFkTc^L+E8)o^|5-zpWU&VPMLan%1Zw)3gUumqgkAm7Gdc^59?}@n z@N980(zu^C!$lT(qx?*t@A8&}gt)j5J_fAP=oQqUM=RG4;L51s+z!LbFq7LUT2~o91oQHqs zEus37*Iz#(G#PahyR8uqg||`TYlVtl;GdX{zsTuCfNIco{;?34``}NuEI)-)79Dvo zgU0Gy{XP`DCeLKX3b^wI}Hi+46_19PKpe+pv=IFw^g} z8MfIpTGXr?34lu%9|HdSnK&!XUqVn`y#dL`IJ~RmwTU>F4XbDv4|Bwoxp%n&aig6$ zb!qxZqbPxKlJCm)@w%v!*1VEi^ADQ{JvA4j_OW9uqL!J4V*gxIcbzKSx>wcwfSHkSAABs?w1*%-Z(#N(iYrl8PfeCq zz&ZxKXu>zMyacYYb7_CWa$Sg{AFe&D0T;*zRbXRUz zv2U(QSZULv&|8T3WPc``$=(;y`!%Jj&S7e9Crl2HS7UMfAsTm!hUxeiLNpwPQJ}tQ(OT5+V z`0>LBWNBg>9rM|n(p3`h>meD8J$dpi4%{;)CRAAlTI?S_e#E+g-;$h7M1Q$uHwsli zTs$l(X;0Xx?4>K6Mow?g-3A>^XcNJcKfk{k3EM*7XDqat#wsnP-jpSqF|eIQ563UR zZHzQ(Ts8JBzV}Z(1hM{pE}ZVav>Z$C&J zBU{knc9exrvKR?Qg34YU^WNLJxv{zcSLnN*?be_3^4+}m^2yD<@?jUbjIh~bDU{Uw z`P7w8>O{i^%H6#rAl90!}8kI094KSZX;MBm-ge;Qv<2+|` zYN&U9+g6)C{owMxa5pVa{W`rTDI+rzJx;qO4mdykfR<4_s^MWm&snJ{#oiX~#hWXf*F&q$GKDvj zbqzMM7{K6dfq_aq8^0n%H{FgEt0PwhZ(MUXg~9~FOWY0=$51JOgZ~uu0D2vat*up+ zl!p5IF~+)Cp_^Bf1G4725!Sy{iz2tvLOx`kdZ>Mp*Jv|FO!N=8+tIlrMcr+qlS`?D z28Tm$w7;8ism1o}mOA%!OSw*$Z^!d*2L7i-8LR_p|7~6B=U-kvkkl}WkDo8i~5pLKnrkz^Gy1_yFgk$}Avz&@I>pVIQ{5!R4s_4mD(#o>~fG7SH_D zQ4hD~;h*)KquSYz;9bT~iySn7VbNN7j~~w?3;`j72eQ|hx!sU9193GcohK18)r14I zeU|mQkE0j9SWAm|c`m??|`?+8B&ap467! zO_LiY&MYRCWUy!JROeV5gEdz*VX51b=Tz6u#z-lLLlG`0isScXeqh@ecVpoRNvLnu z3w&VZOG>GdHGYkljY(%07v>q&=8Q6nC(b*oC8_P*n~-iO&W6*=x#n}=)^(UvR$gHoH{+6%Eu~(CHq2gCR&%Qb`cz!Epp6~gtVj?8$BMr zt@ZomjNmiO2AH?JfzN+(0{5z1Bc5Jx|5lKR>+|MwQ@p%Gln9%^n*sH^?mha~Ye6jX zXqRtcQN&-3AZe125kLT4QLLW`2mpBD4Gs_E<1`J4J}t!2w?@!F)+YhSicM9^lU6eJ z=WynXNmXRj|7ihsN=`e;>+uGYj~&0)u$)6_kANlDO3zCzZ|<(Ah~y7n%bXkG zH)|M2oO$ZLi&*ZdjqIZ%{oMQ6N9|3G|EAzE<$t3VOdAa@$Ii8MPW}tz=?`37z8IEy z^GHqQP^Lmq-evx`gdAJ04#H`ovW!swS#xt7#^5-MtTjGC);zEfkF1~!1F}8|pLO*W zpb8COZfp2F< zZF{@hTA)Z+P*v8Jufm;eZxNGo@}&B`L?T+1N+B3dbwH>5gJC3`*~=kzzGggPhi6SD z=w9rGt*zK|(U{Uw{zxOY@lQPlD-UKcfcP)$XXcD=htGQ2ztLVUx@+5tS(dt%QZ0)X zU+~d9pQ}VP{64dn`>#c22n{5WSusivou;H@Dz(q4hM9ejy+YrE;jkdM56(rdj3vS2jb&Do*+}uRQET}d!h8GF z&E<3PK53F>ntDpR-KedpDb>Dhg$s*NS_h!K>Lt#)M{_T}hgN8-X2bkXp|#>K~9y?PZnX!y`X?r5*} z?f#kZRkr^%dsXf~Djpgw!rJ+5Jl&Ai;nP3JcMOGIkoneFq5S-g!X+fT13o(h&gw+* zqoN|xOYzrFyB0;u7iuuN-4Y$G4lXeeXqt>n)?2%& z2t=Cfh}H41nr7kL3~P&{!s*a2jiDh?7xgB5LVE`HwkYITOO{6*%F@uYZfP5$qu}42 z=J{)hjy2n)CDVO*qr|rHz}JGiU+IOTw@O>puAW(3idXf}`8WFPBAv8hCa*}C6@T2u zY;U~lP(26b&BlIv?!8@aMndn?&SpFPGl`pIY~nW(=OXy0rlqZ}tOyAmZ-~+>!HokU zFcF^JL}VGHI$#N-{yk<3sUePL$AExMRKH=>){#_~)Vp zg0j3$j|EuSH+Mv*+KIG<<~DMTbKlk@ceMzc(*=eTfruMD)vQie9T#V#7bYCl7{tI8 z4;AkP^$8mG6U|J`LWPEuYhqf#a!e}G^BZrD1xeLP=+K9+$`S4UP#=!Eb(z$JD6Ml)V z$19f&EK>Bs@3H%BI_HIC54ksDsf%f&WKiXjl4V|ohB)`ZgDxj|5!(SI{Crj0@spkD6<8nS3&Vg)beO)XI1wf*GCVGN#;=5e*~R{Q@X61Sv?;Ca3R+b3rizlnbvA z9yG+5A)LU@ZUR~?{LiR?yuq|DK5KV-Jg1U;t@mzi?Ujfhzwr5hm9OLjqs6JQeD&#L zKsDdcqMYsFTL|?Kh8X0|#M*0j<)R~pN^edz0oncH*-btV6R5) zqQPpbQ&51Ml0u29e|*XaNJIbfzwSeF}X z%3{qFPE0A2rYb}VB{ZC`F?eQJ2>&f!Ei?wc0xDbzT{5aLj$i*~0w5InBz!#7^-oGm zOG`>#&;3G$C5j+*MIoG=_pa-81YCm;QvblAH|--Qc%AMk;C0Qxzc znhM{q2HSfY!}tD>)B*(Bq2Mys03#AkH{k!i3)(y*H6wv?Fp-ncj;uDo$0b~NnZCLMhtF?MU)*=EOj%Z||rOep|V${N7FL%uG zY}JtuA3$Dgk6c^SCA=D+GT*S#h&vy(C484>#k_ZcM~*7E5eWl8VU4*XDi}SB=?_9O z1l}@M=YX18!<2`1Af$u;nwg~kC)K}X>*1+wci!;NW!*fpG*@iu zs9dauE?GpRLxX)xtYxxLbzq{dzv7!`nPAReBeM0ET_a!0&01=<|9?qtsD4i+XNw>b z{xxX$Y)FOiNQ@bdAIawmbNvomOkLe+aV~@&!_$8#4zU+60tU9-)NqNmEAv6!cKSG0 zU0m;X4aLCl0l$JAawV-=nIk&K6jHK+zd3B}OhJ)cB>UzhwlT#UF6Sk5kbgpYL(eF&T|q)jRhx$-@VgeXHnwA zoO=Fz;porvJdQ|WBfVP?++qI$?917;=I!)pRs}LKz50a%O-*?%Xammgcfw5$Xu4}ucAY%U z#`u~Fex=3(MBBvb;P75DSl~ip<5tDTc>#WYP>XaPo-Gb(dIfM+ zb#M|w*hEGBLL1_B3r>^{HV%N90%mld!O)Lat@&m!DSxl6v-$yk732+^dvA4_Wn26y zi4^(^U~m2ty@e7DkdgRn5m;s5Ng<}M8+W>85bRMsa&~M_FQAfn&oAc;P^H? zeaK4Of_kwIH7t##ektQ#0WDd-kywl#cd(Hl(zPYI$xg4nKZ}0P@eL=8?>LzfNY`NCdLqW#2R4--aBPwODik>m^KKx8 zXlQ6r*|9xI$j%f}6$-<1GV~ufwOKE|6B)R{#?~mLlV7m%8`UzL=)MYQ5~@_26lzUh zz%ta7=2|&#z)6Spyg{58xftABQbARfl|{;nT|N#iJmBe&(~r2!y#=%T3{s$R#1#sA z5d`~`wLpM?;uzt&Ipll1BYuB^_Jw}@W8{>gYtJ;g@oKO)gWi{ZV^Ub&{nJ83BMbN1 zyfU^ovp2*F8B~-<8wI1JXxb0BM}#Gy?GWUt!W}eC%1zj)xBN!aqB|<9!cG(eVF}tx zNQ=46#T@xj;|bGULhTSDOFl+leq*C*!frEPd- z_F0W&o$tBBQ9q12(x;tPp4c?@zvx}Ew^(vPOFG?N@BIF#iNS}yHmL*e05w1b0G9V6 zDzENFT730VMzY{rWEFsB#_ysLb)vW@bZ}b9)~RqH+Jl2`s*IY6A}w> zGoRV{v-=QR*);;>FJd@+l=>CbWUQhUkb98f|RYF%--usQPJWNC`usygXNYJ2-~2&4JmK z|D_0)qF-xIQt79bad-6MblL+Nz#r&3bDV$~QwD{*vQ+NRytShzuAa`(=gNiZZGmTO zFVf1=*)jIyiA*=-+wu{_5!7VRYnN3~pZ4h0(|sTW7k3d8+{0 zISd?FKhbc#1{xc90kZMBF>dr6c>T$5?s3197exP1vqBnxplf)l9zX82kwp#e3~DWi z0|>Mb*DZV#1yC|Ck8)jrzgDsvd4#b#yVAPRYmp659?;BPq6l}4a3MkSbZhbN=|jpJ z$A|RCx0RVcLi?wHm=5DEC%KHEr2DIhdIex~i+=&XR#S^NRh$X2c_o+TDVU(YpK_&? z&Jk)PVN<4R;?jWl$3kzh@iz+Q-8|3&P}wPWq~$-MBAoM_eR+&N*i~@m<*%E4E3aPc zd!6YLuhjIet7{L9{e^kqfV$h0dMUS0dwic7bRX+VTc;YBmntxfe2zeINr$51qvlMN zhm#Wo7DJ($PL0zF507I<63zekg_L`vnJYEmf%DVZ`Mn5Fh!YWoQ5qBpSJh zpTZdcD;{zr^a_>$I_8*x^!i^tWaYDG8nMjUl`+~?O--@NbTi4#&moo(Vk~SE7R0eMf8&>xZ}MFrv~>%(7xYC|X*>LGj)fiJ$F zqG3OCJ~{S)!u*;=Dh)OF6T+5U_G`KaclOaAfbQ|Xf;R|xYIJ9hp&Coj*k-i3n@Epb ziEv}v3xFVj9{>u1x}04sAnNeZ{C+@2h-qjOqvIE<)mRfgSRN&ip!0h9hvs{Qz~D2x zS){x2fDB_i0a`+VYM-{7)c+7dCLt}oiKmAckfHiVbO zfGTqU;$UPD6tC5DCXS}Iy7mR&1YPvu581hr!XUix71#p)$nvy0icY1(Y+h$M6v#i0 z>y>y1lFk#w_>>W1fvB$h?OwvPp}E!7I0>ppToVeV&c5Kkc?o#1UD?pAmz^e@5v4vs zvuN-H?u#!1;ARLH)BOoB`Dic1$qGXP(gs?_bFLDGuHc}?2Z20x=`?gt0p~@V7uHB~ z$=~CVg3j`{kycnSoY`p))5c+F>nu!-j0oFf9ftq>@q_oH;%wM?sxwUr?N3mqfxN(D zHHKraa|QOt%doSSp_jF2JR1ej7@3PrfvdtR3hlmh#P7w$y(_j(3%q)QC{lHGMRP1_ z8-#wzDk?@!==ZR6RcX*e{wEtJ?2LzgS0a65r;%eqr@ibldwlb=A{=!`Us?4|bp}YL zFS!oPeH3UtoB;Buc zkjo$mksdK^?Hbdyh6@8y#a_pJg|cB6K)D$P5d!C;da))#iNx|=bQ(_k zgeTyKKK<6o_i%CPajiO+FT~GABVjMyE+tK*huW!4fK#B2;X7L}DS>SE!L@=@88_j_9y<#H@OQEk&= zKm0N{c5AFi+2`dl@JdRaqkmK;d2PIz=DGDK0wL7Y5dRDDU?4K1I$ExJduxoov5|db zUe@d+|Av#MJ>uj1X8`HVGEglIO_zLOSpMv>cnu!_QZqAm6Z7DZq%R)#-F$a8_n0L2 zuA-RT0Av%+LqCsMi0ey~?98t}Sy=)Ibt02CnQ&%*`z8{G0|Zrf&;o-(N4^|+vlgda z`1=nzDoxNnNkGAZrybAf+%Gh#N^4WePVPGN0;ngD%Q*U^GmSN9hVGvD>;G-PmGzPt=7`Y3&k&*B8E(nzp^ z9&;JKh39#BA+MnrJjh{|rEh)_yJ~3yPuxF>(wFry9;(8t(j3u1@~um*){Q_)UR30S zjzA=(<4*qeS$DQcS%+W1SxGMAQDvoRV9O`CC7rDQG6 zj4zu_NY_`g#2P*=Db;kRdnd+EP)eg;XRP*fZgsiPwENdhi`2Jszku_h*b$h-$&=t) zHn!bR6W>Oc@&Uz!pfAYMSDCgb(rz1Im1*5Dl%?p=)B$nR-0DGXNWBmHX>retoEMq` z$YPhQF&+q&a9a)f%F;;T)yaS(O1;=LH6^7#3`v2UV39aQgmTW*bh%3H-HV%Up>@51 zQT=Mkdkm*vyp*?=(#X~1pWItm5ZUH73^M}0wJq~&uh*)(4qsYRJ%7XT-t0-fU!V7R zCfaw7yc{WO%Dw%Kn%>?vNiz7lZmJ>;rOW5t!=efHnjE!MJU1C$j#(${9{%<`?wjuI zJl+d_hh9hSyZqI>d}rkKA8Z?~Ydsm4fBcbozg0`r)mouSHbh*BuEnOl-}BEnC&RKz ze(5g6+1`gtI#i3bjhDFv0tU1v;&4dmr0Yd97IrMqWrBiiAH*_aT&u1DFMT$3@|=l& z_v4~}K5s8gD5n(4e-C)P{N0kpW1GPM&QWyy$@5{Fn4Fl{_}`NS;vQWuPc7#`i?8@y zhkn<63lQdE@9(+>2L1@V#^hS5nPh`Slf!6fT10O zSzF=GrMC}G4i5LC?B@7!_(&S}M72#6{8zr?Coe&ZqC^+Xg7?zmShZN}?CeV0@%IGl z92X)6Jx1cKMalcs-@mPEy>JTv7eO%zxdV}yt%A&Nki2m9HGm(7RtfYTX}zwb#Ld=L zn2RwbHTB*5_f*oA&Tk(8pUTYSuNeOH?%gw}<#5{LB6<7JtO1lBEYNthU|8UenMRo~ zl#L_E7$pnT%gi_2;N_W`NapIQp2gJBbaYG5! zH!}m-e0FB$3S!O;=@dsGpLTOY_K)0s-qK%@3AG?7m=8E#pxZ|Y{$zvXB zYKXP>{<1BFln!W%uxq&|5b|S8RleQ|+lU-Q`^enZ^X|AF;nu?_wGMbn$7y zxLxzZ&+su~GXNj42!}k`q)MdUge~L%bJFeGkUz`d6vY*Qp~=GBe9Ua;*+Sv%V0XPw zzM9k(ee>}nmH_Stl zNrfcI-XkHiQg)PzNLJZGk{u116{(C=$oO67{yo0;pWp9YH|Kml@Aqq5*YmPe5Et)4 ztbw&=xIOM~OewH6BnX4>2^pwBM@kvc@ z4~Az5c34E+fxQT#&Knk*85mm-QF}@v9ZRJeYg=>kXqnxDeVBG&pt5jg6Qhue_>G4J z=E9HCxKphDoH9R4_z|Ty4goGV7grSogF!!jpyP(!8u2Cpv;EM)P`>$GnDS4Dhiiuu zm5DzTO)pdLabv?U`DKKoyrN>Y?{t=;fxdW*zUWOwE{ zHT-=sk6g6!XU}}y+-3%jsUg7rJ2sNb{u>CfEFPEzGzL0M+bf@UM7M1FExdVg6B6+t zDB{J%#kcVF6y3YmT%}2%eJwFUf~M07$Oxkkr@bO=SN~e(nwFr(m&6+dN#fzJ4G->P zkA;m6+;x&g&zi-T{ZSAtrl-TJvbFi)bmhW*>R-NZe+wmwr6w7Fym>m?7=@I zSXl{=#BW%pEFqTOf9Ozm>0bMM5###8u5yW|S&%~^X5`d`7cMf~q~tD+Y`4ny(AvT) zgi9IXOXJki-Aom050Vwk!lGIx@I=Gaa{MmGvM(OOQ>Q+l76Wvg=FI%r7s8V6FQ;R* z;(tUC9gZI#5C=dPzCyB{^g=&`*!7`Ak>O?53>HDvgeN&P_|7M1OU{J{kSLcN2LI1Q zEDfx8fEc0FM08@(F-lFDyZ0ga=4Q;Jzh!Otlw^Isdly(@(W_Lkr(;>u>fcnb5s~%= zY9lripo{(65aHBOmq6OJaHrt#D-Q*{5X~7F-Dur_GZ_0i953p)&+HMXh$|HTARRNE z_D8g_nRw`7BZLm_&kE?edMK=^Jk80}+?%3Yp^$(q-_C}r;@zCp*@>#|Md z58J2CxVy*2$IpHH_6nDnzP_aohkzEiH_)7@9yqXrpI=Qz2D_6h8{z9#Ov)zf2_Ij= zV*23xgl&!0dT8LhUzygYacA&aba0Le0L|90WLO-EW&IaSf-1bW3=6PgWkcZkY zuLV^%DgCVLPnZ4rd}Gi0&VOQ}qoW^+kB!yf7kp+71?2$kP4khZ#$!j| zzD`Ue35Di>q z(ocg9Bqa6f??3cZ<3)p#{ZYLI) z-tTn&_VXw5IqV|ja;A5$*r|x%`NkK5)h#vOLyKKvZob*Ur=n3;*!3>9( zSXkhG!etrXRxWa>^#X6Z!{uGv+|}PKBSQ|D#Xh+h8nWZD$|qJGai+i8>Bcomca9P) z@BgK~N1=D_#@?%Y8|d=Gf?{0qX>xm*HjR1S-parC(To)aop5s6 z^Xe*8dk~AUZ{O}<$iql&|E-ZgcXMZ!bBH$^5g=PBn_6di9@I4ErM3waeAh}KIC7*} zk9DcEf>Q`FDFAhnvg-gm z#m3SleI`sXnTBW|e>?vd;U*Cglqz5KQq5$VohTf+shvMXusU~S+_flvMNIW@cc;(H zD`C#-`5GRGjZAiGD(0hS;VXG{$7|!I4BFyt86_4HFMVh_Y+>Hxh{NCS|4GIKkYi7` zuTIYh`Y^U&d5+N|W{-bR^Z+7;jXr2vnBbA%M<-4&F*EZd=t!7{biqP{ai3&H7XnD& zefCvD3PGJcT3}hu> zI3uTlhCcxRam?x8mf9UlIks*g&+ACY1b!OeC{Bv*M|x&_*Mg`@jdCXz{4(A4sD>Sh zaEF89%>9F7Ce)Kzx2Q%6z`gD&2M4TVC`^lgJ9W-srR%g@?QLxsS3I!*^AIi?{3{Qr zMJus`1lAr^B%lKmo)%cReD=m5Q`1a{9gI!Nhm_=@M#4z*{l)UpczNbQf}HMmwO1^v zx#nk%*?uig%WwH}akt{#hgR=TKV%T96%TvGKFzq!ZYpFQczEoDgO^8Y8B-K(^D_{~ zz(~f8*|>=fiaOWkj=QXGJn?O&W@bKP3avkO|qk7I!%q^q1`in5Wt;Ncm2R+b*H=bR9M z5rn=8PuD|aN2lwU7$S*FO6+XTpZ#&=Cf#IOtRn7^j^m)dA?sc99M!9=EQE8UmFIf( z5fP5&lZeup>4D%EOmR(4Us0F1#VH| zFjKp-F7|9d?yL%$gwY0S+ih@DbL~($X|f-jUp9#SG-W9E{Xxh42J{t%{{3 zl8}YiG10$!>(;B+uO&o91tRcUbDjX7T9$MP>gv*@%2=jvtPM8=4IEKi-PnW|FS`dY zO_FX2XZY0@pAbqW)H1u+GT)P#$z3=4X<$H;7E~zgOcvg(USGqVp9q=tC zMYE%gLa#=mo!TJ4CRU3qz5Z>Bgw^bzaYtt-X)J+K4X-(*xBKPfwjEZdrLpY9Apy_x zh%fpoeri2VZ6B;q$vy}~kc3C@#vjf;R(!I=#5I4&9eL#;?bY8-hPhA_tW*Z|W5Mvl zSLShZansk1WNNU+cHu^{VOY|m-S)t?XaHjzF*b&mI8L6gWl8h^6Hn@JM{|5*bUAkHaYNeaYeIBrMq->b)j!j z!#Rk#!aa#72S}`6rLYxKQh8szC|6BQ!jQ1Q`)EHK)k$|z)O&CKVV)KlxQ);l!kwu# zt7I7#Tf`I)i}MoN0X$fDn(Sxh=0Ju<^k4*QMi&WjhrTxKO6!CtDX9*`pph3>t90^3 zQG|<%HbqVT{il%{qRv{&th*;Qe?n@{EsWmhed{#p)Q<-`KEaScPApAq-#*>a;Q^j= z9?l(_SYqV&Wg_3mO8XW?^pBpePT0c`sC26-yrvME*DIC3Ik9#_%1vnqb=Vt5^#v1x zW2IHfjT!fL0X)uP6tw zwOVBCIqzAE#fZ7OxOnkKZ|t_-QH`epb{1Vh1Z+_xxdSK&70}EK!sgCbodRyiNVs4U z3iZne?w{lpI#~jg4x$s>6Xl*q9V;^mIn?CasdJ^qt^7{AZfX0E7*G;@1l3lscz zk&!nYtxtd%r!^Lv^+M<96#mbO^L>FALP(&$RLU^JLqeY${ zC~YIS6-$TXtJh&&cXAg+Z40#nG+A~i57G>Zw^NaaVilR1%270MrsACp`+R_Rv%=T+ zFC5Zz^7ZxfFtrAN4tGb{poq7IaEe9@t;0(kwlE9K)c^Y_E+K({dJKWESh$5l<<6ZS zm{g#)SPj6?oWP3Yi@b*q(XwqIb}(RVwrCsOj`%kCiLaQNvQIkE_J&@$#Tw>*7qNV> z*FadC+RUpK#Jl5;5YL{|SLk`n&*3DK%9um&c`8$c0^=zUkB2(>8kK4y8>rX!%ge)A zWe)xRP$4OA4N5u~b6$6LZW9#eWu~}6!!BH40o|r?UWCeRoI`kw(p~lm3x{+L&idf? z0&5c7bhZ1#bIR9S92lc$s}J+GZwqH=IEOsdB@%qhb zbvPEcaUvpp`x+*clCcmNhldtv-RwyrPjbV~VT1y?6-Eech?cgvkG9$({m0xK5(hK0 zvx|Q5M{$vhmNBmM(3!tPW^149;lq6T2H(gglAqhoqvyb8Iyah_r!Hhc5i`(#-Z{_n zxM$|)>FEV0UF)Zd*|;jn=cvxlX-jc&6*?5in#N>@2E+?j$r#Gg)fD^kuX|hf_VwkS zEJ1I>_U@q1OfPU}&`>L5*6gzXnNB4Og^R=XwnLs$a1}3@lr6O{Px@brV%7I z#!pf(x)wjY~>0ep(o zM!?0pQ%YEpA{p$o+<{42ff4y_%6m-?O6}R>I(>aA=LS+KR=hfTdK8tpRMj>%t9C}gh*{7nNu*6zxp#Qk zo;wP|E|gAhUcFlSMSv;e!0zA~{r2IsC6)g+=f+{eq7@j|1}r zx0{dr-m?>{5i&zi5ui)-LLb{{YMIF!|~GJ-;d6o)FVeEK_Xpx|Na>u z;T}K!N$OFtsK^dj>cmk+G8B((ZH$d!WdUy?h>j#jhKB+I5^$OBpUpm2|E=rG$!OjmZ7o-2s`=2`HaERXcPUOvD6I&W;ApN|i0!g%MW zGmGI{s5+6a-QL=Yw4%gz%|HN+DvmF==Iy&_TRJ~Kj~LqN3#mq_2D|fSB&Z$HiqGb%kx&#pN?zxMNvL zi@lmG82#gKehzsnPXdX;;s>+}a=5kj?u8kwWYU-WU#UYi<4h{P)SF{w?cE z4;zS6F9rYbf2G{iu5)+v`QkI@DENHK#_*{A&Rx49g`m>kvAs=Ja_JIx6!wkr*TpyM znf{PfTEWQa@Wdi%5X(W7!x%kcp(_)QoXVr+C1HAWiHW;J^%=!?ojAD1{FOkTeq`RI zWW9nR_YBEXUl#q4uY`eGj^*oMwr?+4;i~r3&}c&Nq=qQgk_sLp1kQM*0!1X`soc+y3Yg44v%Ohp zUj)qXP&5s4aB*<35+9zN!xIKD0@`_|r{b?{M8ySPxp7YH*=1G7_pgb8eR+-jWSrV8&tzn0j|~r-pFH_e#t5Uf zrMxD4R@*li^6ThOXBA+pkAcyNm4%B^8R8h%t?nD7>o+;*H5p-BO7b@&Cl1cE%SfI; z;fT%PA*jhvb)a_yx?9mQ{gCH4Lg@Pxp$^4)jBC4&WSmIQnS#1ww7=hR|IPRB-@_AU z2h6DI`a+A}eOPu6gCvG~ANManKDt>_=);}>8SB|SI)mNqswi# znJMTRUmscE9}p05^5k1g{6G<)6~I(|(E_?wAZs8`z%qM$icOf@;{u?!5{!P=KrbvC z`Z4l^g1jD+2ABfK4^gU_BKi_*44_`n>C&&r^K{=ka(kgvK8tLk9nv>5GcyPqgR%Tv z;C|e~P$7R_XR1)>)@~zxeV7TbpZSWi9R4H@x}?9_0t8`3&R-`O`d9DJwcP|6LOcGJ zlyl}w{92f3@tWC7pIR$k77wr&>ncadpA&EGbI4li)v1IGst?UjLfi!C-wZ*c~7j8Re7nU8IuX0gX93E9q$sT+3P6n!qWHH$lIn z31I$2BOyxLjs@`T?q_9XWaBBwqJ2uUQ`l1}vc)04&u?kElSI`3ab+7K9vY)j$Fe1b zc68@)yItPut!P-u-l$Xf)xw&U9;fwT>9_DGMSy=$~-yoJQ!z%}`i3rztr zufaT3_Wh19jjP}iK>ghGO$~~$A@>$@gTn6DuL&>Ob*|KjzM-$|LFOBVqIjZUH_#7#M_HH1rGf#rj!TSE3#EokwY_Q0J}4H=U&$B&DPLagk*Wc5CTxc1 z;S#}4k+7XucxP-Lf(i^0!1ch)I#SgFH%?h84kKKxEUF9Ykj0>g>P zE8Z;(@V48;H=8^Y#q0!U+_&=I(_j~aLG;4P*Hr_<% zh78)*r!RVVdb5;|NB-D5+U9&hZ!;Si% zyohZgGH`}IZ&743&^Qu_#c+;;4?b(|Nqu~YYLfvv98V=+_5T65VoqQs34g(_t^xN8 zgqICiH$p${yc7iRL4XYR`n#T>mtNKgl2#{>5@^n2wul2CVubp|yVf7Wt}yq+r5LMK{;!8v?@ppY0Z+G=*ez$)`X0 zINWQyxZlo*o>r7_?~z#KvF7*OrOGm+2j*}7iz`2ute51nb8s+xi>qm0p{f1}a;59} ztJ<{;i+=+XbV!Zj#^w64@Ru^LF&6@DmgNN0`XGBWkICr|9x3{w)b54N+xA!o?xF#G z!!*rY)^EpGlhwzcg$xmEp*(;A6^40i1Ocm+>X#8Tc|a3HyL-FzfdeNBO*ep{<3e`3 zlfQp$Nr_>uF@~~<2?^VpX*Sr|BSoitYEEt;D)Rgb~Is;ODE1B=_YWEoupM7QN;MnRLjQMZ^ zU@{-Hl#;Di7(X}sg-bQQk?ZNilP9OKe$G9sDl40uk`li350+#svnVb{s9WMV+rRZx z*jy|PqLbbAz~4uGp{gd_w`KduV#~-*m8P91_$brD{sdO}aQriRU&Xrz?K>V~$T{JW zAYlGbkLY@zDNIo-@Y+3whn02hA|dG2wMLa{+G_5|A`o(Ct#4b<~-)nL=Yq4y~cUQ zYlSgwi`h)OPQr%P^L5wm-BcGk^2W)wo+Ull=0v_gwUTunR>7wztekfi)6>YRhK&Gh z2$AFYx42U#ezwRua^Hgsrm}K}($#STBjFSzvRFOBYdGkW)2CgVL`_YNDi^CWEH5L7 z6X==r59SsX(bU@ziKOKL>SMuGE&q@{bM*&|yu9Ptu)?80#a{r^_t(pB5Dfcfp4S5d z*)!Nfr}C!%JcuFsJqw`+e>L(t_c=djU3>P<19$RM>ut1$=!0^%`<>z4^;hc%%Xh}i zJsiih{30qMShcE9O-0VHZ3L0s3GpUBySGgcZO$^DtN##S2wE}|Lr)CDy7L-FFC_Yz zNF}zpc@`M#@GwS!T!Uz3+-;6VPN9y05`2>=>;_IH!b#iAF+?#e@YOrYc1?b(XytbJ|_2!t8q{ zJ}oXOCgkAfU#sf7zWiDRF6oGo=^+23T@$yDW9_QtNU+aWU|Qfo<0d6_6#L81-WW|h zv1qhm{!YzIj7Tkh)Va`G!PtUHE-c85<|vW66_3B*n|6Ui0@Wd+a;zRv8%0f3W1t0- z4RX1Cn)8NT^9%|yscB8%e-{wYSb=n^;NHFT)KnyzW8)E~EVyS6#rNkCN!8U#W~_D$ zSBz+3Tc`A%hn7mitb4)}c7`w0(@JgSR%((t8-Po}9tpr1O196eMZ%)PwR9g_` zyD9H`>kQKVx1kcuJ&lA1pemT~tz+R+jhVxydkZ0TxAUe5rRFv^Owz2)zx2XWM7YQ< zoeg<7wWSgnloyuy*jM4z=-nGPF#RHT&33HZ_8?-D?;9o83(-aoBzlB6?%A)i>*Foh z6n!sW=2!KTK}E+N3rr?TLl(UUs0J~~L;Vbg9mcli=6`|q%X^E6(|`Xd&LFNP`TMV5 zg02}=I3QXF;jb{g4=GzQFJ_$RD6!5U`;M+|AKC!a76ncAkOZm1;Df7+!*$#fb11Yl zsK?-L3g_c<-acGpAAJBegL25ofw1Z@XVs!B=nIWmh9WM?LEUiMfy@8tAOiql_>H~l z^velP`&dDXJE^G=%VLuy@wK}Z&=(>h6dxyfU5>HH!v_x_aK`_D9|1FTY&`JASwaMD zTZ;DVJc9PlpO5Ml3=R>w=4b*G6x{MK3CYP-K+;w+M4Ua1w*w`Dni~JSUb0q593vy+ zb1b+Zf&-5Yla4?b=?YGFZ4-MLdCT}v?c`r+*-jyhbSlz)26 z6J@|Ie*SjV)=@Vp%A(zE_1lR!ZZU;}WC{qx2PaBMFKjC*rwSSJsdw(YaBQQ`p@2?r z;M1o!Ue>_1;Y7pu9;}*cxw`y;KHawt0Fi@?Ow7ChWE@vQB;mb+f{)0eMcy%1(I>SqyzlME$w{3P$f$-VIik%=FHTvD+?6Jg`F=VBTEs4P6t~ z-Ack%-IAP`Y!$xqh+@(>{vE(~lIs)LD`R_OYwPFWiL7{9#KwroFov^pt>~|)@Ma=C z3q;4$`;&;F$L^F$hRl&{s`&N`A@z{|Nb5b~p@2C>r_m#E9PG{3Mi?PQ&P|F>cgF^ELhE&IG8h-!*h*AAcMJ` zob0u-0JnRfM)sMAB#t-iqLeH}LfsJfU9imcb-6-9N0lhW}>CS(D07{;Q}TQFJr^~=Ob zAk6?|3_egn;S?z}-O0rT@eT0uR0nR7APYmiJ9g~obwJQ_8>|XA+fnNo7#*D5`9Cdy z!7H>{h)d`{I#WyfT#aYZ(?YAX?wEY`fP@~VVkib+0J|d?Kqz9%Axj{id5PSCqOThb ztJ!L>-5t3bTa&{AHBo+Z7@6XN2Uyp_#->}w2-df^Q;01;TBI2ib3s6s zks>1x;tDXgz_+vmCo+t#$IBXXzP%Dr6w!@2)>2hgkH(iKE;tXSzVvFd6>aRWzJF9d z?=AusFeLF(9Y-~h@3!jXBoSlAz zo*G?*Nn$X7ViEa*k0Eq4zHg>y@us^Q2KdL871VZ&kwoB&vF8WU_t(;vmX!Qr_CATk zi?c(=pG*p{|6J(SttO+R?qH&|+%*_ix!I6hdHZEu+|zH&KYm9@1Q>O2aS6^w6m0+D ze^Z69qnj?ksp;n9E5pk>n6r+kWjh&?a5A9TF<*&6$|_M?m;Si{hmY=Dy+-Rr zaDt#*Bq7AWN&}!6S-sTZ0(BlG3y(G~1X)?!By8f>@z;vwmPx;MSNenf|Y7@4F)c`zYcnHz_DJpXHT^+v$7A*#48XMQm z!rG^x3Bac#(M7^L{`TL%G*#NB_G!?DKVs~L=gukYO6QMxvaPo6jlIymePE%n_oWq5 zoro_JU)RyLEK^8Q(l;{tNJ@mXscWp#%lo)8e1%N^+RUFvbLYk0d*aWalBFPLX|YmP&@kb z?^tjHluAgchSC(G;M7$0wQc*|&{m>jre!XZ!0~Pe^l(O(jnpt2v89;aT@ku@ruWg_ z(g_s5%gYQ((D{YL2Z~ioTU$Q*NU}rCUm}+soSddGVaKnKE^TLf;>4vpf~rBk{9j;g zfSCaXCpR53*W<6NL^tgwm9_q%iuqB^{l>Z9dA^jL-$1v@?^A;H zz}?ZTPve_8k}WytuTNP^4P)R0h#m}tG5g%U-DV}{V#*JF`*y=uxL&=QE9eBQ;_)H(YuFcu>&(aQwuVVf^vo?xCyWuiIX} zgscEb5&%t4_h^aA(9Y-NWvaJQc)GrCF-k2D?4wZEJ_F>K#UqTIVH7O9oB#jStOCCL@a|8fgp5N1ykq>pYP)6FrFPME3&3Hm#!%KPpPQ5crv zNFL9;b!%eg)5yZgDz1oFJ;Uj{d zFR$&I_j9O+Jk9>aZAxv}`5Utl8#MvQ2bgp8ye<`coYU*m6{F{)>4*EP)XQ7|^FzS{ zr2DY{*;Xd9eQhVf4nW5-eg|m^rNhWlNe-n5K~mKp$d!?*jk}aoG8zfPCM>VSeA?D| zX+_j>jZC6Tc<){yO&Ov2HX~Z)OZU6n43LGG2D{G_d{mes#g}mt z_mYW{?a_3IgM0w(s&UECxY4%YA?$}RM8gZ9eo>niJA?ZVA42PjFrQ;sVd$s3Tv8du z1&TeHrsZI|f~OiDiP4#UAmMO^1mpLLU>&);9%L)eKa*SmOKnEiB`9QY>@~LlJ)xdJ zly~#=OqxpG>^rz{aOY}(&+dzRiw?FAG~A2kBnHC>#ly=>X;V(j#q){n(BQ{{MRi`2 zb#fMe{>|DiO4q$3h;s~#i_1452ex;j^%;=6w(vl=j2PZT$l+&p`K~)Frq;zujM*y5 zUy-L@rM45_N|7+MbFeaX{ci5?EXy_EmjN*~f`fIVd&x{8)TWtFeOIdQncqVvcFC~G zJoB9XRkeqpyqj4UHZtNl#N4^bH|Oy3^KUh=1d**q78DfVu|P`M;Do1}{4F%Y5I~*# z^n7)^DID(=?oL{X1|WKIlVJObJ)wk{SpTdKPHqe$F1I=^LLCbk9jyS)1kBl=efU8N z1cN@ZxMye7nX_l1Ibywa1(0WC!DHFUfAza;O6M{_b%_5k5W0cqdSq&mv?LOYphf4T zbRDBUT*%-qw(fas*TB~**-KM*vH>B4Sk*%CZ2X&8oQIqHUSZ)Gc^*)i8Yx%^ZveQU zaleVqjcn6ip2wtBjFlF(c(~h8MbF`@xMMN&Qzw*xR+5>Si4F>hQU3*iu+Df=Z`Es@ zoowA&ZJDQ~3Y#Nn^p;sAaZ-n0!m^v*O8L5GD4Re5yyh;6s6C4;BtBuZ0fq2{i=!*_ z4`dYwyM+cm=k~clo{M>E`nGk))$J(?1npv1sehCw>0 zf!Hizf(nd%o5iN*MH8+4!QuHI?9fCvHe#5v?UvV>yWy6d{DsmuBdz28~?VW6;!`Z&^G88 zOHHN|Kw}B0smE2^Z-brH7E&4c-*3g2n-G3Vv(id%GR&BPCVYT$QJpb8JNrVV)j<^% z3=*OCGTn~BOXa46e6NmP9Uq8>H27Yr&fHurJpA!$U))O{MlZrm|FmG&es# z&9J1khy_c$W8jPt<%Fo!om)K1CbLasEZ2Ow$hh=K%5D5GBm>5f&zGdVZ82^EO_FPC zD`&JqCT1rm3l~g?9fCp|f=6MdudOEdERwH|bq28$-4C!$+O1EV8~Eee|9h+JV7%o- zdjDrkeLu3Z3IoY-vSeu3N_rtS_acL%f|cQQhTazYn=r@4Txzk1CKKieP}kigZ8`BL z7+WIpd4d4T4uAA|pUiW_#kR$BozbH>sB`Jkff!k@z1+4yt64qL2|N@$iL7#5=rA;E zMl+wOe1Gj4<4h!s2LCpK8pawB4xv>Mp|1H~v8pOBPlB`8*B>svh-hp(SAJ*>@Vnx9 z!EA!S`qc06fAS@8y<$aP;j!+Lxn?ajR&#M*`ZhuXf?1FwgB8-sKd=J+W6}TsaAB+- zt?ZQo9!^!&=+%1Ve6!X5#G-Gm0o{`=~*Sn4WY{UcGp zKeKV>&kdb@3rR5&G~t+QGc}W9;e;lnt*g})b<0~fNrQLla13007%Zk|B-X|}l>kw; z#<=2hhFyQ0?DPFTB3Sp{Ir=qjhd3dV!E7jxP1k^eb7#X+lvc8yCu#QS8>l!u|M%(( zTbT>ceU?1KMFEs(QWDui%GmT)?DaKXC#dl@4m-R+=LD{+;$bD?g##+*wyM4ctyTmF zlb<1OHeHM2^N*T5l(a9;$;rY0SXp@q`Zx4~ zkienh5R;UIW)oF6Nic#n@EMKsNNBu#xvFIXaQ1_c_YBNZ3T6kBn`ER;$!_$%po@~5 z*tkcSWB`^eF&y2!Htd&!jD}tL%fs z0|RR2?z!L1+1s@$>lfZC5n!@3HSND7^87-9=;!iBo6icfT^XyKg&*>#2JCpU>plIB zV9n0`CVmVJ!L$PCRoP=y?p)tejy3Sc_AW;vH1Tt22tScICr5jz7Zc#y(D7q53~rja zx$Ysqst+4r=}N)!106A73kn;#+BXfKLKO%X*SU|?Z1LpIW$>rg9pXCSt?PMMSXd{& zkCBB1j|o9zCQ#|R98Us}BYB;WF3}zgucH}W5A47vW_&MtMxiE(O)F1`3srVdL$JMl z$m3eX0B|!>1LWM-=LOAqcmT`z8TF!vC&kmZ$vjm0soGsNGI}P!(|gyY}t2xj7^vfNx`f2=V6VC{x@CvqF>FJ)5u7JDuqxCy_ggPFf;S zF6uC2Eq4$2k?`1?KeRBhvVsx|^-vHn>GLB`!f(9j-=WuY7k3miOVaf#jyU&|-4+|* za6LtMG&g&$Tl}Op?-x=4d^@ew$_y52{>YKL#-Ip4c31dyQy`tA|eTH z_yvDpNCwOVTV${z#*aU)i1^_t^X+z(edprqZv53kuE3+Ws3&0rwaMOlQ%iA=h3^)t zgT}7Zl8}JkeyTFPZh4=fQ>J0&RsWl}aMytwVNFkX*@skZe1sE@bgM28Ch|AT|M5%U zt#eR%a4+;wvQ~l*)M(3;?JYIiA}}GUC@(iw25Af3W&6~-7grTI$U^EVp6$whj+q8_ zzhT}x-VzC{WgmV(L71ZlwXumcWHEFz$$#d@wy+1}Qwv&eqTvT&`P_vIx*fHprP7Lu z84Zacy$*OK(3}PYeEjU)=gpw1_Dpg!q`$9qAMT`*D79C-?M)|kXj!guDff1y9QX0Y z%s9s0jfpJi&UJF$R%5fZnEkAdlzWn6`rKN13V!SOjP}W~ha*K7=)XYjO;~n~MV_xq zCziNNRt#1W>(2GBrCcj*_Bwhhc0bbx!emw^-^kxZPTG+WJ(1Tbxeoc?uZIlfriS(S zMLg0Zu;vW@t{dCy_hQ%cZ2L~8zE)a?e z3pI`N4VDbz}(5IH| zVwu_=H?&{I%Kb? z%y(1m3%`ps^)ycrZ8uAPe*eG#eko7Q!(tpicVA1@5Oxt$k48p$Kvi~6giuHqaUq-jaq=SOLzDX#_$mnYij||nmZi3uk zg6w2A{dh-6ESV~Uo@nSJa);dnGUE^Iw3MuuwBM8Mu#b_WNRHg^nbO&6(|HjM6s7|$ zGC1~Dr}(!-YBHvKx%p8_HB4+O8VSz%fd$u zVJrrPNJALw?Iqi7o<#~X_5oc_h#h$?DPYEPGqT6FPA#g3R8>?A*vrId<&hL&cdrO@ zGa3~3gCmQ<(fnu~IEkPpA+`r?AFxko2jPFmgcn}kSD%+KlY)w#^6J)ayRA!}o}h34 zLBtSdS&%BjsPU^ujh~knNCRThk;X|WQBmm69dQ;AlMIWfxYgKRp|8qYyzE(m&KqTN zm^iF=wWH?&5IdGNUvFRkrl;qakr6?Q*;1iZ-pgCBu-{Y3L!QTLogn?$QwgQo(IP|I z$dQ;}Pfyk&4{ZGiteJQ2L{5qcP;SGdPz9@~c>}RDBFiq{K>Y5QtiiX6c%8eDuBD|# ziV1!{Eb_$Bl2h0h$rU6mBGCb~IZlDMzXTh&yBG%?SC>Ack%E4t}*T2Fz zv8-eL6v;p8ile71LiMW3%h{g}7!Id>_<@`gDC2Z($ZMjkC3r@oYU}C{@s2pLujt~m(P`ov{JCS=Y&S0%7Cy59#bBnl~>E+BjGEGZ1jj{VdqNpUE8h*GPtyZOybycxc_<2Ga z`BT=kX5}MS(^&i8zKv>D;`l)dlpsy~;OxcFR!n}841(PARTQsd^#0yh<+N7yVQEw)j!Md+jFEaoR;JNQCwEU$S{Cp>B0)q>-6#CM@| zWJ&G(J)O#y*ka9_Ju$3=qXVf?rX3Q=w*g&^ax>cb->?pd9~m2YLmBcKJ9YnvnE zhrEknTXbFJXmT-S!G;{o623C?9g+n{FyBlwcwx)ZMb+1#O?xSGoj?W4VD%f(HZ|QR zmP)+LFKpF7|5jv+sF)C_89kr*a{Uq0J+ib_AcRwMuEmCt5FzH~8R`TPQBnA7MmVsS z%XJlTTsX*CFMN-;d)lT*fXx)D^42EYM7)gDPPgPVmUqc1KN)b z`EUQdaU~b_2F%A=Dm;80BtvzYMmcKhnH} zR~d0GCA-aKWhZxU{+Y8ozQ6zR5v#LxCJvv(tpv6wx)8(t;scHlX=COH233RA5$9A6 z97u!XwE3LWtIt?Z)X9>f@0ef98})fAF3SA%)M}DE0e6UYAJMJc*YPtfj*Y zF~WDuRz5gBA$5y5<{-sq2Bre%40dS|Ga-9iEIA)8DBPA57iSQ-EYb}SJjPA-lZ^EppMTW3D^jE~nj_3M~3C3wdA3oepPe&vnFLN}YV1|a8 zee$2beU?_Z#&6@{^8-KM$B)+2TMiW*m|xmbJKKv2-kjL6Tl!okKjDofy=4AstDvm50ZZBJUkk>Dy(_zLB@^=v8$W}|LG`nCZL;n&__0-S11`m&A-;th@U4UjKT-#oB=YM*g#eluk4r zw2Ap|KYMG)H-7eZadl;3VUc5$laY~8QsPF|(R`tyl@NQAJ;Dnx14N4!Cxn_3=Nqf+ z%=~=&1pSvwF#6ggwKHcyp?@HS-^`#dg z=`I2`8eXga1y1jHdcgQ&)I$KR@=R@c+XEphk8vj~(-RG`q)@m$v5bhl!L$@NmGsXi zXr%p#Mv1WW@yeP1pxI2>GoLd&r(vaImn6Jr_Wr}+xr^{5-P$rMF^Gv@+zMxRRA8?? z`)bj9>4bqm=~%hax#xO2>;4XyqEKtE^i&a0fNA zKG`eQE|JlNq;{yoog5u=euX%=`E z`wF)KWFqaqZR+4A#y_OAFBPtsXD+8t!*NZLM}vikir?h?0I1|zf}pXSEHQs%rOojB zrU(Zg<1eId+Ap2IZ~^8cY?8xXCc=k$(+E@WnS=CF>dTywxQxm2o}e^Ff@QD8!vG>-Y6lz!N2w1|c-XzXr@npFL9;95U@z+_WO@V2*uj)n6?ayFb3v z_65&ZsT-a0dPgod&i&h|6pksx^!Kve#~WE{*ki7h_HKZ@11PDS$<2fERUbx?t9k2| z6(DZU_;{ZP-Fkf$4|u5a!JzdOjCaPD!c17DvD1tlha58S!i9M>TWKjNzq;%;O^XH& zVZZ_<2=o%52k0L=rdx)Ip{4|z5>I$jh|`WV*_hj*%~w!#payMkM-&9!G05E-pq^)r z)+{t7Ro`#YKYjXy6eIkJaiPEiL0MW-88D?|k`1XvL%@=9gCP^o=ZnWS;>QAagb1n~ zXJ?MCv_iN_7R);#J)lIuWmVt}>7V+YkMM+5jl&L%{kEP^SV0x!4V87!eLT!T)r%k{u@&dL^wZPA3e{{rLXf=;%>lL)!6-d->Jk zCqmAg*-gKRG+~(8o3+U5nuT6w%&Hqh2IY;P$1|)qws5mGsf0 zZ~CAALzlLjxg9H(mFUSr^ua*KF;Yj$Tvz`Gde+DDRhU`-rYHyv4NTHLWn}akfrWh) zhqGB2G)so=DtQTl{Izf2S0oIf1wcuK7oqW>gg@M#4hpv~V-v$6c7zuHb%5|tY(Ppw zT<|9`d#H4eg?@DsZD9C*w!SCy{O53=#Vgo#4a~yltHGTToPw*3`vgR_D3Cu$rgS0= zm=p>EdDcCNTw^4#U_pIjWWCr#iPsheZ3_!^j>yv?I2MdkfiZzyUm&4W`u*|o+Q`Q* zbE6k_KV+$P8{us+DKu&RkjwgdBA=fkl#DW8Uw-`JOm8kJp|DsVdRor-$h*~`>z=N_ z;|Xo>p^(Ny5Su|-f&5%^clU1);bV?(ErsvQp8H-yLoo0GuBIq`kO{}8qs04C{s>qL zeWVRCNWr$H@Qa{_!MY?umaO_n^wTzR z)7yLj0UM#fV$cSx!!^;&PWAqONkPJb;*Ran3 z5>7)rqF)Ufe$s1Q{7t)!?>*$or>r)=?16qDoweEPjjJ{}Sz`~R0u0J@ zYo~lJ*gT~mzGoA1Hh)x@JL02KMJE6yCgH?H#cg^&YnEJ*3lP9rqm{u{zyF|J$s?na zof{j9-i0zVb*_#-6+0gU2b_5->1vwFMmJ+fE8ur|eS5nX0HnSOj(iy5Ko*O*Z|Tq@ z+h5Lb7L1t0XnqRqYR z;{!2X;J-f*%|qfAvM#*bt1?8h1O!P$hRy zaI>rRh3A zFMM*nvHKzl3JXK48Hq1N?!Rjb~ zj1y4^l&*bZTj?}=z>g~31*jneq{u2O?~K)&_Er{otuYe$6`V=Znj9pAiqoXuNU*Pw zdG{gz!MWe{AbF9pWARX6D}cYh=gvWM5Y$K8FaXXmTOb)^VP3)aw=X-Oe`x4;GlMh? zxwpGXPaNK`uUIsWBG(k|7K~;gr?SBxwm*yNOP!zuS^&1fE2EY2wuv>@{Rnz5R|4ZT zZAyn>LAuDRJJlaKd+&x>;AtJ|S28P?Qk9BD!a%^?rhO+P<1&zdxEVS|^0QkeWTF~j zNo`F$g$WC-| z8>x)pIc!6Je)~4*YKO~Z<(^c#7cOfVJ&jS)TZF{|oFm1m*R%7((zeHWs~aP);KlCU zyU}3b8y=SwGO5>Ke?-9$N%VO7iaQu;t)`)uuUqGdF@OMe*vo`yxBc)PSo6QNJh|^N z0vxc~EO?g@SN`iO*`cp95z+Ox{zJo@&et~NC?-F4U1}8~&&5Tr@q`Nn=Mp~lT1Gw# zc=}bbGyYOz=@9!)m%F-095Gc26@~MF(j?5D(!{=5FaS~2rlzKl7oj{{?OgIStF$Dr z&iwWdd3@icQRi$lYjw*l;xU*4v6cM$58vhJc`Q2>3al4PQP>~OM%i-_73RX;bZUyy zfpLa+9tu8{h!wG`Mtmj=$pz_@CO3{P)aeL~(78LNs8|EBgAsU(qK% zpUAs^O`V=vhx_y4s&^i#KT~RV7x#}VF+b_n9+U=B?2C9xC#1H7o?_GckPPhMj7LXJ zl5H|+n23>a;9kf22m8s8d+OKV3q$+e=}h!tV9_b+Qu|<$UWuMCey^x#Y^*o8^n;NX z?%Qc84GP((f6`Wm{uM#_HuoDjzo~ms_X@2FCL>?>-4iEW0;?Y~cEQZT_WTK`EF|vN zhbrVcoc~zece(;xSsR4^p-(`NLR!~nlHBlw*bpi#^hC%w{23aG5VyaeYax;jL=$9; zl57}Afvd$pIG5=O7LmjbJdT+uDFYyOWptUO=MK!`vHkgL_2-Mfw#W=!^cyegKX-k~ ziw22gjjhm32-0AvtbT2etSoe7M~#f^t7B7ZuJKUY?ku@e6tsUC!lj zKH{?b1iUfWJC^_pCrWT)bdKR4h7Y)H6>ei&{3>lLqw4Rq#FE;#(LKrox&v4HivK#k zD;MIr#_*Dx%VQv{CbvzURv^hUlp%^g!kVBc{n3z|E-8X6n7k?1JiJNaXUI8gp{{5C zx9{~`)9GLCd!2PfO;!0|`yNZ*>dsOAm7TM0U$O%Kd^-Ec_0XKH655&px}XD z(fIgrIV301Qua18?Y~W^L>NrnX#M|xVmbCX@C1la7=I)?8nWchZh?ChdIAh0M;-vA zjf@!BSdP1zvX8qs<&yuTU_WZYG0hSp0JIb`=V0tOwPd&Q9ieZM&I z0cuM6Ac+Kot68DVd|_!+oA{GnO>fbUD-$0B7?goFLLIP=cphy$yMA_6zN~>p%AYUIHCZ$2HzyM`~;!m1!KF{&igS% z#bJh`4&Di#Zt|levsuTAj71P;CeNci4Olx|0QFp#%yjZ)yHkt_HHZR#0j*U23N{cR z6}_GNjUJJByBpSTynGUzbF;HI)q)S3-361(O-l4ZpBr)$IPGvV3T^;s1PCFNdI0@e z5wuO@stQ`Ez$sphx<7da8138LaK6bK3Z1bCk>k+bo1#zlx4`I7SD%Bvp?>T0j+n+j z#;$@S-{Rr;(eor_#f6iMt;bLX)SX9#*m{Jbjymr9jKcka*~UDb{x&y^K^1Uzz?tKi zG=42)GPH=`5p$pOZx)5ep~QB))Va<93W_w{x(gTJUH^|7({zuq0Oa(1@b;ltMh z-^jcM!5z*%*3gSug{Gqczq+9kYrxx`IUGn z^z@LDBptk1H|oY0bKqK53G#m1XAv5QouEavXRfsr%>~x`y9cl4%qwx~U^NP@Andhu z&Yc)XV|E6w_=IOp7QO+10C|xTi6REeQqFi3+cus}R1m9jGr~_aI``WaRC%{Vt!Cz^ zxume?_F%TQG4?7ii@rRHz~_aR-nCRNHSe1khcD1MaPrk4mj-44;Z;ih@(y%5?>wX= zCAH~zLWJXft?5(A1_VQDes5>sy&TOq9ZybF^SPgcHkm$~BO~F9=45MsiP;0lE-)nx zT$3J8FucEc(KbbnQ>o6jTrvAs`OpoOb2@ifg&WgbuXG1{W$G+FFV1V4Y?2}rZ5PI~ z2qQ6BCs5%L_qJ7q2r(NQIm+|oawholEg(s&s?RN=LxP;_rV%v6&*7-}`{xe?L!J*7 zL*;f!1~3c?ENssbi+R#$8xcrjj$INW3SC z!6gjWwY5AnW4Pwf!(ZE;c_#Dx4a%?@qHNOGJPoS``-;TAl4Ln#=7tXO9uDwBxv;YC zp}?^7j1quP+e;H3vafKApEt4IZQQqPqp zzO5fMsKUj_OLPSc*OiYBLEA8>W1rjVC=0w$H)B$}^ZtZu*K*E)W4LXM!^IQ{c#hg= z&j0wo;Ii@Q0})8}(g>Xr&&uDVi{@za;9r`d;@F(1Z z=-wi23$3Nv^K^A>QtKS3bMEzc(-%#jvPjov+8&^SkEqfLD;ABc-F$qAKf9o<9f{zx zO9ZtencII)QWGegWVkKTCB?*QS0>{dRwfzbnO|}$c~5sdw5(8ff=K#scIm^1M*m0C zd53e|_wU~d$xbC?B`bS{>``Q|!X+d-l~htGdnZKp-jb{aWhNmz$!ORa5kev3cYf~Q z@$H}cK91|UyVd9Oe!rft^Ld_+vvdIOYLq%iPzU%@3mc3b@&65{dvEViX6o@8yr*c% z17Hbn*m#%>#~o36$(IGZurP*zw*|MYK5wj+5CM^f=p!JhShQn$$ecq*n9#rrEq*4T zv=ZQYBajmaYqH_tJ1s|Ub)+k@)>tL?2^Gl2_n2xWO+IticaU`nvlRnk73FV!$jduF1DsHE9mu&28@xlj@jwn)sV0nBWtfHoFKko(81R( z@b_XgwKHWGBm&KK|ao3B&gDlCL zgl|;U{8=0;UC>Otu5?#wcsSMLGyT224AkW1WmxxO4lg(J5|B^pa+b>ePDCL@dqU%4 zud`|C0AP0*1J@5q>A_V)yn;f9=A;HXp8O*{F^w)^ebDWX-VV#TJ6D|R!qQw?D1?kI zUN=}VORv61&OL!m9N&_neZY?$RAtg6*5A{JN~7Bf>~Fq3GcNL|pp?Cn-}xrD&jnJl zD7!sPa=u?8DIf70<&;iXpum{ZWfQNjBL2}KPkJNwSPGVvA!=MV>W|$ezb-C(7Om7v z$T)q+tM`92QVs=vG7A1fAvwgftDlq$Tv!B~nKXf?`9uZ^!^*3JK0hD5QXAKNdrRKu zdQd+v`Vm4!V%tD7YiMYA{#9@%tnbU0eG-Z)C0+_j*hO54qVs976R#Q^75Vk$)go?F z*z-W-#vlV(9~O`7GkJLI)cdAk$a8}q%-LD1xE})A1S=38ODO!2)@6i{0s|S8qQE#(nPi*)9{zFKz-v4cre0Y>}?PzaewHRDE0bqh`*)=)e^{h3|0s z_ZX-uQJ(~1{h3wu$0?7So}TQo?nF0roc=oi;1hQY?ihrEu=seGXAnR<`KzkQ^+k5p z2-N4Nzu}N4z%U@j`M`cnsH9jMu!*XBw$zt(EojU8;l}h)WwJK`19a1ep5Eayc<;}_ zeBt=maa;q>_=kp%qJ$YKkF z=;()F{$DeEulVRGQ7y|HoW%9sGUkZvmr_Ueh;Q4HiN#ZHE{}UUcK3FjxNn>>#Zz+4 zZfSe(^R%N3JR;awwdSgEQ)wP=tX9)!rh?qv=8i*qE9tJ?Qcn3{PG7ERszXU zthcJI;EM*?wZdEoI1^_nR5&$Ur&vh*%5M7pg{ANvegb1~rYN*l98D+SBAe&*@-v0E zu-~PQX*rf) z3=nwK=t*X3RG`-Z&MbQ+lQyVDwa9~$zF`i=f}Uv2CE|taGr>=7>eDHYf@M^kGjUbO z9`!M#Opc5vDQ=&)%ItUb(}HFF(|ge6X8t*NX?Eg6LNUf3Ixts}vK^f@Vv1iVhjMy-*)jzKx~k^|=5c68EIj5fNn!xQQp$?F-Fz@gAZd zeP&*+R%A+eA1!-r!FYK*M$xReU*#qtDkv-3v|qY`o{|jfngvffT3Wm)&^)5@SypfT zG#zmcQQLS(Yv>J_f2XDpeDm-8VSY$gx`SHjvtwoTw_jcgvY45CtWi%fu!KP+n(P_YT?u;{hfd-T2AlM5j!=qrjPy; z>23BXImM2Y6D7R?CH@{%G5eSgAKv(K`R5HtuE=u@hM(Dda0mKrh!gy< z3Sy(ta#kky#j6bY*$y8jmSfL6)R?*+6_$Wt3_K@$pA@v&TUNP`VSKnO^X2eyX7*!R zdN^h^Xj7G;GeTs@C-Sj$N$$Em)Z-RpPJ16CbEZBAkUUvE@7|H+D!|0l=}7t%6%mUb z)zJ#mKFLjEz8}bMBsA)1FhxC^hVuUQn$!u(`+DC`?2_uN2sqfc?+Nz(_-W%6hu*Au zT=vY~_+;CnMyBn{soDI&*@ec}UK)MqilwS(WT>@99y0nMCevfGT+NTW#GO2?RdkzL zeqn{Yk#d|GGgEIbaXOvVgo~*9n$)Tgh9#DY#-NZq;-$9*r?dU(_?~`Q=<={5!wVll zTmsX6Jp4E$9@Kio|G)*pR1jwHW>xZ^`{piUVE*9(eDmWoa1BHKL!kstmQMo%1;zq1 z7jemN>>A^DVkUpFUyM{rFF@hcvM)n;>^#pgC0iF`rl5y=AxA<#^Z#DiJq;cq?rnwi z$fc`hhMg&eH)nEx^B4tn6RhLtxV|!twEj-C;oUZ?a;r*m${QGu{zQ4HVidAve((AM zNpx%jInXv+3J(v-kC6NZ1E}I}Ee#2JB%+L_PX7v3DtV&LZM!CuSgC{Wag8#rz%@7YS+m4~z zDwFoQ1%2+19lO)h`uL)K6q}^wE;92nQ3)`GXJ;b`_ibPxBvriibSO0<%k%>h)J@Z? z`rG!-J0Gn|Z*duT?mMt5rFZFtrTvZ8c#Q*3G`L}U!X37-kTOm)E*s0WKgiaB&blR9 zYdW6O74tB|MdptH}>^`!#cBGYsb){BbvX3sl^%dZ`QXBh|bvfNEsi%=~( zaw$&Ved5#sv5IN>949>=_-FtKDm&b|i}Mpggl5FSyy_pFea}dj$c=apP?C)=dl?vX zx5e^}<)})y+S;n*^wJ-pkdPLfD-61Q?(|~TT>kd_^#|XzU*9rb^3*C*vDk`D#;c#4 z>J6}~_;va6u`i^jsdu$4^evLcWdySxuN;YGGfh}8c~>UK_Rv`>{P#W$cDWWZYg8c746oBW!TA)AaaJ*Czx ztE)cO^dJWFuV1|pZzx;rEG=$Q}bg2tr$s|1fNpLY)vTL#^IxmcHK!&!ivHklD6d3A_bvR3yHlb*kn7AIGR)1-djr+>qci0e zE)NQ51ycs;3B-BmvReCpbjWBM7+ZB6@Hh5$TzQ^(?1HgxAH+v&VDJ(tRNUHVX&)ar zbM#)2>Hd3;?d++_UMHysyog6g_L`KO)mf*kx{eLBoZJR*Bg8*&huPg(+-1jJ|3SD$ zHkyrpz~W4}01X$5K96sq>!_i0V)vBsnDUxC9~qj>zxQ}yvSD}p0cI(mS7sLax75*H zpJ%+JdF|EUS-CF$2E`6f9!9QcB3~NAyO<>WesYfai|rejoSFixO?MIIJ>^TEg@n$b zA&cnXAgL0T^p9+bdYzd_RN%e8aRZKb9PHzY6+$pFp^q7bU!kXoVhgcrwDswZB+}mhnDibEC4Ohd`3L4!Z?92oo0RZrl{{nE zh@cxKn2036(V+fvpZL*4+A4DhQEPXK`>F2f)|J2^IrS5ipxRo+Bwf62vu%^y+1!ok z4>2nR`TiuKy~>mk{Nc9wZ^Y`L!Bbirr8;rtY_fH<%isBX``OE+mVpa@ekz_{St+Cm zk5kuBeO7{3AX?gRcOAZ+;<xc`1^9&PUq3WVn|4cuc0RlR%nAI*uc zzMTXysaAZU)4tN8pf4#SgD&_0=Tj)P;2tie%@n;#zRr@ZM7NWy%lic#M`F4&`?-^V zUc~D0+UE> zc17jFkMY4qkN0clf zA>_ayZaBl2O0z^9o-BmCzhP}nxEElR8CFI8C}&h0bF>bGQh+g;#_MZG`_oG_<&IVGNrB{D51(2`S%S-`*rpDLCDYU*TvczcZ3{UfRY| zBEeJ3tlBI9d~v*ZilQ9rh9vJgJ|d1Ic^PQ`VEvHF84h{Q+{Hsho=}S*Kz+0jQ^RcY zSO>LThUM@wNRSNB}?|MLP6Iix2h_Bcz0{-^y! zuKniTw@=U>6z#`y`0(EK&zQhKVz%pe4|}DP6i9C2+9-O8^o#AH(lP|<$g+R zKVUmeugtAUHsO|IbKG`kiB9PG3hRhQ(beqiOP`W%e)u#xY71{5LNYx)^s?t9qbkeG zT4{6hPrlK9=gZ5|H!K;RotZ@leon z-1d`j2tE!MJ^MCYAT6xH2O(q%3Z^o{Y|K9)M}m%H-47DAbp{kOZeBqyr%H1Y{pt|K zO22*0w|Sg@M7Y4ShLpszS50y8K5}+tQDNcc*Yd0n&yZ`M(7(q(ZD7H6I=5+T1`x3` z;5K!po&1ZrAA2C261ZZ?#c@fzfFopRmgjeEh*(Rw%X&jSsPHlVC4s ziHbknf}Rg$9C5&Dpfa&eI!dN45Uw@_XAS|z+y94<>`p{Av1d$m9%b@Wy6++}|LyalG#GM0YMM1^T6sYtcb>9{!z!5y*>ytCBjr zn)JXTTGl;x^oF_?*?L@VUG#zAOZ(K4`(5`GhkiW}zDYQ92wQ$gvg}bUQy%zFzrxyk z|2zX4#Uvy=fG+QkPoUnJ+C6TxcXIXCq7qv{;Q0$R`VHWmZjJ3*e zNsluhhLnIv0}iA9=||tI!~Y26Lv(8A%Q;v+Uq_pA=s-C@EevzKjeP+1eULs!lpv8x zJuqZVs@I2-v#C|gU?|iqGQ~Oy8#MT<*eUtnBEZ9Wo3wA#C)89B>vM`|nqN(XS}Cv_ z(e3lh3erkTWZx_#ti4Eu8q~;Xbb5&e|C|Z!%McUlo0Ur28~1TH&!JAf^w^)Y_bL1R zpYd#~UluwkYYwlxp<(oyJP+q>ISbfDPBu?sC_Q(0$*=YO#4&xHSstqjHgX@C6eN7G0nVitOVULc$@U7qZjhnbXzjxq zN5Losg-P)7Tx#Rj=ZD0sE~$DPc4e=%7Bvlke?nXc-5W|$snL=6zuW=!xyqoR z1pNYWqxD;u*cnb#Uyr*Cl#}v0UbN|6<6#(W@{ye^DOq?@{Om(_cRf~}SWKgt3l1B2 znUQe#^PB!i-Q4>%&EM&CHct|EE($!geoz1WvrD{{FlErg+P~?|=GY37*4!En;)&4$ zU!s#?vmm|J_xQ$J9s5yco)4`|386uXq(|DErJyWu9$$}!9|qGqriFsO4P0@2cO=bZ z?;_|l6VP1ov~L!qRrIz&q;DX{xrC zV}}lhM`*KMU^5;%FKL{Kiud6amk-O8J93B7#kb=HE@6@#2aHui!%;zoTL<;Y!`1+< zG+6}yQ7~Ky@MOsDLdkfUCOFp0qbm9*aVt=~gBJ{}ix6R|#!xT$?AY&(8ETR{$2E=E zqo%PQ0<*9zLTVt#Pd+x5W;o1TD88cLL(=KI=PPb>zq?sl7(0A6XHO0WJ}srQureMC zye6|xqszvwJiqpl`JU8z`1Y>6N*T{9GLH`mR|s6;YUus)C1RC}o6q#-Qr?PrJRZar z31mEAqyJS2OWfij%!}%LOkVJET*MPA`-^z)qg0xDcozQ$TQS_LArUVMI4zDn$fOwwTW!G?gC z@iutFud!rlWn^JzN4;K=e!+ieVfOk1wJOiSA!%+dVPv=@UsL*{MkM!tB@B+W#rMl{M7`!sr@QO^?q?3ZA-|0P>PdZW!PpF1;r^q_9S zrSt3ke+#n91lTwbY0-lIfT{(oNqM8q z;Gl>VjCmzzf5Ht|Zrf}uSE z`c;~F#te)+4SLTbVB7`xqTY=E)z?XXbzX z3a+c@b+*FaD$C;yLNJ^zbFae_oM*;YvB6$EQu_^ya;<*M#0cd+l~I~}l#vl7h5eak zz=jatgTNXFtx1!GGYaf2**xQ4d*TH7`O&88Y@%(%#Gk`i(hxwL<2RnG>!EazPkOTt z)+oH7KuQ3|qe|605?(}GG0vaI8N=Y&L}3sHO*{)u?(NL_b(FcMW3&RLh3F}<*<9jY z7p3e1$$#j@rE^F){T9a;YUYCssa+!nOg%ZhXq$NTrSp~-K4CEDrC9VXUd#bTjh!7E zLX_9GJvtU~Q22w#LfZH;u3>fa747u({=3FFM9-fG$qsNe@OaCbu|I!(W7fFC2`dDP_4 z)X+gB-M9fG^s<{wu_1p$WUdQ#p13!2S*onD{2j%C3)|xEg_R45kS}78STBgs;%Kvo6-Gbm45ndlmW<$l|y!*xZ@TBgC;$=kVi1 zJxWOaE3<8cZEgbZNcgHCjO4@7TV&dmaw6&ivs6$fKh?s0yfAw%FvOzz=~?~G9n=dn zk7H4U-{#L{2=u78Ei%Pt^bsGKOXW|d0R~br{^#EC%NLw4V$$?mv9z#2X|21Z5tG@u zbBCyc^da>21n0ZZi)TIwo6@REWYWxXrFKgCcBLNQ0vP-77aA*f{YNT|qfyVo;|?Fn z!olbD+lL~Vb(9a#Q_WzCo^h8QUzVk9aS`omOY3-WCPq2Sg+)RVcB(1#BMD>HAW$TW zOl$)YKv797sHw3kIg7OjPGV^0v2BJtlr7=oEblV+vJ>^IaQb?Bbj%xsn9oE%(UXhQf4S)Td@ek`=g(!?q2eGUY)Bn*zfr2w67v} zdg9p&N!k3ZSO2W84levbiMZi61@>-~@gc|9BOt{_8~gEC=>Wbk`6adOhdF!G7Ve5i z^P#sO3W*{sJ?iMbrGx8_YkC9{lWE@#t9;i4F>xtj%M;&Q7?Ef8>VFKB6S9!aeCNBo zo9gqU!OE{S;5ZUytSl^A|7=s+VQfH!&z>=aSvF9gwH~#*9!2N}fOC0(0B`l)@PO*# z(w7gH_ailKKNUl;4J<5fL#{*m(8_bj!6jTEx&NzVeAVQz9^Pk&`d`w|$mhqMC-UJ# zY}l|GMp>LoA8$tYU;Nz>n8CKTc(ndOM*>b6Fr6nQB@PyUuui1dPbHy+m<#e%ERnqI zQM>a_$`IX93vkZr+MaC1cn9qbIEjGv{YFjspD=qArlf7GX$UqG`CyyPup|H@9V<8R zTP0}mpfC}U)Ts}TBO@b)+5yQb9l#s$SN-mN4O(3E`0k7lp!^tKO9zx!Iwa|fVdP^B zn?!Yjimo?qG~E5q(TaqNAxs|TLZ3f=lyK@|i)sl-){1JWyuIR>`#Jh3NYgDjMr=g1 z`L`S#0L%(efAIYYZY&5qh88m@VB@mdrdbxu-nK48+0H!`opU$xQCw2gFbEl9V!l^M z?$_79eoa8NBYufP3YKv#&ZY_QXz^#Pm0M@0(lp}FIr`A}=FJz)c5=v^>GctmocqOr z9%d4ByBuExA85qi@iZ+=AkQL%8Jav^x0-K<3VuxeEMcK5=_7QObq7IL?usmaDz#DE zES%*L52BA6f73HAk)(^F6U1s!lV)Z%<@rWiS=U>3Bom}HfXhu=^SkGd2BDqTs2`Ql z(C6V*?0!$xcDUS}n#nhHTCL&;ldHnfnwyk%7yA7cPtPUep;V+_D618D|Rm za-9>Dms;WQ$FH7M9EU~{N$?X4zq-nyiCUKf5_6N^TgR|11>g(#iGRg5UoEqhI;xZz zc%v}?lr)G5{^1YvkkT;<-)iCtuXsLBotqHBlaP?8S;VYy#jc!rmMPrdK`Iy*N%Z}; z8UUV*NEq>X?4@wuE)>;ZsMRl!Oz8|AtxO%YM&kEh4=T1=f_9D9Uk0jNram{Rq2{e2 zDUn1iBfz&O!p`2`BbMn9m+S9y5`x6c!Nj^W9rO%*qrkM_Xoq|m-J-*HmLh|C_wm#B zLI!k7?Y(bCe?(N(G2`5XdDrVagL1&Ax#=-W#9+XjZQ*J|tQ^Xe;?>BE3UE0@2@{NmN3)%Voth96l zl!x)VZc_96*jUV&u~hP?_C|M(tY6DSK8Gi z3mqTl$}$WMBst6U-X=p)q$1QzIf;#>*0t#&2^mmXp_L7J}E^R8T3Kn zR(fWIaI(TWh{1u|53tdLqSn+KUBkncxWyCQNM_x-!9Dun_iv9-qUAlg0^v`zl(`w# z3u5VvXgm*+_Lf=gN*S#fF5OKiBU*sp*z zUmaQJxF-WoEn@WxE-<4N$Mn}p^3VLPCS9JASb#5h2JACAcW&DA%>^Z=m*%6#4YqGf zB%${CV8ou`B^UjblpjoQVmP%6`g+(%cRFs(wP_zgjh3H^iOGIBsq3;rvLn407)!op zjV7Vv%C7+_a`y(kh~xHrp4&^=3udtyh9fQxH1>g_)!Cxeo2%c`GhUdM6bT}RT&Pw# z2XZPTclJmwImCZe2l}NVPt& z^_QET()VrSAUwU%rRL9W%QZa0q=!|XGt=?~ew7G(*ImfBPV%wa$+@_PXZM6kFi|1p z3aE+FAx$HpcD0mn``NMnI0cir*o$p9xBX+9U7NEB-dcxDlfl=V~OA% zfy-gR^JJUZQDzle6{AmMO(AfPi@u)WmeQyLkG^7P9!r(KVE-XIT^8s|3~zc)FJ%Rr z2Dk0{QQ)b=jrKk8`zj{qV;+C(>v`RavTVUMJRAGR&G(ZNS?}lel8r-1u{EM8f~4O! zn_nRgrpRGrgiVS*LGnWZ6o4a&MH7GgTCnX%HL%VnrxJl?`@P-cjT(ccH8m73yt8w2z=pgBbmWdeIhKXh0 zoNO>6$2!D1ko!SvuCsI5klR+!GgCo?f{{vs+uX4;SySksTxG+LNrPf|OWu5Qr`HP2 z+;*NGj0v9Xrj~E2kEW4ra`vRrpTGPsqW#)*)D75yGO73zCRvnz85qpANZuS}fyGx5 zra4sJHHqP8Die{4x{Y-(di=(?`v(RHgwH)9B>Mi;xs8__9|Qig&*$$v_|ZY@rG)KF2<%78a`KLf-%Lhme~s>NGHysrZJ zes6g9gyK*Hz=o&^(Zxnv^DaOU%+W8+?+!OA3k~K?_Nuzjc9=bObZ+?c(6G@ zn}Hk&;~#!Z>L$?m5tSiaRNb3sWaCsTncVMX_j>#VdPVc?QT8aC>z&fkVSW-r*c|kd z&ccFnA21;#zrMm!ffw2+z1<$5>{d-|ZyKujlgr!6lLe^a$!#O8Bh_F$Po~c!MH63a zY}@sTG}r6i=fnE*((OgfvFCKT73L4|52;6|kDFDQr2bR8w$Y1v?VUqs59>E!?T_T3 zI%?WSg_y=b0ATt~6pA|%yp->cfai+eKV}_{d8lhVd$_Je|5zPB&GebCo~SIw502

eClvb@gFU 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 h2RcKl5C<5T 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 literal 0 HcmV?d00001 diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/images/loading.gif b/superset-frontend/plugins/plugin-chart-cartodiagram/src/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..d82fc5d9244e2b00a16c186bcee0503d71661683 GIT binary patch literal 79023 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 z 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 literal 0 HcmV?d00001 diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/images/thumbnail.png b/superset-frontend/plugins/plugin-chart-cartodiagram/src/images/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd95393371697f7a0d075af907be1193df99c8a GIT binary patch literal 56888 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

{io4+lVdy+Di?T; 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Ƅ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 { + if (state?.datasource?.id) { + const datasourceId = state.datasource.id; + const query = { + columns: ['id', 'slice_name', 'params', 'viz_type'], + filters: [ + { + col: 'datasource_id', + opr: 'eq', + value: datasourceId, + }, + ], + page: 0, + // TODO check why we only retrieve 100 items, even though there are more + page_size: 999, + }; + + const dataEndpoint = `/api/v1/chart/?q=${JSON.stringify( + query, + )}`; + + return { dataEndpoint }; + } + // could not extract datasource from map + return {}; + }, + }, + }, + ], + [ + { + name: 'geom_column', + config: { + type: 'SelectControl', + label: t('Geometry Column'), + renderTrigger: false, + description: t('The name of the geometry column'), + mapStateToProps: state => ({ + choices: state.datasource?.columns.map(c => [ + c.column_name, + c.column_name, + ]), + }), + validators: [validateNonEmpty], + }, + }, + ], + ], + }, + { + label: t('Map Options'), + expanded: true, + controlSetRows: [ + [ + { + name: 'map_view', + config: { + type: 'MapViewControl', + renderTrigger: true, + description: t( + 'The extent of the map on application start. FIT DATA automatically sets the extent so that all data points are included in the viewport. CUSTOM allows users to define the extent manually.', + ), + label: t('Extent'), + dontRefreshOnChange: true, + default: { + mode: 'FIT_DATA', + }, + }, + }, + ], + [ + { + // name is referenced in 'index.ts' for setting default value + name: 'layer_configs', + config: { + type: 'LayerConfigsControl', + renderTrigger: true, + label: t('Layers'), + default: [], + description: t('The configuration for the map layers'), + }, + }, + ], + ], + }, + { + label: t('Chart Options'), + expanded: true, + controlSetRows: [ + [ + { + name: 'chart_background_color', + config: { + label: t('Background Color'), + description: t('The background color of the charts.'), + type: 'ColorPickerControl', + default: { r: 255, g: 255, b: 255, a: 0.2 }, + renderTrigger: true, + }, + }, + ], + [ + { + name: 'chart_background_border_radius', + config: { + label: t('Corner Radius'), + description: t('The corner radius of the chart background'), + type: 'SliderControl', + default: 10, + min: 0, + step: 1, + max: 100, + renderTrigger: true, + }, + }, + ], + [ + { + name: 'chart_size', + config: { + type: 'ZoomConfigControl', + // set this to true, if we are able to render it fast + renderTrigger: true, + default: { + type: 'FIXED', + configs: { + zoom: 6, + width: 100, + height: 100, + slope: 30, + exponent: 2, + }, + // create an object with keys MIN_ZOOM_LEVEL - MAX_ZOOM_LEVEL + // that all contain the same initial value + values: { + ...Array.from( + { length: MAX_ZOOM_LEVEL - MIN_ZOOM_LEVEL + 1 }, + () => ({ width: 100, height: 100 }), + ), + }, + }, + label: t('Chart size'), + description: t('Configure the chart size for each zoom level'), + }, + }, + ], + ], + }, + ], +}; +export default config; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/index.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/index.ts new file mode 100644 index 0000000000000..17164f7f69844 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/index.ts @@ -0,0 +1,77 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core'; +import buildQuery from './buildQuery'; +import controlPanel from './controlPanel'; +import transformProps from './transformProps'; +import thumbnail from '../images/thumbnail.png'; +import example1 from '../images/example1.png'; +import example2 from '../images/example2.png'; +import { CartodiagramPluginConstructorOpts } from '../types'; +import { getLayerConfig } from '../util/controlPanelUtil'; + +export default class CartodiagramPlugin extends ChartPlugin { + /** + * The constructor is used to pass relevant metadata and callbacks that get + * registered in respective registries that are used throughout the library + * and application. A more thorough description of each property is given in + * the respective imported file. + * + * It is worth noting that `buildQuery` and is optional, and only needed for + * advanced visualizations that require either post processing operations + * (pivoting, rolling aggregations, sorting etc) or submitting multiple queries. + */ + constructor(opts: CartodiagramPluginConstructorOpts) { + console.log('hello world'); + const metadata = new ChartMetadata({ + description: + 'Display charts on a map. For using this plugin, users first have to create any other chart that can then be placed on the map.', + name: t('Cartodiagram'), + thumbnail, + tags: [t('Geo'), t('2D'), t('Spatial'), t('Experimental')], + category: t('Map'), + exampleGallery: [ + { url: example1, caption: t('Pie charts on a map') }, + { url: example2, caption: t('Line charts on a map') }, + ], + }); + + if (opts.defaultLayers) { + const layerConfig = getLayerConfig(controlPanel); + + // set defaults for layer config if found + if (layerConfig) { + layerConfig.config.default = opts.defaultLayers; + } else { + // eslint-disable-next-line no-console + console.warn( + 'Cannot set defaultLayers. layerConfig not found in control panel. Please check if the path to layerConfig should be adjusted.', + ); + } + } + + super({ + buildQuery, + controlPanel, + loadChart: () => import('../CartodiagramPlugin'), + metadata, + transformProps, + }); + } +} diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/transformProps.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/transformProps.ts new file mode 100644 index 0000000000000..95b7a4adc45ab --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/plugin/transformProps.ts @@ -0,0 +1,92 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { ChartProps, getChartTransformPropsRegistry } from '@superset-ui/core'; +import { + getChartConfigs, + parseSelectedChart, +} from '../util/transformPropsUtil'; + +export default function transformProps(chartProps: ChartProps) { + /** + * This function is called after a successful response has been + * received from the chart data endpoint, and is used to transform + * the incoming data prior to being sent to the Visualization. + * + * The transformProps function is also quite useful to return + * additional/modified props to your data viz component. The formData + * can also be accessed from your CartodiagramPlugin.tsx file, but + * doing supplying custom props here is often handy for integrating third + * party libraries that rely on specific props. + * + * A description of properties in `chartProps`: + * - `height`, `width`: the height/width of the DOM element in which + * the chart is located + * - `formData`: the chart data request payload that was sent to the + * backend. + * - `queriesData`: the chart data response payload that was received + * from the backend. Some notable properties of `queriesData`: + * - `data`: an array with data, each row with an object mapping + * the column/alias to its value. Example: + * `[{ col1: 'abc', metric1: 10 }, { col1: 'xyz', metric1: 20 }]` + * - `rowcount`: the number of rows in `data` + * - `query`: the query that was issued. + * + * Please note: the transformProps function gets cached when the + * application loads. When making changes to the `transformProps` + * function during development with hot reloading, changes won't + * be seen until restarting the development server. + */ + const { width, height, formData, hooks, theme } = chartProps; + const { + geomColumn, + selectedChart: selectedChartString, + chartSize, + layerConfigs, + mapView, + chartBackgroundColor, + chartBackgroundBorderRadius, + } = formData; + const { setControlValue = () => {} } = hooks; + const selectedChart = parseSelectedChart(selectedChartString); + const transformPropsRegistry = getChartTransformPropsRegistry(); + const chartTransformer = transformPropsRegistry.get(selectedChart.viz_type); + + const chartConfigs = getChartConfigs( + selectedChart, + geomColumn, + chartProps, + chartTransformer, + ); + + return { + width, + height, + geomColumn, + selectedChart, + chartConfigs, + chartVizType: selectedChart.viz_type, + chartSize, + layerConfigs, + mapView, + chartBackgroundColor, + chartBackgroundBorderRadius, + setControlValue, + theme, + }; +} diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/typeguards.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/src/typeguards.ts new file mode 100644 index 0000000000000..a65e0f124b960 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/typeguards.ts @@ -0,0 +1,31 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { LayerConf, WfsLayerConf, WmsLayerConf, XyzLayerConf } from './types'; + +export const isWmsLayerConf = ( + layerConf: LayerConf, +): layerConf is WmsLayerConf => layerConf.type === 'WMS'; + +export const isWfsLayerConf = ( + layerConf: LayerConf, +): layerConf is WfsLayerConf => layerConf.type === 'WFS'; + +export const isXyzLayerConf = ( + layerConf: LayerConf, +): layerConf is XyzLayerConf => layerConf.type === 'XYZ'; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/types.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/src/types.ts new file mode 100644 index 0000000000000..a875103d9e092 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/types.ts @@ -0,0 +1,210 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { + DataRecord, + SupersetTheme, + TimeseriesDataRecord, +} from '@superset-ui/core'; +import { RenderFunction } from 'ol/layer/Layer'; +import { Extent } from 'ol/extent'; +import Source from 'ol/source/Source'; +import { Coordinate } from 'ol/coordinate'; +import { Map } from 'ol'; +import { Feature, FeatureCollection, Point } from 'geojson'; +import { Style } from 'geostyler-style'; + +export interface CartodiagramPluginStylesProps { + height: number; + width: number; + theme: SupersetTheme; +} + +// TODO find a way to reference props from other charts +export type ChartConfigProperties = any; + +export type ChartConfigFeature = Feature; +export type ChartConfig = FeatureCollection< + ChartConfigFeature['geometry'], + ChartConfigFeature['properties'] +>; + +interface CartodiagramPluginCustomizeProps { + geomColumn: string; + selectedChart: string; + chartConfigs: ChartConfig; + chartSize: ZoomConfigs; + chartVizType: string; + layerConfigs: LayerConf[]; + mapView: MapViewConfigs; + chartBackgroundColor: { + r: number; + g: number; + b: number; + a: number; + }; + chartBackgroundBorderRadius: number; + setControlValue: Function; +} + +export type CartodiagramPluginProps = CartodiagramPluginStylesProps & + CartodiagramPluginCustomizeProps & { + data: TimeseriesDataRecord[]; + }; + +export interface OlChartMapProps extends CartodiagramPluginProps { + mapId: string; + olMap: Map; +} + +export interface BaseLayerConf { + title: string; + url: string; + type: string; + attribution?: string; +} + +export interface WfsLayerConf extends BaseLayerConf { + type: 'WFS'; + typeName: string; + version: string; + maxFeatures?: number; + style?: Style; +} + +export interface XyzLayerConf extends BaseLayerConf { + type: 'XYZ'; +} + +export interface WmsLayerConf extends BaseLayerConf { + type: 'WMS'; + version: string; + layersParam: string; +} + +export type LayerConf = WmsLayerConf | WfsLayerConf | XyzLayerConf; + +export type EventHandlers = Record; + +export type SelectedChartConfig = { + viz_type: string; + params: { + [key: string]: any; + }; +}; + +export type LocationConfigMapping = { + [key: string]: DataRecord[]; +}; + +export type MapViewConfigs = { + mode: 'FIT_DATA' | 'CUSTOM'; + zoom: number; + latitude: number; + longitude: number; + fixedZoom: number; + fixedLatitude: number; + fixedLongitude: number; +}; + +export type ZoomConfigs = ZoomConfigsFixed | ZoomConfigsLinear | ZoomConfigsExp; + +export type ChartSizeValues = { + [index: number]: { width: number; height: number }; +}; + +export interface ZoomConfigsBase { + type: string; + configs: { + zoom: number; + width: number; + height: number; + slope?: number; + exponent?: number; + }; + values: ChartSizeValues; +} + +export interface ZoomConfigsFixed extends ZoomConfigsBase { + type: 'FIXED'; +} + +export interface ZoomConfigsLinear extends ZoomConfigsBase { + type: 'LINEAR'; + configs: { + zoom: number; + width: number; + height: number; + slope: number; + exponent?: number; + }; +} + +export interface ZoomConfigsExp extends ZoomConfigsBase { + type: 'EXP'; + configs: { + zoom: number; + width: number; + height: number; + slope?: number; + exponent: number; + }; +} + +export type ChartHtmlElement = { + htmlElement: HTMLDivElement; + coordinate: Coordinate; + width: number; + height: number; +}; + +export type ChartLayerOptions = { + chartSizeValues?: ChartSizeValues; + chartConfigs?: ChartConfig; + chartVizType: string; + onMouseOver?: (this: GlobalEventHandlers, ev: MouseEvent) => any | undefined; + onMouseOut?: (this: GlobalEventHandlers, ev: MouseEvent) => any | undefined; + [key: string]: any; // allow custom types like 'name' + // these properties are copied from OpenLayers + // TODO: consider extending the OpenLayers options type + className?: string | undefined; + opacity?: number | undefined; + visible?: boolean | undefined; + extent?: Extent | undefined; + zIndex?: number | undefined; + minResolution?: number | undefined; + maxResolution?: number | undefined; + minZoom?: number | undefined; + maxZoom?: number | undefined; + source?: Source | undefined; + map?: Map | null | undefined; + render?: RenderFunction | undefined; + properties?: { [x: string]: any } | undefined; +}; + +export type CartodiagramPluginConstructorOpts = { + defaultLayers?: LayerConf[]; +}; + +export type ChartWrapperProps = { + vizType: string; + theme: SupersetTheme; + width: number; + height: number; + chartConfig: ChartConfigFeature; +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/chartUtil.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/chartUtil.tsx new file mode 100644 index 0000000000000..e0b4932f32cb4 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/chartUtil.tsx @@ -0,0 +1,86 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { SupersetTheme } from '@superset-ui/core'; +import { ChartConfig, ChartConfigFeature } from '../types'; +import ChartWrapper from '../components/ChartWrapper'; + +/** + * Create a chart component for a location. + * + * @param chartVizType The superset visualization type + * @param chartConfigs The chart configurations + * @param chartWidth The chart width + * @param chartHeight The chart height + * @param chartTheme The chart theme + * @returns The chart as React component + */ +export const createChartComponent = ( + chartVizType: string, + chartConfig: ChartConfigFeature, + chartWidth: number, + chartHeight: number, + chartTheme: SupersetTheme, +) => ( + +); + +/** + * Simplifies a chart configuration by removing + * non-serializable properties. + * + * @param config The chart configuration to simplify. + * @returns The simplified chart configuration. + */ +export const simplifyConfig = (config: ChartConfig) => { + const simplifiedConfig: ChartConfig = { + type: config.type, + features: config.features.map(f => ({ + type: f.type, + geometry: f.geometry, + properties: Object.keys(f.properties) + .filter(k => k !== 'refs') + .reduce((prev, cur) => ({ ...prev, [cur]: f.properties[cur] }), {}), + })), + }; + return simplifiedConfig; +}; + +/** + * Check if two chart configurations are equal (deep equality). + * + * @param configA The first chart config for comparison. + * @param configB The second chart config for comparison. + * @returns True, if configurations are equal. False otherwise. + */ +export const isChartConfigEqual = ( + configA: ChartConfig, + configB: ChartConfig, +) => { + const simplifiedConfigA = simplifyConfig(configA); + const simplifiedConfigB = simplifyConfig(configB); + return ( + JSON.stringify(simplifiedConfigA) === JSON.stringify(simplifiedConfigB) + ); +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/controlPanelUtil.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/controlPanelUtil.tsx new file mode 100644 index 0000000000000..1fc79f4aa7520 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/controlPanelUtil.tsx @@ -0,0 +1,128 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { t } from '@superset-ui/core'; +import { SelectValue } from 'antd/lib/select'; +import { ControlPanelConfig } from '@superset-ui/chart-controls'; + +/** + * Get the layer configuration object from the control panel. + * + * @param controlPanel The control panel + * @returns The layer configuration object or undefined if not found + */ +export const getLayerConfig = (controlPanel: ControlPanelConfig) => { + let layerConfig: any; + controlPanel.controlPanelSections.forEach(section => { + if (!section) { + return; + } + const { controlSetRows } = section; + controlSetRows.forEach((row: any[]) => { + const configObject = row[0] as any; + if (configObject && configObject.name === 'layer_configs') { + layerConfig = configObject; + } + }); + }); + + return layerConfig; +}; + +/** + * Mutates response of chart request into select options. + * + * If a currently selected value is not included in the response, + * it will be added explicitly, in order to prevent antd from creating + * a non-user-friendly select option. + * + * @param response Response json from resolved http request. + * @param value The currently selected value of the select input. + * @returns The list of options for the select input. + */ +export const selectedChartMutator = ( + response: Record, + value: SelectValue | undefined, +) => { + if (!response?.result) { + if (value && typeof value === 'string') { + return [ + { + label: JSON.parse(value).slice_name, + value, + }, + ]; + } + return []; + } + + const data: Record = []; + if (value && typeof value === 'string') { + const parsedValue = JSON.parse(value); + let itemFound = false; + response.result.forEach((config: any) => { + const configString = JSON.stringify(config); + const sameId = config.id === parsedValue.id; + const isUpdated = configString !== value; + const label = config.slice_name; + + if (sameId) { + itemFound = true; + } + if (!sameId || !isUpdated) { + data.push({ + value: configString, + label, + }); + } else { + data.push({ + value: configString, + label: ( + + ({t('updated')}) + {label} + + ), + }); + data.push({ + value, + label, + }); + } + }); + + if (!itemFound) { + data.push({ + value, + label: parsedValue.slice_name, + }); + } + } else { + response.result.forEach((config: any) => { + const configString = JSON.stringify(config); + const label = config.slice_name; + + data.push({ + value: configString, + label, + }); + }); + } + + return data; +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/geometryUtil.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/geometryUtil.ts new file mode 100644 index 0000000000000..fee05069465a6 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/geometryUtil.ts @@ -0,0 +1,60 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Util for geometry related operations. + */ + +import GeoJSON from 'ol/format/GeoJSON'; +import Feature from 'ol/Feature'; +import { Point as OlPoint } from 'ol/geom'; +import VectorSource from 'ol/source/Vector'; +import { Point as GeoJsonPoint } from 'geojson'; + +/** + * Extracts the coordinate from a Point GeoJSON in the current map projection. + * + * @param geoJsonPoint The GeoJSON string for the point + * + * @returns The coordinate + */ +export const getProjectedCoordinateFromPointGeoJson = ( + geoJsonPoint: GeoJsonPoint, +) => { + const geom: OlPoint = new GeoJSON().readGeometry(geoJsonPoint, { + // TODO: adapt to map projection + featureProjection: 'EPSG:3857', + }) as OlPoint; + return geom.getCoordinates(); +}; + +/** + * Computes the extent for an array of features. + * + * @param features An Array of OpenLayers features + * @returns The OpenLayers extent or undefined + */ +export const getExtentFromFeatures = (features: Feature[]) => { + if (features.length === 0) { + return undefined; + } + const source = new VectorSource(); + source.addFeatures(features); + return source.getExtent(); +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/layerUtil.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/layerUtil.tsx new file mode 100644 index 0000000000000..65e608bd757a2 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/layerUtil.tsx @@ -0,0 +1,160 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Util for layer related operations. + */ + +import OlParser from 'geostyler-openlayers-parser'; +import TileLayer from 'ol/layer/Tile'; +import TileWMS from 'ol/source/TileWMS'; +import { bbox as bboxStrategy } from 'ol/loadingstrategy'; +import VectorLayer from 'ol/layer/Vector'; +import VectorSource from 'ol/source/Vector'; +import XyzSource from 'ol/source/XYZ'; +import GeoJSON from 'ol/format/GeoJSON'; +import { WmsLayerConf, WfsLayerConf, LayerConf, XyzLayerConf } from '../types'; +import { isWfsLayerConf, isWmsLayerConf, isXyzLayerConf } from '../typeguards'; +import { isVersionBelow } from './serviceUtil'; + +/** + * Create a WMS layer. + * + * @param wmsLayerConf The layer configuration + * + * @returns The created WMS layer + */ +export const createWmsLayer = (wmsLayerConf: WmsLayerConf) => { + const { url, layersParam, version, attribution } = wmsLayerConf; + return new TileLayer({ + source: new TileWMS({ + url, + params: { + LAYERS: layersParam, + VERSION: version, + }, + attributions: attribution, + }), + }); +}; + +/** + * Create a XYZ layer. + * + * @param xyzLayerConf The layer configuration + * + * @returns The created XYZ layer + */ +export const createXyzLayer = (xyzLayerConf: XyzLayerConf) => { + const { url, attribution } = xyzLayerConf; + return new TileLayer({ + source: new XyzSource({ + url, + attributions: attribution, + }), + }); +}; + +/** + * Create a WFS layer. + * + * @param wfsLayerConf The layer configuration + * + * @returns The created WFS layer + */ +export const createWfsLayer = async (wfsLayerConf: WfsLayerConf) => { + const { + url, + typeName, + maxFeatures, + version = '1.1.0', + style, + attribution, + } = wfsLayerConf; + + const wfsSource = new VectorSource({ + format: new GeoJSON(), + attributions: attribution, + url: extent => { + const requestUrl = new URL(url); + const params = requestUrl.searchParams; + params.append('service', 'wfs'); + params.append('request', 'GetFeature'); + params.append('outputFormat', 'application/json'); + // TODO: make CRS configurable or take it from Ol Map + params.append('srsName', 'EPSG:3857'); + params.append('version', version); + + let typeNameQuery = 'typeNames'; + if (isVersionBelow(version, '2.0.0', 'WFS')) { + typeNameQuery = 'typeName'; + } + params.append(typeNameQuery, typeName); + + params.append('bbox', extent.join(',')); + if (maxFeatures) { + let maxFeaturesQuery = 'count'; + if (isVersionBelow(version, '2.0.0', 'WFS')) { + maxFeaturesQuery = 'maxFeatures'; + } + params.append(maxFeaturesQuery, maxFeatures.toString()); + } + + return requestUrl.toString(); + }, + strategy: bboxStrategy, + }); + + let writeStyleResult; + if (style) { + const olParser = new OlParser(); + writeStyleResult = await olParser.writeStyle(style); + if (writeStyleResult.errors) { + console.warn('Could not create ol-style', writeStyleResult.errors); + return undefined; + } + } + + return new VectorLayer({ + source: wfsSource, + // @ts-ignore + style: writeStyleResult?.output, + }); +}; + +/** + * Create a layer instance with the provided configuration. + * + * @param layerConf The layer configuration + * + * @returns The created layer + */ +export const createLayer = async (layerConf: LayerConf) => { + let layer; + if (isWmsLayerConf(layerConf)) { + layer = createWmsLayer(layerConf); + } else if (isWfsLayerConf(layerConf)) { + layer = await createWfsLayer(layerConf); + } else if (isXyzLayerConf(layerConf)) { + layer = createXyzLayer(layerConf); + } else { + console.warn('Provided layerconfig is not recognized'); + } + return layer; +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/mapUtil.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/mapUtil.tsx new file mode 100644 index 0000000000000..56af025f7f37c --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/mapUtil.tsx @@ -0,0 +1,52 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Util for map related operations. + */ +import { Map } from 'ol'; +import GeoJSON from 'ol/format/GeoJSON'; +import { ChartConfig } from '../types'; +import { getExtentFromFeatures } from './geometryUtil'; + +// default map extent of world if no features are found +// TODO: move to generic config file or plugin configuration +// TODO: adapt to CRS other than Web Mercator +const defaultExtent = [-16000000, -7279000, 20500000, 11000000]; + +/** + * Fits map to the spatial extent of provided charts. + * + * @param olMap The OpenLayers map + * @param chartConfigs The chart configuration + */ +export const fitMapToCharts = (olMap: Map, chartConfigs: ChartConfig) => { + const view = olMap.getView(); + const features = new GeoJSON().readFeatures(chartConfigs, { + // TODO: adapt to map projection + featureProjection: 'EPSG:3857', + }); + + const extent = getExtentFromFeatures(features) || defaultExtent; + + view.fit(extent, { + // tested for a desktop size monitor + size: [250, 250], + }); +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/serviceUtil.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/serviceUtil.ts new file mode 100644 index 0000000000000..b4d79485d1fe0 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/serviceUtil.ts @@ -0,0 +1,59 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Get the available versions of WFS and WMS. + * + * @returns the versions + */ +export const getServiceVersions = () => ({ + WMS: ['1.3.0', '1.1.1'], + WFS: ['2.0.2', '2.0.0', '1.1.0'], +}); + +/** + * Checks if a given version is below the comparer version. + * + * @param version The version to check. + * @param below The version to compare to. + * @param serviceType The service type. + * @returns True, if the version is below comparer version. False, otherwise. + */ +export const isVersionBelow = ( + version: string, + below: string, + serviceType: 'WFS' | 'WMS', +) => { + const versions = getServiceVersions()[serviceType]; + // versions is ordered from newest to oldest, so we invert the order + // to improve the readability of this function. + versions.reverse(); + const versionIdx = versions.indexOf(version); + if (versionIdx === -1) { + // TODO: consider throwing an error instead + return false; + } + const belowIdx = versions.indexOf(below); + if (belowIdx === -1) { + // TODO: consider throwing an error instead + return false; + } + + return versionIdx < belowIdx; +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/transformPropsUtil.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/transformPropsUtil.ts new file mode 100644 index 0000000000000..1987a75da7130 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/transformPropsUtil.ts @@ -0,0 +1,340 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { + ChartProps, + convertKeysToCamelCase, + DataRecord, +} from '@superset-ui/core'; +import { isObject } from 'lodash'; +import { + LocationConfigMapping, + SelectedChartConfig, + ChartConfig, + ChartConfigFeature, +} from '../types'; + +const COLUMN_SEPARATOR = ', '; + +/** + * Get the indices of columns where the title is a geojson. + * + * @param columns List of column names. + * @returns List of indices containing geojsonColumns. + */ +export const getGeojsonColumns = (columns: string[]) => + columns.reduce((prev, current, idx) => { + let parsedColName; + try { + parsedColName = JSON.parse(current); + } catch { + parsedColName = undefined; + } + if (!parsedColName || !isObject(parsedColName)) { + return [...prev]; + } + if (!('type' in parsedColName) || !('coordinates' in parsedColName)) { + return [...prev]; + } + return [...prev, idx]; + }, []); + +/** + * Create a column name ignoring provided indices. + * + * @param columns List of column names. + * @param ignoreIdx List of indices to ignore. + * @returns Column name. + */ +export const createColumnName = (columns: string[], ignoreIdx: number[]) => + columns.filter((l, idx) => !ignoreIdx.includes(idx)).join(COLUMN_SEPARATOR); + +/** + * Group data by location for data providing a generic + * x-axis. + * + * @param data The data to group. + * @param params The data params. + * @returns Data grouped by location. + */ +export const groupByLocationGenericX = ( + data: DataRecord[], + params: SelectedChartConfig['params'], + queryData: any, +) => { + const locations: LocationConfigMapping = {}; + if (!data) { + return locations; + } + data.forEach(d => { + Object.keys(d) + .filter(k => k !== params.x_axis) + .forEach(k => { + const labelMap: string[] = queryData.label_map?.[k]; + + if (!labelMap) { + console.log( + 'Cannot extract location from queryData. label_map not defined', + ); + return; + } + + const geojsonCols = getGeojsonColumns(labelMap); + + if (geojsonCols.length > 1) { + // TODO what should we do, if there is more than one geom column? + console.log( + 'More than one geometry column detected. Using first found.', + ); + } + const location = labelMap[geojsonCols[0]]; + const filter = geojsonCols.length ? [geojsonCols[0]] : []; + const leftOverKey = createColumnName(labelMap, filter); + + if (!Object.keys(locations).includes(location)) { + locations[location] = []; + } + + let dataAtX = locations[location].find( + i => i[params.x_axis] === d[params.x_axis], + ); + + if (!dataAtX) { + dataAtX = { + // add the x_axis value explicitly, since we + // filtered it out for the rest of the computation. + [params.x_axis]: d[params.x_axis], + }; + locations[location].push(dataAtX); + } + dataAtX[leftOverKey] = d[k]; + }); + }); + + return locations; +}; + +/** + * Group data by location. + * + * @param data The incoming dataset + * @param geomColumn The name of the geometry column + * @returns The grouped data + */ +export const groupByLocation = (data: DataRecord[], geomColumn: string) => { + const locations: LocationConfigMapping = {}; + + data.forEach(d => { + const loc = d[geomColumn] as string; + if (!loc) { + return; + } + + if (!Object.keys(locations).includes(loc)) { + locations[loc] = []; + } + + const newData = { + ...d, + }; + delete newData[geomColumn]; + + locations[loc].push(newData); + }); + + return locations; +}; + +/** + * Strips the geom from colnames and coltypes. + * + * @param queryData The querydata. + * @param geomColumn Name of the geom column. + * @returns colnames and coltypes without the geom. + */ +export const stripGeomFromColnamesAndTypes = ( + queryData: any, + geomColumn: string, +) => { + const newColnames: string[] = []; + const newColtypes: number[] = []; + queryData.colnames?.forEach((colname: string, idx: number) => { + if (colname === geomColumn) { + return; + } + + const parts = colname.split(COLUMN_SEPARATOR); + const geojsonColumns = getGeojsonColumns(parts); + const filter = geojsonColumns.length ? [geojsonColumns[0]] : []; + + const newColname = createColumnName(parts, filter); + if (newColnames.includes(newColname)) { + return; + } + newColnames.push(newColname); + newColtypes.push(queryData.coltypes[idx]); + }); + + return { + colnames: newColnames, + coltypes: newColtypes, + }; +}; + +/** + * Strips the geom from labelMap. + * + * @param queryData The querydata. + * @param geomColumn Name of the geom column. + * @returns labelMap without the geom column. + */ +export const stripGeomColumnFromLabelMap = ( + labelMap: { [key: string]: string[] }, + geomColumn: string, +) => { + const newLabelMap = {}; + Object.entries(labelMap).forEach(([key, value]) => { + if (key === geomColumn) { + return; + } + const geojsonCols = getGeojsonColumns(value); + const filter = geojsonCols.length ? [geojsonCols[0]] : []; + const columnName = createColumnName(value, filter); + const restItems = value.filter((v, idx) => !geojsonCols.includes(idx)); + newLabelMap[columnName] = restItems; + }); + return newLabelMap; +}; + +/** + * Strip occurrences of the geom column from the query data. + * + * @param queryDataClone The query data + * @param geomColumn The name of the geom column + * @returns query data without geom column. + */ +export const stripGeomColumnFromQueryData = ( + queryData: any, + geomColumn: string, +) => { + const queryDataClone = { + ...structuredClone(queryData), + ...stripGeomFromColnamesAndTypes(queryData, geomColumn), + }; + if (queryDataClone.label_map) { + queryDataClone.label_map = stripGeomColumnFromLabelMap( + queryData.label_map, + geomColumn, + ); + } + return queryDataClone; +}; + +/** + * Create the chart configurations depending on the referenced Superset chart. + * + * @param selectedChart The configuration of the referenced Superset chart + * @param geomColumn The name of the geometry column + * @param chartProps The properties provided within this OL plugin + * @param chartTransformer The transformer function + * @returns The chart configurations + */ +export const getChartConfigs = ( + selectedChart: SelectedChartConfig, + geomColumn: string, + chartProps: ChartProps, + chartTransformer: any, +) => { + const chartFormDataSnake = selectedChart.params; + const chartFormData = convertKeysToCamelCase(chartFormDataSnake); + + const baseConfig = { + ...chartProps, + // We overwrite width and height, which are not needed + // here, but leads to unnecessary updating of the UI. + width: null, + height: null, + formData: chartFormData, + rawFormData: chartFormDataSnake, + datasource: {}, + }; + + const { queriesData } = chartProps; + const [queryData] = queriesData; + + const data = queryData.data as DataRecord[]; + let dataByLocation: LocationConfigMapping; + + const chartConfigs: ChartConfig = { + type: 'FeatureCollection', + features: [], + }; + + if (!data) { + return chartConfigs; + } + + if ('x_axis' in selectedChart.params) { + dataByLocation = groupByLocationGenericX( + data, + selectedChart.params, + queryData, + ); + } else { + dataByLocation = groupByLocation(data, geomColumn); + } + + const strippedQueryData = stripGeomColumnFromQueryData(queryData, geomColumn); + + Object.keys(dataByLocation).forEach(location => { + const config = { + ...baseConfig, + queriesData: [ + { + ...strippedQueryData, + data: dataByLocation[location], + }, + ], + }; + const transformedProps = chartTransformer(config); + + const feature: ChartConfigFeature = { + type: 'Feature', + geometry: JSON.parse(location), + properties: { + ...transformedProps, + }, + }; + + chartConfigs.features.push(feature); + }); + return chartConfigs; +}; + +/** + * Return the same chart configuration with parsed values for of the stringified "params" object. + * + * @param selectedChart Incoming chart configuration + * @returns Chart configuration with parsed values for "params" + */ +export const parseSelectedChart = (selectedChart: string) => { + const selectedChartParsed = JSON.parse(selectedChart); + selectedChartParsed.params = JSON.parse(selectedChartParsed.params); + return selectedChartParsed; +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/zoomUtil.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/zoomUtil.ts new file mode 100644 index 0000000000000..c21fda764e55a --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/src/util/zoomUtil.ts @@ -0,0 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const MAX_ZOOM_LEVEL = 28; +export const MIN_ZOOM_LEVEL = 0; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/components/chartLayer.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/components/chartLayer.test.ts new file mode 100644 index 0000000000000..050af2803eded --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/components/chartLayer.test.ts @@ -0,0 +1,48 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ChartLayer } from '../../src/components/ChartLayer'; +import { ChartLayerOptions } from '../../src/types'; + +describe('ChartLayer', () => { + it('creates div and loading mask', () => { + const options: ChartLayerOptions = { + chartVizType: 'pie', + }; + const chartLayer = new ChartLayer(options); + + expect(chartLayer.loadingMask).toBeDefined(); + expect(chartLayer.div).toBeDefined(); + }); + + it('can remove chart elements', () => { + const options: ChartLayerOptions = { + chartVizType: 'pie', + }; + const chartLayer = new ChartLayer(options); + chartLayer.charts = [ + { + htmlElement: document.createElement('div'), + }, + ]; + + chartLayer.removeAllChartElements(); + expect(chartLayer.charts).toEqual([]); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/index.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/index.test.ts new file mode 100644 index 0000000000000..a43ce12cade75 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/index.test.ts @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { CartodiagramPlugin } from '../src'; + +/** + * The example tests in this file act as a starting point, and + * we encourage you to build more. These tests check that the + * plugin loads properly, and focus on `transformProps` + * to ake sure that data, controls, and props are all + * treated correctly (e.g. formData from plugin controls + * properly transform the data and/or any resulting props). + */ +describe('CartodiagramPlugin', () => { + it('exists', () => { + expect(CartodiagramPlugin).toBeDefined(); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/buildQuery.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/buildQuery.test.ts new file mode 100644 index 0000000000000..0c8b8c049a1ee --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/buildQuery.test.ts @@ -0,0 +1,66 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { getChartBuildQueryRegistry } from '@superset-ui/core'; +import buildQuery from '../../src/plugin/buildQuery'; + +describe('CartodiagramPlugin buildQuery', () => { + const selectedChartParams = { + groupby: [], + }; + + const selectedChart = { + viz_type: 'pie', + params: JSON.stringify(selectedChartParams), + }; + + const formData = { + datasource: '5__table', + granularity_sqla: 'ds', + series: 'foo', + viz_type: 'my_chart', + selected_chart: JSON.stringify(selectedChart), + geom_column: 'geom', + }; + + let chartQueryBuilderMock: jest.MockedFunction; + beforeEach(() => { + chartQueryBuilderMock = jest.fn(); + + const registry = getChartBuildQueryRegistry(); + registry.registerValue('pie', chartQueryBuilderMock); + }); + + afterEach(() => { + // remove registered buildQuery + const registry = getChartBuildQueryRegistry(); + registry.clear(); + }); + + it('should call the buildQuery function of the referenced chart', () => { + buildQuery(formData); + expect(chartQueryBuilderMock.mock.calls).toHaveLength(1); + }); + + it('should build groupby with geom in form data', () => { + const expectedParams = { ...selectedChartParams, groupby: ['geom'] }; + + buildQuery(formData); + expect(chartQueryBuilderMock.mock.calls[0][0]).toEqual(expectedParams); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/index.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/index.test.ts new file mode 100644 index 0000000000000..04563b081b8fa --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/index.test.ts @@ -0,0 +1,26 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import CartodiagramPlugin from '../../src/CartodiagramPlugin'; + +describe('CartodiagramPlugin', () => { + it('exists', () => { + expect(CartodiagramPlugin).toBeDefined(); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/transformProps.test.ts new file mode 100644 index 0000000000000..98cfc4977efda --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/plugin/transformProps.test.ts @@ -0,0 +1,150 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { + ChartProps, + getChartTransformPropsRegistry, + supersetTheme, +} from '@superset-ui/core'; +import { LayerConf, MapViewConfigs, ZoomConfigs } from '../../src/types'; +import transformProps from '../../src/plugin/transformProps'; +import { + groupedTimeseriesChartData, + groupedTimeseriesLabelMap, +} from '../testData'; + +describe('CartodiagramPlugin transformProps', () => { + const chartSize: ZoomConfigs = { + type: 'FIXED', + configs: { + height: 10, + width: 10, + zoom: 1, + }, + values: { + 1: { + height: 10, + width: 10, + }, + }, + }; + const layerConfigs: LayerConf[] = [ + { + type: 'XYZ', + title: 'foo', + url: 'example.com', + }, + ]; + const mapView: MapViewConfigs = { + mode: 'FIT_DATA', + zoom: 1, + latitude: 0, + longitude: 0, + fixedZoom: 1, + fixedLatitude: 0, + fixedLongitude: 0, + }; + + // only minimal subset of actual params + const selectedChartParams = { + groupby: ['bar'], + x_axis: 'mydate', + }; + + const selectedChart = { + id: 1, + viz_type: 'pie', + slice_name: 'foo', + params: JSON.stringify(selectedChartParams), + }; + + const formData = { + viz_type: 'cartodiagram', + geomColumn: 'geom', + selectedChart: JSON.stringify(selectedChart), + chartSize, + layerConfigs, + mapView, + chartBackgroundColor: '#000000', + chartBackgroundBorderRadius: 5, + }; + + const chartProps = new ChartProps({ + formData, + width: 800, + height: 600, + queriesData: [ + { + data: groupedTimeseriesChartData, + label_map: groupedTimeseriesLabelMap, + }, + ], + theme: supersetTheme, + }); + + let chartTransformPropsPieMock: jest.MockedFunction; + let chartTransformPropsTimeseriesMock: jest.MockedFunction; + beforeEach(() => { + chartTransformPropsPieMock = jest.fn(); + chartTransformPropsTimeseriesMock = jest.fn(); + const registry = getChartTransformPropsRegistry(); + registry.registerValue('pie', chartTransformPropsPieMock); + registry.registerValue( + 'echarts_timeseries', + chartTransformPropsTimeseriesMock, + ); + }); + + afterEach(() => { + // remove registered transformProps + const registry = getChartTransformPropsRegistry(); + registry.clear(); + }); + + it('should call the transform props function of the referenced chart', () => { + transformProps(chartProps); + expect(chartTransformPropsPieMock).toHaveBeenCalled(); + expect(chartTransformPropsTimeseriesMock).not.toHaveBeenCalled(); + }); + + it('should transform chart props for viz', () => { + const transformedProps = transformProps(chartProps); + expect(transformedProps).toEqual( + expect.objectContaining({ + width: chartProps.width, + height: chartProps.height, + geomColumn: formData.geomColumn, + selectedChart: expect.objectContaining({ + viz_type: selectedChart.viz_type, + params: selectedChartParams, + }), + // The actual test for the created chartConfigs + // will be done in transformPropsUtil.test.ts + chartConfigs: expect.objectContaining({ + type: 'FeatureCollection', + }), + chartVizType: selectedChart.viz_type, + chartSize, + layerConfigs, + mapView, + chartBackgroundColor: formData.chartBackgroundColor, + chartBackgroundBorderRadius: formData.chartBackgroundBorderRadius, + }), + ); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/testData.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/testData.ts new file mode 100644 index 0000000000000..5b5a3a0e7d2c0 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/testData.ts @@ -0,0 +1,113 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const coord1 = '[1,2]'; +const coord2 = '[3,4]'; +export const geom1 = `{"type":"Point","coordinates":${coord1}}`; +export const geom2 = `{"type":"Point","coordinates":${coord2}}`; + +export const nonTimeSeriesChartData: any = [ + { + geom: geom1, + my_value: 'apple', + my_count: 347, + }, + { + geom: geom1, + my_value: 'apple', + my_count: 360, + }, + { + geom: geom1, + my_value: 'lemon', + my_count: 335, + }, + { + geom: geom1, + my_value: 'lemon', + my_count: 333, + }, + { + geom: geom1, + my_value: 'lemon', + my_count: 353, + }, + { + geom: geom1, + my_value: 'lemon', + my_count: 359, + }, + { + geom: geom2, + my_value: 'lemon', + my_count: 347, + }, + { + geom: geom2, + my_value: 'apple', + my_count: 335, + }, + { + geom: geom2, + my_value: 'apple', + my_count: 356, + }, + { + geom: geom2, + my_value: 'banana', + my_count: 218, + }, +]; + +export const timeseriesChartData = [ + { + [geom1]: 347, + [geom2]: 360, + mydate: 1564275000000, + }, + { + [geom1]: 353, + [geom2]: 328, + mydate: 1564272000000, + }, +]; + +export const groupedTimeseriesChartData = [ + { + [`${geom1}, apple`]: 347, + [`${geom2}, apple`]: 360, + [`${geom1}, lemon`]: 352, + [`${geom2}, lemon`]: 364, + mydate: 1564275000000, + }, + { + [`${geom1}, apple`]: 353, + [`${geom2}, apple`]: 328, + [`${geom1}, lemon`]: 346, + [`${geom2}, lemon`]: 333, + mydate: 1564272000000, + }, +]; + +export const groupedTimeseriesLabelMap = { + [`${geom1}, apple`]: [geom1, 'apple'], + [`${geom2}, apple`]: [geom2, 'apple'], + [`${geom1}, lemon`]: [geom1, 'lemon'], + [`${geom2}, lemon`]: [geom2, 'lemon'], +}; diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/tsconfig.json b/superset-frontend/plugins/plugin-chart-cartodiagram/test/tsconfig.json new file mode 100644 index 0000000000000..07351e5038c30 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "composite": false, + "emitDeclarationOnly": false, + "noEmit": true, + "rootDir": "." + }, + "extends": "../../../tsconfig.json", + "include": [ + "**/*", + "../types/**/*", + "../../../types/**/*" + ], + "references": [ + { + "path": "../../../packages/superset-ui-chart-controls" + }, + { + "path": "../../../packages/superset-ui-core" + }, + ] +} diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/chartUtil.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/chartUtil.test.ts new file mode 100644 index 0000000000000..891ac9541bf3d --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/chartUtil.test.ts @@ -0,0 +1,77 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ChartConfig } from '../../src/types'; +import { isChartConfigEqual, simplifyConfig } from '../../src/util/chartUtil'; + +describe('chartUtil', () => { + const configA: ChartConfig = { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [], + }, + properties: { + refs: 'foo', + }, + }, + ], + }; + + const configB: ChartConfig = { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [], + }, + properties: { + refs: 'foo', + foo: 'bar', + }, + }, + ], + }; + + describe('simplifyConfig', () => { + it('removes the refs property from a feature', () => { + const simplifiedConfig = simplifyConfig(configA); + const propKeys = Object.keys(simplifiedConfig.features[0].properties); + + expect(propKeys).toHaveLength(0); + }); + }); + + describe('isChartConfigEqual', () => { + it('returns true, if configurations are equal', () => { + const isEqual = isChartConfigEqual(configA, structuredClone(configA)); + expect(isEqual).toBe(true); + }); + + it('returns false if configurations are not equal', () => { + const isEqual = isChartConfigEqual(configA, configB); + expect(isEqual).toBe(false); + }); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/controlPanelUtil.test.tsx b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/controlPanelUtil.test.tsx new file mode 100644 index 0000000000000..88e1e3b9e8323 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/controlPanelUtil.test.tsx @@ -0,0 +1,212 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { + ControlPanelConfig, + CustomControlItem, +} from '@superset-ui/chart-controls'; +import { + getLayerConfig, + selectedChartMutator, +} from '../../src/util/controlPanelUtil'; + +describe('controlPanelUtil', () => { + describe('getLayerConfig', () => { + it('returns the correct layer config', () => { + const layerConfigs: CustomControlItem = { + name: 'layer_configs', + config: { + type: 'dummy', + renderTrigger: true, + label: 'Layers', + default: [ + { + type: 'XYZ', + url: 'http://example.com/', + title: 'dummy title', + attribution: 'dummy attribution', + }, + ], + description: 'The configuration for the map layers', + }, + }; + const controlPanel: ControlPanelConfig = { + controlPanelSections: [ + { + label: 'Configuration', + expanded: true, + controlSetRows: [], + }, + { + label: 'Map Options', + expanded: true, + controlSetRows: [ + [ + { + name: 'map_view', + config: { + type: 'dummy', + }, + }, + ], + [layerConfigs], + ], + }, + { + label: 'Chart Options', + expanded: true, + controlSetRows: [], + }, + ], + }; + const extractedLayerConfigs = getLayerConfig(controlPanel); + + expect(extractedLayerConfigs).toEqual(layerConfigs); + }); + }); + + describe('selectedChartMutator', () => { + it('returns empty array for empty inputs', () => { + const response = {}; + const value = undefined; + const result = selectedChartMutator(response, value); + expect(result).toEqual([]); + }); + + it('returns parsed value if response is empty', () => { + const response = {}; + + const sliceName = 'foobar'; + const value = JSON.stringify({ + id: 278, + params: '', + slice_name: sliceName, + viz_type: 'pie', + }); + + const result = selectedChartMutator(response, value); + + expect(result[0].label).toEqual(sliceName); + }); + + it('returns response options if no value is chosen', () => { + const sliceName1 = 'foo'; + const sliceName2 = 'bar'; + const response = { + result: [ + { + id: 1, + params: '{}', + slice_name: sliceName1, + viz_type: 'viz1', + }, + { + id: 2, + params: '{}', + slice_name: sliceName2, + viz_type: 'viz2', + }, + ], + }; + const value = undefined; + + const result = selectedChartMutator(response, value); + expect(result[0].label).toEqual(sliceName1); + expect(result[1].label).toEqual(sliceName2); + }); + + it('returns correct result if id of chosen config does not exist in response', () => { + const response = { + result: [ + { + id: 1, + params: '{}', + slice_name: 'foo', + viz_type: 'viz1', + }, + { + id: 2, + params: '{}', + slice_name: 'bar', + viz_type: 'viz2', + }, + ], + }; + + const value = JSON.stringify({ + id: 3, + params: '{}', + slice_name: 'my-slice', + viz_type: 'pie', + }); + + const result = selectedChartMutator(response, value); + + // collect all ids in a set to prevent double entries + const ids = new Set(); + result.forEach((item: any) => { + const config = JSON.parse(item.value); + const { id } = config; + ids.add(id); + }); + + const threeDifferentIds = ids.size === 3; + + expect(threeDifferentIds).toEqual(true); + }); + + it('returns correct result if id of chosen config already exists', () => { + const response = { + result: [ + { + id: 1, + params: '{}', + slice_name: 'foo', + viz_type: 'viz1', + }, + { + id: 2, + params: '{}', + slice_name: 'bar', + viz_type: 'viz2', + }, + ], + }; + + const value = JSON.stringify({ + id: 1, + params: '{}', + slice_name: 'my-slice', + viz_type: 'pie', + }); + + const result = selectedChartMutator(response, value); + + const itemsIdWithId1 = result.filter((item: any) => { + const config = JSON.parse(item.value); + const { id } = config; + return id === 1; + }); + expect(itemsIdWithId1.length).toEqual(2); + + const labelsEqual = itemsIdWithId1[0].label === itemsIdWithId1[1].label; + expect(labelsEqual).toEqual(false); + }); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/geometryUtil.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/geometryUtil.test.ts new file mode 100644 index 0000000000000..4f070f4b78350 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/geometryUtil.test.ts @@ -0,0 +1,102 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import GeoJSON from 'ol/format/GeoJSON'; +import { Point } from 'geojson'; +import { + getExtentFromFeatures, + getProjectedCoordinateFromPointGeoJson, +} from '../../src/util/geometryUtil'; +import { ChartConfig } from '../../src/types'; + +describe('geometryUtil', () => { + describe('getProjectedCoordinateFromPointGeoJson', () => { + it('returns a plausible result', () => { + const pointGeoJson: Point = { + type: 'Point', + coordinates: [6.6555, 49.74283], + }; + const result = getProjectedCoordinateFromPointGeoJson(pointGeoJson); + + expect(result.length).toEqual(2); + + const valuesAreNumbers = + !Number.isNaN(result[0]) && !Number.isNaN(result[1]); + expect(valuesAreNumbers).toEqual(true); + }); + }); + + describe('getExtentFromFeatures', () => { + it('computes correct extent with valid input', () => { + const expectedExtent = [1, 2, 3, 4]; + + const chartConfig: ChartConfig = { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [expectedExtent[0], expectedExtent[1]], + }, + properties: { + setDataMask: '', + labelMap: '', + labelMapB: '', + groupby: '', + selectedValues: '', + formData: '', + groupbyB: '', + seriesBreakdown: '', + legendData: '', + echartOptions: '', + }, + }, + { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [expectedExtent[2], expectedExtent[3]], + }, + properties: { + setDataMask: '', + labelMap: '', + labelMapB: '', + groupby: '', + selectedValues: '', + formData: '', + groupbyB: '', + seriesBreakdown: '', + legendData: '', + echartOptions: '', + }, + }, + ], + }; + + const features = new GeoJSON().readFeatures(chartConfig); + const extent = getExtentFromFeatures(features); + expect(extent).toEqual(expectedExtent); + }); + + it('returns undefined on invalid input', () => { + const emptyExtent = getExtentFromFeatures([]); + expect(emptyExtent).toBeUndefined(); + }); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/layerUtil.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/layerUtil.test.ts new file mode 100644 index 0000000000000..f5b55bdf77911 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/layerUtil.test.ts @@ -0,0 +1,95 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { WfsLayerConf } from '../../src/types'; +import { + createLayer, + createWfsLayer, + createWmsLayer, + createXyzLayer, +} from '../../src/util/layerUtil'; + +describe('layerUtil', () => { + describe('createWmsLayer', () => { + it('exists', () => { + // function is trivial + expect(createWmsLayer).toBeDefined(); + }); + }); + + describe('createWfsLayer', () => { + it('properly applies style', async () => { + const colorToExpect = '#123456'; + + const wfsLayerConf: WfsLayerConf = { + title: 'osm:osm-fuel', + url: 'https://ows-demo.terrestris.de/geoserver/osm/wfs', + type: 'WFS', + version: '2.0.2', + typeName: 'osm:osm-fuel', + style: { + name: 'Default Style', + rules: [ + { + name: 'Default Rule', + symbolizers: [ + { + kind: 'Line', + color: '#000000', + width: 2, + }, + { + kind: 'Mark', + wellKnownName: 'circle', + color: colorToExpect, + }, + { + kind: 'Fill', + color: '#000000', + }, + ], + }, + ], + }, + }; + + const wfsLayer = await createWfsLayer(wfsLayerConf); + + const style = wfsLayer!.getStyle(); + // @ts-ignore + expect(style!.length).toEqual(3); + + const colorAtLayer = style![1].getImage().getFill().getColor(); + expect(colorToExpect).toEqual(colorAtLayer); + }); + }); + + describe('createXyzLayer', () => { + it('exists', () => { + // function is trivial + expect(createXyzLayer).toBeDefined(); + }); + }); + + describe('createLayer', () => { + it('exists', () => { + expect(createLayer).toBeDefined(); + }); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/mapUtil.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/mapUtil.test.ts new file mode 100644 index 0000000000000..0447b03afb861 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/mapUtil.test.ts @@ -0,0 +1,116 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Map from 'ol/Map.js'; +import OSM from 'ol/source/OSM.js'; +import TileLayer from 'ol/layer/Tile.js'; +import View from 'ol/View.js'; +import { ChartConfig } from '../../src/types'; +import { fitMapToCharts } from '../../src/util/mapUtil'; + +describe('mapUtil', () => { + describe('fitMapToCharts', () => { + it('changes the center of the map', () => { + const chartConfig: ChartConfig = { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [8.793, 53.04117], + }, + properties: { + setDataMask: '', + labelMap: '', + labelMapB: '', + groupby: '', + selectedValues: '', + formData: '', + groupbyB: '', + seriesBreakdown: '', + legendData: '', + echartOptions: '', + }, + }, + { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [10.61833, 51.8], + }, + properties: { + setDataMask: '', + labelMap: '', + labelMapB: '', + groupby: '', + selectedValues: '', + formData: '', + groupbyB: '', + seriesBreakdown: '', + legendData: '', + echartOptions: '', + }, + }, + { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [6.86883, 50.35667], + }, + properties: { + setDataMask: '', + labelMap: '', + labelMapB: '', + groupby: '', + selectedValues: '', + formData: '', + groupbyB: '', + seriesBreakdown: '', + legendData: '', + echartOptions: '', + }, + }, + ], + }; + + const initialCenter = [0, 0]; + + const olMap = new Map({ + layers: [ + new TileLayer({ + source: new OSM(), + }), + ], + target: 'map', + view: new View({ + center: initialCenter, + zoom: 2, + }), + }); + + // should set center + fitMapToCharts(olMap, chartConfig); + + const updatedCenter = olMap.getView().getCenter(); + + expect(initialCenter).not.toEqual(updatedCenter); + }); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/serviceUtil.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/serviceUtil.test.ts new file mode 100644 index 0000000000000..0728839b92b50 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/serviceUtil.test.ts @@ -0,0 +1,46 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { isVersionBelow } from '../../src/util/serviceUtil'; + +describe('serviceUtil', () => { + describe('isVersionBelow', () => { + describe('WMS', () => { + it('recognizes the higher version', () => { + const result = isVersionBelow('1.3.0', '1.1.0', 'WMS'); + expect(result).toEqual(false); + }); + it('recognizes the lower version', () => { + const result = isVersionBelow('1.1.1', '1.3.0', 'WMS'); + expect(result).toEqual(true); + }); + }); + + describe('WFS', () => { + it('recognizes the higher version', () => { + const result = isVersionBelow('2.0.2', '1.1.0', 'WFS'); + expect(result).toEqual(false); + }); + it('recognizes the lower version', () => { + const result = isVersionBelow('1.1.0', '2.0.2', 'WFS'); + expect(result).toEqual(true); + }); + }); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/transformPropsUtil.test.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/transformPropsUtil.test.ts new file mode 100644 index 0000000000000..6190990e0d7e3 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/test/util/transformPropsUtil.test.ts @@ -0,0 +1,249 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { + groupByLocation, + getChartConfigs, + parseSelectedChart, + getGeojsonColumns, + createColumnName, + groupByLocationGenericX, + stripGeomFromColnamesAndTypes, + stripGeomColumnFromLabelMap, +} from '../../src/util/transformPropsUtil'; +import { + nonTimeSeriesChartData, + groupedTimeseriesChartData, + geom1, + geom2, + groupedTimeseriesLabelMap, +} from '../testData'; + +describe('transformPropsUtil', () => { + const groupedTimeseriesParams = { + x_axis: 'mydate', + }; + + const groupedTimeseriesQueryData = { + label_map: groupedTimeseriesLabelMap, + }; + + describe('getGeojsonColumns', () => { + it('gets the GeoJSON columns', () => { + const columns = ['foo', 'bar', geom1]; + const result = getGeojsonColumns(columns); + expect(result).toHaveLength(1); + expect(result[0]).toEqual(2); + }); + + it('gets multiple GeoJSON columns', () => { + const columns = ['foo', geom2, 'bar', geom1]; + const result = getGeojsonColumns(columns); + expect(result).toHaveLength(2); + expect(result[0]).toEqual(1); + expect(result[1]).toEqual(3); + }); + + it('returns empty array when no GeoJSON is included', () => { + const columns = ['foo', 'bar']; + const result = getGeojsonColumns(columns); + expect(result).toHaveLength(0); + }); + }); + + describe('createColumnName', () => { + it('creates a columns name', () => { + const columns = ['foo', 'bar']; + const result = createColumnName(columns, []); + expect(result).toEqual('foo, bar'); + }); + + it('ignores items provided by ignoreIdx', () => { + const columns = ['foo', 'bar', 'baz']; + const ignoreIdx = [1]; + const result = createColumnName(columns, ignoreIdx); + expect(result).toEqual('foo, baz'); + }); + }); + + describe('groupByLocationGenericX', () => { + it('groups in the correct count of geometries', () => { + const result = groupByLocationGenericX( + groupedTimeseriesChartData, + groupedTimeseriesParams, + groupedTimeseriesQueryData, + ); + const countOfGeometries = Object.keys(result).length; + expect(countOfGeometries).toEqual(2); + }); + + it('groups items by same geometry', () => { + const result = groupByLocationGenericX( + groupedTimeseriesChartData, + groupedTimeseriesParams, + groupedTimeseriesQueryData, + ); + const allGeom1 = result[geom1].length === 2; + const allGeom2 = result[geom2].length === 2; + expect(allGeom1 && allGeom2).toBe(true); + }); + }); + + describe('groupByLocation', () => { + it('groups in the correct count of geometries', () => { + const geometryColumn = 'geom'; + const result = groupByLocation(nonTimeSeriesChartData, geometryColumn); + const countOfGeometries = Object.keys(result).length; + expect(countOfGeometries).toEqual(2); + }); + + it('groups items by same geometry', () => { + const geometryColumn = 'geom'; + const result = groupByLocation(nonTimeSeriesChartData, geometryColumn); + const allGeom1 = result[geom1].length === 6; + const allGeom2 = result[geom2].length === 4; + expect(allGeom1 && allGeom2).toBe(true); + }); + }); + + describe('stripGeomFromColnamesAndTypes', () => { + it('strips the geom from colnames with geom column', () => { + const queryData = { + colnames: ['foo', 'geom'], + coltypes: [0, 0], + }; + const result = stripGeomFromColnamesAndTypes(queryData, 'geom'); + expect(result).toEqual({ + colnames: ['foo'], + coltypes: [0], + }); + }); + + it('strips the geom from colnames with grouped columns', () => { + const queryData = { + colnames: ['foo', `bar, ${geom1}`], + coltypes: [0, 0], + }; + const result = stripGeomFromColnamesAndTypes(queryData, 'geom'); + expect(result).toEqual({ + colnames: ['foo', 'bar'], + coltypes: [0, 0], + }); + }); + + it('strips the geom from colnames with grouped columns without geom', () => { + const queryData = { + colnames: ['foo', `bar, baz`], + coltypes: [0, 0], + }; + const result = stripGeomFromColnamesAndTypes(queryData, 'geom'); + expect(result).toEqual({ + colnames: ['foo', 'bar, baz'], + coltypes: [0, 0], + }); + }); + }); + + describe('stripGeomColumnFromLabelMap', () => { + it('strips the geom column from label_map', () => { + const labelMap = { + [`apple, ${geom1}`]: ['apple', geom1], + [`${geom2}, lemon`]: [geom2, 'lemon'], + geom: ['geom'], + }; + const result = stripGeomColumnFromLabelMap(labelMap, 'geom'); + expect(result).toEqual({ + apple: ['apple'], + lemon: ['lemon'], + }); + }); + }); + + describe('getChartConfigs', () => { + let chartTransformer: jest.MockedFunction; + const geomColumn = 'geom'; + const pieChartConfig = { + params: {}, + viz_type: 'pie', + }; + const chartProps: any = { + queriesData: [ + { + data: nonTimeSeriesChartData, + }, + ], + }; + beforeEach(() => { + chartTransformer = jest.fn(); + }); + + it('calls the transformProps function for every location', () => { + getChartConfigs(pieChartConfig, geomColumn, chartProps, chartTransformer); + + expect(chartTransformer).toHaveBeenCalledTimes(2); + }); + it('returns a geojson', () => { + const result = getChartConfigs( + pieChartConfig, + geomColumn, + chartProps, + chartTransformer, + ); + + expect(result).toEqual( + expect.objectContaining({ + type: 'FeatureCollection', + features: expect.arrayContaining([ + expect.objectContaining({ + type: 'Feature', + }), + ]), + }), + ); + }); + it('returns a feature for each location', () => { + const result = getChartConfigs( + pieChartConfig, + geomColumn, + chartProps, + chartTransformer, + ); + expect(result.features).toHaveLength(2); + expect(result.features[0].geometry).toEqual(JSON.parse(geom1)); + expect(result.features[1].geometry).toEqual(JSON.parse(geom2)); + }); + }); + + describe('parseSelectedChart', () => { + it('parses the inline stringified JSON', () => { + const selectedChartObject = { + id: 278, + params: + '{"adhoc_filters":[],"applied_time_extras":{},"datasource":"24__table","viz_type":"pie","time_range":"No filter","groupby":["nuclide"],"metric":{"expressionType":"SIMPLE","column":{"advanced_data_type":null,"certification_details":null,"certified_by":null,"column_name":"nuclide","description":null,"expression":null,"filterable":true,"groupby":true,"id":772,"is_certified":false,"is_dttm":false,"python_date_format":null,"type":"TEXT","type_generic":1,"verbose_name":null,"warning_markdown":null},"aggregate":"COUNT","sqlExpression":null,"isNew":false,"datasourceWarning":false,"hasCustomLabel":false,"label":"COUNT(nuclide)","optionName":"metric_k6d9mt9zujc_7v9szd1i0pl"},"dashboards":[]}', + slice_name: 'pie', + viz_type: 'pie', + }; + + const selectedChartString = JSON.stringify(selectedChartObject); + const result = parseSelectedChart(selectedChartString); + const expectedParams = JSON.parse(selectedChartObject.params); + + expect(result.params).toEqual(expectedParams); + }); + }); +}); diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/tsconfig.json b/superset-frontend/plugins/plugin-chart-cartodiagram/tsconfig.json new file mode 100644 index 0000000000000..019b367ef9e3c --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "declarationDir": "lib", + "outDir": "lib", + "rootDir": "src" + }, + "exclude": [ + "lib", + "test" + ], + "extends": "../../tsconfig.json", + "include": [ + "src/**/*", + "types/**/*", + "../../types/**/*" + ], + "references": [ + { + "path": "../../packages/superset-ui-chart-controls" + }, + { + "path": "../../packages/superset-ui-core" + }, + ] +} diff --git a/superset-frontend/plugins/plugin-chart-cartodiagram/types/external.d.ts b/superset-frontend/plugins/plugin-chart-cartodiagram/types/external.d.ts new file mode 100644 index 0000000000000..4bb0ad129964f --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-cartodiagram/types/external.d.ts @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +declare module '*.png' { + const value: any; + export default value; +} + +declare module '*.gif' { + const value: any; + export default value; +} diff --git a/superset-frontend/plugins/plugin-chart-echarts/package.json b/superset-frontend/plugins/plugin-chart-echarts/package.json index 6c0e5fa63f781..39da8723cd788 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/package.json +++ b/superset-frontend/plugins/plugin-chart-echarts/package.json @@ -25,13 +25,13 @@ ], "dependencies": { "d3-array": "^1.2.0", - "echarts": "^5.4.1", "lodash": "^4.17.21", "moment": "^2.30.1" }, "peerDependencies": { "@superset-ui/chart-controls": "*", "@superset-ui/core": "*", + "echarts": "*", "memoize-one": "*", "react": "^16.13.1" }, diff --git a/superset-frontend/plugins/plugin-chart-table/src/utils/extent.ts b/superset-frontend/plugins/plugin-chart-table/src/utils/extent.ts index 4b326800d2fca..5721a2a5057c1 100644 --- a/superset-frontend/plugins/plugin-chart-table/src/utils/extent.ts +++ b/superset-frontend/plugins/plugin-chart-table/src/utils/extent.ts @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - import { isNil } from 'lodash'; export default function extent( diff --git a/superset-frontend/src/explore/components/controls/LayerConfigsControl/FlatLayerTree.tsx b/superset-frontend/src/explore/components/controls/LayerConfigsControl/FlatLayerTree.tsx new file mode 100644 index 0000000000000..56de1914d482a --- /dev/null +++ b/superset-frontend/src/explore/components/controls/LayerConfigsControl/FlatLayerTree.tsx @@ -0,0 +1,146 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { PlusOutlined } from '@ant-design/icons'; +import { css, styled, t } from '@superset-ui/core'; +import { Button, Tree } from 'antd'; +import { TreeProps } from 'antd/lib/tree'; +import { forwardRef } from 'react'; +import { FlatLayerDataNode, FlatLayerTreeProps, LayerConf } from './types'; +import { handleDrop } from './dragDropUtil'; +import LayerTreeItem from './LayerTreeItem'; + +export const StyledLayerTreeItem = styled(LayerTreeItem)` + ${({ theme }) => css` + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + + padding: unset; + + border: none; + border-radius: ${theme.borderRadius}px; + background-color: ${theme.colors.grayscale.light3}; + font-size: ${theme.typography.sizes.s}px; + font-weight: ${theme.typography.weights.normal}; + + &:hover { + background-color: ${theme.colors.grayscale.light3}; + } + + & .layer-tree-item-close { + border-right: solid; + border-right-width: 1px; + border-right-color: ${theme.colors.grayscale.light2}; + } + + & .layer-tree-item-edit { + border-left: solid; + border-left-width: 1px; + border-left-color: ${theme.colors.grayscale.light2}; + } + + & .layer-tree-item-title { + flex: 1; + padding-left: 4px; + } + + & .layer-tree-item-type { + padding-left: 4px; + font-size: ${theme.typography.sizes.xs}px; + font-family: ${theme.typography.families.monospace}; + } + + & > button { + border: none; + background-color: unset; + color: ${theme.colors.grayscale.light1}; + } + + & > button:hover { + background-color: unset; + color: ${theme.colors.grayscale.light1}; + } + `} +`; + +// forwardRef is needed here in order for emotion and antd tree to work properly +export const FlatLayerTree = forwardRef( + ( + { + layerConfigs, + onAddLayer = () => {}, + onRemoveLayer = () => {}, + onEditLayer = () => {}, + onMoveLayer = () => {}, + draggable, + className, + }, + ref, + ) => { + const layerConfigsToTreeData = ( + configs: LayerConf[], + ): FlatLayerDataNode[] => + configs.map((config, idx) => ({ + layerConf: config, + key: idx, + title: ( + onEditLayer(config, idx)} + onRemoveClick={() => onRemoveLayer(idx)} + /> + ), + selectable: false, + isLeaf: true, + checkable: false, + })); + + const treeDataToLayerConfigs = ( + treeData: FlatLayerDataNode[], + ): LayerConf[] => treeData.map(data => data.layerConf); + + const treeData = layerConfigsToTreeData(layerConfigs); + + const onDrop: TreeProps['onDrop'] = info => { + const data = handleDrop(info, treeData); + const movedLayerConfigs = treeDataToLayerConfigs(data); + onMoveLayer(movedLayerConfigs); + }; + + const addLayerLabel = t('Click to add new layer'); + + return ( +

+ + +
+ ); + }, +); + +export default FlatLayerTree; diff --git a/superset-frontend/src/explore/components/controls/LayerConfigsControl/GeoStylerWrapper.tsx b/superset-frontend/src/explore/components/controls/LayerConfigsControl/GeoStylerWrapper.tsx new file mode 100644 index 0000000000000..b9e3db4d00f93 --- /dev/null +++ b/superset-frontend/src/explore/components/controls/LayerConfigsControl/GeoStylerWrapper.tsx @@ -0,0 +1,38 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * This component is needed to be able to style GeoStyler + * via emotion. Emotion can only be used on a component that + * accepts a className property. + */ +import CardStyle from 'geostyler/dist/Component/CardStyle/CardStyle'; +import { FC } from 'react'; +import { GeoStylerWrapperProps } from './types'; + +export const GeoStylerWrapper: FC = ({ + className, + ...passThroughProps +}) => ( +
+ +
+); + +export default GeoStylerWrapper; diff --git a/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsControl.tsx b/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsControl.tsx new file mode 100644 index 0000000000000..89fa40d3c9091 --- /dev/null +++ b/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsControl.tsx @@ -0,0 +1,193 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { ControlHeader } from '@superset-ui/chart-controls'; +import { css, styled, t } from '@superset-ui/core'; +import { Popover } from 'antd'; +import { FC, useState } from 'react'; +import { EditItem, LayerConf, LayerConfigsControlProps } from './types'; +import LayerConfigsPopoverContent from './LayerConfigsPopoverContent'; +import FlatLayerTree from './FlatLayerTree'; + +export const StyledFlatLayerTree = styled(FlatLayerTree)` + ${({ theme }) => css` + display: flex; + flex-direction: column; + + border: solid; + border-width: 1px; + border-radius: ${theme.borderRadius}px; + border-color: ${theme.colors.grayscale.light2}; + + & .add-layer-btn { + display: flex; + align-items: center; + + margin: 4px; + + color: ${theme.colors.grayscale.light1}; + font-size: ${theme.typography.sizes.s}px; + font-weight: ${theme.typography.weights.normal}; + + &:hover { + background-color: ${theme.colors.grayscale.light4}; + border-color: ${theme.colors.grayscale.light2}; + } + } + + & .ant-tree .ant-tree-treenode { + display: block; + } + + & .ant-tree-list-holder-inner { + display: block !important; + } + + & .ant-tree-node-content-wrapper { + display: block; + } + + & .ant-tree-node-content-wrapper:hover { + background-color: unset; + } + `} +`; + +const getEmptyEditItem = (): EditItem => ({ + idx: NaN, + layerConf: { + type: 'WMS', + version: '1.3.0', + title: '', + url: '', + layersParam: '', + }, +}); + +export const LayerConfigsControl: FC = ({ + value, + onChange = () => {}, + name, + label, + description, + renderTrigger, + hovered, + validationErrors, +}) => { + const [popoverVisible, setPopoverVisible] = useState(false); + const [editItem, setEditItem] = useState(getEmptyEditItem()); + + const onAddClick = () => { + setEditItem(getEmptyEditItem()); + setPopoverVisible(true); + }; + + const onEditClick = (layerConf: LayerConf, idx: number) => { + if (popoverVisible) { + return; + } + setEditItem({ + idx, + layerConf: { ...layerConf }, + }); + setPopoverVisible(true); + }; + + const onRemoveClick = (idx: number) => { + const newValue = value ? [...value] : []; + newValue.splice(idx, 1); + onChange(newValue); + }; + + const onPopoverClose = () => { + setPopoverVisible(false); + }; + + const computeNewValue = (layerConf: LayerConf) => { + const newValue = value ? [...value] : []; + if (!editItem) { + return undefined; + } + if (Number.isNaN(editItem.idx)) { + newValue.unshift(layerConf); + } else if (editItem) { + newValue[editItem.idx] = layerConf; + } + return newValue; + }; + + const onPopoverSave = (layerConf: LayerConf) => { + const newValue = computeNewValue(layerConf); + setPopoverVisible(false); + if (!newValue) { + return; + } + onChange(newValue); + }; + + const onMoveLayer = (newConfigs: LayerConf[]) => { + onChange(newConfigs); + }; + + const popoverTitle = editItem.layerConf.title + ? editItem.layerConf.title + : t('Add Layer'); + const controlHeaderProps = { + name, + label, + description, + renderTrigger, + hovered, + validationErrors, + }; + + return ( +
+ + + } + > + + +
+ ); +}; + +export default LayerConfigsControl; diff --git a/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsPopoverContent.tsx b/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsPopoverContent.tsx new file mode 100644 index 0000000000000..3ab51c5c9441b --- /dev/null +++ b/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsPopoverContent.tsx @@ -0,0 +1,506 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { css, JsonValue, styled, t } from '@superset-ui/core'; +import { Button, Form, Tabs } from 'antd'; +import { mix } from 'polished'; +import { Data as GsData } from 'geostyler-data'; +import { Style as GsStyle } from 'geostyler-style'; +import WfsDataParser, { + RequestParams1_1_0, + RequestParams2_0_0, +} from 'geostyler-wfs-parser'; +import { FC, useEffect, useState } from 'react'; +import { isWfsLayerConf, isWmsLayerConf, isXyzLayerConf } from './typeguards'; +import { + BaseLayerConf, + LayerConf, + LayerConfigsPopoverContentProps, + WfsLayerConf, + WmsLayerConf, + XyzLayerConf, +} from './types'; +import { getServiceVersions, hasAllRequiredWfsParams } from './serviceUtil'; +import { ControlFormItem } from '../ColumnConfigControl/ControlForm'; +import GeoStylerWrapper from './GeoStylerWrapper'; + +// Enum for the different tabs +const LAYER_CONFIG_TABS = { + LAYER: '1', + GEOSTYLER: '2', +}; + +export const StyledButtonContainer = styled.div` + display: flex; + margin: 8px; +`; + +export const StyledCloseButton = styled(Button)` + ${({ theme }) => css` + flex: 1; + margin-right: 4px; + line-height: 1.5715; + border-radius: ${theme.borderRadius}px; + background-color: ${theme.colors.primary.light4}; + color: ${theme.colors.primary.dark1}; + font-size: ${theme.typography.sizes.s}px; + font-weight: ${theme.typography.weights.bold}; + text-transform: uppercase; + min-width: ${theme.gridUnit * 36}; + min-height: ${theme.gridUnit * 8}; + box-shadow: none; + border-width: 0px; + border-style: none; + border-color: transparent; + &:hover { + background-color: ${mix( + 0.1, + theme.colors.primary.base, + theme.colors.primary.light4, + )}; + color: ${theme.colors.primary.dark1}; + } + `} +`; + +export const StyledControlFormItem = styled(ControlFormItem)` + ${({ theme }) => css` + border-radius: ${theme.borderRadius}px; + `} +`; + +export const StyledControlNumberFormItem = styled(ControlFormItem)` + ${({ theme }) => css` + border-radius: ${theme.borderRadius}px; + width: 100%; + `} +`; + +export const StyledGeoStyler = styled(GeoStylerWrapper)` + ${({ theme }) => css` + h2 { + font-weight: ${theme.typography.weights.normal}; + font-size: ${theme.typography.sizes.xl}px; + } + .ant-form-item-control { + flex: unset; + } + `} +`; + +export const StyledSaveButton = styled(Button)` + ${({ theme }) => css` + flex: 1; + margin-left: 4px; + line-height: 1.5715; + border-radius: ${theme.borderRadius}px; + background-color: ${theme.colors.primary.base}; + color: ${theme.colors.grayscale.light5}; + font-size: ${theme.typography.sizes.s}px; + font-weight: ${theme.typography.weights.bold}; + text-transform: uppercase; + min-width: ${theme.gridUnit * 36}; + min-height: ${theme.gridUnit * 8}; + box-shadow: none; + border-width: 0px; + border-style: none; + border-color: transparent; + &:hover { + background-color: ${theme.colors.primary.dark1}; + } + `} +`; + +export const LayerConfigsPopoverContent: FC< + LayerConfigsPopoverContentProps +> = ({ onClose = () => {}, onSave = () => {}, layerConf }) => { + const [currentLayerConf, setCurrentLayerConf] = + useState(layerConf); + const initialWmsVersion = + layerConf.type === 'WMS' ? layerConf.version : undefined; + const [wmsVersion, setWmsVersion] = useState( + initialWmsVersion, + ); + const initialWfsVersion = + layerConf.type === 'WFS' ? layerConf.version : undefined; + const [wfsVersion, setWfsVersion] = useState( + initialWfsVersion, + ); + const [geostylerData, setGeoStylerData] = useState( + undefined, + ); + + const serviceVersions = getServiceVersions(); + + // This is needed to force mounting the form every time + // we get a new layerConf prop. Otherwise the input fields + // will not be updated properly, since ControlFormItem only + // recognises the `value` property once and then handles the + // values in its on state. Remounting creates a new component + // and thereby starts with a fresh state. + const [formKey, setFormKey] = useState(0); + + useEffect(() => { + setCurrentLayerConf({ ...layerConf }); + setFormKey(oldFormKey => oldFormKey + 1); + }, [layerConf]); + + const onFieldValueChange = (value: JsonValue, key: string) => { + setCurrentLayerConf({ + ...currentLayerConf, + [key]: value, + }); + }; + + const onLayerTypeChange = (value: LayerConf['type']) => { + if (value === 'WFS') { + setCurrentLayerConf({ + ...currentLayerConf, + type: value, + version: serviceVersions[value][0], + style: { + name: 'Default Style', + rules: [ + { + name: 'Default Rule', + symbolizers: [ + { + kind: 'Line', + // eslint-disable-next-line theme-colors/no-literal-colors + color: '#000000', + width: 2, + }, + { + kind: 'Mark', + wellKnownName: 'circle', + // eslint-disable-next-line theme-colors/no-literal-colors + color: '#000000', + }, + { + kind: 'Fill', + // eslint-disable-next-line theme-colors/no-literal-colors + color: '#000000', + }, + ], + }, + ], + }, + } as WfsLayerConf); + } else if (value === 'XYZ') { + setCurrentLayerConf({ + ...currentLayerConf, + type: value, + } as XyzLayerConf); + } else { + setCurrentLayerConf({ + ...currentLayerConf, + type: value, + version: serviceVersions[value][0], + } as WmsLayerConf); + } + }; + + const onLayerTitleChange = (fieldValue: string) => { + onFieldValueChange(fieldValue, 'title'); + }; + + const onLayerUrlChange = (fieldValue: string) => { + onFieldValueChange(fieldValue, 'url'); + }; + + const onLayersParamChange = (fieldValue: string) => { + onFieldValueChange(fieldValue, 'layersParam'); + }; + + const onTypeNameChange = (fieldValue: string) => { + onFieldValueChange(fieldValue, 'typeName'); + }; + + const onWmsVersionChange = (fieldValue: string) => { + onFieldValueChange(fieldValue, 'version'); + setWmsVersion(fieldValue); + }; + + const onWfsVersionChange = (fieldValue: string) => { + onFieldValueChange(fieldValue, 'version'); + setWfsVersion(fieldValue); + }; + + const onMaxFeaturesChange = (fieldValue: number) => { + onFieldValueChange(fieldValue, 'maxFeatures'); + }; + + const onStyleChange = (fieldValue: GsStyle) => { + onFieldValueChange(fieldValue, 'style'); + }; + + const onAttributionChange = (fieldValue: string) => { + onFieldValueChange(fieldValue, 'attribution'); + }; + + const onCloseClick = () => { + onClose(); + }; + + const onSaveClick = () => { + const baseConfs: BaseLayerConf = { + title: currentLayerConf.title, + url: currentLayerConf.url, + type: currentLayerConf.type, + attribution: currentLayerConf.attribution, + }; + + let conf: LayerConf; + if (isWmsLayerConf(currentLayerConf)) { + conf = { + ...baseConfs, + version: currentLayerConf.version, + type: currentLayerConf.type, + layersParam: currentLayerConf.layersParam, + }; + } else if (isXyzLayerConf(currentLayerConf)) { + conf = { + ...baseConfs, + type: currentLayerConf.type, + }; + } else { + conf = { + ...baseConfs, + type: currentLayerConf.type, + version: currentLayerConf.version, + typeName: currentLayerConf.typeName, + maxFeatures: currentLayerConf.maxFeatures, + style: currentLayerConf.style, + }; + } + + onSave(conf); + }; + + useEffect(() => { + if ( + !isWfsLayerConf(currentLayerConf) || + !hasAllRequiredWfsParams(currentLayerConf) + ) { + setGeoStylerData(undefined); + return undefined; + } + + const readWfsData = async (conf: WfsLayerConf) => { + const wfsParser = new WfsDataParser(); + try { + let requestParams: RequestParams1_1_0 | RequestParams2_0_0 = {} as + | RequestParams1_1_0 + | RequestParams2_0_0; + if (conf.version.startsWith('1.')) { + requestParams = { + version: conf.version as RequestParams1_1_0['version'], + maxFeatures: conf.maxFeatures, + typeName: conf.typeName, + }; + } + if (conf.version.startsWith('2.')) { + requestParams = { + version: conf.version as RequestParams2_0_0['version'], + count: conf.maxFeatures, + typeNames: conf.typeName, + }; + } + + const gsData = await wfsParser.readData({ + url: conf.url, + requestParams, + }); + setGeoStylerData(gsData); + } catch { + console.warn('Could not read geostyler data'); + setGeoStylerData(undefined); + } + }; + + // debounce function + const timer = setTimeout(() => readWfsData(currentLayerConf), 500); + + return () => { + clearTimeout(timer); + }; + }, [currentLayerConf]); + + const layerTabLabel = t('Layer'); + const styleTabLabel = t('Style'); + const layerTypeLabel = t('Layer type'); + const layerTypeDescription = t('The type of the layer'); + const serviceVersionLabel = t('Service version'); + const serviceVersionDescription = t('The version of the service'); + const layersParamLabel = t('Layer Name'); + const layersParamDescription = t( + 'The name of the layer as described in GetCapabilities', + ); + const layersParamPlaceholder = t('Layer Name'); + const layerTitleLabel = t('Layer title'); + const layerTitleDescription = t('The visible title of the layer'); + const layerTitlePlaceholder = t('Insert Layer title'); + const layerUrlLabel = t('Layer URL'); + const layerUrlDescription = t('The service url of the layer'); + const layerUrlPlaceholder = t('Insert Layer URL'); + const maxFeaturesLabel = t('Max. features'); + const maxFeaturesDescription = t( + 'Maximum number of features to fetch from service', + ); + const maxFeaturesPlaceholder = t('10000'); + const attributionLabel = t('Attribution'); + const attributionDescription = t('The layer attribution'); + const attributionPlaceholder = t('© Layer attribution'); + + const wmsVersionOptions: { value: any; label: string }[] = + serviceVersions.WMS.map(version => ({ value: version, label: version })); + const wfsVersionOptions: { value: any; label: string }[] = + serviceVersions.WFS.map(version => ({ value: version, label: version })); + + return ( +
+
+ + + + + {isWmsLayerConf(currentLayerConf) && ( + + )} + {isWfsLayerConf(currentLayerConf) && ( + + )} + {isWmsLayerConf(currentLayerConf) && ( + + )} + {isWfsLayerConf(currentLayerConf) && ( + + )} + + {isWfsLayerConf(currentLayerConf) && ( + + )} + + + + {isWfsLayerConf(currentLayerConf) && ( + + )} + + + + + {t('Close')} + + + {t('Save')} + + +
+
+ ); +}; + +export default LayerConfigsPopoverContent; diff --git a/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerTreeItem.tsx b/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerTreeItem.tsx new file mode 100644 index 0000000000000..a06b317813bb9 --- /dev/null +++ b/superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerTreeItem.tsx @@ -0,0 +1,72 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { CloseOutlined, RightOutlined } from '@ant-design/icons'; +import { Button, Tag } from 'antd'; +import { FC } from 'react'; +import { LayerTreeItemProps } from './types'; + +export const LayerTreeItem: FC = ({ + layerConf, + onEditClick = () => {}, + onRemoveClick = () => {}, + className, +}) => { + const onCloseTag = () => { + onRemoveClick(); + }; + + const onEditTag = () => { + onEditClick(); + }; + + return ( + +