@defra/interactive-map 0.0.40-alpha → 0.0.41-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/index.css +1 -1
- package/dist/esm/im-core.js +1 -1
- package/dist/esm/im-shell.js +1 -1
- package/dist/umd/im-core.js +1 -1
- package/dist/umd/index.js +1 -1
- package/docs/api/control-definition.md +9 -1
- package/docs/api/slots.md +26 -5
- package/docs/assets/images/slot-map.svg +61 -262
- package/docs/examples/draw-tools.mdx +3 -3
- package/docs/plugins/draw.md +79 -16
- package/docs/plugins/search.md +1 -1
- package/govuk-prototype-kit.config.json +2 -0
- package/jest.setup.js +5 -0
- package/package.json +9 -1
- package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ol/dist/esm/im-draw-ol-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/umd/im-map-styles-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/umd/index.js +1 -1
- package/plugins/datasets/dist/css/index.css +1 -1
- package/plugins/datasets/dist/esm/esriLayerAdapter.js +1 -1
- package/plugins/datasets/dist/esm/im-datasets-ml-adapter.js +1 -1
- package/plugins/datasets/dist/esm/im-datasets-plugin.js +1 -1
- package/plugins/datasets/dist/umd/im-datasets-esri-adapter.js +1 -1
- package/plugins/datasets/dist/umd/im-datasets-ml-adapter.js +1 -1
- package/plugins/datasets/dist/umd/im-datasets-plugin.js +1 -1
- package/plugins/datasets/dist/umd/index.js +1 -1
- package/plugins/datasets/src/adapters/esri/esriLayerAdapter.test.js +175 -0
- package/plugins/datasets/src/adapters/esri/registry/esriDataset.test.js +55 -0
- package/plugins/datasets/src/adapters/loadLayerAdapter.test.js +61 -0
- package/plugins/datasets/src/adapters/maplibre/maplibreLayerAdapter.test.js +14 -0
- package/plugins/datasets/src/api/setOpacity.test.js +9 -0
- package/plugins/datasets/src/components/LayersMenu/LayersMenu.jsx +10 -25
- package/plugins/datasets/src/components/LayersMenu/LayersMenu.test.jsx +0 -42
- package/plugins/datasets/src/datasets.scss +0 -1
- package/plugins/datasets/src/fetch/createDynamicSource.js +135 -129
- package/plugins/datasets/src/fetch/createDynamicSource.test.js +318 -0
- package/plugins/datasets/src/fetch/fetchGeoJSON.test.js +83 -0
- package/plugins/datasets/src/index.test.js +36 -0
- package/plugins/datasets/src/initialise/DatasetsInit.jsx +17 -7
- package/plugins/datasets/src/initialise/DatasetsInit.test.jsx +262 -0
- package/plugins/datasets/src/initialise/initialiseDatasets.js +16 -4
- package/plugins/datasets/src/initialise/initialiseDatasets.test.js +42 -0
- package/plugins/datasets/src/manifest.js +0 -38
- package/plugins/datasets/src/manifest.test.js +49 -0
- package/plugins/datasets/src/reducers/datasetsToMenu.test.js +54 -1
- package/plugins/datasets/src/reducers/pluginState.js +3 -16
- package/plugins/datasets/src/reducers/pluginState.test.js +23 -0
- package/plugins/datasets/src/registry/dataset.js +13 -1
- package/plugins/datasets/src/registry/dataset.test.js +61 -0
- package/plugins/datasets/src/registry/datasetRegistry.js +12 -6
- package/plugins/datasets/src/registry/datasetRegistry.test.js +16 -4
- package/plugins/datasets/src/registry/isVisibleWhen.js +6 -3
- package/plugins/datasets/src/registry/isVisibleWhen.test.js +11 -1
- package/plugins/datasets/src/utils/bbox.test.js +125 -0
- package/plugins/draw/dist/esm/im-draw-ml-adapter.js +1 -1
- package/plugins/draw/dist/esm/im-draw-ol-adapter.js +1 -1
- package/plugins/draw/dist/esm/im-draw-plugin.js +1 -1
- package/plugins/draw/dist/esm/index.js +1 -1
- package/plugins/draw/dist/umd/im-draw-ml-adapter.js +2 -1
- package/plugins/draw/dist/umd/im-draw-ml-adapter.js.LICENSE.txt +1 -0
- package/plugins/draw/dist/umd/im-draw-ol-adapter.js +1 -1
- package/plugins/draw/dist/umd/im-draw-plugin.js +1 -1
- package/plugins/draw/dist/umd/index.js +1 -1
- package/plugins/draw/src/DrawInit.jsx +10 -2
- package/plugins/draw/src/DrawInit.test.jsx +51 -10
- package/plugins/draw/src/adapters/maplibre/MaplibreDrawAdapter.js +91 -11
- package/plugins/draw/src/adapters/maplibre/MaplibreDrawAdapter.test.js +246 -4
- package/plugins/draw/src/adapters/maplibre/mapboxDraw.js +109 -14
- package/plugins/draw/src/adapters/maplibre/mapboxDraw.test.js +174 -11
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/clickHandlers.test.js +12 -0
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/lifecycle.js +9 -1
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/lifecycle.test.js +24 -3
- package/plugins/draw/src/adapters/maplibre/modes/drawPointMode.js +194 -0
- package/plugins/draw/src/adapters/maplibre/modes/drawPointMode.test.js +457 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/__helpers__/harness.js +102 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/keyboardHandlers.js +82 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/keyboardHandlers.test.js +83 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/pointOperations.js +55 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/pointOperations.test.js +62 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/pointerHandlers.js +138 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/pointerHandlers.test.js +197 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/touchHandlers.js +92 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/touchHandlers.test.js +101 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/undoHandlers.js +46 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/undoHandlers.test.js +42 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode.js +151 -0
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode.test.js +156 -0
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/keyboardHandlers.js +4 -27
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/keyboardHandlers.test.js +24 -39
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/pointerHandlers.js +4 -5
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/touchHandlers.js +20 -23
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/touchHandlers.test.js +25 -5
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/undoHandlers.js +6 -36
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/undoHandlers.test.js +7 -49
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexOperations.js +3 -53
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexOperations.test.js +8 -33
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode.js +29 -72
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode.test.js +10 -3
- package/plugins/draw/src/adapters/maplibre/pointSymbolImages.js +158 -0
- package/plugins/draw/src/adapters/maplibre/pointSymbolImages.test.js +314 -0
- package/plugins/draw/src/adapters/maplibre/snap/prototypePatches.js +6 -1
- package/plugins/draw/src/adapters/maplibre/snap/prototypePatches.test.js +21 -0
- package/plugins/draw/src/adapters/maplibre/snap/snapInstance.js +6 -2
- package/plugins/draw/src/adapters/maplibre/snap/snapInstance.test.js +12 -0
- package/plugins/draw/src/adapters/maplibre/styles.js +38 -11
- package/plugins/draw/src/adapters/maplibre/styles.test.js +39 -0
- package/plugins/draw/src/adapters/maplibre/utils/editModeEvents.js +79 -0
- package/plugins/draw/src/adapters/maplibre/utils/editModeEvents.test.js +135 -0
- package/plugins/draw/src/adapters/maplibre/utils/geometryValidation.js +42 -0
- package/plugins/draw/src/adapters/maplibre/utils/geometryValidation.test.js +85 -0
- package/plugins/draw/src/adapters/maplibre/utils/keyboardShortcuts.js +34 -0
- package/plugins/draw/src/adapters/maplibre/utils/keyboardShortcuts.test.js +78 -0
- package/plugins/draw/src/adapters/maplibre/utils/snapHelpers.js +16 -3
- package/plugins/draw/src/adapters/maplibre/utils/snapHelpers.test.js +21 -3
- package/plugins/draw/src/adapters/maplibre/utils/snapMovement.js +59 -0
- package/plugins/draw/src/adapters/maplibre/utils/snapMovement.test.js +73 -0
- package/plugins/draw/src/adapters/maplibre/utils/touchDragMath.js +33 -0
- package/plugins/draw/src/adapters/maplibre/utils/touchDragMath.test.js +70 -0
- package/plugins/draw/src/adapters/openlayers/OLDrawAdapter.js +27 -2
- package/plugins/draw/src/adapters/openlayers/OLDrawAdapter.test.js +93 -0
- package/plugins/draw/src/adapters/openlayers/__helpers__/harness.js +9 -0
- package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.js +19 -1
- package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.test.js +34 -1
- package/plugins/draw/src/adapters/openlayers/core/styles.js +73 -1
- package/plugins/draw/src/adapters/openlayers/core/styles.test.js +122 -3
- package/plugins/draw/src/adapters/openlayers/draw/DrawMode.test.js +12 -0
- package/plugins/draw/src/adapters/openlayers/draw/drawInput.js +8 -2
- package/plugins/draw/src/adapters/openlayers/edit/EditMode.test.js +31 -0
- package/plugins/draw/src/adapters/openlayers/edit/keyboardHandler.js +9 -5
- package/plugins/draw/src/adapters/openlayers/edit/keyboardHandler.test.js +33 -0
- package/plugins/draw/src/adapters/openlayers/edit/modifyInteraction.js +5 -3
- package/plugins/draw/src/adapters/openlayers/edit/modifyInteraction.test.js +11 -0
- package/plugins/draw/src/adapters/openlayers/edit/nudge.js +10 -3
- package/plugins/draw/src/adapters/openlayers/edit/nudge.test.js +24 -1
- package/plugins/draw/src/adapters/openlayers/edit/touchHandler.js +18 -13
- package/plugins/draw/src/adapters/openlayers/edit/touchHandler.test.js +46 -1
- package/plugins/draw/src/adapters/openlayers/olDraw.js +11 -4
- package/plugins/draw/src/adapters/openlayers/olDraw.test.js +48 -6
- package/plugins/draw/src/adapters/openlayers/point/drawPointMode.js +156 -0
- package/plugins/draw/src/adapters/openlayers/point/drawPointMode.test.js +246 -0
- package/plugins/draw/src/adapters/openlayers/point/editPointMode.js +267 -0
- package/plugins/draw/src/adapters/openlayers/point/editPointMode.test.js +327 -0
- package/plugins/draw/src/adapters/openlayers/point/pointDragInteraction.js +71 -0
- package/plugins/draw/src/adapters/openlayers/point/pointOps.js +34 -0
- package/plugins/draw/src/adapters/openlayers/point/pointOps.test.js +32 -0
- package/plugins/draw/src/adapters/openlayers/point/pointSelectionState.js +82 -0
- package/plugins/draw/src/adapters/openlayers/point/pointSelectionState.test.js +107 -0
- package/plugins/draw/src/adapters/openlayers/point/pointSymbolImages.js +83 -0
- package/plugins/draw/src/adapters/openlayers/point/pointSymbolImages.test.js +214 -0
- package/plugins/draw/src/adapters/openlayers/snap/snapIndicator.js +3 -1
- package/plugins/draw/src/adapters/openlayers/snap/snapInteraction.js +6 -9
- package/plugins/draw/src/adapters/openlayers/snap/snapInteraction.test.js +15 -4
- package/plugins/draw/src/adapters/openlayers/utils/olCoords.js +1 -1
- package/plugins/draw/src/api/addFeature.js +16 -1
- package/plugins/draw/src/api/addFeature.test.js +62 -5
- package/plugins/draw/src/api/editFeature.js +7 -4
- package/plugins/draw/src/api/editFeature.test.js +16 -0
- package/plugins/draw/src/api/newPoint.js +42 -0
- package/plugins/draw/src/api/newPoint.test.js +117 -0
- package/plugins/draw/src/api/setStyle.js +43 -0
- package/plugins/draw/src/api/setStyle.test.js +75 -0
- package/plugins/draw/src/events.js +17 -10
- package/plugins/draw/src/events.test.js +14 -0
- package/plugins/draw/src/manifest.js +18 -6
- package/plugins/draw/src/manifest.test.js +32 -1
- package/plugins/draw/src/reducer.test.js +7 -0
- package/plugins/draw/src/utils/stripInternalProperties.js +19 -0
- package/plugins/draw/src/utils/stripInternalProperties.test.js +50 -0
- package/plugins/draw/src/utils/symbolKeys.js +5 -0
- package/plugins/draw/src/validation/liveDrawChecks.test.js +54 -0
- package/plugins/draw/src/validation/liveStroke.test.js +64 -1
- package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/index.js +1 -1
- package/plugins/interact/src/hooks/useHighlightSync.js +33 -12
- package/plugins/interact/src/hooks/useHighlightSync.test.js +96 -25
- package/plugins/interact/src/utils/featureQueries.js +18 -0
- package/plugins/interact/src/utils/featureQueries.test.js +15 -0
- package/plugins/interact/src/utils/spatial.js +9 -3
- package/plugins/interact/src/utils/spatial.test.js +12 -1
- package/plugins/map-key/dist/css/index.css +62 -0
- package/plugins/map-key/dist/esm/im-map-key-plugin.js +1 -0
- package/plugins/map-key/dist/esm/index.js +1 -0
- package/plugins/map-key/dist/umd/im-map-key-plugin.js +2 -0
- package/plugins/map-key/dist/umd/im-map-key-plugin.js.LICENSE.txt +1 -0
- package/plugins/map-key/dist/umd/index.js +2 -0
- package/plugins/map-key/dist/umd/index.js.LICENSE.txt +1 -0
- package/plugins/map-key/package.json +28 -0
- package/plugins/map-key/src/components/Key/EmptyKey.jsx +7 -0
- package/plugins/{datasets → map-key}/src/components/Key/EmptyKey.test.jsx +2 -2
- package/plugins/map-key/src/components/Key/Key.jsx +41 -0
- package/plugins/{datasets → map-key}/src/components/Key/Key.module.scss +15 -14
- package/plugins/map-key/src/components/Key/Key.test.jsx +73 -0
- package/plugins/map-key/src/components/Key/KeyGroupItem.jsx +16 -0
- package/plugins/map-key/src/components/Key/KeyGroupItem.test.jsx +53 -0
- package/plugins/map-key/src/components/Key/KeyItem.jsx +29 -0
- package/plugins/map-key/src/components/Key/KeyItem.test.jsx +67 -0
- package/plugins/map-key/src/components/Key/KeySvg.jsx +42 -0
- package/plugins/{datasets → map-key}/src/components/Key/KeySvg.test.jsx +14 -12
- package/plugins/map-key/src/components/Key/KeySvgLine.jsx +28 -0
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgLine.test.jsx +1 -1
- package/plugins/map-key/src/components/Key/KeySvgPattern.jsx +23 -0
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgPattern.test.jsx +2 -2
- package/plugins/map-key/src/components/Key/KeySvgRect.jsx +33 -0
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgRect.test.jsx +1 -1
- package/plugins/map-key/src/components/Key/KeySvgSymbol.jsx +27 -0
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgSymbol.test.jsx +5 -6
- package/plugins/map-key/src/components/Key/MapKey.jsx +50 -0
- package/plugins/map-key/src/components/Key/MapKey.test.jsx +130 -0
- package/plugins/{datasets → map-key}/src/components/Key/svgProperties.js +2 -2
- package/plugins/{datasets → map-key}/src/components/Key/svgProperties.test.js +2 -2
- package/plugins/map-key/src/index.js +13 -0
- package/plugins/map-key/src/index.test.js +31 -0
- package/plugins/map-key/src/initialise/MapKeyInit.jsx +15 -0
- package/plugins/map-key/src/initialise/MapKeyInit.test.jsx +39 -0
- package/plugins/map-key/src/manifest.js +30 -0
- package/plugins/map-key/src/manifest.test.js +63 -0
- package/plugins/map-key/src/mapKey.scss +4 -0
- package/plugins/map-key/src/registry/getDatasetRegistry.js +6 -0
- package/plugins/map-key/src/registry/getDatasetRegistry.test.js +23 -0
- package/plugins/map-key/src/registry/index.js +3 -0
- package/plugins/map-key/src/registry/index.test.js +15 -0
- package/plugins/menu/dist/css/index.css +80 -0
- package/plugins/menu/dist/esm/im-menu-plugin.js +1 -0
- package/plugins/menu/dist/esm/index.js +1 -0
- package/plugins/menu/dist/umd/im-menu-plugin.js +1 -0
- package/plugins/menu/dist/umd/index.js +2 -0
- package/plugins/menu/dist/umd/index.js.LICENSE.txt +1 -0
- package/plugins/menu/package.json +28 -0
- package/plugins/menu/src/components/Menu/CheckboxGroupWrapper.jsx +21 -0
- package/plugins/menu/src/components/Menu/GroupLegend.jsx +17 -0
- package/plugins/menu/src/components/Menu/GroupLegend.test.jsx +68 -0
- package/plugins/menu/src/components/Menu/Menu.jsx +19 -0
- package/plugins/menu/src/components/Menu/Menu.module.scss +90 -0
- package/plugins/menu/src/components/Menu/Menu.test.jsx +161 -0
- package/plugins/menu/src/components/Menu/MenuCheckbox.jsx +35 -0
- package/plugins/menu/src/components/Menu/MenuCheckbox.test.jsx +93 -0
- package/plugins/menu/src/components/Menu/MenuGroup.jsx +11 -0
- package/plugins/{datasets/src/components/LayersMenu/LayersMenuRadio.jsx → menu/src/components/Menu/MenuRadio.jsx} +6 -4
- package/plugins/{datasets/src/components/LayersMenu/LayersMenuRadio.test.jsx → menu/src/components/Menu/MenuRadio.test.jsx} +18 -18
- package/plugins/menu/src/components/Menu/RadioGroupWrapper.jsx +32 -0
- package/plugins/{datasets/src/components/LayersMenu/LayersRadioGroupWrapper.test.jsx → menu/src/components/Menu/RadioGroupWrapper.test.jsx} +21 -21
- package/plugins/menu/src/components/Menu/useIdPrefix.jsx +4 -0
- package/plugins/menu/src/index.js +13 -0
- package/plugins/menu/src/index.test.js +31 -0
- package/plugins/menu/src/initialise/MenuInit.jsx +24 -0
- package/plugins/menu/src/initialise/MenuInit.test.jsx +50 -0
- package/plugins/menu/src/initialise/createMenu.js +10 -0
- package/plugins/menu/src/initialise/createMenu.test.js +37 -0
- package/plugins/menu/src/manifest.js +35 -0
- package/plugins/menu/src/manifest.test.js +63 -0
- package/plugins/menu/src/menu.scss +4 -0
- package/plugins/menu/src/reducers/menuStateReducer.test.js +38 -0
- package/plugins/menu/src/reducers/pluginState.js +35 -0
- package/plugins/menu/src/reducers/pluginState.test.js +57 -0
- package/plugins/menu/src/registry/getDatasetRegistry.js +9 -0
- package/plugins/menu/src/registry/getDatasetRegistry.test.js +23 -0
- package/plugins/menu/src/registry/index.js +3 -0
- package/plugins/menu/src/registry/index.test.js +15 -0
- package/plugins/menu/src/registry/isVisibleWhen.js +43 -0
- package/plugins/menu/src/registry/isVisibleWhen.test.js +48 -0
- package/plugins/search/dist/css/index.css +1 -1
- package/plugins/search/dist/esm/im-search-plugin.js +1 -1
- package/plugins/search/dist/esm/index.js +1 -1
- package/plugins/search/dist/umd/im-search-plugin.js +1 -1
- package/plugins/search/dist/umd/index.js +1 -1
- package/plugins/search/src/Search.jsx +2 -3
- package/plugins/search/src/components/Form/Form.module.scss +9 -20
- package/plugins/search/src/index.js +0 -1
- package/plugins/search/src/index.test.js +2 -4
- package/plugins/search/src/manifest.js +1 -1
- package/plugins/search/src/search.scss +17 -16
- package/providers/beta/openlayers/dist/esm/im-openlayers-provider.js +1 -1
- package/providers/beta/openlayers/dist/umd/im-openlayers-provider.js +1 -1
- package/providers/beta/openlayers/dist/umd/index.js +1 -1
- package/providers/beta/openlayers/src/openlayersProvider.js +4 -1
- package/providers/beta/openlayers/src/openlayersProvider.test.js +18 -0
- package/providers/beta/openlayers/src/utils/highlightFeatures.js +52 -5
- package/providers/beta/openlayers/src/utils/highlightFeatures.test.js +176 -0
- package/providers/beta/openlayers/src/utils/symbolImages.js +40 -0
- package/providers/beta/openlayers/src/utils/symbolImages.test.js +58 -0
- package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/index.js +1 -1
- package/providers/maplibre/src/utils/drawLayerBuckets.js +14 -0
- package/providers/maplibre/src/utils/drawLayerBuckets.test.js +18 -0
- package/providers/maplibre/src/utils/highlightFeatures.js +80 -55
- package/providers/maplibre/src/utils/highlightFeatures.test.js +156 -17
- package/providers/maplibre/src/utils/hoverCursor.js +30 -14
- package/providers/maplibre/src/utils/hoverCursor.test.js +35 -0
- package/providers/maplibre/src/utils/patternImages.js +1 -1
- package/providers/maplibre/src/utils/symbolImages.js +41 -3
- package/providers/maplibre/src/utils/symbolImages.test.js +40 -6
- package/rollup.esm.mjs +11 -1
- package/src/App/components/Actions/Actions.test.jsx +47 -0
- package/src/App/components/Hints/Hints.test.jsx +13 -0
- package/src/App/components/MoveControls/MoveControls.module.scss +41 -10
- package/src/App/components/Panel/Panel.jsx +18 -3
- package/src/App/components/Panel/Panel.module.scss +18 -8
- package/src/App/components/Panel/Panel.test.jsx +34 -0
- package/src/App/components/Tooltip/Tooltip.test.jsx +12 -14
- package/src/App/hooks/useFeatureItems.js +16 -7
- package/src/App/hooks/useFeatureItems.test.js +57 -0
- package/src/App/hooks/useLayoutMeasurements.js +95 -84
- package/src/App/hooks/useLayoutMeasurements.test.js +61 -1
- package/src/App/layout/Layout.jsx +9 -10
- package/src/App/layout/Layout.test.jsx +2 -0
- package/src/App/layout/layout.module.scss +31 -17
- package/src/App/registry/pluginRegistry.js +1 -1
- package/src/App/registry/pluginRegistry.test.js +12 -0
- package/src/App/renderer/HtmlElementHost.jsx +18 -5
- package/src/App/renderer/HtmlElementHost.test.jsx +54 -0
- package/src/App/renderer/mapButtons.js +28 -12
- package/src/App/renderer/mapButtons.test.js +17 -4
- package/src/App/renderer/mapControls.js +3 -1
- package/src/App/renderer/mapControls.test.js +16 -0
- package/src/App/renderer/mapPanels.js +44 -9
- package/src/App/renderer/mapPanels.test.js +51 -2
- package/src/App/renderer/orderItems.js +28 -0
- package/src/App/renderer/orderItems.test.js +50 -0
- package/src/App/renderer/slotAggregator.js +2 -18
- package/src/App/renderer/slotHelpers.js +3 -1
- package/src/App/renderer/slotHelpers.test.js +5 -0
- package/src/App/renderer/slots.js +3 -0
- package/src/App/store/AppProvider.jsx +1 -0
- package/src/App/store/appDispatchMiddleware.js +1 -1
- package/src/App/store/appDispatchMiddleware.test.js +8 -0
- package/src/config/events.js +2 -0
- package/src/scss/settings/_colors.scss +1 -0
- package/src/scss/settings/_dimensions.scss +2 -3
- package/src/scss/settings/_transition.scss +1 -1
- package/src/services/eventBus.js +44 -0
- package/src/services/eventBus.test.js +83 -0
- package/src/services/symbolRegistry.js +1 -1
- package/src/types.js +11 -1
- package/webpack.umd.mjs +2 -0
- package/plugins/datasets/src/components/Key/EmptyKey.jsx +0 -7
- package/plugins/datasets/src/components/Key/Key.jsx +0 -50
- package/plugins/datasets/src/components/Key/KeyGroupItem.jsx +0 -18
- package/plugins/datasets/src/components/Key/KeyItem.jsx +0 -23
- package/plugins/datasets/src/components/Key/KeySvg.jsx +0 -22
- package/plugins/datasets/src/components/Key/KeySvgLine.jsx +0 -19
- package/plugins/datasets/src/components/Key/KeySvgPattern.jsx +0 -13
- package/plugins/datasets/src/components/Key/KeySvgRect.jsx +0 -22
- package/plugins/datasets/src/components/Key/KeySvgSymbol.jsx +0 -16
- package/plugins/datasets/src/components/LayersMenu/LayersRadioGroupWrapper.jsx +0 -41
- /package/plugins/{datasets → menu}/src/reducers/menuStateReducer.js +0 -0
- /package/{providers/maplibre/src → src}/utils/rasteriseToImageData.js +0 -0
- /package/{providers/maplibre/src → src}/utils/rasteriseToImageData.test.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[936],{894(e,t,r){r.r(t),r.d(t,{manifest:()=>Xe});var n=r(738),o={APP_ADD_MARKER:"app:addmarker",APP_UPDATE_MARKER:"app:updatemarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_SHOW_HINT:"app:showhint",APP_DISMISS_HINT:"app:dismisshint",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_FULLSCREEN_CHANGE:"app:fullscreenchange",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_FEATURES:"map:setfeatures",MAP_SET_ACTIVE_FEATURE:"map:setactivefeature",MAP_SELECT_FEATURE:"map:selectfeature",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"};function i(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function a(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!s(e[0])||!s(e[1]))throw new Error("coordinates must contain numbers");return i({type:"Point",coordinates:e},t,r)}function u(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return i({type:"LineString",coordinates:e},t,r)}function l(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function c(e,t,r={}){return i({type:"MultiLineString",coordinates:e},t,r)}function s(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;const f=11102230246251565e-32,p=134217729,d=(3+8*f)*f;function y(e,t,r,n,o){let i,a,u,l,c=t[0],s=n[0],f=0,p=0;s>c==s>-c?(i=c,c=t[++f]):(i=s,s=n[++p]);let d=0;if(f<e&&p<r)for(s>c==s>-c?(a=c+i,u=i-(a-c),c=t[++f]):(a=s+i,u=i-(a-s),s=n[++p]),i=a,0!==u&&(o[d++]=u);f<e&&p<r;)s>c==s>-c?(a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f]):(a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p]),i=a,0!==u&&(o[d++]=u);for(;f<e;)a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f],i=a,0!==u&&(o[d++]=u);for(;p<r;)a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p],i=a,0!==u&&(o[d++]=u);return 0===i&&0!==d||(o[d++]=i),d}function m(e){return new Float64Array(e)}const v=m(4),b=m(8),g=m(12),E=m(16),h=m(4);function S(e,t,r,n,o,i){const a=(t-i)*(r-o),u=(e-o)*(n-i),l=a-u,c=Math.abs(a+u);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let u,l,c,s,f,m,S,P,A,O,T,w,_,M,I,k,L,C;const R=e-o,j=r-o,F=t-i,D=n-i;M=R*D,m=p*R,S=m-(m-R),P=R-S,m=p*D,A=m-(m-D),O=D-A,I=P*O-(M-S*A-P*A-S*O),k=F*j,m=p*F,S=m-(m-F),P=F-S,m=p*j,A=m-(m-j),O=j-A,L=P*O-(k-S*A-P*A-S*O),T=I-L,f=I-T,v[0]=I-(T+f)+(f-L),w=M+T,f=w-M,_=M-(w-f)+(T-f),T=_-k,f=_-T,v[1]=_-(T+f)+(f-k),C=w+T,f=C-w,v[2]=w-(C-f)+(T-f),v[3]=C;let x=function(e,t){let r=t[0];for(let e=1;e<4;e++)r+=t[e];return r}(0,v),B=22204460492503146e-32*a;if(x>=B||-x>=B)return x;if(f=e-R,u=e-(R+f)+(f-o),f=r-j,c=r-(j+f)+(f-o),f=t-F,l=t-(F+f)+(f-i),f=n-D,s=n-(D+f)+(f-i),0===u&&0===l&&0===c&&0===s)return x;if(B=11093356479670487e-47*a+d*Math.abs(x),x+=R*s+D*u-(F*c+j*l),x>=B||-x>=B)return x;M=u*D,m=p*u,S=m-(m-u),P=u-S,m=p*D,A=m-(m-D),O=D-A,I=P*O-(M-S*A-P*A-S*O),k=l*j,m=p*l,S=m-(m-l),P=l-S,m=p*j,A=m-(m-j),O=j-A,L=P*O-(k-S*A-P*A-S*O),T=I-L,f=I-T,h[0]=I-(T+f)+(f-L),w=M+T,f=w-M,_=M-(w-f)+(T-f),T=_-k,f=_-T,h[1]=_-(T+f)+(f-k),C=w+T,f=C-w,h[2]=w-(C-f)+(T-f),h[3]=C;const G=y(4,v,4,h,b);M=R*s,m=p*R,S=m-(m-R),P=R-S,m=p*s,A=m-(m-s),O=s-A,I=P*O-(M-S*A-P*A-S*O),k=F*c,m=p*F,S=m-(m-F),P=F-S,m=p*c,A=m-(m-c),O=c-A,L=P*O-(k-S*A-P*A-S*O),T=I-L,f=I-T,h[0]=I-(T+f)+(f-L),w=M+T,f=w-M,_=M-(w-f)+(T-f),T=_-k,f=_-T,h[1]=_-(T+f)+(f-k),C=w+T,f=C-w,h[2]=w-(C-f)+(T-f),h[3]=C;const N=y(G,b,4,h,g);M=u*s,m=p*u,S=m-(m-u),P=u-S,m=p*s,A=m-(m-s),O=s-A,I=P*O-(M-S*A-P*A-S*O),k=l*c,m=p*l,S=m-(m-l),P=l-S,m=p*c,A=m-(m-c),O=c-A,L=P*O-(k-S*A-P*A-S*O),T=I-L,f=I-T,h[0]=I-(T+f)+(f-L),w=M+T,f=w-M,_=M-(w-f)+(T-f),T=_-k,f=_-T,h[1]=_-(T+f)+(f-k),C=w+T,f=C-w,h[2]=w-(C-f)+(T-f),h[3]=C;const H=y(N,g,4,h,E);return E[H-1]}(e,t,r,n,o,i,c)}function P(e,t){var r,n,o,i,a,u,l,c,s,f=0,p=e[0],d=e[1],y=t.length;for(r=0;r<y;r++){n=0;var m=t[r],v=m.length-1;if((c=m[0])[0]!==m[v][0]&&c[1]!==m[v][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-p,a=c[1]-d;n<v;n++){if(u=(s=m[n+1])[0]-p,l=s[1]-d,0===a&&0===l){if(u<=0&&i>=0||i<=0&&u>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=S(i,u,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&f++}c=s,a=l,i=u}}return f%2!=0}function A(e){return"Feature"===e.type?e.geometry:e}function O(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=A(t),i=o.type,a=t.bbox;let u=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(u=[u]);let l=!1;for(var c=0;c<u.length;++c){const e=P(n,u[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(8),m(8),m(8),m(4),m(8),m(8),m(8),m(12),m(192),m(192),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(4),m(4),m(4),m(8),m(16),m(16),m(16),m(32),m(32),m(48),m(64),m(1152),m(1152),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(1152),m(1152),m(1152),m(1152),m(1152),m(2304),m(2304),m(3456),m(5760),m(8),m(8),m(8),m(16),m(24),m(48),m(48),m(96),m(192),m(384),m(384),m(384),m(768),m(96),m(96),m(96),m(1152);class T{constructor(e=[],t=w){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function w(e,t){return e<t?-1:e>t?1:0}function _(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function M(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class I{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let k=0,L=0,C=0;function R(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;L+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const u=new I(o,k,L,C),l=new I(i,k,L,C+1);u.otherEvent=l,l.otherEvent=u,_(u,l)>0?(l.isLeftEndpoint=!0,u.isLeftEndpoint=!1):(u.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(u),t.push(l),o=i,C+=1}}k+=1}class j{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function F(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,u=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,s=(c-u)*(o-r)-(l-a)*(i-n);if(0===s)return!1;const f=((l-a)*(n-u)-(c-u)*(r-a))/s,p=((o-r)*(n-u)-(i-n)*(r-a))/s;return f>=0&&f<=1&&p>=0&&p<=1&&[r+f*(o-r),n+f*(i-n)]}function D(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:o=!0}=r;let u=[];"FeatureCollection"===e.type?u=u.concat(e.features):"Feature"===e.type?u.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||u.push(i(e)),"FeatureCollection"===t.type?u=u.concat(t.features):"Feature"===t.type?u.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||u.push(i(t));const c=function(e,t){const r=new T([],_);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)R(r[e],t)}else R(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new T([],M);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new j(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const u=F(e,a);!1!==u&&r.push(u)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)}(l(u),o);let s=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=c;return l(s.map(e=>a(e)))}function x(e,t){!function(e,t){var r,n,o,i,a,u,l,c,s,f,p=0,d="FeatureCollection"===e.type,y="Feature"===e.type,m=d?e.features.length:1;for(r=0;r<m;r++){for(u=d?e.features[r].geometry:y?e.geometry:e,c=d?e.features[r].properties:y?e.properties:{},s=d?e.features[r].bbox:y?e.bbox:void 0,f=d?e.features[r].id:y?e.id:void 0,a=(l=!!u&&"GeometryCollection"===u.type)?u.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?u.geometries[o]:u))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,p,c,s,f))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],p,c,s,f))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,c,s,f))return!1;p++}}(e,function(e,r,n,o,a){var u,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(i(e,n,{bbox:o,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":u="Point";break;case"MultiLineString":u="LineString";break;case"MultiPolygon":u="Polygon"}for(var c=0;c<e.coordinates.length;c++){var s=e.coordinates[c];if(!1===t(i({type:u,coordinates:s},n),r,c))return!1}})}function B(e,t={}){const r=A(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return G(A(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=A(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},o=[];return r.forEach(e=>{o.push(G(e,n))}),l(o)}(r,t);default:throw new Error("invalid poly")}}function G(e,t){return e.length>1?c(e,t):u(e[0],t)}function N(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(U(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function H(e,t,r){for(const r of t.coordinates)if(O(r,e))return!0;return D(t,B(e),{ignoreSelfIntersections:r}).features.length>0}function U(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function V(e){return function(e){if(Array.isArray(e))return K(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return K(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?K(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function W(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return i({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return i({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return u(t.coordinates);case"MultiLineString":return c(t.coordinates);case"Point":return a(t.coordinates);case"MultiPoint":return function(e,t,r={}){return i({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function Y(e,t){return t.some(function(t){return!function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return x(e,e=>{x(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!N(t,e);case"Polygon":return!O(e,t)}break;case"LineString":switch(t.type){case"Point":return!N(e,t);case"LineString":return!function(e,t,r){return D(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!H(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!O(t,e);case"LineString":return!H(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(O(r,t))return!0;for(const r of t.coordinates[0])if(O(r,e))return!0;return D(B(e),B(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n}(W(t),W(e))})}function q(e){if(e.length<2)return!1;if(e.some(function(e){var t;return!(null!==(t=e.geometry)&&void 0!==t&&t.type)}))return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=V(t).map(function(t){return e[t]});Y(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var X=function(e){var t,r={},n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return z(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?z(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;r[o.layerId]=o}}catch(e){n.e(e)}finally{n.f()}return r},$=function(e,t,r){try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}},Z=function(e){var t,r=null===(t=e.geometry)||void 0===t?void 0:t.type;return"Point"===r||"MultiPoint"===r};r(287);new Map;var J=Object.freeze({SIDE:"side",BANNER:"banner",TOP_LEFT:"top-left",TOP_MIDDLE:"top-middle",TOP_RIGHT:"top-right",LEFT_TOP:"left-top",LEFT_BOTTOM:"left-bottom",MIDDLE:"middle",RIGHT_TOP:"right-top",RIGHT_BOTTOM:"right-bottom",BOTTOM_LEFT:"bottom-left",BOTTOM_RIGHT:"bottom-right",DRAWER:"drawer",ACTIONS:"actions",MODAL:"modal"});function Q(e){return Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Q(e)}function ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function te(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ee(Object(r),!0).forEach(function(t){re(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ee(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function re(e,t,r){return(t=function(e){var t=function(e){if("object"!=Q(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Q(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Q(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.freeze({control:[J.BANNER,J.TOP_LEFT,J.TOP_RIGHT,J.MIDDLE,J.RIGHT_TOP,J.RIGHT_BOTTOM,J.BOTTOM_RIGHT,J.DRAWER,J.ACTIONS],panel:[J.SIDE,J.BANNER,J.LEFT_TOP,J.LEFT_BOTTOM,J.MIDDLE,J.RIGHT_TOP,J.RIGHT_BOTTOM,J.DRAWER,J.MODAL],button:[J.TOP_LEFT,J.TOP_MIDDLE,J.TOP_RIGHT,J.LEFT_TOP,J.LEFT_BOTTOM,J.RIGHT_TOP,J.RIGHT_BOTTOM,J.BOTTOM_LEFT,J.BOTTOM_RIGHT,J.ACTIONS]});var ne={slot:"middle",open:!1,dismissible:!0,modal:!0},oe=(te({},ne),te(te({},ne),{},{width:"500px"}),te(te({},ne),{},{width:"500px"}),{small:1,medium:1.5,large:2}),ie=(new Set(["symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"]),function(e){return!(!e.label||e.symbol||e.symbolSvgContent||null!==e.symbol&&null!==e.symbolSvgContent)});function ae(e){return ae="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ae(e)}function ue(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(r),!0).forEach(function(t){ce(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ue(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ce(e,t,r){return(t=function(e){var t=function(e){if("object"!=ae(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ae(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ae(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function se(e){return function(e){if(Array.isArray(e))return pe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||fe(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fe(e,t){if(e){if("string"==typeof e)return pe(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?pe(e,t):void 0}}function pe(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var de=function(e,t,r,n){return{featureId:e,multiSelect:t,layerId:r.layerId,idProperty:r.idProperty,properties:n.properties,geometry:n.geometry}},ye=function(e){var t=e.mapProvider,r=e.layers,o=e.interactionModes,i=e.multiSelect,a=e.dispatch,u=e.markers,l=e.layerConfigMap,c=e.debug,s=e.tolerance,f=e.processFeatureMatch,p=e.processFallback,d=e.scale;return(0,n.useCallback)(function(e){var n=e.point,y=e.coords,m=c?$(t,n,{radius:s}):null;if(m&&function(e,t){var r,n,o=(n=2,function(e){if(Array.isArray(e))return e}(r=e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(r,n)||fe(r,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=o[0],a=o[1];console.groupCollapsed("[interact] click (".concat(i.toFixed(4),", ").concat(a.toFixed(4),") — ").concat(t.length," feature").concat(1!==t.length?"s":"")),t.forEach(function(e){var t,r;console.log({layer:e.layer.id,type:e.layer.type,id:null!==(t=e.id)&&void 0!==t?t:"—",sourceLayer:null!==(r=e.sourceLayer)&&void 0!==r?r:"—",properties:e.properties})}),console.groupEnd()}(y,m),o.includes("selectMarker")){var v=function(e,t,r){var n,o=function(e){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=fe(e))){t&&(e=t);var r=0,n=function(){};return{s:n,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,a=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){a=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(a)throw o}}}}(e.items);try{for(o.s();!(n=o.n()).done;){var i,a=n.value,u=null===(i=e.markerRefs)||void 0===i?void 0:i.get(a.id);if(u&&!ie(a)){var l=u.closest(".im-c-viewport__markers")||u.parentElement,c=l?l.getBoundingClientRect():{left:0,top:0},s=u.getBoundingClientRect(),f=s.left,p=s.top,d=s.right,y=s.bottom,m=t.x*r,v=t.y*r;if(m>=f-c.left&&m<=d-c.left&&v>=p-c.top&&v<=y-c.top)return a.id}}}catch(e){o.e(e)}finally{o.f()}return null}(u,n,d);if(v)return void a({type:"TOGGLE_SELECTED_MARKERS",payload:{markerId:v,multiSelect:i}})}if(o.includes("selectFeature")&&r.length>0){var b=function(e,t){var r=e.filter(function(e){var r;return t[null===(r=e.layer)||void 0===r?void 0:r.id]}),n=r.find(Z);if(n)return{feature:n,config:t[n.layer.id]};var o=r[0];return o?{feature:o,config:t[o.layer.id]}:null}(null!=m?m:$(t,n,{radius:s}),l);if(b)return void f(b)}p({coords:y})},[t,r,o,i,a,u,l,c,s,f,p,d])},me=function(e){var t,r=e.mapState,o=e.pluginState,i=e.services,a=e.mapProvider,u=r.markers,l=r.mapSize,c=o.dispatch,s=o.layers,f=o.interactionModes,p=o.multiSelect,d=o.contiguous,y=o.marker,m=o.tolerance,v=o.selectedFeatures,b=o.selectedMarkers,g=o.deselectOnClickOutside,E=i.eventBus,h=X(s),S=null!==(t=oe[l])&&void 0!==t?t:1,P=(0,n.useCallback)(function(e){var t,r,n,o=e.feature,i=e.config;u.remove("location");var l=null!==(t=null===(r=o.properties)||void 0===r?void 0:r[i.idProperty])&&void 0!==t?t:o.id;if(null!=l){var s=null===(n=a.getFeatureGeometry)||void 0===n?void 0:n.call(a,i.layerId,l,i.idProperty),f=s?le(le({},o),{},{geometry:s}):o;if(d&&p&&function(e){var t,r=e.featureId,n=e.feature,o=e.config,i=e.selectedFeatures,a=e.dispatch,u=e.multiSelect;if(!i.length)return!1;var l=i.findIndex(function(e){return e.featureId===r&&e.layerId===o.layerId});if(-1!==l){if(i.length<3)return!1;var c=function(e){for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++){var o;if(!t.has(n)){var i=se(t).map(function(t){return e[t]});null!==(o=e[n].geometry)&&void 0!==o&&o.type&&Y(e[n],i)&&(t.add(n),r=!0)}}}return t.size===e.length?null:se(t).map(function(t){return e[t]})}(i.filter(function(e,t){return t!==l}));return!!c&&(a({type:"SET_SELECTED_FEATURES",payload:c}),!0)}var s=i.filter(function(e){var t;return null===(t=e.geometry)||void 0===t?void 0:t.type});return!(null===(t=n.geometry)||void 0===t||!t.type||!s.length||Y(n,s)||(a({type:"TOGGLE_SELECTED_FEATURES",payload:le(le({},de(r,u,o,n)),{},{replaceAll:!0})}),0))}({featureId:l,feature:f,config:i,selectedFeatures:v,dispatch:c,multiSelect:p}))return;c({type:"TOGGLE_SELECTED_FEATURES",payload:de(l,p,i,f)})}},[u,c,p,d,v,a]),A=(0,n.useCallback)(function(e){var t=e.coords,r=f.includes("placeMarker");(r||g)&&(c({type:"CLEAR_SELECTED_FEATURES"}),r&&(u.add("location",t,y),E.emit("interact:markerchange",{coords:t})))},[f,c,u,y,E,g]),O=ye({mapProvider:a,layers:s,interactionModes:f,multiSelect:p,dispatch:c,markers:u,layerConfigMap:h,debug:null==o?void 0:o.debug,tolerance:m,processFeatureMatch:P,processFallback:A,scale:S});return function(e,t,r){var o=(0,n.useRef)(null);(0,n.useEffect)(function(){var n=o.current;(null===n||0===n.features.length&&0===n.markers.length)&&0===t.length&&0===r.length||(e.emit("interact:selectionchange",{selectedFeatures:t.map(function(e){var t=e.featureId,r=e.layerId,n=e.idProperty,o=e.properties,i=e.geometry;return{featureId:t,layerId:r,idProperty:n,properties:o,geometryType:null==i?void 0:i.type}}),selectedMarkers:r,contiguous:q(t)}),o.current={features:t,markers:r})},[t,r])}(E,v,b),{handleInteraction:O}};function ve(e){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ve(e)}function be(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ge(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?be(Object(r),!0).forEach(function(t){Ee(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):be(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function Ee(e,t,r){return(t=function(e){var t=function(e){if("object"!=ve(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ve(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ve(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function he(e){return function(e){if(Array.isArray(e))return Ae(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Pe(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Se(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=Pe(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Pe(e,t){if(e){if("string"==typeof e)return Ae(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ae(e,t):void 0}}function Ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var Oe=function(e,t){var r,n;return t?null!==(r=null===(n=e.properties)||void 0===n?void 0:n[t.idProperty])&&void 0!==r?r:e.id:null},Te=function(e){var t=e.closest(".im-c-viewport__markers");if(!t)return!1;var r=t.getBoundingClientRect(),n=e.getBoundingClientRect(),o=n.left,i=n.right,a=n.top,u=n.bottom;return i>r.left&&o<r.right&&u>r.top&&a<r.bottom},we=function(e,t,r){var n,o,i,a=t[null===(n=e.layer)||void 0===n?void 0:n.id];if(null==a||!a.labelProperty)return null;var u=Oe(e,a),l=null==u?null:String(u);return null==l||r.has(l)?null:(r.add(l),{id:l,label:null!==(o=null===(i=e.properties)||void 0===i?void 0:i[a.labelProperty])&&void 0!==o?o:l})};function _e(e){var t=e.mapState,r=e.pluginState,i=e.services,a=e.mapProvider,u=t.markers,l=r.dispatch,c=r.interactionModes,s=r.layers,f=r.multiSelect,p=i.eventBus,d=(0,n.useRef)(null);(function(e){var t=e.markers,r=e.interactionModes,i=e.layers,a=e.mapProvider,u=e.multiSelect,l=e.eventBus;(0,n.useEffect)(function(){var e=function(){var e=[];null!=r&&r.includes("selectMarker")&&e.push.apply(e,he(function(e){var t,r=[],n=Se(e.items);try{for(n.s();!(t=n.n()).done;){var o,i=t.value;if(i.label){var a=null===(o=e.markerRefs)||void 0===o?void 0:o.get(i.id);!ie(i)&&a&&Te(a)&&r.push({id:i.id,label:i.label})}}}catch(e){n.e(e)}finally{n.f()}return r}(t))),null!=r&&r.includes("selectFeature")&&i.length>0&&e.push.apply(e,he(function(e,t){var r,n=[],o=new Set,i=t.map(function(e){return e.layerId}),a=X(t),u=Se(e.getVisibleFeatures(i));try{for(u.s();!(r=u.n()).done;){var l=r.value,c=we(l,a,o);c&&n.push(c)}}catch(e){u.e(e)}finally{u.f()}return n}(a,i))),l.emit(o.MAP_SET_FEATURES,{items:e,multiselectable:u})};return e(),l.on(o.MAP_MOVE_END,e),l.on(o.MAP_DATA_CHANGE,e),function(){l.off(o.MAP_MOVE_END,e),l.off(o.MAP_DATA_CHANGE,e)}},[t,r,i,a,u,l])})({markers:u,interactionModes:c,layers:s,mapProvider:a,multiSelect:f,eventBus:p}),function(e){var t=e.markers,r=e.interactionModes,i=e.layers,a=e.mapProvider,u=e.eventBus,l=e.dispatch,c=e.listboxActiveItemRef;(0,n.useEffect)(function(){var e=function(e){var n=e.id;if(null===n)return c.current=null,void l({type:"SET_LISTBOX_ACTIVE",payload:null});if(t.items.some(function(e){return e.id===n}))return c.current={id:n,isMarker:!0},void l({type:"SET_LISTBOX_ACTIVE",payload:null});if(null!=r&&r.includes("selectFeature")&&i.length>0){var o=i.map(function(e){return e.layerId}),u=X(i),s=function(e,t,r){var n,o=Se(e);try{for(o.s();!(n=o.n()).done;){var i,a=n.value,u=t[null===(i=a.layer)||void 0===i?void 0:i.id],l=Oe(a,u);if(null!=l&&String(l)===String(r))return{feature:a,config:u,rawId:l}}}catch(e){o.e(e)}finally{o.f()}return null}(a.getVisibleFeatures(o),u,n);if(s){var f={featureId:s.rawId,layerId:s.config.layerId,idProperty:s.config.idProperty,geometry:s.feature.geometry};c.current=ge(ge({id:n,isMarker:!1},f),{},{properties:s.feature.properties}),l({type:"SET_LISTBOX_ACTIVE",payload:f})}}};return u.on(o.MAP_SET_ACTIVE_FEATURE,e),function(){u.off(o.MAP_SET_ACTIVE_FEATURE,e)}},[t,r,i,a,u,l,c])}({markers:u,interactionModes:c,layers:s,mapProvider:a,eventBus:p,dispatch:l,listboxActiveItemRef:d}),function(e){var t=e.eventBus,r=e.dispatch,i=e.listboxActiveItemRef,a=e.multiSelect;(0,n.useEffect)(function(){var e=function(){var e=i.current;if(e)if(e.isMarker)r({type:"TOGGLE_SELECTED_MARKERS",payload:{markerId:e.id,multiSelect:a}});else{var t=e.featureId,n=e.layerId,o=e.idProperty,u=e.geometry,l=e.properties;r({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:t,layerId:n,idProperty:o,geometry:u,properties:l,multiSelect:a,replaceAll:!a}})}};return t.on(o.MAP_SELECT_FEATURE,e),function(){t.off(o.MAP_SELECT_FEATURE,e)}},[t,r,i,a])}({eventBus:p,dispatch:l,listboxActiveItemRef:d,multiSelect:f})}function Me(e){return Me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Me(e)}var Ie=function(e,t){if(!e)return null;if("string"==typeof e)return e.trim();if("object"===Me(e)){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null},ke={light:{haloColor:"#ffffff",selectedColor:"#0b0c0c",activeColor:"#ffdd00",foregroundColor:"#0b0c0c"},dark:{haloColor:"#0b0c0c",selectedColor:"#ffffff",activeColor:"#ffdd00",foregroundColor:"#ffffff"}};function Le(e){return Le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Le(e)}function Ce(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Re(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ce(Object(r),!0).forEach(function(t){je(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ce(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function je(e,t,r){return(t=function(e){var t=function(e){if("object"!=Le(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Le(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Le(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Fe=function(e){return 1===(null==e?void 0:e.length)&&e.includes("selectMarker")};function De(e){return De="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},De(e)}function xe(e){return function(e){if(Array.isArray(e))return Be(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Be(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Be(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Be(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function Ge(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ne(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ge(Object(r),!0).forEach(function(t){He(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ge(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function He(e,t,r){return(t=function(e){var t=function(e){if("object"!=De(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=De(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==De(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ue={ENABLE:function(e,t){return Ne(Ne(Ne({},e),t),{},{enabled:!0})},DISABLE:function(e){return Ne(Ne({},e),{},{enabled:!1,selectedFeatures:[],selectedMarkers:[],listboxActiveItem:null})},TOGGLE_SELECTED_FEATURES:function(e,t){var r=t.featureId,n=t.multiSelect,o=t.layerId,i=t.idProperty,a=t.addToExisting,u=void 0===a||a,l=t.replaceAll,c=void 0!==l&&l,s=t.properties,f=t.geometry,p=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],d=p.findIndex(function(e){return e.featureId===r&&e.layerId===o});if(!1===u){var y=p.filter(function(e,t){return t!==d});return Ne(Ne({},e),{},{selectedFeatures:y})}var m,v={featureId:r,layerId:o,idProperty:i,properties:s,geometry:f};if(n&&!c){var b=xe(p);-1===d?b.push(v):b.splice(d,1),m=b}else m=-1!==d&&1===p.length?[]:[v];return Ne(Ne({},e),{},{selectedFeatures:m,selectedMarkers:n&&!c?e.selectedMarkers:[]})},TOGGLE_SELECTED_MARKERS:function(e,t){var r=t.markerId,n=t.multiSelect,o=e.selectedMarkers,i=o.includes(r);if(n){var a=i?o.filter(function(e){return e!==r}):[].concat(xe(o),[r]);return Ne(Ne({},e),{},{selectedMarkers:a})}return Ne(Ne({},e),{},{selectedFeatures:[],selectedMarkers:i&&1===o.length?[]:[r]})},CLEAR_SELECTED_FEATURES:function(e){return Ne(Ne({},e),{},{selectedFeatures:[],selectedMarkers:[]})},SET_SELECTED_FEATURES:function(e,t){return Ne(Ne({},e),{},{selectedFeatures:t})},SELECT_MARKER:function(e,t){var r=t.markerId,n=t.multiSelect,o=e.selectedMarkers;if(o.includes(r))return e;var i=n?[].concat(xe(o),[r]):[r];return Ne(Ne({},e),{},{selectedFeatures:n?e.selectedFeatures:[],selectedMarkers:i})},UNSELECT_MARKER:function(e,t){var r=t.markerId,n=e.selectedMarkers;return n.includes(r)?Ne(Ne({},e),{},{selectedMarkers:n.filter(function(e){return e!==r})}):e},SET_LISTBOX_ACTIVE:function(e,t){return Ne(Ne({},e),{},{listboxActiveItem:null!=t?t:null})}},Ve={tolerance:10,interactionModes:["selectMarker"],multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,marker:{}};function Ke(e){return Ke="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ke(e)}function We(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ye(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?We(Object(r),!0).forEach(function(t){qe(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):We(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function qe(e,t,r){return(t=function(e){var t=function(e){if("object"!=Ke(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Ke(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Ke(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ze="Select features",Xe={InitComponent:function(e){var t=e.appState,r=e.mapState,i=e.services,a=e.buttonConfig,u=e.mapProvider,l=e.pluginState,c=l.enabled,s=l.selectedFeatures,f=l.interactionModes,p=l.layers,d=i.eventBus,y=r.crossHair,m=r.mapStyle,v=r.markers,b=Fe(f);_e({mapState:r,pluginState:l,services:i,mapProvider:u});var g=me({appState:t,mapState:r,pluginState:l,services:i,mapProvider:u}).handleInteraction;return function(e){var t=e.mapProvider,r=e.mapStyle,o=e.pluginState,i=e.selectedFeatures,a=e.events,u=e.eventBus,l=o.layers,c=o.listboxActiveItem,s=(0,n.useMemo)(function(){return r?function(e,t){var r,n,o,i={};if(!t)return console.warn("[interact] buildStylesMap: mapStyle is null/undefined, cannot build styles"),i;var a=null!==(r=ke[t.mapColorScheme])&&void 0!==r?r:ke.light,u=null!==(n=t.activeColor)&&void 0!==n?n:a.activeColor,l=null!==(o=t.selectedColor)&&void 0!==o?o:a.selectedColor;return e.forEach(function(e){var r=e.activeStroke||u,n=e.selectedStroke||l,o=e.selectedFill||"transparent",a=e.selectedStrokeWidth||3,c=a+6;i[e.layerId]={stroke:Ie(r,t.id),selectionStroke:Ie(n,t.id),fill:Ie(o,t.id),strokeWidth:a,activeStrokeWidth:c}}),i}(l,r):null},[l,r]),f=function(){var e,r=c?[{featureId:c.featureId,layerId:c.layerId,idProperty:c.idProperty,geometry:c.geometry}]:[];null===(e=t.updateHighlightedFeatures)||void 0===e||e.call(t,i,r,s)};(0,n.useEffect)(function(){if(t&&s){f();var e=function(){u.once(a.MAP_DATA_CHANGE,f)};return u.on(a.MAP_STYLE_CHANGE,e),function(){u.off(a.MAP_STYLE_CHANGE,e)}}},[i,c,t,s,u])}({mapProvider:u,mapStyle:m,pluginState:l,selectedFeatures:s,events:o,eventBus:d}),(0,n.useEffect)(function(){d.emit("interact:active",{active:c,interactionModes:f})},[c,f]),function(e){var t=e.enabled,r=e.interactionModes,o=e.markers,i=e.layers,a=e.eventBus;(0,n.useEffect)(function(){if(t){var e=(null==r?void 0:r.includes("selectMarker"))&&o.items.some(function(e){return e.label}),n=(null==r?void 0:r.includes("selectFeature"))&&i.some(function(e){return e.labelProperty});(e||n)&&a.emit("interact:listboxcapable")}},[t,r,o,i,a])}({enabled:c,interactionModes:f,markers:v,layers:p,eventBus:d}),function(e,t,r,o){(0,n.useEffect)(function(){var n,i=t&&(null==r?void 0:r.includes("selectFeature"))?o.map(function(e){return e.layerId}):[];return null===(n=e.setHoverCursor)||void 0===n||n.call(e,i),function(){var t;return null===(t=e.setHoverCursor)||void 0===t?void 0:t.call(e,[])}},[t,r,o])}(u,c,f,p),function(e){var t=e.crossHair,r=e.enabled,o=e.selectMarkerOnly,i=e.appState,a=(0,n.useRef)(r);a.current=r;var u=(0,n.useRef)(o);u.current=o;var l=(0,n.useRef)(t);l.current=t;var c=(0,n.useRef)(!1),s=(0,n.useRef)(!1),f=(0,n.useRef)(i.interfaceType);f.current=i.interfaceType;var p=(0,n.useCallback)(function(){var e=f.current,t="keyboard"===e&&s.current,r="touch"===e&&!u.current&&!c.current;a.current&&(t||r)?l.current.fixAtCenter():l.current.hide()},[]);(0,n.useEffect)(function(){p()},[r,o,i.interfaceType,p]),(0,n.useEffect)(function(){var e,t,r=null===(e=i.layoutRefs)||void 0===e||null===(e=e.appContainerRef)||void 0===e?void 0:e.current;if(r){s.current=!(null===(t=document.activeElement)||void 0===t||!t.closest("[data-map-keyboard-scope]"));var n=function(e){var t=!!e.target.closest('[role="listbox"], [role="option"]'),r=!!e.target.closest("[data-map-keyboard-scope]"),n=c.current!==t||s.current!==r;c.current=t,s.current=r,n&&a.current&&p()};return r.addEventListener("focusin",n),function(){r.removeEventListener("focusin",n)}}},[i.layoutRefs,p])}({crossHair:y,enabled:c,selectMarkerOnly:b,appState:t}),function(e){var t=e.pluginState,r=e.appState,i=e.mapState,a=e.buttonConfig,u=e.eventBus,l=e.handleInteraction,c=(0,n.useRef)(l);c.current=l;var s=(0,n.useRef)(t);s.current=t;var f=(0,n.useRef)(r);f.current=r;var p=(0,n.useRef)(!1);(0,n.useEffect)(function(){p.current=!1;var e=setTimeout(function(){p.current=!0},0);return function(){return clearTimeout(e)}},[t.enabled]),(0,n.useEffect)(function(){if(t.enabled)return function(e){var t,r,n,o=e.getAppState,i=e.mapState,a=e.getPluginState,u=e.buttonConfig,l=e.events,c=e.eventBus,s=e.handleInteraction,f=e.clickReadyRef,p=u.selectAtTarget,d=function(){return s(i.crossHair.getDetail())},y=function(e){f.current&&s(e)},m=(t=o().layoutRefs.viewportRef,r=d,n=!1,{handleKeydown:function(e){n="Enter"===e.key&&t.current===e.target},handleKeyup:function(e){"Enter"===e.key&&n&&(e.preventDefault(),r())}}),v=m.handleKeydown,b=m.handleKeyup,g=function(e,t){return function(r,n){var o=t();e.markers.remove("location"),o.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:Re({multiSelect:o.multiSelect,addToExisting:n},r)})}}(i,a),E=function(e){return g(e,!0)},h=function(e){return g(e,!1)};return document.addEventListener("keydown",v),document.addEventListener("keyup",b),c.on(l.MAP_CLICK,y),c.on("interact:selectFeature",E),c.on("interact:unselectFeature",h),p.onClick=d,function(){p.onClick=null,document.removeEventListener("keydown",v),document.removeEventListener("keyup",b),c.off(l.MAP_CLICK,y),c.off("interact:selectFeature",E),c.off("interact:unselectFeature",h)}}({getAppState:function(){return f.current},mapState:i,getPluginState:function(){return s.current},buttonConfig:a,events:o,eventBus:u,handleInteraction:function(e){return c.current(e)},clickReadyRef:p})},[t.enabled,a,u])}({pluginState:l,appState:t,mapState:r,buttonConfig:a,eventBus:d,handleInteraction:g}),null},reducer:{initialState:{enabled:!1,layers:[],marker:null,interactionModes:null,multiSelect:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectedMarkers:[],closeOnAction:!0,listboxActiveItem:null},actions:Ue},buttons:[{id:"selectAtTarget",label:"Select",variant:"primary",hiddenWhen:function(e){var t=e.appState,r=e.pluginState;return!r.enabled||"touch"!==t.interfaceType||Fe(r.interactionModes)},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}}],keyboardShortcuts:[{id:"clickAtTarget",title:"Click at target",command:"<kbd>Enter</kbd>"},{id:"selectFeatures",group:ze,context:"listbox",title:"Select features",command:"<kbd>Tab</kbd>"},{id:"navigateFeatures",group:ze,context:"listbox",title:"Navigate features",command:"<kbd>↑</kbd> or <kbd>↓</kbd>"},{id:"selectFeature",group:ze,context:"listbox",title:"Select a feature",command:"<kbd>Enter</kbd> or <kbd>Space</kbd>"},{id:"dismissHintOrReturn",group:ze,context:"listbox",title:"Dismiss hint / return to map",command:"<kbd>Escape</kbd>"}],icons:[{id:"select",svgContent:'<path d="M22 14a8 8 0 0 1-8 8"/><path d="M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1"/><path d="M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10"/><path d="M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/>'}],api:{enable:function(e,t){var r=e.pluginState,n=e.pluginConfig;r.dispatch({type:"ENABLE",payload:Ye(Ye(Ye({},Ve),n),t)})},disable:function(e){e.pluginState.dispatch({type:"DISABLE"})},clear:function(e){var t=e.pluginState,r=e.mapState;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})},selectMarker:function(e,t){var r=e.pluginState;r.dispatch({type:"SELECT_MARKER",payload:{markerId:t,multiSelect:r.multiSelect}})},unselectMarker:function(e,t){e.pluginState.dispatch({type:"UNSELECT_MARKER",payload:{markerId:t}})}}}}}]);
|
|
1
|
+
"use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[936],{394(e,t,r){r.r(t),r.d(t,{manifest:()=>Qe});var n=r(738),o={APP_ADD_MARKER:"app:addmarker",APP_UPDATE_MARKER:"app:updatemarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_SHOW_HINT:"app:showhint",APP_DISMISS_HINT:"app:dismisshint",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_FULLSCREEN_CHANGE:"app:fullscreenchange",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_FEATURES:"map:setfeatures",MAP_SET_FEATURES_SUPPRESSED:"map:setfeaturessuppressed",MAP_SET_ACTIVE_FEATURE:"map:setactivefeature",MAP_SELECT_FEATURE:"map:selectfeature",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"};function i(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function a(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!s(e[0])||!s(e[1]))throw new Error("coordinates must contain numbers");return i({type:"Point",coordinates:e},t,r)}function u(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return i({type:"LineString",coordinates:e},t,r)}function l(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function c(e,t,r={}){return i({type:"MultiLineString",coordinates:e},t,r)}function s(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;const f=11102230246251565e-32,p=134217729,d=(3+8*f)*f;function y(e,t,r,n,o){let i,a,u,l,c=t[0],s=n[0],f=0,p=0;s>c==s>-c?(i=c,c=t[++f]):(i=s,s=n[++p]);let d=0;if(f<e&&p<r)for(s>c==s>-c?(a=c+i,u=i-(a-c),c=t[++f]):(a=s+i,u=i-(a-s),s=n[++p]),i=a,0!==u&&(o[d++]=u);f<e&&p<r;)s>c==s>-c?(a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f]):(a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p]),i=a,0!==u&&(o[d++]=u);for(;f<e;)a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f],i=a,0!==u&&(o[d++]=u);for(;p<r;)a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p],i=a,0!==u&&(o[d++]=u);return 0===i&&0!==d||(o[d++]=i),d}function m(e){return new Float64Array(e)}const v=m(4),b=m(8),g=m(12),E=m(16),h=m(4);function S(e,t,r,n,o,i){const a=(t-i)*(r-o),u=(e-o)*(n-i),l=a-u,c=Math.abs(a+u);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let u,l,c,s,f,m,S,P,A,O,T,_,w,M,I,k,L,R;const C=e-o,j=r-o,D=t-i,F=n-i;M=C*F,m=p*C,S=m-(m-C),P=C-S,m=p*F,A=m-(m-F),O=F-A,I=P*O-(M-S*A-P*A-S*O),k=D*j,m=p*D,S=m-(m-D),P=D-S,m=p*j,A=m-(m-j),O=j-A,L=P*O-(k-S*A-P*A-S*O),T=I-L,f=I-T,v[0]=I-(T+f)+(f-L),_=M+T,f=_-M,w=M-(_-f)+(T-f),T=w-k,f=w-T,v[1]=w-(T+f)+(f-k),R=_+T,f=R-_,v[2]=_-(R-f)+(T-f),v[3]=R;let x=function(e,t){let r=t[0];for(let e=1;e<4;e++)r+=t[e];return r}(0,v),B=22204460492503146e-32*a;if(x>=B||-x>=B)return x;if(f=e-C,u=e-(C+f)+(f-o),f=r-j,c=r-(j+f)+(f-o),f=t-D,l=t-(D+f)+(f-i),f=n-F,s=n-(F+f)+(f-i),0===u&&0===l&&0===c&&0===s)return x;if(B=11093356479670487e-47*a+d*Math.abs(x),x+=C*s+F*u-(D*c+j*l),x>=B||-x>=B)return x;M=u*F,m=p*u,S=m-(m-u),P=u-S,m=p*F,A=m-(m-F),O=F-A,I=P*O-(M-S*A-P*A-S*O),k=l*j,m=p*l,S=m-(m-l),P=l-S,m=p*j,A=m-(m-j),O=j-A,L=P*O-(k-S*A-P*A-S*O),T=I-L,f=I-T,h[0]=I-(T+f)+(f-L),_=M+T,f=_-M,w=M-(_-f)+(T-f),T=w-k,f=w-T,h[1]=w-(T+f)+(f-k),R=_+T,f=R-_,h[2]=_-(R-f)+(T-f),h[3]=R;const G=y(4,v,4,h,b);M=C*s,m=p*C,S=m-(m-C),P=C-S,m=p*s,A=m-(m-s),O=s-A,I=P*O-(M-S*A-P*A-S*O),k=D*c,m=p*D,S=m-(m-D),P=D-S,m=p*c,A=m-(m-c),O=c-A,L=P*O-(k-S*A-P*A-S*O),T=I-L,f=I-T,h[0]=I-(T+f)+(f-L),_=M+T,f=_-M,w=M-(_-f)+(T-f),T=w-k,f=w-T,h[1]=w-(T+f)+(f-k),R=_+T,f=R-_,h[2]=_-(R-f)+(T-f),h[3]=R;const N=y(G,b,4,h,g);M=u*s,m=p*u,S=m-(m-u),P=u-S,m=p*s,A=m-(m-s),O=s-A,I=P*O-(M-S*A-P*A-S*O),k=l*c,m=p*l,S=m-(m-l),P=l-S,m=p*c,A=m-(m-c),O=c-A,L=P*O-(k-S*A-P*A-S*O),T=I-L,f=I-T,h[0]=I-(T+f)+(f-L),_=M+T,f=_-M,w=M-(_-f)+(T-f),T=w-k,f=w-T,h[1]=w-(T+f)+(f-k),R=_+T,f=R-_,h[2]=_-(R-f)+(T-f),h[3]=R;const H=y(N,g,4,h,E);return E[H-1]}(e,t,r,n,o,i,c)}function P(e,t){var r,n,o,i,a,u,l,c,s,f=0,p=e[0],d=e[1],y=t.length;for(r=0;r<y;r++){n=0;var m=t[r],v=m.length-1;if((c=m[0])[0]!==m[v][0]&&c[1]!==m[v][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-p,a=c[1]-d;n<v;n++){if(u=(s=m[n+1])[0]-p,l=s[1]-d,0===a&&0===l){if(u<=0&&i>=0||i<=0&&u>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=S(i,u,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&f++}c=s,a=l,i=u}}return f%2!=0}function A(e){return"Feature"===e.type?e.geometry:e}function O(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=A(t),i=o.type,a=t.bbox;let u=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(u=[u]);let l=!1;for(var c=0;c<u.length;++c){const e=P(n,u[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(8),m(8),m(8),m(4),m(8),m(8),m(8),m(12),m(192),m(192),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(4),m(4),m(4),m(8),m(16),m(16),m(16),m(32),m(32),m(48),m(64),m(1152),m(1152),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(1152),m(1152),m(1152),m(1152),m(1152),m(2304),m(2304),m(3456),m(5760),m(8),m(8),m(8),m(16),m(24),m(48),m(48),m(96),m(192),m(384),m(384),m(384),m(768),m(96),m(96),m(96),m(1152);class T{constructor(e=[],t=_){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function _(e,t){return e<t?-1:e>t?1:0}function w(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function M(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class I{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let k=0,L=0,R=0;function C(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;L+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const u=new I(o,k,L,R),l=new I(i,k,L,R+1);u.otherEvent=l,l.otherEvent=u,w(u,l)>0?(l.isLeftEndpoint=!0,u.isLeftEndpoint=!1):(u.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(u),t.push(l),o=i,R+=1}}k+=1}class j{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function D(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,u=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,s=(c-u)*(o-r)-(l-a)*(i-n);if(0===s)return!1;const f=((l-a)*(n-u)-(c-u)*(r-a))/s,p=((o-r)*(n-u)-(i-n)*(r-a))/s;return f>=0&&f<=1&&p>=0&&p<=1&&[r+f*(o-r),n+f*(i-n)]}function F(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:o=!0}=r;let u=[];"FeatureCollection"===e.type?u=u.concat(e.features):"Feature"===e.type?u.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||u.push(i(e)),"FeatureCollection"===t.type?u=u.concat(t.features):"Feature"===t.type?u.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||u.push(i(t));const c=function(e,t){const r=new T([],w);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)C(r[e],t)}else C(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new T([],M);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new j(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const u=D(e,a);!1!==u&&r.push(u)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)}(l(u),o);let s=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=c;return l(s.map(e=>a(e)))}function x(e,t){!function(e,t){var r,n,o,i,a,u,l,c,s,f,p=0,d="FeatureCollection"===e.type,y="Feature"===e.type,m=d?e.features.length:1;for(r=0;r<m;r++){for(u=d?e.features[r].geometry:y?e.geometry:e,c=d?e.features[r].properties:y?e.properties:{},s=d?e.features[r].bbox:y?e.bbox:void 0,f=d?e.features[r].id:y?e.id:void 0,a=(l=!!u&&"GeometryCollection"===u.type)?u.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?u.geometries[o]:u))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,p,c,s,f))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],p,c,s,f))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,c,s,f))return!1;p++}}(e,function(e,r,n,o,a){var u,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(i(e,n,{bbox:o,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":u="Point";break;case"MultiLineString":u="LineString";break;case"MultiPolygon":u="Polygon"}for(var c=0;c<e.coordinates.length;c++){var s=e.coordinates[c];if(!1===t(i({type:u,coordinates:s},n),r,c))return!1}})}function B(e,t={}){const r=A(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return G(A(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=A(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},o=[];return r.forEach(e=>{o.push(G(e,n))}),l(o)}(r,t);default:throw new Error("invalid poly")}}function G(e,t){return e.length>1?c(e,t):u(e[0],t)}function N(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(U(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function H(e,t,r){for(const r of t.coordinates)if(O(r,e))return!0;return F(t,B(e),{ignoreSelfIntersections:r}).features.length>0}function U(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function V(e){return function(e){if(Array.isArray(e))return K(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return K(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?K(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function W(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return i({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return i({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return u(t.coordinates);case"MultiLineString":return c(t.coordinates);case"Point":return a(t.coordinates);case"MultiPoint":return function(e,t,r={}){return i({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function Y(e,t){return t.some(function(t){return!function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return x(e,e=>{x(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!N(t,e);case"Polygon":return!O(e,t)}break;case"LineString":switch(t.type){case"Point":return!N(e,t);case"LineString":return!function(e,t,r){return F(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!H(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!O(t,e);case"LineString":return!H(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(O(r,t))return!0;for(const r of t.coordinates[0])if(O(r,e))return!0;return F(B(e),B(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n}(W(t),W(e))})}function q(e){if(e.length<2)return!1;if(e.some(function(e){var t,r;return!("Polygon"===(r=null===(t=e.geometry)||void 0===t?void 0:t.type)||"MultiPolygon"===r)}))return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=V(t).map(function(t){return e[t]});Y(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}function z(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(e,t)||X(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function X(e,t){if(e){if("string"==typeof e)return $(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?$(e,t):void 0}}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var Z={".cold":".hot",".hot":".cold"},J=function(e){for(var t=0,r=Object.entries(Z);t<r.length;t++){var n=z(r[t],2),o=n[0],i=n[1];if(e.endsWith(o))return"".concat(e.slice(0,-o.length)).concat(i)}return null},Q=function(e){var t,r={},n=function(e){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=X(e))){t&&(e=t);var r=0,n=function(){};return{s:n,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,a=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){a=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(a)throw o}}}}(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;r[o.layerId]=o;var i=J(o.layerId);i&&(r[i]=o)}}catch(e){n.e(e)}finally{n.f()}return r},ee=function(e,t,r){try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}},te=function(e){var t,r=null===(t=e.geometry)||void 0===t?void 0:t.type;return"Point"===r||"MultiPoint"===r};r(287);new Map;var re=Object.freeze({SIDE:"side",HEADER:"header",BANNER:"banner",TOP_LEFT:"top-left",TOP_MIDDLE:"top-middle",TOP_RIGHT:"top-right",LEFT_TOP:"left-top",LEFT_BOTTOM:"left-bottom",MIDDLE:"middle",RIGHT_TOP:"right-top",RIGHT_BOTTOM:"right-bottom",BOTTOM_LEFT:"bottom-left",BOTTOM_RIGHT:"bottom-right",DRAWER:"drawer",ACTIONS:"actions",MODAL:"modal"});function ne(e){return ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ne(e)}function oe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ie(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?oe(Object(r),!0).forEach(function(t){ae(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):oe(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ae(e,t,r){return(t=function(e){var t=function(e){if("object"!=ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ne(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ne(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.freeze({control:[re.HEADER,re.BANNER,re.TOP_LEFT,re.TOP_RIGHT,re.MIDDLE,re.RIGHT_TOP,re.RIGHT_BOTTOM,re.BOTTOM_RIGHT,re.DRAWER,re.ACTIONS],panel:[re.SIDE,re.HEADER,re.BANNER,re.LEFT_TOP,re.LEFT_BOTTOM,re.MIDDLE,re.RIGHT_TOP,re.RIGHT_BOTTOM,re.DRAWER,re.MODAL],button:[re.TOP_LEFT,re.TOP_MIDDLE,re.TOP_RIGHT,re.LEFT_TOP,re.LEFT_BOTTOM,re.RIGHT_TOP,re.RIGHT_BOTTOM,re.BOTTOM_LEFT,re.BOTTOM_RIGHT,re.ACTIONS]});var ue={slot:"middle",open:!1,dismissible:!0,modal:!0},le=(ie({},ue),ie(ie({},ue),{},{width:"500px"}),ie(ie({},ue),{},{width:"500px"}),{small:1,medium:1.5,large:2}),ce=(new Set(["symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"]),function(e){return!(!e.label||e.symbol||e.symbolSvgContent||null!==e.symbol&&null!==e.symbolSvgContent)});function se(e){return se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},se(e)}function fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function pe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?fe(Object(r),!0).forEach(function(t){de(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):fe(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function de(e,t,r){return(t=function(e){var t=function(e){if("object"!=se(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=se(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==se(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ye(e){return function(e){if(Array.isArray(e))return ve(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||me(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function me(e,t){if(e){if("string"==typeof e)return ve(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ve(e,t):void 0}}function ve(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var be=function(e,t,r,n){return{featureId:e,multiSelect:t,layerId:r.layerId,idProperty:r.idProperty,properties:n.properties,geometry:n.geometry}},ge=function(e){var t=e.mapProvider,r=e.layers,o=e.interactionModes,i=e.multiSelect,a=e.dispatch,u=e.markers,l=e.layerConfigMap,c=e.debug,s=e.tolerance,f=e.processFeatureMatch,p=e.processFallback,d=e.scale;return(0,n.useCallback)(function(e){var n=e.point,y=e.coords,m=c?ee(t,n,{radius:s}):null;if(m&&function(e,t){var r,n,o=(n=2,function(e){if(Array.isArray(e))return e}(r=e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,u=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(u.push(n.value),u.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(r,n)||me(r,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=o[0],a=o[1];console.groupCollapsed("[interact] click (".concat(i.toFixed(4),", ").concat(a.toFixed(4),") — ").concat(t.length," feature").concat(1!==t.length?"s":"")),t.forEach(function(e){var t,r;console.log({layer:e.layer.id,type:e.layer.type,id:null!==(t=e.id)&&void 0!==t?t:"—",sourceLayer:null!==(r=e.sourceLayer)&&void 0!==r?r:"—",properties:e.properties})}),console.groupEnd()}(y,m),o.includes("selectMarker")){var v=function(e,t,r){var n,o=function(e){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=me(e))){t&&(e=t);var r=0,n=function(){};return{s:n,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,a=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){a=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(a)throw o}}}}(e.items);try{for(o.s();!(n=o.n()).done;){var i,a=n.value,u=null===(i=e.markerRefs)||void 0===i?void 0:i.get(a.id);if(u&&!ce(a)){var l=u.closest(".im-c-viewport__markers")||u.parentElement,c=l?l.getBoundingClientRect():{left:0,top:0},s=u.getBoundingClientRect(),f=s.left,p=s.top,d=s.right,y=s.bottom,m=t.x*r,v=t.y*r;if(m>=f-c.left&&m<=d-c.left&&v>=p-c.top&&v<=y-c.top)return a.id}}}catch(e){o.e(e)}finally{o.f()}return null}(u,n,d);if(v)return void a({type:"TOGGLE_SELECTED_MARKERS",payload:{markerId:v,multiSelect:i}})}if(o.includes("selectFeature")&&r.length>0){var b=function(e,t){var r=e.filter(function(e){var r;return t[null===(r=e.layer)||void 0===r?void 0:r.id]}),n=r.find(te);if(n)return{feature:n,config:t[n.layer.id]};var o=r[0];return o?{feature:o,config:t[o.layer.id]}:null}(null!=m?m:ee(t,n,{radius:s}),l);if(b)return void f(b)}p({coords:y})},[t,r,o,i,a,u,l,c,s,f,p,d])},Ee=function(e){var t,r=e.mapState,o=e.pluginState,i=e.services,a=e.mapProvider,u=r.markers,l=r.mapSize,c=o.dispatch,s=o.layers,f=o.interactionModes,p=o.multiSelect,d=o.contiguous,y=o.marker,m=o.tolerance,v=o.selectedFeatures,b=o.selectedMarkers,g=o.deselectOnClickOutside,E=i.eventBus,h=Q(s),S=null!==(t=le[l])&&void 0!==t?t:1,P=(0,n.useCallback)(function(e){var t,r,n,o=e.feature,i=e.config;u.remove("location");var l=null!==(t=null===(r=o.properties)||void 0===r?void 0:r[i.idProperty])&&void 0!==t?t:o.id;if(null!=l){var s=null===(n=a.getFeatureGeometry)||void 0===n?void 0:n.call(a,i.layerId,l,i.idProperty),f=s?pe(pe({},o),{},{geometry:s}):o;if(d&&p&&function(e){var t,r=e.featureId,n=e.feature,o=e.config,i=e.selectedFeatures,a=e.dispatch,u=e.multiSelect;if(!i.length)return!1;var l=i.findIndex(function(e){return e.featureId===r&&e.layerId===o.layerId});if(-1!==l){if(i.length<3)return!1;var c=function(e){for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++){var o;if(!t.has(n)){var i=ye(t).map(function(t){return e[t]});null!==(o=e[n].geometry)&&void 0!==o&&o.type&&Y(e[n],i)&&(t.add(n),r=!0)}}}return t.size===e.length?null:ye(t).map(function(t){return e[t]})}(i.filter(function(e,t){return t!==l}));return!!c&&(a({type:"SET_SELECTED_FEATURES",payload:c}),!0)}var s=i.filter(function(e){var t;return null===(t=e.geometry)||void 0===t?void 0:t.type});return!(null===(t=n.geometry)||void 0===t||!t.type||!s.length||Y(n,s)||(a({type:"TOGGLE_SELECTED_FEATURES",payload:pe(pe({},be(r,u,o,n)),{},{replaceAll:!0})}),0))}({featureId:l,feature:f,config:i,selectedFeatures:v,dispatch:c,multiSelect:p}))return;c({type:"TOGGLE_SELECTED_FEATURES",payload:be(l,p,i,f)})}},[u,c,p,d,v,a]),A=(0,n.useCallback)(function(e){var t=e.coords,r=f.includes("placeMarker");(r||g)&&(c({type:"CLEAR_SELECTED_FEATURES"}),r&&(u.add("location",t,y),E.emit("interact:markerchange",{coords:t})))},[f,c,u,y,E,g]),O=ge({mapProvider:a,layers:s,interactionModes:f,multiSelect:p,dispatch:c,markers:u,layerConfigMap:h,debug:null==o?void 0:o.debug,tolerance:m,processFeatureMatch:P,processFallback:A,scale:S});return function(e,t,r){var o=(0,n.useRef)(null);(0,n.useEffect)(function(){var n=o.current;(null===n||0===n.features.length&&0===n.markers.length)&&0===t.length&&0===r.length||(e.emit("interact:selectionchange",{selectedFeatures:t.map(function(e){var t=e.featureId,r=e.layerId,n=e.idProperty,o=e.properties,i=e.geometry;return{featureId:t,layerId:r,idProperty:n,properties:o,geometryType:null==i?void 0:i.type}}),selectedMarkers:r,contiguous:q(t)}),o.current={features:t,markers:r})},[t,r])}(E,v,b),{handleInteraction:O}};function he(e){return he="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},he(e)}function Se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Pe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Se(Object(r),!0).forEach(function(t){Ae(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Se(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function Ae(e,t,r){return(t=function(e){var t=function(e){if("object"!=he(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=he(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==he(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Oe(e){return function(e){if(Array.isArray(e))return we(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||_e(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Te(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=_e(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function _e(e,t){if(e){if("string"==typeof e)return we(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?we(e,t):void 0}}function we(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var Me=function(e,t){var r,n;return t?null!==(r=null===(n=e.properties)||void 0===n?void 0:n[t.idProperty])&&void 0!==r?r:e.id:null},Ie=function(e){var t=e.closest(".im-c-viewport__markers");if(!t)return!1;var r=t.getBoundingClientRect(),n=e.getBoundingClientRect(),o=n.left,i=n.right,a=n.top,u=n.bottom;return i>r.left&&o<r.right&&u>r.top&&a<r.bottom},ke=function(e,t,r){var n,o,i,a=t[null===(n=e.layer)||void 0===n?void 0:n.id];if(null==a||!a.labelProperty)return null;var u=Me(e,a),l=null==u?null:String(u);return null==l||r.has(l)?null:(r.add(l),{id:l,label:null!==(o=null===(i=e.properties)||void 0===i?void 0:i[a.labelProperty])&&void 0!==o?o:l})};function Le(e){var t=e.mapState,r=e.pluginState,i=e.services,a=e.mapProvider,u=t.markers,l=r.dispatch,c=r.interactionModes,s=r.layers,f=r.multiSelect,p=i.eventBus,d=(0,n.useRef)(null);(function(e){var t=e.markers,r=e.interactionModes,i=e.layers,a=e.mapProvider,u=e.multiSelect,l=e.eventBus;(0,n.useEffect)(function(){var e=function(){var e=[];null!=r&&r.includes("selectMarker")&&e.push.apply(e,Oe(function(e){var t,r=[],n=Te(e.items);try{for(n.s();!(t=n.n()).done;){var o,i=t.value;if(i.label){var a=null===(o=e.markerRefs)||void 0===o?void 0:o.get(i.id);!ce(i)&&a&&Ie(a)&&r.push({id:i.id,label:i.label})}}}catch(e){n.e(e)}finally{n.f()}return r}(t))),null!=r&&r.includes("selectFeature")&&i.length>0&&e.push.apply(e,Oe(function(e,t){var r,n=[],o=new Set,i=t.map(function(e){return e.layerId}),a=Q(t),u=Te(e.getVisibleFeatures(i));try{for(u.s();!(r=u.n()).done;){var l=r.value,c=ke(l,a,o);c&&n.push(c)}}catch(e){u.e(e)}finally{u.f()}return n}(a,i))),l.emit(o.MAP_SET_FEATURES,{items:e,multiselectable:u})};return e(),l.on(o.MAP_MOVE_END,e),l.on(o.MAP_DATA_CHANGE,e),function(){l.off(o.MAP_MOVE_END,e),l.off(o.MAP_DATA_CHANGE,e)}},[t,r,i,a,u,l])})({markers:u,interactionModes:c,layers:s,mapProvider:a,multiSelect:f,eventBus:p}),function(e){var t=e.markers,r=e.interactionModes,i=e.layers,a=e.mapProvider,u=e.eventBus,l=e.dispatch,c=e.listboxActiveItemRef;(0,n.useEffect)(function(){var e=function(e){var n=e.id;if(null===n)return c.current=null,void l({type:"SET_LISTBOX_ACTIVE",payload:null});if(t.items.some(function(e){return e.id===n}))return c.current={id:n,isMarker:!0},void l({type:"SET_LISTBOX_ACTIVE",payload:null});if(null!=r&&r.includes("selectFeature")&&i.length>0){var o=i.map(function(e){return e.layerId}),u=Q(i),s=function(e,t,r){var n,o=Te(e);try{for(o.s();!(n=o.n()).done;){var i,a=n.value,u=t[null===(i=a.layer)||void 0===i?void 0:i.id],l=Me(a,u);if(null!=l&&String(l)===String(r))return{feature:a,config:u,rawId:l}}}catch(e){o.e(e)}finally{o.f()}return null}(a.getVisibleFeatures(o),u,n);if(s){var f={featureId:s.rawId,layerId:s.config.layerId,idProperty:s.config.idProperty,geometry:s.feature.geometry};c.current=Pe(Pe({id:n,isMarker:!1},f),{},{properties:s.feature.properties}),l({type:"SET_LISTBOX_ACTIVE",payload:f})}}};return u.on(o.MAP_SET_ACTIVE_FEATURE,e),function(){u.off(o.MAP_SET_ACTIVE_FEATURE,e)}},[t,r,i,a,u,l,c])}({markers:u,interactionModes:c,layers:s,mapProvider:a,eventBus:p,dispatch:l,listboxActiveItemRef:d}),function(e){var t=e.eventBus,r=e.dispatch,i=e.listboxActiveItemRef,a=e.multiSelect;(0,n.useEffect)(function(){var e=function(){var e=i.current;if(e)if(e.isMarker)r({type:"TOGGLE_SELECTED_MARKERS",payload:{markerId:e.id,multiSelect:a}});else{var t=e.featureId,n=e.layerId,o=e.idProperty,u=e.geometry,l=e.properties;r({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:t,layerId:n,idProperty:o,geometry:u,properties:l,multiSelect:a,replaceAll:!a}})}};return t.on(o.MAP_SELECT_FEATURE,e),function(){t.off(o.MAP_SELECT_FEATURE,e)}},[t,r,i,a])}({eventBus:p,dispatch:l,listboxActiveItemRef:d,multiSelect:f})}function Re(e){return Re="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Re(e)}var Ce=function(e,t){if(!e)return null;if("string"==typeof e)return e.trim();if("object"===Re(e)){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null},je={light:{haloColor:"#ffffff",selectedColor:"#0b0c0c",activeColor:"#ffdd00",foregroundColor:"#0b0c0c"},dark:{haloColor:"#0b0c0c",selectedColor:"#ffffff",activeColor:"#ffdd00",foregroundColor:"#ffffff"}};function De(e){return De="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},De(e)}function Fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function xe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(r),!0).forEach(function(t){Be(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Fe(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function Be(e,t,r){return(t=function(e){var t=function(e){if("object"!=De(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=De(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==De(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ge=function(e){return 1===(null==e?void 0:e.length)&&e.includes("selectMarker")};function Ne(e){return Ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ne(e)}function He(e){return function(e){if(Array.isArray(e))return Ue(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Ue(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ue(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function Ve(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ke(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ve(Object(r),!0).forEach(function(t){We(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ve(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function We(e,t,r){return(t=function(e){var t=function(e){if("object"!=Ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Ne(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Ne(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ye={ENABLE:function(e,t){return Ke(Ke(Ke({},e),t),{},{enabled:!0})},DISABLE:function(e){return Ke(Ke({},e),{},{enabled:!1,selectedFeatures:[],selectedMarkers:[],listboxActiveItem:null})},TOGGLE_SELECTED_FEATURES:function(e,t){var r=t.featureId,n=t.multiSelect,o=t.layerId,i=t.idProperty,a=t.addToExisting,u=void 0===a||a,l=t.replaceAll,c=void 0!==l&&l,s=t.properties,f=t.geometry,p=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],d=p.findIndex(function(e){return e.featureId===r&&e.layerId===o});if(!1===u){var y=p.filter(function(e,t){return t!==d});return Ke(Ke({},e),{},{selectedFeatures:y})}var m,v={featureId:r,layerId:o,idProperty:i,properties:s,geometry:f};if(n&&!c){var b=He(p);-1===d?b.push(v):b.splice(d,1),m=b}else m=-1!==d&&1===p.length?[]:[v];return Ke(Ke({},e),{},{selectedFeatures:m,selectedMarkers:n&&!c?e.selectedMarkers:[]})},TOGGLE_SELECTED_MARKERS:function(e,t){var r=t.markerId,n=t.multiSelect,o=e.selectedMarkers,i=o.includes(r);if(n){var a=i?o.filter(function(e){return e!==r}):[].concat(He(o),[r]);return Ke(Ke({},e),{},{selectedMarkers:a})}return Ke(Ke({},e),{},{selectedFeatures:[],selectedMarkers:i&&1===o.length?[]:[r]})},CLEAR_SELECTED_FEATURES:function(e){return Ke(Ke({},e),{},{selectedFeatures:[],selectedMarkers:[]})},SET_SELECTED_FEATURES:function(e,t){return Ke(Ke({},e),{},{selectedFeatures:t})},SELECT_MARKER:function(e,t){var r=t.markerId,n=t.multiSelect,o=e.selectedMarkers;if(o.includes(r))return e;var i=n?[].concat(He(o),[r]):[r];return Ke(Ke({},e),{},{selectedFeatures:n?e.selectedFeatures:[],selectedMarkers:i})},UNSELECT_MARKER:function(e,t){var r=t.markerId,n=e.selectedMarkers;return n.includes(r)?Ke(Ke({},e),{},{selectedMarkers:n.filter(function(e){return e!==r})}):e},SET_LISTBOX_ACTIVE:function(e,t){return Ke(Ke({},e),{},{listboxActiveItem:null!=t?t:null})}},qe={tolerance:10,interactionModes:["selectMarker"],multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,marker:{}};function ze(e){return ze="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ze(e)}function Xe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function $e(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Xe(Object(r),!0).forEach(function(t){Ze(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Xe(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function Ze(e,t,r){return(t=function(e){var t=function(e){if("object"!=ze(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ze(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ze(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Je="Select features",Qe={InitComponent:function(e){var t=e.appState,r=e.mapState,i=e.services,a=e.buttonConfig,u=e.mapProvider,l=e.pluginState,c=l.enabled,s=l.selectedFeatures,f=l.interactionModes,p=l.layers,d=i.eventBus,y=r.crossHair,m=r.mapStyle,v=r.markers,b=Ge(f);Le({mapState:r,pluginState:l,services:i,mapProvider:u});var g=Ee({appState:t,mapState:r,pluginState:l,services:i,mapProvider:u}).handleInteraction;return function(e){var t=e.mapProvider,r=e.mapStyle,o=e.pluginState,i=e.selectedFeatures,a=e.events,u=e.eventBus,l=o.layers,c=o.listboxActiveItem,s=(0,n.useMemo)(function(){return r?function(e,t){var r,n,o,i={};if(!t)return console.warn("[interact] buildStylesMap: mapStyle is null/undefined, cannot build styles"),i;var a=null!==(r=je[t.mapColorScheme])&&void 0!==r?r:je.light,u=null!==(n=t.activeColor)&&void 0!==n?n:a.activeColor,l=null!==(o=t.selectedColor)&&void 0!==o?o:a.selectedColor;return e.forEach(function(e){var r=e.activeStroke||u,n=e.selectedStroke||l,o=e.selectedFill||"transparent",a=e.selectedStrokeWidth||3,c=a+6;i[e.layerId]={stroke:Ce(r,t.id),selectionStroke:Ce(n,t.id),fill:Ce(o,t.id),strokeWidth:a,activeStrokeWidth:c}}),i}(l,r):null},[l,r]),f=function(){var e,r=c?[{featureId:c.featureId,layerId:c.layerId,idProperty:c.idProperty,geometry:c.geometry}]:[];null===(e=t.updateHighlightedFeatures)||void 0===e||e.call(t,i,r,s)};(0,n.useEffect)(function(){if(t&&s){f();var e=0,r=!1,n=function(){f(),Date.now()>=e&&(u.off(a.MAP_DATA_CHANGE,n),r=!1)},o=function(){e=Date.now()+3e3,r||(r=!0,u.on(a.MAP_DATA_CHANGE,n))};return u.on(a.MAP_STYLE_CHANGE,o),u.on(a.MAP_SET_SIZE,o),function(){u.off(a.MAP_STYLE_CHANGE,o),u.off(a.MAP_SET_SIZE,o),u.off(a.MAP_DATA_CHANGE,n)}}},[i,c,t,s,u])}({mapProvider:u,mapStyle:m,pluginState:l,selectedFeatures:s,events:o,eventBus:d}),(0,n.useEffect)(function(){d.emit("interact:active",{active:c,interactionModes:f})},[c,f]),function(e){var t=e.enabled,r=e.interactionModes,o=e.markers,i=e.layers,a=e.eventBus;(0,n.useEffect)(function(){if(t){var e=(null==r?void 0:r.includes("selectMarker"))&&o.items.some(function(e){return e.label}),n=(null==r?void 0:r.includes("selectFeature"))&&i.some(function(e){return e.labelProperty});(e||n)&&a.emit("interact:listboxcapable")}},[t,r,o,i,a])}({enabled:c,interactionModes:f,markers:v,layers:p,eventBus:d}),function(e,t,r,o){(0,n.useEffect)(function(){var n,i=t&&(null==r?void 0:r.includes("selectFeature"))?o.map(function(e){return e.layerId}):[];return null===(n=e.setHoverCursor)||void 0===n||n.call(e,i),function(){var t;return null===(t=e.setHoverCursor)||void 0===t?void 0:t.call(e,[])}},[t,r,o])}(u,c,f,p),function(e){var t=e.crossHair,r=e.enabled,o=e.selectMarkerOnly,i=e.appState,a=(0,n.useRef)(r);a.current=r;var u=(0,n.useRef)(o);u.current=o;var l=(0,n.useRef)(t);l.current=t;var c=(0,n.useRef)(!1),s=(0,n.useRef)(!1),f=(0,n.useRef)(i.interfaceType);f.current=i.interfaceType;var p=(0,n.useCallback)(function(){var e=f.current,t="keyboard"===e&&s.current,r="touch"===e&&!u.current&&!c.current;a.current&&(t||r)?l.current.fixAtCenter():l.current.hide()},[]);(0,n.useEffect)(function(){p()},[r,o,i.interfaceType,p]),(0,n.useEffect)(function(){var e,t,r=null===(e=i.layoutRefs)||void 0===e||null===(e=e.appContainerRef)||void 0===e?void 0:e.current;if(r){s.current=!(null===(t=document.activeElement)||void 0===t||!t.closest("[data-map-keyboard-scope]"));var n=function(e){var t=!!e.target.closest('[role="listbox"], [role="option"]'),r=!!e.target.closest("[data-map-keyboard-scope]"),n=c.current!==t||s.current!==r;c.current=t,s.current=r,n&&a.current&&p()};return r.addEventListener("focusin",n),function(){r.removeEventListener("focusin",n)}}},[i.layoutRefs,p])}({crossHair:y,enabled:c,selectMarkerOnly:b,appState:t}),function(e){var t=e.pluginState,r=e.appState,i=e.mapState,a=e.buttonConfig,u=e.eventBus,l=e.handleInteraction,c=(0,n.useRef)(l);c.current=l;var s=(0,n.useRef)(t);s.current=t;var f=(0,n.useRef)(r);f.current=r;var p=(0,n.useRef)(!1);(0,n.useEffect)(function(){p.current=!1;var e=setTimeout(function(){p.current=!0},0);return function(){return clearTimeout(e)}},[t.enabled]),(0,n.useEffect)(function(){if(t.enabled)return function(e){var t,r,n,o=e.getAppState,i=e.mapState,a=e.getPluginState,u=e.buttonConfig,l=e.events,c=e.eventBus,s=e.handleInteraction,f=e.clickReadyRef,p=u.selectAtTarget,d=function(){return s(i.crossHair.getDetail())},y=function(e){f.current&&s(e)},m=(t=o().layoutRefs.viewportRef,r=d,n=!1,{handleKeydown:function(e){n="Enter"===e.key&&t.current===e.target},handleKeyup:function(e){"Enter"===e.key&&n&&(e.preventDefault(),r())}}),v=m.handleKeydown,b=m.handleKeyup,g=function(e,t){return function(r,n){var o=t();e.markers.remove("location"),o.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:xe({multiSelect:o.multiSelect,addToExisting:n},r)})}}(i,a),E=function(e){return g(e,!0)},h=function(e){return g(e,!1)};return document.addEventListener("keydown",v),document.addEventListener("keyup",b),c.on(l.MAP_CLICK,y),c.on("interact:selectFeature",E),c.on("interact:unselectFeature",h),p.onClick=d,function(){p.onClick=null,document.removeEventListener("keydown",v),document.removeEventListener("keyup",b),c.off(l.MAP_CLICK,y),c.off("interact:selectFeature",E),c.off("interact:unselectFeature",h)}}({getAppState:function(){return f.current},mapState:i,getPluginState:function(){return s.current},buttonConfig:a,events:o,eventBus:u,handleInteraction:function(e){return c.current(e)},clickReadyRef:p})},[t.enabled,a,u])}({pluginState:l,appState:t,mapState:r,buttonConfig:a,eventBus:d,handleInteraction:g}),null},reducer:{initialState:{enabled:!1,layers:[],marker:null,interactionModes:null,multiSelect:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectedMarkers:[],closeOnAction:!0,listboxActiveItem:null},actions:Ye},buttons:[{id:"selectAtTarget",label:"Select",variant:"primary",hiddenWhen:function(e){var t=e.appState,r=e.pluginState;return!r.enabled||"touch"!==t.interfaceType||Ge(r.interactionModes)},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}}],keyboardShortcuts:[{id:"clickAtTarget",title:"Click at target",command:"<kbd>Enter</kbd>"},{id:"selectFeatures",group:Je,context:"listbox",title:"Select features",command:"<kbd>Tab</kbd>"},{id:"navigateFeatures",group:Je,context:"listbox",title:"Navigate features",command:"<kbd>↑</kbd> or <kbd>↓</kbd>"},{id:"selectFeature",group:Je,context:"listbox",title:"Select a feature",command:"<kbd>Enter</kbd> or <kbd>Space</kbd>"},{id:"dismissHintOrReturn",group:Je,context:"listbox",title:"Dismiss hint / return to map",command:"<kbd>Escape</kbd>"}],icons:[{id:"select",svgContent:'<path d="M22 14a8 8 0 0 1-8 8"/><path d="M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1"/><path d="M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10"/><path d="M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/>'}],api:{enable:function(e,t){var r=e.pluginState,n=e.pluginConfig;r.dispatch({type:"ENABLE",payload:$e($e($e({},qe),n),t)})},disable:function(e){e.pluginState.dispatch({type:"DISABLE"})},clear:function(e){var t=e.pluginState,r=e.mapState;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})},selectMarker:function(e,t){var r=e.pluginState;r.dispatch({type:"SELECT_MARKER",payload:{markerId:t,multiSelect:r.multiSelect}})},unselectMarker:function(e,t){e.pluginState.dispatch({type:"UNSELECT_MARKER",payload:{markerId:t}})}}}}}]);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see index.js.LICENSE.txt */
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("defra",[],t):"object"==typeof exports?exports.defra=t():(e.defra=e.defra||{},e.defra.interactPlugin=t())}(this,()=>(()=>{"use strict";var e,t,r={738(e){e.exports=preactCompat},287(e){e.exports=preactJsxRuntime}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((t,r)=>(o.f[r](e,t),t),[])),o.u=e=>"im-interact-plugin.js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="defra.interactPlugin:",o.l=(r,n,i,a)=>{if(e[r])e[r].push(n);else{var u,c;if(void 0!==i)for(var f=document.getElementsByTagName("script"),p=0;p<f.length;p++){var l=f[p];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+i){u=l;break}}u||(c=!0,(u=document.createElement("script")).charset="utf-8",o.nc&&u.setAttribute("nonce",o.nc),u.setAttribute("data-webpack",t+i),u.src=r),e[r]=[n];var s=(t,n)=>{u.onerror=u.onload=null,clearTimeout(d);var o=e[r];if(delete e[r],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach(e=>e(n)),t)return t(n)},d=setTimeout(s.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=s.bind(null,u.onerror),u.onload=s.bind(null,u.onload),c&&document.head.appendChild(u)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{var e={57:0};o.f.j=(t,r)=>{var n=o.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var i=new Promise((r,o)=>n=e[t]=[r,o]);r.push(n[2]=i);var a=o.p+o.u(t),u=new Error;o.l(a,r=>{if(o.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",u.name="ChunkLoadError",u.type=i,u.request=a,n[1](u)}},"chunk-"+t,t)}};var t=(t,r)=>{var n,i,[a,u,c]=r,f=0;if(a.some(t=>0!==e[t])){for(n in u)o.o(u,n)&&(o.m[n]=u[n]);c&&c(o)}for(t&&t(r);f<a.length;f++)i=a[f],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0},r=this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var i={};function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function u(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var u=n&&n.prototype instanceof f?n:f,p=Object.create(u.prototype);return c(p,"_invoke",function(r,n,o){var i,u,c,f=0,p=o||[],l=!1,s={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,u=0,c=e,s.n=r,a}};function d(r,n){for(u=r,c=n,t=0;!l&&f&&!o&&t<p.length;t++){var o,i=p[t],d=s.p,b=i[2];r>3?(o=b===n)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(u=0,s.v=n,s.n=i[1]):d<b&&(o=r<3||i[0]>n||n>b)&&(i[4]=r,i[5]=n,s.n=b,u=0))}if(o||r>1)return a;throw l=!0,n}return function(o,p,b){if(f>1)throw TypeError("Generator is already running");for(l&&1===p&&d(p,b),u=p,c=b;(t=u<2?e:c)||!l;){i||(u?u<3?(u>1&&(s.n=-1),d(u,c)):s.n=c:s.v=c);try{if(f=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=e}else if((t=(l=s.n<0)?c:r.call(n,s))!==a)break}catch(t){i=e,u=1,c=t}finally{f=1}}return{value:t,done:l}}}(r,o,i),!0),p}var a={};function f(){}function p(){}function l(){}t=Object.getPrototypeOf;var s=[][n]?t(t([][n]())):(c(t={},n,function(){return this}),t),d=l.prototype=f.prototype=Object.create(s);function b(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,c(e,o,"GeneratorFunction")),e.prototype=Object.create(d),e}return p.prototype=l,c(d,"constructor",l),c(l,"constructor",p),p.displayName="GeneratorFunction",c(l,o,"GeneratorFunction"),c(d),c(d,o,"Generator"),c(d,n,function(){return this}),c(d,"toString",function(){return"[object Generator]"}),(u=function(){return{w:i,m:b}})()}function c(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}c=function(e,t,r,n){function i(t,r){c(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},c(e,t,r,n)}function f(e,t,r,n,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach(function(t){s(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=a(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==a(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function d(){var e,t;return l(l({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"interact",load:(e=u().m(function e(){var t;return u().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,o.e(936).then(o.bind(o,
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("defra",[],t):"object"==typeof exports?exports.defra=t():(e.defra=e.defra||{},e.defra.interactPlugin=t())}(this,()=>(()=>{"use strict";var e,t,r={738(e){e.exports=preactCompat},287(e){e.exports=preactJsxRuntime}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((t,r)=>(o.f[r](e,t),t),[])),o.u=e=>"im-interact-plugin.js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="defra.interactPlugin:",o.l=(r,n,i,a)=>{if(e[r])e[r].push(n);else{var u,c;if(void 0!==i)for(var f=document.getElementsByTagName("script"),p=0;p<f.length;p++){var l=f[p];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+i){u=l;break}}u||(c=!0,(u=document.createElement("script")).charset="utf-8",o.nc&&u.setAttribute("nonce",o.nc),u.setAttribute("data-webpack",t+i),u.src=r),e[r]=[n];var s=(t,n)=>{u.onerror=u.onload=null,clearTimeout(d);var o=e[r];if(delete e[r],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach(e=>e(n)),t)return t(n)},d=setTimeout(s.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=s.bind(null,u.onerror),u.onload=s.bind(null,u.onload),c&&document.head.appendChild(u)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{var e={57:0};o.f.j=(t,r)=>{var n=o.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var i=new Promise((r,o)=>n=e[t]=[r,o]);r.push(n[2]=i);var a=o.p+o.u(t),u=new Error;o.l(a,r=>{if(o.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",u.name="ChunkLoadError",u.type=i,u.request=a,n[1](u)}},"chunk-"+t,t)}};var t=(t,r)=>{var n,i,[a,u,c]=r,f=0;if(a.some(t=>0!==e[t])){for(n in u)o.o(u,n)&&(o.m[n]=u[n]);c&&c(o)}for(t&&t(r);f<a.length;f++)i=a[f],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0},r=this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var i={};function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function u(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var u=n&&n.prototype instanceof f?n:f,p=Object.create(u.prototype);return c(p,"_invoke",function(r,n,o){var i,u,c,f=0,p=o||[],l=!1,s={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,u=0,c=e,s.n=r,a}};function d(r,n){for(u=r,c=n,t=0;!l&&f&&!o&&t<p.length;t++){var o,i=p[t],d=s.p,b=i[2];r>3?(o=b===n)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(u=0,s.v=n,s.n=i[1]):d<b&&(o=r<3||i[0]>n||n>b)&&(i[4]=r,i[5]=n,s.n=b,u=0))}if(o||r>1)return a;throw l=!0,n}return function(o,p,b){if(f>1)throw TypeError("Generator is already running");for(l&&1===p&&d(p,b),u=p,c=b;(t=u<2?e:c)||!l;){i||(u?u<3?(u>1&&(s.n=-1),d(u,c)):s.n=c:s.v=c);try{if(f=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=e}else if((t=(l=s.n<0)?c:r.call(n,s))!==a)break}catch(t){i=e,u=1,c=t}finally{f=1}}return{value:t,done:l}}}(r,o,i),!0),p}var a={};function f(){}function p(){}function l(){}t=Object.getPrototypeOf;var s=[][n]?t(t([][n]())):(c(t={},n,function(){return this}),t),d=l.prototype=f.prototype=Object.create(s);function b(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,c(e,o,"GeneratorFunction")),e.prototype=Object.create(d),e}return p.prototype=l,c(d,"constructor",l),c(l,"constructor",p),p.displayName="GeneratorFunction",c(l,o,"GeneratorFunction"),c(d),c(d,o,"Generator"),c(d,n,function(){return this}),c(d,"toString",function(){return"[object Generator]"}),(u=function(){return{w:i,m:b}})()}function c(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}c=function(e,t,r,n){function i(t,r){c(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},c(e,t,r,n)}function f(e,t,r,n,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach(function(t){s(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=a(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==a(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function d(){var e,t;return l(l({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"interact",load:(e=u().m(function e(){var t;return u().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,o.e(936).then(o.bind(o,394));case 1:return t=e.v.manifest,e.a(2,t)}},e)}),t=function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){f(i,n,o,a,u,"next",e)}function u(e){f(i,n,o,a,u,"throw",e)}a(void 0)})},function(){return t.apply(this,arguments)})})}return o.d(i,{default:()=>d}),i.default})());
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { useEffect, useMemo } from 'react'
|
|
2
2
|
import { buildStylesMap } from '../utils/buildStylesMap.js'
|
|
3
3
|
|
|
4
|
+
// How long after a map style/size change to keep re-applying highlights on every
|
|
5
|
+
// MAP_DATA_CHANGE — see the effect's own comment.
|
|
6
|
+
const SETTLE_WINDOW_MS = 3000
|
|
7
|
+
|
|
4
8
|
/**
|
|
5
9
|
* Keeps map highlight rendering in sync with the current selection and keyboard-active item.
|
|
6
10
|
*
|
|
7
11
|
* Calls mapProvider.updateHighlightedFeatures whenever selectedFeatures or listboxActiveItem
|
|
8
12
|
* changes, passing selected features (shown with the selection ring) and the active item
|
|
9
13
|
* (shown with the keyboard cursor ring) as separate arguments so the provider can style them
|
|
10
|
-
* differently. Also re-applies highlights after a map style reload
|
|
11
|
-
*
|
|
14
|
+
* differently. Also re-applies highlights after a map style reload or a map-size change,
|
|
15
|
+
* since both remove/rebuild highlight layers and/or leave a selected feature's own drawn
|
|
16
|
+
* symbol (colours, resolution) briefly stale until the draw plugin re-resolves it.
|
|
12
17
|
*/
|
|
13
18
|
export const useHighlightSync = ({
|
|
14
19
|
mapProvider,
|
|
@@ -43,19 +48,35 @@ export const useHighlightSync = ({
|
|
|
43
48
|
|
|
44
49
|
updateHighlightedFeatures()
|
|
45
50
|
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
// MAP_STYLE_CHANGE/MAP_SET_SIZE fire before layers are re-added or symbols re-resolved, so
|
|
52
|
+
// this arms a "keep re-applying" window rather than reacting once — MAP_DATA_CHANGE can
|
|
53
|
+
// fire more than once as things settle, and a single listen-once would miss the later,
|
|
54
|
+
// real update. A permanent listener isn't safe either, since updateHighlightedFeatures()
|
|
55
|
+
// itself can trigger further MAP_DATA_CHANGE events. Uses `on`/`off`, not `once` — its
|
|
56
|
+
// returned wrapper can't be off()'d by this same handler reference.
|
|
57
|
+
let settleUntil = 0
|
|
58
|
+
let armed = false
|
|
59
|
+
const reapply = () => {
|
|
60
|
+
updateHighlightedFeatures()
|
|
61
|
+
if (Date.now() >= settleUntil) {
|
|
62
|
+
eventBus.off(events.MAP_DATA_CHANGE, reapply)
|
|
63
|
+
armed = false
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const armSettleWindow = () => {
|
|
67
|
+
settleUntil = Date.now() + SETTLE_WINDOW_MS
|
|
68
|
+
if (!armed) {
|
|
69
|
+
armed = true
|
|
70
|
+
eventBus.on(events.MAP_DATA_CHANGE, reapply)
|
|
71
|
+
}
|
|
54
72
|
}
|
|
55
|
-
eventBus.on(events.MAP_STYLE_CHANGE,
|
|
73
|
+
eventBus.on(events.MAP_STYLE_CHANGE, armSettleWindow)
|
|
74
|
+
eventBus.on(events.MAP_SET_SIZE, armSettleWindow)
|
|
56
75
|
|
|
57
76
|
return () => {
|
|
58
|
-
eventBus.off(events.MAP_STYLE_CHANGE,
|
|
77
|
+
eventBus.off(events.MAP_STYLE_CHANGE, armSettleWindow)
|
|
78
|
+
eventBus.off(events.MAP_SET_SIZE, armSettleWindow)
|
|
79
|
+
eventBus.off(events.MAP_DATA_CHANGE, reapply)
|
|
59
80
|
}
|
|
60
81
|
}, [selectedFeatures, listboxActiveItem, mapProvider, stylesMap, eventBus])
|
|
61
82
|
}
|
|
@@ -7,19 +7,37 @@ jest.mock('../utils/buildStylesMap.js', () => ({
|
|
|
7
7
|
}))
|
|
8
8
|
|
|
9
9
|
const STYLE_CHANGE = 'map:stylechange'
|
|
10
|
+
const SET_SIZE = 'map:setsize'
|
|
10
11
|
const DATA_CHANGE = 'map:datachange'
|
|
11
12
|
|
|
13
|
+
// A minimal real-ish event bus (mirrors src/services/eventBus.js's on/once/off contract)
|
|
14
|
+
// rather than jest.fn() stubs — the re-arming logic under test depends on once() genuinely
|
|
15
|
+
// self-removing and on() genuinely supporting multiple independent listeners, which a bare
|
|
16
|
+
// mock can't exercise faithfully.
|
|
17
|
+
const createEventBus = () => {
|
|
18
|
+
const listeners = {}
|
|
19
|
+
return {
|
|
20
|
+
on: jest.fn((event, handler) => { (listeners[event] ??= []).push(handler) }),
|
|
21
|
+
once: jest.fn((event, handler) => {
|
|
22
|
+
const wrapper = (...args) => { bus.off(event, wrapper); handler(...args) }
|
|
23
|
+
listeners[event] ??= []
|
|
24
|
+
listeners[event].push(wrapper)
|
|
25
|
+
}),
|
|
26
|
+
off: jest.fn((event, handler) => { listeners[event] = (listeners[event] ?? []).filter(h => h !== handler) }),
|
|
27
|
+
emit: (event, ...args) => { (listeners[event] ?? []).slice().forEach(h => h(...args)) },
|
|
28
|
+
_listenerCount: (event) => (listeners[event] ?? []).length
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
let bus
|
|
32
|
+
|
|
12
33
|
let mockDeps
|
|
13
|
-
let capturedStyleChangeHandler
|
|
14
|
-
let capturedDataChangeHandler
|
|
15
34
|
|
|
16
35
|
const render = (overrides = {}) =>
|
|
17
36
|
renderHook(() => useHighlightSync({ ...mockDeps, ...overrides }))
|
|
18
37
|
|
|
19
38
|
beforeEach(() => {
|
|
20
39
|
jest.clearAllMocks()
|
|
21
|
-
|
|
22
|
-
capturedDataChangeHandler = null
|
|
40
|
+
bus = createEventBus()
|
|
23
41
|
|
|
24
42
|
mockDeps = {
|
|
25
43
|
mapProvider: {
|
|
@@ -30,20 +48,8 @@ beforeEach(() => {
|
|
|
30
48
|
layers: [{ layerId: 'layer1' }]
|
|
31
49
|
},
|
|
32
50
|
selectedFeatures: [],
|
|
33
|
-
events: { MAP_STYLE_CHANGE: STYLE_CHANGE, MAP_DATA_CHANGE: DATA_CHANGE },
|
|
34
|
-
eventBus:
|
|
35
|
-
on: jest.fn((event, handler) => {
|
|
36
|
-
if (event === STYLE_CHANGE) {
|
|
37
|
-
capturedStyleChangeHandler = handler
|
|
38
|
-
}
|
|
39
|
-
}),
|
|
40
|
-
once: jest.fn((event, handler) => {
|
|
41
|
-
if (event === DATA_CHANGE) {
|
|
42
|
-
capturedDataChangeHandler = handler
|
|
43
|
-
}
|
|
44
|
-
}),
|
|
45
|
-
off: jest.fn()
|
|
46
|
-
}
|
|
51
|
+
events: { MAP_STYLE_CHANGE: STYLE_CHANGE, MAP_SET_SIZE: SET_SIZE, MAP_DATA_CHANGE: DATA_CHANGE },
|
|
52
|
+
eventBus: bus
|
|
47
53
|
}
|
|
48
54
|
})
|
|
49
55
|
|
|
@@ -95,28 +101,93 @@ describe('useHighlightSync — styles memoization', () => {
|
|
|
95
101
|
})
|
|
96
102
|
})
|
|
97
103
|
|
|
98
|
-
// ─── useHighlightSync — style-change
|
|
104
|
+
// ─── useHighlightSync — style/size-change settle window ──────────────────────
|
|
99
105
|
|
|
100
|
-
describe('useHighlightSync — style-change
|
|
106
|
+
describe('useHighlightSync — style/size-change settle window', () => {
|
|
101
107
|
it('refreshes highlights after MAP_STYLE_CHANGE then MAP_DATA_CHANGE', () => {
|
|
102
108
|
mockDeps.selectedFeatures = [{ featureId: 'F1', layerId: 'layer1' }]
|
|
103
109
|
|
|
104
110
|
render()
|
|
105
111
|
mockDeps.mapProvider.updateHighlightedFeatures.mockClear()
|
|
106
112
|
|
|
107
|
-
act(() =>
|
|
108
|
-
act(() =>
|
|
113
|
+
act(() => bus.emit(STYLE_CHANGE))
|
|
114
|
+
act(() => bus.emit(DATA_CHANGE))
|
|
115
|
+
|
|
116
|
+
expect(mockDeps.mapProvider.updateHighlightedFeatures).toHaveBeenCalledTimes(1)
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
it('also refreshes after MAP_SET_SIZE then MAP_DATA_CHANGE', () => {
|
|
120
|
+
mockDeps.selectedFeatures = [{ featureId: 'F1', layerId: 'layer1' }]
|
|
121
|
+
|
|
122
|
+
render()
|
|
123
|
+
mockDeps.mapProvider.updateHighlightedFeatures.mockClear()
|
|
124
|
+
|
|
125
|
+
act(() => bus.emit(SET_SIZE))
|
|
126
|
+
act(() => bus.emit(DATA_CHANGE))
|
|
127
|
+
|
|
128
|
+
expect(mockDeps.mapProvider.updateHighlightedFeatures).toHaveBeenCalledTimes(1)
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
// The whole reason for re-arming rather than a single listen-once: MAP_DATA_CHANGE
|
|
132
|
+
// typically fires more than once during a settle (basemap loading before a drawn
|
|
133
|
+
// feature's own symbol re-resolution has finished) — the second, later firing must
|
|
134
|
+
// still be caught, not missed because the first already consumed a one-shot listener.
|
|
135
|
+
it('keeps re-applying on every MAP_DATA_CHANGE within the settle window, not just the first', () => {
|
|
136
|
+
mockDeps.selectedFeatures = [{ featureId: 'F1', layerId: 'layer1' }]
|
|
137
|
+
|
|
138
|
+
render()
|
|
139
|
+
mockDeps.mapProvider.updateHighlightedFeatures.mockClear()
|
|
140
|
+
|
|
141
|
+
act(() => bus.emit(STYLE_CHANGE))
|
|
142
|
+
act(() => bus.emit(DATA_CHANGE)) // early, still-stale settle
|
|
143
|
+
act(() => bus.emit(DATA_CHANGE)) // later, real settle
|
|
144
|
+
act(() => bus.emit(DATA_CHANGE))
|
|
145
|
+
|
|
146
|
+
expect(mockDeps.mapProvider.updateHighlightedFeatures).toHaveBeenCalledTimes(3)
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
it('stops re-arming once the settle window has elapsed, so it does not listen forever', () => {
|
|
150
|
+
jest.useFakeTimers()
|
|
151
|
+
mockDeps.selectedFeatures = [{ featureId: 'F1', layerId: 'layer1' }]
|
|
152
|
+
|
|
153
|
+
render()
|
|
154
|
+
mockDeps.mapProvider.updateHighlightedFeatures.mockClear()
|
|
155
|
+
|
|
156
|
+
act(() => bus.emit(STYLE_CHANGE))
|
|
157
|
+
act(() => bus.emit(DATA_CHANGE)) // re-arms — within the window
|
|
158
|
+
expect(bus._listenerCount(DATA_CHANGE)).toBe(1)
|
|
159
|
+
|
|
160
|
+
jest.advanceTimersByTime(4000) // past the settle window
|
|
161
|
+
act(() => bus.emit(DATA_CHANGE)) // the last re-arm still fires once...
|
|
162
|
+
expect(bus._listenerCount(DATA_CHANGE)).toBe(0) // ...but does not re-arm again
|
|
163
|
+
|
|
164
|
+
jest.useRealTimers()
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
it('a second style/size change while still settling extends the window without double-registering', () => {
|
|
168
|
+
jest.useFakeTimers()
|
|
169
|
+
mockDeps.selectedFeatures = [{ featureId: 'F1', layerId: 'layer1' }]
|
|
170
|
+
|
|
171
|
+
render()
|
|
172
|
+
|
|
173
|
+
act(() => bus.emit(STYLE_CHANGE))
|
|
174
|
+
expect(bus._listenerCount(DATA_CHANGE)).toBe(1)
|
|
175
|
+
act(() => bus.emit(SET_SIZE)) // still armed — must not add a second listener
|
|
176
|
+
expect(bus._listenerCount(DATA_CHANGE)).toBe(1)
|
|
109
177
|
|
|
110
|
-
|
|
178
|
+
jest.useRealTimers()
|
|
111
179
|
})
|
|
112
180
|
|
|
113
|
-
it('unsubscribes on unmount', () => {
|
|
181
|
+
it('unsubscribes MAP_STYLE_CHANGE/MAP_SET_SIZE/MAP_DATA_CHANGE listeners on unmount', () => {
|
|
114
182
|
mockDeps.selectedFeatures = [{ featureId: 'F1', layerId: 'layer1' }]
|
|
115
183
|
|
|
116
184
|
const { unmount } = render()
|
|
185
|
+
act(() => bus.emit(STYLE_CHANGE)) // arm the MAP_DATA_CHANGE re-apply listener too
|
|
117
186
|
unmount()
|
|
118
187
|
|
|
119
|
-
expect(
|
|
188
|
+
expect(bus._listenerCount(STYLE_CHANGE)).toBe(0)
|
|
189
|
+
expect(bus._listenerCount(SET_SIZE)).toBe(0)
|
|
190
|
+
expect(bus._listenerCount(DATA_CHANGE)).toBe(0)
|
|
120
191
|
})
|
|
121
192
|
})
|
|
122
193
|
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
// mapbox-gl-draw (MapLibre only) splits every layer into a `.cold`/`.hot` sibling pair — see
|
|
2
|
+
// providers/maplibre/src/utils/drawLayerBuckets.js. Inlined here (not imported) since this file
|
|
3
|
+
// stays provider-agnostic and OpenLayers has no such split.
|
|
4
|
+
const drawBucketSiblingSuffix = { '.cold': '.hot', '.hot': '.cold' }
|
|
5
|
+
|
|
6
|
+
const siblingLayerId = (layerId) => {
|
|
7
|
+
for (const [suffix, sibling] of Object.entries(drawBucketSiblingSuffix)) {
|
|
8
|
+
if (layerId.endsWith(suffix)) {
|
|
9
|
+
return `${layerId.slice(0, -suffix.length)}${sibling}`
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return null
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
export const buildLayerConfigMap = dataLayers => {
|
|
2
16
|
const map = {}
|
|
3
17
|
for (const layer of dataLayers) {
|
|
4
18
|
map[layer.layerId] = layer
|
|
19
|
+
const sibling = siblingLayerId(layer.layerId)
|
|
20
|
+
if (sibling) {
|
|
21
|
+
map[sibling] = layer
|
|
22
|
+
}
|
|
5
23
|
}
|
|
6
24
|
return map
|
|
7
25
|
}
|
|
@@ -15,6 +15,21 @@ describe('buildLayerConfigMap', () => {
|
|
|
15
15
|
|
|
16
16
|
expect(buildLayerConfigMap([])).toEqual({})
|
|
17
17
|
})
|
|
18
|
+
|
|
19
|
+
// mapbox-gl-draw (MapLibre only) moves a feature out of its `.cold` layer/source into a
|
|
20
|
+
// `.hot` sibling the instant any of its own properties change — a click landing on a feature
|
|
21
|
+
// that's since moved would otherwise silently fail to match any registered config at all.
|
|
22
|
+
it('also registers the .cold/.hot sibling id, pointing at the same config', () => {
|
|
23
|
+
const dataLayers = [{ layerId: 'point-symbol.cold', idProperty: 'id' }]
|
|
24
|
+
const result = buildLayerConfigMap(dataLayers)
|
|
25
|
+
expect(result['point-symbol.cold']).toBe(result['point-symbol.hot'])
|
|
26
|
+
expect(result['point-symbol.hot']).toEqual({ layerId: 'point-symbol.cold', idProperty: 'id' })
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('does not add a sibling for a layer id with no cold/hot suffix', () => {
|
|
30
|
+
const result = buildLayerConfigMap([{ layerId: 'field-parcels' }])
|
|
31
|
+
expect(Object.keys(result)).toEqual(['field-parcels'])
|
|
32
|
+
})
|
|
18
33
|
})
|
|
19
34
|
|
|
20
35
|
describe('getFeaturesAtPoint', () => {
|
|
@@ -41,19 +41,25 @@ function isContiguousWithAny (feature, features) {
|
|
|
41
41
|
return features.some(f => !booleanDisjoint(toTurfGeometry(f), toTurfGeometry(feature)))
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
const isPolygonal = (type) => type === 'Polygon' || type === 'MultiPolygon'
|
|
45
|
+
|
|
44
46
|
/**
|
|
45
|
-
* Check if all features form a single contiguous group
|
|
47
|
+
* Check if all features are polygons/multi-polygons and form a single contiguous group
|
|
48
|
+
* (mergeable). Mixed geometry types (e.g. a line crossing a polygon) are never contiguous,
|
|
49
|
+
* regardless of spatial overlap, so the type check runs first and skips the spatial work
|
|
50
|
+
* entirely when it fails.
|
|
51
|
+
*
|
|
46
52
|
* Uses flood-fill to find connected components.
|
|
47
53
|
*
|
|
48
54
|
* @param {Array} features - Array of features to test
|
|
49
|
-
* @returns {boolean} True if 2+ features and all
|
|
55
|
+
* @returns {boolean} True if 2+ features, all polygonal, and all contiguous
|
|
50
56
|
*/
|
|
51
57
|
function areAllContiguous (features) {
|
|
52
58
|
if (features.length < 2) {
|
|
53
59
|
return false
|
|
54
60
|
}
|
|
55
61
|
|
|
56
|
-
if (features.some(
|
|
62
|
+
if (features.some(feature => !isPolygonal(feature.geometry?.type))) {
|
|
57
63
|
return false
|
|
58
64
|
}
|
|
59
65
|
|