@defra/interactive-map 0.0.40-alpha → 0.0.42-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/button-definition.md +7 -8
- package/docs/api/control-definition.md +17 -1
- package/docs/api/panel-definition.md +5 -0
- package/docs/api/slots.md +50 -6
- package/docs/assets/images/slot-map.svg +61 -262
- package/docs/examples/add-polygons.mdx +8 -2
- package/docs/examples/add-symbols.mdx +8 -2
- package/docs/examples/draw-tools.mdx +3 -3
- package/docs/plugins/datasets.md +23 -15
- package/docs/plugins/draw.md +79 -16
- package/docs/plugins/map-key.md +147 -0
- package/docs/plugins/search.md +1 -1
- package/docs/plugins.md +5 -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/beta/use-location/dist/esm/im-use-location-plugin.js +1 -1
- package/plugins/beta/use-location/dist/umd/im-use-location-plugin.js +1 -1
- package/plugins/beta/use-location/src/manifest.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/createNewShape.js +41 -0
- package/plugins/draw/src/api/createNewShape.test.js +63 -0
- package/plugins/draw/src/api/editFeature.js +7 -4
- package/plugins/draw/src/api/editFeature.test.js +16 -0
- package/plugins/draw/src/api/newLine.js +2 -40
- package/plugins/draw/src/api/newPoint.js +42 -0
- package/plugins/draw/src/api/newPoint.test.js +117 -0
- package/plugins/draw/src/api/newPolygon.js +2 -40
- 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/manifest.js +1 -1
- 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 +68 -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 +43 -0
- package/plugins/{datasets → map-key}/src/components/Key/Key.module.scss +21 -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 +26 -0
- package/plugins/map-key/src/components/Key/KeyItem.test.jsx +67 -0
- package/plugins/map-key/src/components/Key/KeySvg.jsx +41 -0
- package/plugins/{datasets → map-key}/src/components/Key/KeySvg.test.jsx +14 -12
- package/plugins/map-key/src/components/Key/KeySvgLine.jsx +22 -0
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgLine.test.jsx +1 -1
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgPattern.jsx +7 -2
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgPattern.test.jsx +8 -2
- package/plugins/map-key/src/components/Key/KeySvgRect.jsx +26 -0
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgRect.test.jsx +1 -1
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgSymbol.jsx +8 -3
- package/plugins/{datasets → map-key}/src/components/Key/KeySvgSymbol.test.jsx +17 -6
- package/plugins/map-key/src/components/Key/MapKey.jsx +53 -0
- package/plugins/map-key/src/components/Key/MapKey.test.jsx +147 -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/KeyboardHelp/KeyboardHelp.jsx +25 -23
- package/src/App/components/KeyboardHelp/KeyboardHelp.test.jsx +22 -5
- package/src/App/components/MoveControls/MoveControls.module.scss +41 -10
- package/src/App/components/Panel/Panel.jsx +65 -8
- package/src/App/components/Panel/Panel.module.scss +49 -15
- package/src/App/components/Panel/Panel.test.jsx +114 -1
- package/src/App/components/Tabs/Tabs.jsx +43 -17
- package/src/App/components/Tabs/Tabs.module.scss +32 -5
- package/src/App/components/Tabs/Tabs.test.jsx +40 -10
- 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/groupByKey.js +28 -0
- package/src/App/renderer/groupByKey.test.js +39 -0
- package/src/App/renderer/groupIntoTabs.js +42 -0
- package/src/App/renderer/groupIntoTabs.test.js +95 -0
- package/src/App/renderer/mapButtons.js +97 -129
- package/src/App/renderer/mapButtons.test.js +67 -83
- package/src/App/renderer/mapControls.js +4 -1
- package/src/App/renderer/mapControls.test.js +32 -0
- package/src/App/renderer/mapPanels.js +53 -11
- package/src/App/renderer/mapPanels.test.js +95 -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/appConfig.js +2 -2
- 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 +31 -3
- 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/KeySvgRect.jsx +0 -22
- 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
|
-
import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"ol/layer/Vector.js";import n from"ol/source/Vector.js";import a from"ol/format/GeoJSON.js";import{c as o,a as i,b as l,d,h as s,s as c,i as u,e as v,r as p}from"./im-draw-ml-adapter.js";import g from"ol/style/Style.js";import y from"ol/style/Fill.js";import m from"ol/style/Stroke.js";import h from"ol/style/Circle.js";import x from"ol/geom/MultiPoint.js";import{S as f,T as S,A as I,M as w,a as T,w as V,K as C,s as P,t as b}from"./im-draw-plugin.js";import{transform as _}from"ol/proj.js";import E from"ol/layer/VectorTile.js";import L from"ol/Feature.js";import k from"ol/geom/Point.js";import{Style as O}from"ol/style.js";import D from"ol/interaction/Interaction.js";import F from"ol/interaction/Draw.js";import{noModifierKeys as j}from"ol/events/condition.js";import M from"ol/interaction/Modify.js";import A from"ol/Collection.js";import"preact/compat";import"@babel/runtime/helpers/objectWithoutProperties";var G="EPSG:27700",R=new a({dataProjection:G,featureProjection:G}),H=()=>{var e=new n;return{source:e,getOL(t){var r;return null!==(r=e.getFeatureById(String(t)))&&void 0!==r?r:null},add(t){var r=this.getOL(t.id);r&&e.removeFeature(r);var n=R.readFeature(t);return e.addFeature(n),n},get(e){var t=this.getOL(e);return t?R.writeFeatureObject(t):null},remove(t){var r=Array.isArray(t)?t:[t];for(var n of r){var a=this.getOL(n);a&&e.removeFeature(a)}},clear(){e.clear()},toGeoJSON:e=>R.writeFeatureObject(e),fromGeoJSON:e=>R.readFeature(e)}},N={Polygon:2,LineString:1},U=e=>{var t,r=e.getType();return("Polygon"===r?null!==(t=e.getCoordinates()[0])&&void 0!==t?t:[]:e.getCoordinates()).slice(0,-N[r])},B=e=>{var t;return null!==(t=U(e).at(-1))&&void 0!==t?t:null},q={outer:f.vertexHaloRadius+3,mid:f.vertexHaloRadius,inner:f.vertexRadius},Y={outer:f.midpointHaloRadius+3,mid:f.midpointHaloRadius,inner:f.midpointRadius},z=(e,t,r,n,a)=>{e.beginPath(),e.arc(t,r,n,0,2*Math.PI),e.fillStyle=a,e.fill()},K=(e,t,r)=>{var{outer:n,mid:a,inner:o}=e;return(e,i)=>{var l=i.context,d=i.pixelRatio,[s,c]=e;l.save(),z(l,s,c,n*d,t.editActive),z(l,s,c,a*d,t.editHalo),z(l,s,c,o*d,t[r]),l.restore()}},X=e=>e.charAt(0).toUpperCase()+e.slice(1),W=e=>{var{vertexImage:t,vertexStyle:r,selectedVertexStyle:n}=(e=>{var t=new h({radius:f.vertexRadius,fill:new y({color:e.editVertex})});return{vertexImage:t,vertexStyle:new g({image:t}),selectedVertexStyle:new g({renderer:K(q,e,"editVertex")})}})(e),{midpointStyle:a,selectedMidpointStyle:o}=(e=>({midpointStyle:new g({image:new h({radius:f.midpointRadius,fill:new y({color:e.editMidpoint})})}),selectedMidpointStyle:new g({renderer:K(Y,e,"editMidpoint")})}))(e),i=new g({stroke:new m({color:e.editStroke,width:2}),fill:new y({color:e.editFill})}),l=new g({stroke:new m({color:e.invalidStroke,width:2,lineDash:[2,4]})}),d=(e=>({valid:new g({stroke:new m({color:e.editStroke,width:2}),fill:new y({color:e.editFill})}),invalid:new g({stroke:new m({color:e.invalidStroke,width:2,lineDash:[2,4]})}),splitValid:new g({stroke:new m({color:e.splitValid,width:2})}),splitInvalid:new g({stroke:new m({color:e.splitInvalid,width:2,lineDash:[2,4]})})}))(e),s=new x([]),c=new g({image:t,geometry:e=>{var t=U(e.getGeometry());return t.length?(s.setCoordinates(t),s):null}});return{vertexStyle:r,selectedVertexStyle:n,midpointStyle:a,selectedMidpointStyle:o,editFeatureStyle:i,editFeatureStyleInvalid:l,createSketchStyle:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r=>{var n=r.getGeometry().getType();if("Point"===n)return[];var a=r.get("splitter"),o=t?d.invalid:d.valid;return"valid"===a&&(o=d.splitValid),"invalid"===a&&(o=d.splitInvalid),n===e?[o,c]:[o]}},createFeatureStyle:()=>t=>{var r=t.getProperties(),n=e.mapStyleId,a=n&&r["stroke".concat(X(n))]||r.stroke||e.shapeStroke,o=n&&r["fill".concat(X(n))]||r.fill||e.shapeFill,i=r.strokeWidth||e.strokeWidth;return[new g({stroke:new m({color:a,width:i}),fill:new y({color:o})})]}}},J=(e,t)=>{var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n},Z=(e,t,r)=>{var n=r[0]-t[0],a=r[1]-t[1],o=n*n+a*a;if(0===o)return[t[0],t[1]];var i=Math.max(0,Math.min(1,((e[0]-t[0])*n+(e[1]-t[1])*a)/o));return[t[0]+i*n,t[1]+i*a]},Q=(e,t)=>$(e,t)?t:e,$=(e,t)=>e?!!t&&("edge"===e.type&&"vertex"===t.type||("vertex"!==e.type||"edge"!==t.type)&&t.distSq<e.distSq):!!t,ee=(e,t,r,n)=>{for(var a=null,o=n&&e.length>1?e.length-1:e.length,i=n?o:o-1,l=0;l<o;l++){var d=e[l],s=J(t,d);s<=r&&(a=Q(a,{type:"vertex",coord:[d[0],d[1]],distSq:s}))}for(var c=0;c<i;c++){var u=e[c],v=e[(c+1)%o],p=Z(t,u,v),g=J(t,p);g<=r&&(a=Q(a,{type:"edge",coord:p,distSq:g}))}return a},te=(e,t,r,n,a,o)=>{for(var i=null,l=0;l<n;l++){var d=t+2*l,s=t+(l+1)%r*2,c=[e[d],e[d+1]],u=[e[s],e[s+1]],v=Z(a,c,u),p=J(a,v);p<=o&&(i=Q(i,{type:"edge",coord:v,distSq:p,seg:[c,u]}))}return i},re=(e,t,r)=>[e>0||r?e>0?e-1:t-1:null,e<t-1||r?e<t-1?e+1:0:null],ne=(e,t,r,n,a,o)=>{for(var i=n===r,l=r=>null===r?null:[e[t+2*r],e[t+2*r+1]],d=null,s=0;s<r;s++){var c=l(s),u=J(a,c);if(u<=o){var[v,p]=re(s,r,i),g=[l(v),l(p)];d=Q(d,{type:"vertex",coord:c,distSq:u,adjacent:g})}}return d},ae=(e,t,r,n,a,o)=>{var i=(r-t)/2,l=o?i:i-1;return{vertex:ne(e,t,i,l,n,a),edge:te(e,t,i,l,n,a)}},oe={point:(e,t,r)=>{var n=e.getCoordinates(),a=J(t,n);return a<=r?{type:"vertex",coord:[n[0],n[1]],distSq:a}:null},lineString:(e,t,r)=>ee(e.getCoordinates(),t,r,!1),linearRing:(e,t,r)=>ee(e.getCoordinates(),t,r,!0),polygon:(e,t,r)=>{var n=null;for(var a of e.getCoordinates())n=Q(n,ee(a,t,r,!0));return n},multiLineString:(e,t,r)=>{var n=null;for(var a of e.getCoordinates())n=Q(n,ee(a,t,r,!1));return n},multiPolygon:(e,t,r)=>{var n=null;for(var a of e.getCoordinates())for(var o of a)n=Q(n,ee(o,t,r,!0));return n}},ie=(e,t,r)=>{var n=e.getGeometry();if(!n)return null;var a=n.getType(),o=oe[a[0].toLowerCase()+a.slice(1)];return o?o(n,t,r):null};function le(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 de(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?le(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):le(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var se=(e,t,r)=>{if(!t||!r)return!1;var[n,a,o,i]=e.extent,l=(t,r,n)=>Math.min(Math.abs(t-r),Math.abs(t-n))<=e.band,d=Math.abs(t[0]-r[0])<=e.eps&&l(t[0],n,o),s=Math.abs(t[1]-r[1])<=e.eps&&l(t[1],a,i);return d||s},ce=(e,t)=>{var r,n=((e,t)=>{if(!e)return null;var{tileGrid:r,viewProj:n,sourceProj:a,zoom:o}=e,i=e=>e?_(e,n,a):null,l=i(t),d=r.getTileCoordForCoordAndZ(l,o),s=r.getTileCoordExtent(d),c=s[2]-s[0];return{toSource:i,anchor:l,extent:s,band:.0625*c,eps:c/4096*2}})(e,t.coord);if(!n)return!1;if("edge"===t.type){var[a,o]=t.seg;return se(n,n.toSource(a),n.toSource(o))}var[i,l]=null!==(r=t.adjacent)&&void 0!==r?r:[];return se(n,n.anchor,n.toSource(i))||se(n,n.anchor,n.toSource(l))},ue=()=>!0===globalThis.DEBUG_SNAP_VISIBILITY,ve=(e,t)=>{ue()&&console.log("[snap-candidate-found]",{type:e.type,layerId:null==t?void 0:t.id,layerType:null==t?void 0:t.type,coord:[e.coord[0].toFixed(2),e.coord[1].toFixed(2)],distSq:e.distSq.toFixed(2)})},pe=e=>{var{candidate:t,cursorCoord:r,mapboxLayer:n,boundaryState:a,map:o,vtLayers:i,resolution:l}=e;return ce(a,t)?(ue()&&console.log("[snap-filtered] tile clip artefact",t.type),!0):!("edge"!==t.type||"fill"!==(null==n?void 0:n.type)||!((e,t,r,n,a,o)=>{var i=e[0]-t[0],l=e[1]-t[1],d=i*i+l*l;if(d<1)return!1;var s=Math.sqrt(d),c=4*o,u=[e[0]+i/s*c,e[1]+l/s*c],v=n.getPixelFromCoordinate(u);return!!v&&!!n.forEachFeatureAtPixel(v,e=>{var t;return(null===(t=e.get("mapbox-layer"))||void 0===t?void 0:t.id)===r},{hitTolerance:2,layerFilter:e=>a.includes(e)})})(t.coord,r,n.id,o,i,l))&&(ue()&&console.log("[snap-filtered] invisible fill boundary"),!0)},ge=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=new Set,a=[],o=e=>{for(var t of(n=new Set,a=[],null!=e?e:[]))"string"==typeof t?n.add(t):t instanceof r&&a.push(t)};o(t);return{query:(t,r)=>{ue()&&console.log("[snap-query]",{coord:[t[0].toFixed(2),t[1].toFixed(2)],radiusPx:r,vtLayerCount:n.size,olLayerCount:a.length});var o=e.getView().getResolution();if(!o)return null;var i=r*o,l=i*i,d=[t[0]-i,t[1]-i,t[0]+i,t[1]+i],s=null;for(var c of a){var u=c.getSource();if(u)for(var v of u.getFeaturesInExtent(d))s=Q(s,ie(v,t,l))}if(n.size>0){var p=(e=>{var t=[];return e.getLayers().forEach(e=>{e instanceof E&&t.push(e)}),t})(e),g=p.length>0?e.getPixelFromCoordinate(t):null;if(g){var y=new Map;e.forEachFeatureAtPixel(g,(r,a)=>{var i=r.get("mapbox-layer");if(n.has(null==i?void 0:i.id)){var d=((e,t,r)=>{var n=e.getType(),a=e.getFlatCoordinates(),o=null,i=null;if("Point"===n){var l=J(t,a);l<=r&&(o={type:"vertex",coord:[a[0],a[1]],distSq:l})}else if("LineString"===n)({vertex:o,edge:i}=ae(a,0,a.length,t,r,!1));else if("Polygon"===n||"MultiLineString"===n){var d=e.getEnds(),s=0,c="Polygon"===n;for(var u of d){var v=ae(a,s,u,t,r,c);o=Q(o,v.vertex),i=Q(i,v.edge),s=u}}return[o,i].filter(Boolean)})(r,t,l);if(d.length){y.has(a)||y.set(a,((e,t)=>{var r,n=e.getSource(),a=null==n?void 0:n.getTileGrid();if(!a)return null;var o=t.getView().getProjection(),i=null!==(r=n.getProjection())&&void 0!==r?r:o,l=a.getZForResolution(t.getView().getResolution(),0);return{tileGrid:a,viewProj:o,sourceProj:i,zoom:l}})(a,e));var c=y.get(a);s=((e,t,r)=>{var n=e;for(var a of t)ve(a,r.mapboxLayer),pe(de({candidate:a},r))||(n=Q(n,a));return n})(s,d,{cursorCoord:t,mapboxLayer:i,boundaryState:c,map:e,vtLayers:p,resolution:o})}}},{hitTolerance:r,layerFilter:e=>p.includes(e)})}}return s?{type:s.type,coord:s.coord}:null},setLayers:o}},ye=e=>(t,r)=>{var n=r.context,[a,o]=t;n.beginPath(),n.arc(a,o,10*r.pixelRatio,0,2*Math.PI),n.fillStyle=e,n.fill()},me=e=>({vertex:new O({renderer:ye(e.snapVertex)}),edge:new O({renderer:ye(e.snapEdge)})}),he=new Set(["pointermove","pointerdrag","pointerdown","pointerup","singleclick","click"]),xe=(e,t,r,n)=>{var a=new D({handleEvent:o=>(a.getActive()&&((e,t,r,n,a)=>{var{type:o}=e;if("pointerout"!==o&&"pointerleave"!==o){if(he.has(o)){var i=t.query(e.coordinate,n);i&&(e.coordinate=i.coord.slice()),"pointermove"===o&&a()?i?r.show(i.coord,i.type):r.hide():"pointerdrag"===o&&r.hide()}}else r.hide()})(o,e,t,r,n),!0)});return a},fe=(e,t,a,o)=>{if(null==t||!t.length)return null;var i=ge(e,t),l=((e,t)=>{var a=me(t),o=new n,i=new r({source:o,style:e=>{var t;return null!==(t=a[e.get("snapType")])&&void 0!==t?t:null},zIndex:200,updateWhileAnimating:!0,updateWhileInteracting:!0});e.addLayer(i);var l=new L,d=!1;return{show(e,t){l.setGeometry(new k(e)),l.set("snapType",t,!0),d?o.changed():(o.addFeature(l),d=!0)},hide(){d&&(o.clear(),d=!1)},updateColors(e){a=me(e),d&&o.changed()},remove(){o.clear(),e.removeLayer(i)}}})(e,a),d=!1,s=xe(i,l,o,()=>d);e.addInteraction(s),s.setActive(!1);var c=!1;return{snapRadius:o,apply(e){if(!c)return e;var t=i.query(e,o);return t?(l.show(t.coord,t.type),t.coord):(l.hide(),e)},hideIndicator(){l.hide()},setIndicatorActive(e){d=e,e||l.hide()},setActive(e){c=e,s.setActive(e),e||l.hide()},setSnapLayers(e){i.setLayers(null==e?t:e)},reattach(){e.removeInteraction(s),e.addInteraction(s)},updateColors(e){l.updateColors(e)},destroy(){e.removeInteraction(s),l.remove()}}},Se=(e,t)=>{var r=e.getPixelFromCoordinate(t);return r?{x:r[0],y:r[1]}:null},Ie=(e,t)=>Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2),we=(e,t,r,n)=>{var a=e.getPixelFromCoordinate(t);return a?e.getCoordinateFromPixel([a[0]+r,a[1]+n]):t},Te=4,Ve=e=>{var{drawInteraction:t,canFinish:r,geom:n,sketchCoords:a,coord:o,lastPlacedCoord:i}=e;if(i&&i[0]===o[0]&&i[1]===o[1])return null!=r&&r()&&t.finishDrawing(),{handled:!0,lastPlacedCoord:null};var l=t.getMap();if(((e,t,r,n)=>{if("Polygon"!==n||r.length<Te)return!1;var a=Se(e,t),o=Se(e,r[0]);return!(!a||!o)&&Ie(a,o)<12})(l,o,a,n.getType()))return t.finishDrawing(),{handled:!0,lastPlacedCoord:i};var d=B(n);if(d){var s=l.getPixelFromCoordinate(d),c=l.getPixelFromCoordinate(o);if(s&&c){var u=s[0]-c[0],v=s[1]-c[1];if(u*u+v*v<4)return{handled:!0,lastPlacedCoord:o}}}return{handled:!1,lastPlacedCoord:i}},Ce=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),Pe=(e,t)=>{e&&(["touch","keyboard"].includes(t)?e.fixAtCenter():e.hide())},be=e=>{var t,{drawInteraction:r,options:n}=e,{container:a,addVertexButtonId:o,mapProvider:i,snap:l,onUndo:d,canFinish:s,canPlace:c,crossHair:u}=n,v=null!==(t=n.interfaceType)&&void 0!==t?t:"mouse",p=()=>v,g=(e=>{var{drawInteraction:t,mapProvider:r,snap:n,canFinish:a,canPlace:o,getInterfaceType:i}=e,l=null,d=null,s=function(){l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,d=null};t.on("drawstart",e=>s(e.feature)),t.on("drawend",()=>s()),t.on("drawabort",()=>s());var c=()=>{var e=r.getCenter();return"mouse"!==i()&&n?n.apply(e):e};return{placeVertex:()=>{var e=c();if(null==n||n.hideIndicator(),l){var r=l.getGeometry(),i=r.getCoordinates(),s="Polygon"===r.getType()?i[0]||[]:i,u=Ve({drawInteraction:t,canFinish:a,geom:r,sketchCoords:s,coord:e,lastPlacedCoord:d});if(d=u.lastPlacedCoord,u.handled)return}o&&!o(e)||(t.appendCoordinates([e]),d=e)},updateRubberbanding:()=>{if(l){var e=l.getGeometry();e.getCoordinates().length&&((e,t)=>{if("LineString"===e.getType()){var r=[...e.getCoordinates()];r[r.length-1]=t,e.setCoordinates(r)}else if("Polygon"===e.getType()){var n=e.getCoordinates().map((e,r)=>{if(0!==r)return e;var n=[...e];return n[n.length-1]=t,n});e.setCoordinates(n)}})(e,c())}else"mouse"!==i()&&n&&n.apply(r.getCenter())},clearLastCoord(){d=null}}})({drawInteraction:r,mapProvider:i,snap:l,canFinish:s,canPlace:c,getInterfaceType:p}),y=r.getMap(),m=null==y?void 0:y.getView(),h=(e=>{var{container:t,addVertexButtonId:r,olView:n,onUndo:a,getInterfaceType:o,setInterfaceType:i,clearLastCoord:l,updateRubberbanding:d,placeVertex:s}=e,c=()=>{"mouse"!==o()&&d()};null==n||n.on("change:center",c);var u=e=>{t.contains(document.activeElement)&&(Ce.has(e.key)?i("keyboard"):("Enter"===e.key&&(e.preventDefault(),i("keyboard"),s()),"z"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),null==a||a())))},v=e=>{r&&e.target.closest("#".concat(r))&&s()},p=e=>{"touch"!==e.pointerType&&(i("mouse"),l())},g=()=>{i("touch")},y=()=>{"mouse"!==o()&&d()};return globalThis.addEventListener("keydown",u),globalThis.addEventListener("click",v),t.addEventListener("pointerdown",p),t.addEventListener("touchstart",g,{passive:!0}),t.addEventListener("pointermove",y),{destroy(){null==n||n.un("change:center",c),globalThis.removeEventListener("keydown",u),globalThis.removeEventListener("click",v),t.removeEventListener("pointerdown",p),t.removeEventListener("touchstart",g),t.removeEventListener("pointermove",y)}}})({container:a,addVertexButtonId:o,olView:m,onUndo:d,getInterfaceType:p,setInterfaceType:e=>{v=e,Pe(u,e)},clearLastCoord:g.clearLastCoord,updateRubberbanding:g.updateRubberbanding,placeVertex:g.placeVertex});Pe(u,v);var x=()=>{"mouse"!==v&&null!=m&&m.getAnimating()&&g.updateRubberbanding()};return null==y||y.on("postrender",x),{getInterfaceType:p,setInterfaceType(e){v=e,Pe(u,e),"mouse"!==e&&g.updateRubberbanding()},destroy(){h.destroy(),null==y||y.un("postrender",x)}}},_e="styleschanged",Ee=(e,t)=>!!t&&U(t.getGeometry()).length>=w[e],Le=(e,t,r,n)=>a=>{if(!j(a))return!1;var o=r();if(!n(a.coordinate))return!1;if(!o||Ee(t,o))return!0;var i=B(o.getGeometry());if(!i)return!0;var l=e.getPixelFromCoordinate(i);if(!l)return!0;var d=a.pixel[0]-l[0],s=a.pixel[1]-l[1];return d*d+s*s>4},ke={Polygon:2,LineString:1},Oe=(e,t)=>{var{manager:r,featureId:n,properties:a,onStart:o,onSketchChange:i}=t;e.on("drawstart",e=>{o(e.feature),e.feature.getGeometry().on("change",i)}),e.on("drawend",e=>((e,t,r,n)=>{t.setId(String(r)),t.setProperties(n),e.store.source.addFeature(t),e.emit(I.CREATE,e.store.toGeoJSON(t))})(r,e.feature,n,a)),e.on("drawabort",()=>{r.emit(I.CANCEL)})},De=e=>{var{map:t,manager:r,options:n}=e,{geometryType:a,featureId:l,properties:d={}}=n,s=null,c=!1,u=r.styles.createSketchStyle(a),{updateVertexCount:v,resetCount:p,emitUndoValidation:g}=((e,t)=>{var r=0,n=(r,n)=>{setTimeout(()=>{var a,o,i,l,d,s,c=t();c&&e.emit(I.GEOMETRY_CHANGE,{feature:(a=e.store,o=c,i=a.toGeoJSON(o),l=i.geometry.type,d=ke[l],s=("Polygon"===l?i.geometry.coordinates[0]:i.geometry.coordinates).slice(0,-d),{type:"Feature",geometry:"Polygon"===l?{type:"Polygon",coordinates:[s]}:{type:"LineString",coordinates:s},properties:i.properties}),phase:r,vertexIndex:n})},0)};return{resetCount:()=>{r=0},updateVertexCount:()=>{var a=t();if(a){var o=U(a.getGeometry()).length;e.emit(I.VERTEX_CHANGE,{numVertices:o}),o>r&&n("commit-add",o-1),r=o}},emitUndoValidation:()=>{var e=t();e&&n("commit-delete",U(e.getGeometry()).length)}}})(r,()=>s),y=(e=>{var{manager:t,geometryType:r,getSketch:n}=e;return e=>{var a=n(),o=T({placed:a?U(a.getGeometry()):[],point:e,geometryType:r,onGeometryChange:t._geometryValidator});return o.valid||t.emit(I.PLACEMENT_BLOCKED,o.blocked),o.valid}})({manager:r,geometryType:a,getSketch:()=>s}),m=new F({type:a,style:e=>u(e),stopClick:!0,snapTolerance:S.snapRadius,condition:Le(t,a,()=>s,y),finishCondition:()=>!1!==r._geometryValid});t.addInteraction(m);var h=o({onChange:e=>{c=e,u=r.styles.createSketchStyle(a,c),m.overlay_.changed()}}),x=i({onStrokeChange:(e,t)=>h.set(e,t),onPlaceChange:(e,t)=>r.emit(I.CAN_PLACE_CHANGE,{canPlace:!e,reason:t})}),f=V[a],w=()=>{if(s){var{feature:e,numVertices:t}=((e,t)=>{var r,n=t.getGeometry(),a=n.getCoordinates(),o="Polygon"===e?null!==(r=a[0])&&void 0!==r?r:[]:a;return{feature:{type:"Feature",geometry:"Polygon"===e?{type:"Polygon",coordinates:[o]}:{type:"LineString",coordinates:o}},numVertices:U(n).length}})(a,s);x.update({feature:e,context:{mode:f},numVertices:t,onGeometryChange:r._geometryValidator})}},C=()=>{u=r.styles.createSketchStyle(a,c),m.overlay_.changed()};r.on(_e,C),m.overlay_.updateWhileAnimating_=!0,Oe(m,{manager:r,featureId:l,properties:d,onStart:e=>{s=e,p()},onSketchChange:()=>{v(),w()}});var P=(e=>{var{drawInteraction:t,options:r,geometryType:n,getSketch:a,updateVertexCount:o,emitUndoValidation:i,canPlaceVertex:l}=e;return be({drawInteraction:t,options:{container:r.container,interfaceType:r.interfaceType,addVertexButtonId:r.addVertexButtonId,mapProvider:r.mapProvider,snap:r.snap,crossHair:r.crossHair,onUndo:()=>{t.removeLastPoint(),o(),i()},canFinish:()=>Ee(n,a()),canPlace:l}})})({drawInteraction:m,options:n,geometryType:a,getSketch:()=>s,updateVertexCount:v,emitUndoValidation:g,canPlaceVertex:y});return(e=>{var{map:t,manager:r,drawInteraction:n,input:a,geometryType:o,getSketch:i,updateVertexCount:l,emitUndoValidation:d,onStylesChanged:s,clearSketch:c,setInvalid:u,liveStroke:v,liveDrawChecks:p}=e;return{done(){Ee(o,i())&&n.finishDrawing()},cancel(){n.abortDrawing()},undo(){n.removeLastPoint(),l(),d()},setInvalid:u,setInterfaceType(e){a.setInterfaceType(e)},setDrawingPreviewProperty(e,t){var r=i();r&&(r.set(e,t),n.overlay_.changed())},destroy(){v.destroy(),p.destroy(),r.off(_e,s),r.emit(I.INTERFACE_TYPE_CHANGE,{interfaceType:a.getInterfaceType()}),a.destroy(),t.removeInteraction(n),c()}}})({map:t,manager:r,drawInteraction:m,input:P,geometryType:a,getSketch:()=>s,updateVertexCount:v,emitUndoValidation:g,onStylesChanged:C,clearSketch:()=>{s=null},setInvalid:e=>h.set(e),liveStroke:h,liveDrawChecks:x})},Fe=e=>{if(null==e||!e.coordinates)return[];switch(e.type){case"LineString":return e.coordinates;case"Polygon":return e.coordinates.flatMap(e=>e.slice(0,-1));case"MultiLineString":return e.coordinates.flat(1);case"MultiPolygon":return e.coordinates.flatMap(e=>e.flatMap(e=>e.slice(0,-1)));default:return[]}},je=e=>{if(null==e||!e.coordinates)return[];var t=[],r=0;switch(e.type){case"LineString":t.push({start:0,length:e.coordinates.length,path:[],closed:!1});break;case"Polygon":e.coordinates.forEach((e,n)=>{var a=e.length-1;t.push({start:r,length:a,path:[n],closed:!0}),r+=a});break;case"MultiLineString":e.coordinates.forEach((e,n)=>{t.push({start:r,length:e.length,path:[n],closed:!1}),r+=e.length});break;case"MultiPolygon":e.coordinates.forEach((e,n)=>{e.forEach((e,a)=>{var o=e.length-1;t.push({start:r,length:o,path:[n,a],closed:!0}),r+=o})})}return t},Me=(e,t)=>{for(var r of e)if(t>=r.start&&t<r.start+r.length)return{segment:r,localIdx:t-r.start};return null},Ae=(e,t)=>{var r=e.coordinates;for(var n of t)r=r[n];return r},Ge=e=>{var t=Fe(e),r=je(e);if(!t.length||!r.length)return[];var n=[];for(var a of r)for(var o=a.closed?a.length:a.length-1,i=0;i<o;i++){var l=a.start+i,d=a.start+(i+1)%a.length,[s,c]=t[l],[u,v]=t[d];n.push([(s+u)/2,(c+v)/2])}return n},Re=(e,t)=>{var a=new n,o=new r({source:a,zIndex:103});e.addLayer(o);return{update(e){if(a.clear(),!(e.selectedVertexIndex<0)){var{coord:r,style:n}=(e=>{var{selectedVertexIndex:r,selectedVertexType:n,vertices:a,midpoints:o}=e,i=t();return"vertex"===n?{coord:a[r],style:i.selectedVertexStyle}:"midpoint"===n?{coord:o[r-a.length],style:i.selectedMidpointStyle}:{coord:null,style:null}})(e);if(r){var o=new L({geometry:new k(r)});o.setStyle(n),a.addFeature(o)}}},remove(){a.clear(),e.removeLayer(o)}}},He=e=>{var{map:t,manager:r,store:n,olFeature:a,interfaceType:o,layers:i}=e,{vertexLayer:l,midpointLayer:d,activeLayer:s}=i,c={olFeature:a,selectedVertexIndex:-1,selectedVertexType:null,vertices:[],midpoints:[],interfaceType:null!=o?o:"mouse"},u={onDeselect:null,onUpdate:null},v=()=>{var e=a.getGeometry();return{type:e.getType(),coordinates:e.getCoordinates()}},p=()=>((e,t)=>{var r,{vertexLayer:n,midpointLayer:a,activeLayer:o,manager:i,hooks:l}=t;n.setSelected("vertex"===e.selectedVertexType?e.selectedVertexIndex:-1),a.setSelected("midpoint"===e.selectedVertexType?e.selectedVertexIndex-e.vertices.length:-1),e.selectedVertexIndex<0&&(null===(r=l.onDeselect)||void 0===r||r.call(l)),o.update(e),i.emit(I.VERTEX_SELECTION,{index:"vertex"===e.selectedVertexType?e.selectedVertexIndex:-1,numVertices:e.vertices.length})})(c,{vertexLayer:l,midpointLayer:d,activeLayer:s,manager:r,hooks:u}),g=()=>{var e=v();c.vertices=Fe(e),c.midpoints=Ge(e),d.update(e),l.update(e),s.update(c)},y=((e,t,r)=>(n,a)=>{n&&setTimeout(()=>{e.emit(I.GEOMETRY_CHANGE,{feature:t.toGeoJSON(r),phase:n,vertexIndex:a})},0)})(r,n,a),m=()=>g();return a.getGeometry().on("change",m),{state:c,getState:()=>c,setState:e=>{var r,n;Object.assign(c,e),void 0!==e.selectedVertexIndex&&p(),void 0!==e.vertices&&(n=v(),d.update(n),l.update(n),c.midpoints=d.getCoords(),s.update(c),null===(r=u.onUpdate)||void 0===r||r.call(u),t.render())},syncGeom:()=>{g(),r.emit(I.VERTEX_CHANGE,{numVertices:c.vertices.length}),r.emit(I.UPDATE,n.toGeoJSON(a))},emitGeometryValidation:y,updateLayersFromGeom:g,setHooks:e=>{var{onDeselect:t,onUpdate:r}=e;return Object.assign(u,{onDeselect:t,onUpdate:r})},destroy(){a.getGeometry().un("change",m)}}},Ne=function(e,t,r,n){var a,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:12;return null!==(a=function(e,t,r){var n=-1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:12;return t.forEach((t,o)=>{var i=Se(e,t);if(i){var l=Ie(i,r);l<a&&(a=l,n=o)}}),n>=0?{index:n,type:"vertex"}:null}(e,t,n,o))&&void 0!==a?a:function(e,t,r,n){var a=-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:12;return t.forEach((t,n)=>{var i=Se(e,t);if(i){var l=Ie(i,r);l<o&&(o=l,a=n)}}),a>=0?{index:n+a,type:"midpoint"}:null}(e,r,n,t.length,o)},Ue=e=>{var{map:t,olFeature:r,getState:n,onModifyEnd:a}=e,o=(e=>{var{map:t,getState:r}=e;return e=>{var{interfaceType:n,vertices:a,midpoints:o}=r();if("touch"===n)return!1;var i=t.getEventPixel(e.originalEvent);return null!==Ne(t,a,o,{x:i[0],y:i[1]})}})({map:t,getState:n}),i=new M({features:new A([r]),style:()=>[],pixelTolerance:12,condition:o});t.addInteraction(i);var l=null;return i.on("modifystart",()=>{"touch"!==n().interfaceType&&(l=n().vertices.map(e=>[...e]))}),i.on("modifyend",()=>{if("touch"!==n().interfaceType){var e=l;l=null,a(e)}}),{destroy(){t.removeInteraction(i)}}},Be=(e,t,r,n)=>{var a=r-n,o=t[a];if(!o)return null;var i=e.getGeometry(),l={type:i.getType(),coordinates:i.getCoordinates()},d=je(l),s=0;for(var c of d){var u=c.closed?c.length:c.length-1;if(a<s+u){var v=a-s+1,p=c.start+v;return Ae(l,c.path).splice(v,0,[...o]),i.setCoordinates(l.coordinates),{insertedIndex:p}}s+=u}return null},qe=(e,t,r)=>{var n=e.getGeometry(),a={type:n.getType(),coordinates:n.getCoordinates()},o=je(a),i=Me(o,t);if(i){var l=Ae(a,i.segment.path);l[i.localIdx]=[...r],i.segment.closed&&0===i.localIdx&&(l[l.length-1]=[...r]),n.setCoordinates(a.coordinates)}};function Ye(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 ze(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Ye(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ye(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var Ke=(e,t)=>{var{getState:r,onVertexMoved:n,snap:a,drag:o}=t;if(null==o.dragStartIndex)return((e,t)=>{var{map:r,getState:n,onTap:a,drag:o}=t;if(o.tapStart&&!o.tapStart.onTarget&&0!==e.changedTouches.length){var i=e.changedTouches[0],l=Date.now()-o.tapStart.time;if(Math.hypot(i.clientX-o.tapStart.x,i.clientY-o.tapStart.y)<10&&l<400){var d=r.getEventPixel({clientX:i.clientX,clientY:i.clientY}),s=n();null==a||a(Ne(r,s.vertices,s.midpoints,{x:d[0],y:d[1]},24)),e.preventDefault()}}})(e,t),void(o.tapStart=null);o.tapStart=null;var{vertices:i}=r();i[o.dragStartIndex]&&o.dragStartCoord&&n({vertexIndex:o.dragStartIndex,previousCoord:o.dragStartCoord}),null==a||a.hideIndicator(),o.dragStartCoord=null,o.dragStartIndex=null,o.vertexTouchDelta=null,o.targetTouchDelta=null,e.preventDefault()},Xe=e=>{var{container:t}=e,r={dragStartCoord:null,dragStartIndex:null,vertexTouchDelta:null,targetTouchDelta:null,tapStart:null},n=ze(ze({},e),{},{drag:r}),a=e=>((e,t)=>{var{map:r,targetEl:n,cssToOl:a,getState:o,drag:i}=t,l=e.touches[0],d=u(e.target);if(i.tapStart={x:l.clientX,y:l.clientY,time:Date.now(),onTarget:d},d){var{selectedVertexIndex:s,vertices:c}=o(),v=c[s];if(v){var p=r.getEventPixel({clientX:l.clientX,clientY:l.clientY}),g=Se(r,v),y=getComputedStyle(n),m=a({x:Number.parseFloat(y.left),y:Number.parseFloat(y.top)});i.dragStartCoord=[...v],i.dragStartIndex=s,i.vertexTouchDelta={x:p[0]-g.x,y:p[1]-g.y},i.targetTouchDelta={x:p[0]-m.x,y:p[1]-m.y},e.preventDefault()}}})(e,n),o=e=>((e,t)=>{var{map:r,targetEl:n,olToCSS:a,getState:o,setState:i,snap:l,drag:d}=t;if(u(e.target)&&null!=d.dragStartIndex){e.preventDefault();var s=r.getEventPixel({clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}),v=((e,t)=>e.getCoordinateFromPixel([t.x,t.y]))(r,{x:s[0]-d.vertexTouchDelta.x,y:s[1]-d.vertexTouchDelta.y}),p=l?l.apply(v):v;null==l||l.hideIndicator();var{olFeature:g,vertices:y}=o();g&&(qe(g,d.dragStartIndex,p),i({vertices:y.map((e,t)=>t===d.dragStartIndex?p:e)}),c(n,a({x:s[0]-d.targetTouchDelta.x,y:s[1]-d.targetTouchDelta.y})))}})(e,n),i=e=>Ke(e,n);return t.addEventListener("touchstart",a,{passive:!1}),t.addEventListener("touchmove",o,{passive:!1}),t.addEventListener("touchend",i,{passive:!1}),{isDragging:()=>null!=r.dragStartIndex,destroy(){t.removeEventListener("touchstart",a),t.removeEventListener("touchmove",o),t.removeEventListener("touchend",i)}}},We=e=>{var{map:t,snap:r,getState:n,setState:a,onInserted:o,onVertexMoved:i}=e,l={start:null,index:null},d=(e,o)=>{var{selectedVertexIndex:i,vertices:l,olFeature:d}=n();if(!d||i<0||!l[i])return null;var s=l[i],c=we(t,s,e,o),u=r?r.apply(c):c;null==r||r.hideIndicator();var v=((e,t,r,n,a,o,i)=>{if(!e)return a;var l=[n[0]-r[0],n[1]-r[1]],d=[a[0]-r[0],a[1]-r[1]],s=l[0]**2+l[1]**2;if(s>0&&(d[0]*l[0]+d[1]*l[1])/s<.5){var c=e.snapRadius+1;return we(t,r,0===o?0:Math.sign(o)*c,0===i?0:Math.sign(i)*c)}return a})(r,t,s,c,u,e,o);return qe(d,i,v),a({vertices:l.map((e,t)=>t===i?v:e)}),{previousCoord:s,vertexIndex:i}};return{nudge:e=>{var{selectedVertexIndex:i,selectedVertexType:s,vertices:c,midpoints:u,olFeature:v}=n();if(v){var p=e.shiftKey?C.nudgeAmount:C.stepAmount,g={ArrowUp:[0,-p],ArrowDown:[0,p],ArrowLeft:[-p,0],ArrowRight:[p,0]},[y,m]=g[e.key];"midpoint"!==s?i<0||!c[i]||(l.start||(l.start=[...c[i]],l.index=i),d(y,m)):((e,i,d,s,c,u)=>{var v=Be(e,i,d,s.length);if(v){o({insertedIndex:v.insertedIndex});var p=n().vertices,g=p[v.insertedIndex];if(g){l.start=[...g],l.index=v.insertedIndex;var y=we(t,g,c,u),m=r?r.apply(y):y;qe(e,v.insertedIndex,m),a({selectedVertexIndex:v.insertedIndex,selectedVertexType:"vertex",vertices:p.map((e,t)=>t===v.insertedIndex?m:e)})}}})(v,u,i,c,y,m)}},keyMove:l,nudgeByDelta:(e,t,r)=>{var n=r?C.stepAmount:C.nudgeAmount,a=d(e*n,t*n);a&&i({vertexIndex:a.vertexIndex,previousCoord:a.previousCoord})}}},Je=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),Ze=new Set(["INPUT","TEXTAREA","BUTTON","SELECT","A"]),Qe=e=>{var{map:t,getState:r,setState:n,nudge:a,keyMove:o,onUndo:i,onKeyboardActive:l,isFocused:d}=e,s=e=>{e.altKey?(e.preventDefault(),e.stopPropagation(),((e,t,r,n)=>{var{selectedVertexIndex:a,vertices:o,midpoints:i}=r();if(o.length){var l,d=[...o,...i].map(e=>Se(t,e)).filter(Boolean).map(e=>[e.x,e.y]),s=a>=0?d[a]:(l=Se(t,t.getView().getCenter()))?[l.x,l.y]:null;if(s){var c=P(s,d,e);n({selectedVertexIndex:c,selectedVertexType:c<o.length?"vertex":"midpoint"})}}})(e.key,t,r,n)):r().selectedVertexIndex>=0&&(e.preventDefault(),e.stopPropagation(),a(e))},c=e=>{if(null==l||l()," "===e.key)e.preventDefault(),r().selectedVertexIndex<0&&((e,t,r)=>{var{vertices:n,midpoints:a}=t();if(n.length){var o=Se(e,e.getView().getCenter());if(o){var i=[...n.map(t=>Se(e,t)),...a.map(t=>Se(e,t))].filter(Boolean).map(e=>[e.x,e.y]),l=P([o.x,o.y],i,void 0);r({selectedVertexIndex:l,selectedVertexType:l<n.length?"vertex":"midpoint"})}}})(t,r,n);else if(Je.has(e.key))s(e);else if("z"===e.key&&(e.metaKey||e.ctrlKey)){var a,o=null===(a=document.activeElement)||void 0===a?void 0:a.tagName;Ze.has(o)||(e.preventDefault(),e.stopPropagation(),i())}};return e=>{d()||("Escape"===e.key&&r().selectedVertexIndex>=0?(e.preventDefault(),o.start=null,o.index=null,n({selectedVertexIndex:-1,selectedVertexType:null})):c(e))}},$e=e=>{var t,{map:r,snap:n,getState:a,setState:o,onVertexMoved:i,onInserted:l,onDeleted:d,onUndo:s,onKeyboardActive:c}=e,{nudge:u,keyMove:v,nudgeByDelta:p}=We({map:r,snap:n,getState:a,setState:o,onInserted:l,onVertexMoved:i}),g=null!==(t=r.getViewport().closest('[role="application"]'))&&void 0!==t?t:r.getViewport(),y=()=>(e=>{var t=document.activeElement;return!(!t||t===document.body)&&!e.contains(t)&&(Ze.has(t.tagName)||t.isContentEditable||t.hasAttribute("tabindex"))})(g),m=Qe({map:r,getState:a,setState:o,nudge:u,keyMove:v,onUndo:s,onKeyboardActive:c,isFocused:y}),h=(e=>{var{snap:t,keyMove:r,onVertexMoved:n,onDeleted:a,isFocused:o}=e;return e=>{o()||(Je.has(e.key)&&r.start&&null!=r.index&&(null==t||t.hideIndicator(),n({vertexIndex:r.index,previousCoord:r.start}),r.start=null,r.index=null),"Delete"===e.key&&a())}})({snap:n,keyMove:v,onVertexMoved:i,onDeleted:d,isFocused:y});return globalThis.addEventListener("keydown",m,{capture:!0}),globalThis.addEventListener("keyup",h,{capture:!0}),{nudgeByDelta:p,destroy(){globalThis.removeEventListener("keydown",m,{capture:!0}),globalThis.removeEventListener("keyup",h,{capture:!0})}}},et=(e,t)=>{switch(t.type){case"move_vertex":return((e,t)=>{var{vertexIndex:r,previousCoord:n}=t,a=e.getGeometry(),o={type:a.getType(),coordinates:a.getCoordinates()},i=je(o),l=Me(i,r);if(!l)return-1;var d=Ae(o,l.segment.path);return d[l.localIdx]=[...n],l.segment.closed&&0===l.localIdx&&(d[d.length-1]=[...n]),a.setCoordinates(o.coordinates),r})(e,t);case"insert_vertex":return((e,t)=>{var{vertexIndex:r}=t,n=e.getGeometry(),a={type:n.getType(),coordinates:n.getCoordinates()},o=je(a),i=Me(o,r);if(i){var l=Ae(a,i.segment.path);l.splice(i.localIdx,1),i.segment.closed&&(l[l.length-1]=[...l[0]]),n.setCoordinates(a.coordinates)}return-1})(e,t);case"delete_vertex":return((e,t)=>{var{vertexIndex:r,deletedCoord:n}=t,a=e.getGeometry(),o={type:a.getType(),coordinates:a.getCoordinates()},i=je(o),l=Me(i,r);if(!l)for(var d of i)if(r===d.start+d.length){l={segment:d,localIdx:d.length};break}if(!l)return-1;var s=Ae(o,l.segment.path);return s.splice(l.localIdx,0,[...n]),l.segment.closed&&(s[s.length-1]=[...s[0]]),a.setCoordinates(o.coordinates),r})(e,t);default:return-1}},tt="touch",rt="vertex",nt="commit-move",at="commit-insert",ot="commit-delete",it={move_vertex:nt,insert_vertex:at,delete_vertex:ot},lt={move_vertex:nt,insert_vertex:ot,delete_vertex:at},dt=e=>{var{olFeature:t,undoStack:r,selection:n,getTouchHandler:a}=e,{state:o,setState:i,syncGeom:l,emitGeometryValidation:d}=n;return{doDeleteVertex:()=>{if(!(o.selectedVertexType!==rt||o.selectedVertexIndex<0)){var e=((e,t)=>{var r=e.getGeometry(),n={type:r.getType(),coordinates:r.getCoordinates()},a=Fe(n),o=je(n),i=Me(o,t);if(!i)return null;var{segment:l}=i,d=l.closed?w.Polygon:w.LineString;if(l.length<=d)return null;var s=[...a[t]],c=Ae(n,l.path);return c.splice(i.localIdx,1),l.closed&&(c[c.length-1]=[...c[0]]),r.setCoordinates(n.coordinates),{deletedIndex:t,deletedCoord:s}})(t,o.selectedVertexIndex);e&&(r.push({type:"delete_vertex",vertexIndex:e.deletedIndex,deletedCoord:e.deletedCoord}),l(),d(ot,e.deletedIndex),i({selectedVertexIndex:-1,selectedVertexType:null}))}},doUndo:()=>{var e=r.pop();if(e){var n=o.selectedVertexIndex,s=et(t,e);l(),d(lt[e.type],s);var c=n>=0?s:-1;i({selectedVertexIndex:c,selectedVertexType:c>=0?rt:null}),n>=0&&c>=0&&o.interfaceType===tt&&a().updateTargetPosition()}}}},st=e=>{var{map:t,container:r,manager:n,snap:a,olFeature:o,undoStack:i,selection:u}=e,{state:v,getState:p,setState:g,syncGeom:y,emitGeometryValidation:m}=u,h=e=>g({selectedVertexIndex:e,selectedVertexType:rt}),x=(e=>{var{map:t,container:r,getState:n,setState:a,onVertexMoved:o,onTap:i,colors:u,snap:v}=e,p=l(r);d(p,u);var g={scale:1,ox:0,oy:0},y=e=>({x:e.x*g.scale+g.ox,y:e.y*g.scale+g.oy}),m=()=>{var e=t.getViewport(),n=e.getBoundingClientRect(),a=r.getBoundingClientRect(),o=e.offsetWidth>0?n.width/e.offsetWidth:1,i=r.offsetWidth>0?a.width/r.offsetWidth:1;Object.assign(g,{scale:o/i,ox:(n.left-a.left)/i,oy:(n.top-a.top)/i})},h=Xe({container:r,map:t,targetEl:p,olToCSS:y,cssToOl:e=>({x:(e.x-g.ox)/g.scale,y:(e.y-g.oy)/g.scale}),getState:n,setState:a,onVertexMoved:o,onTap:i,snap:v}),x=()=>{var{selectedVertexIndex:e,vertices:r,interfaceType:a}=n();if(e<0||!r[e]||"touch"!==a)s(p);else{var o=Se(t,r[e]);o?c(p,y(o)):s(p)}},f=()=>{var{selectedVertexIndex:e,interfaceType:t}=n();e>=0&&!h.isDragging()&&"touch"===t&&x()};t.on("postrender",f);var S=()=>{m(),t.once("postrender",x)};return t.on("change:size",S),m(),{updateTargetPosition:x,updateColors(e){d(p,e)},hide(){s(p)},destroy(){t.un("change:size",S),t.un("postrender",f),h.destroy(),s(p)}}})({map:t,container:r,getState:p,setState:g,colors:n.colors,snap:a,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;i.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),y(),m(nt,t),h(t),x.updateTargetPosition()},onTap(e){if(e){if(e.type===rt)return h(e.index),void x.updateTargetPosition();var t=Be(o,v.midpoints,e.index,v.vertices.length);t&&(i.push({type:"insert_vertex",vertexIndex:t.insertedIndex}),y(),m(at,t.insertedIndex),h(t.insertedIndex),x.updateTargetPosition())}else g({selectedVertexIndex:-1,selectedVertexType:null})}});return u.setHooks({onDeselect:()=>x.hide(),onUpdate(){v.interfaceType===tt&&x.updateTargetPosition()}}),x},ct=e=>{var{map:t,manager:a,options:i}=e,{featureId:l,container:d,interfaceType:s,deleteVertexButtonId:c,snap:u}=i,{store:v,undoStack:p}=a,g=v.getOL(l);if(!g)return null;var y=g.getStyle(),m=((e,t)=>{var a=t,o=-1,i=new n,l=new r({source:i,style:e=>e.get("midpointIndex")===o?null:[a],zIndex:101});return e.addLayer(l),{update(e){i.clear();var t=Ge(e).map((e,t)=>{var r=new L({geometry:new k(e)});return r.set("midpointIndex",t),r});i.addFeatures(t)},setSelected(e){o=e,i.changed()},updateStyle(e){a=e,i.changed()},getCoords:()=>i.getFeatures().sort((e,t)=>e.get("midpointIndex")-t.get("midpointIndex")).map(e=>e.getGeometry().getCoordinates()),remove(){i.clear(),e.removeLayer(l)}}})(t,a.styles.midpointStyle),h=((e,t)=>{var a=t,o=-1,i=new n,l=new r({source:i,style:e=>e.get("vertexIndex")===o?null:[a],zIndex:102});return e.addLayer(l),{update(e){i.clear(),Fe(e).forEach((e,t)=>{var r=new L({geometry:new k(e)});r.set("vertexIndex",t),i.addFeature(r)})},setSelected(e){o=e,i.changed()},updateStyle(e){a=e,i.changed()},remove(){i.clear(),e.removeLayer(l)}}})(t,a.styles.vertexStyle),x=Re(t,()=>a.styles),f=He({map:t,manager:a,store:v,olFeature:g,interfaceType:s,layers:{vertexLayer:h,midpointLayer:m,activeLayer:x}}),{state:S,getState:w,setState:T,syncGeom:V,emitGeometryValidation:C}=f,P=Ue({map:t,olFeature:g,getState:w,onModifyEnd(e){V();var t=e&&((e,t)=>{if(t.length>e.length){var r=t.findIndex((t,r)=>{var n;return t[0]!==(null===(n=e[r])||void 0===n?void 0:n[0])});return{type:"insert_vertex",vertexIndex:Math.max(0,r)}}if(t.length===e.length){var n=t.findIndex((t,r)=>t[0]!==e[r][0]||t[1]!==e[r][1]);if(n>=0)return{type:"move_vertex",vertexIndex:n,previousCoord:e[n]}}return null})(e,S.vertices);t&&(p.push(t),C(it[t.type],t.vertexIndex),T({selectedVertexIndex:t.vertexIndex,selectedVertexType:rt}))}});V();var b={vertexLayer:h,midpointLayer:m,activeLayer:x},_=(e=>{var{map:t,manager:r,olFeature:n}=e,a=!1;n.setStyle(()=>a?r.styles.editFeatureStyleInvalid:r.styles.editFeatureStyle);var i=o({onChange:(e,n)=>{a=e,t.render(),r.emit(I.VALIDITY_CHANGE,{valid:!e,reason:n})}}),l=()=>{var e,t,a=n.getGeometry(),o=a.getType(),l=a.getCoordinates(),d="Polygon"===o?Math.max(0,(null!==(e=null===(t=l[0])||void 0===t?void 0:t.length)&&void 0!==e?e:1)-1):l.length;i.update({feature:{type:"Feature",geometry:{type:o,coordinates:l}},context:{mode:"edit_vertex"},numVertices:d,onGeometryChange:r._geometryValidator})};return n.getGeometry().on("change",l),{liveStroke:i,destroy(){n.getGeometry().un("change",l),i.destroy()}}})({map:t,manager:a,olFeature:g}),E=st({map:t,container:d,manager:a,snap:u,olFeature:g,undoStack:p,selection:f}),O=dt({olFeature:g,undoStack:p,selection:f,getTouchHandler:()=>E}),D=(e=>{var{map:t,container:r,snap:n,undoStack:a,selection:o,touchHandler:i,actions:l}=e,{state:d,getState:s,setState:c,syncGeom:u,emitGeometryValidation:v}=o;return $e({map:t,getState:s,setState:c,snap:n,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;a.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),u(),v(nt,t),c({selectedVertexIndex:t,selectedVertexType:rt})},onInserted(e){var{insertedIndex:t}=e;a.push({type:"insert_vertex",vertexIndex:t}),u(),v(at,t)},onDeleted:l.doDeleteVertex,onUndo:l.doUndo,onKeyboardActive(){"keyboard"!==d.interfaceType&&(d.interfaceType="keyboard",i.hide(),r.focus({preventScroll:!0}))}})})({map:t,container:d,snap:u,undoStack:p,selection:f,touchHandler:E,actions:O}),F=(e=>{var{map:t,container:r,getState:n,setState:a,touchHandler:o,deleteVertexButtonId:i,onDeleteVertex:l}=e,d=e=>{var{vertices:r,midpoints:a}=n(),o=t.getEventPixel(e);return Ne(t,r,a,{x:o[0],y:o[1]})},s=e=>{var t=n();if("touch"===e.pointerType)return t.interfaceType="touch",void o.updateTargetPosition();t.interfaceType="mouse";var r=d(e);"vertex"===(null==r?void 0:r.type)&&a({selectedVertexIndex:r.index,selectedVertexType:"vertex"})},c=e=>{if("touch"!==n().interfaceType){var t=d(e);"vertex"===(null==t?void 0:t.type)?a({selectedVertexIndex:t.index,selectedVertexType:"vertex"}):"midpoint"===(null==t?void 0:t.type)||a({selectedVertexIndex:-1,selectedVertexType:null})}},u=e=>{var t=n();"mouse"===e.pointerType&&"mouse"!==t.interfaceType&&(t.interfaceType="mouse",o.hide())},v=e=>{i&&e.target.closest("#".concat(i))&&l()};return r.addEventListener("pointerdown",s),r.addEventListener("pointerenter",u),r.addEventListener("pointermove",u),r.addEventListener("click",c),globalThis.addEventListener("click",v),{destroy(){r.removeEventListener("pointerdown",s),r.removeEventListener("pointerenter",u),r.removeEventListener("pointermove",u),r.removeEventListener("click",c),globalThis.removeEventListener("click",v)}}})({map:t,container:d,getState:w,setState:T,touchHandler:E,deleteVertexButtonId:c,onDeleteVertex:O.doDeleteVertex}),j=(e=>{var{map:t,manager:r,layers:n,selection:a,touchHandler:o,live:i}=e,{state:l}=a,d=e=>{i.liveStroke.refresh(),n.vertexLayer.updateStyle(e.vertexStyle),n.midpointLayer.updateStyle(e.midpointStyle),n.activeLayer.update(l),o.updateColors(r.colors)};r.on(_e,d);var s=()=>{l.interfaceType!==tt||l.selectedVertexIndex<0||t.once("postrender",()=>o.updateTargetPosition())};return t.on("change:size",s),{destroy(){r.off(_e,d),t.un("change:size",s)}}})({map:t,manager:a,layers:b,selection:f,touchHandler:E,live:_});return(e=>{var{manager:t,store:r,olFeature:n,originalFeatureStyle:a,selection:o,actions:i,parts:l}=e,{state:d}=o,{touchHandler:s}=l;return{setInterfaceType(e){e!==d.interfaceType&&(d.interfaceType=e,e===tt?s.updateTargetPosition():s.hide())},done(){t.emit(I.EDIT_FINISH,r.toGeoJSON(n))},setInvalid(e){l.live.liveStroke.set(e)},cancel(){},undo:i.doUndo,deleteVertex:i.doDeleteVertex,nudgeSelectedVertex:l.keyboardHandler.nudgeByDelta,destroy(){l.live.destroy(),n.setStyle(a),o.destroy(),l.mapSync.destroy(),l.pointerHandlers.destroy(),l.modify.destroy(),l.layers.activeLayer.remove(),l.layers.midpointLayer.remove(),l.layers.vertexLayer.remove(),s.destroy(),l.keyboardHandler.destroy()}}})({manager:a,store:v,olFeature:g,originalFeatureStyle:y,selection:f,actions:O,parts:{touchHandler:E,keyboardHandler:D,pointerHandlers:F,modify:P,mapSync:j,layers:b,live:_}})};function ut(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 vt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?ut(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ut(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}class pt{constructor(e){var t,n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._map=e,this._pluginConfig=a,this._mode="disabled",this._modeInstance=null,this._listeners=new Map,this.store=H(),this.undoStack=v(e=>this.emit(I.UNDO_CHANGE,e)),this.colors=p(null,a),this.styles=W(this.colors),this.snap=fe(e,null!==(t=a.snapLayers)&&void 0!==t?t:null,this.colors,null!==(n=a.snapRadius)&&void 0!==n?n:S.snapRadius),this._layer=new r({source:this.store.source,style:this.styles.createFeatureStyle(),zIndex:100}),this._layer.set("layerId","draw"),e.addLayer(this._layer)}setMapStyle(e){var t;this.colors=p(e,this._pluginConfig),this.styles=W(this.colors),this._layer.setStyle(this.styles.createFeatureStyle()),this.store.source.changed(),null===(t=this.snap)||void 0===t||t.updateColors(this.colors),this.emit(_e,this.styles)}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){var r;null===(r=this._listeners.get(e))||void 0===r||r.delete(t)}emit(e,t){var r=this._listeners.get(e);r&&Array.from(r).forEach(e=>e(t))}changeMode(e){var r=arguments,n=this;return t(function*(){var t,a,o,i=r.length>1&&void 0!==r[1]?r[1]:{};null===(t=n._modeInstance)||void 0===t||t.destroy(),n._modeInstance=null,n._mode=e;var l="draw_polygon"===e||"draw_line"===e||"edit_vertex"===e;null===(a=n.snap)||void 0===a||a.setIndicatorActive(l);var d=vt(vt({},i),{},{snap:n.snap});"draw_polygon"===e||"draw_line"===e?n._modeInstance=De({map:n._map,manager:n,options:d}):"edit_vertex"===e&&(n._modeInstance=ct({map:n._map,manager:n,options:d})),null===(o=n.snap)||void 0===o||o.reattach()})()}getMode(){return this._mode}done(){var e;null===(e=this._modeInstance)||void 0===e||e.done()}cancel(){var e;null===(e=this._modeInstance)||void 0===e||e.cancel(),this.changeMode("disabled")}undo(){var e;null===(e=this._modeInstance)||void 0===e||e.undo()}deleteVertex(){var e;null===(e=this._modeInstance)||void 0===e||e.deleteVertex()}nudgeSelectedVertex(e,t,r){var n,a;null===(n=this._modeInstance)||void 0===n||null===(a=n.nudgeSelectedVertex)||void 0===a||a.call(n,e,t,r)}setInvalid(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.setInvalid)||void 0===r||r.call(t,e)}setDrawingPreviewProperty(e,t){var r,n;null===(r=this._modeInstance)||void 0===r||null===(n=r.setDrawingPreviewProperty)||void 0===n||n.call(r,e,t)}setInterfaceType(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.setInterfaceType)||void 0===r||r.call(t,e),this.emit(I.INTERFACE_TYPE_CHANGE,{interfaceType:e})}get(e){return this.store.get(e)}add(e){return this.store.add(e)}delete(e){return this.store.remove(e)}deleteAll(){return this.store.clear()}remove(){var e,t;null===(e=this._modeInstance)||void 0===e||e.destroy(),this._modeInstance=null,null===(t=this.snap)||void 0===t||t.destroy(),this.snap=null,this.store.clear(),this._map.removeLayer(this._layer),this._listeners.clear()}}function gt(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 yt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?gt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):gt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}class mt{constructor(t,r){var n;e(this,"_snapEnabled",!1);var{manager:a,remove:o}=(e=>{var{mapProvider:t,events:r,eventBus:n,pluginConfig:a={},mapStyle:o=null}=e,{map:i}=t,l=new pt(i,a);o&&l.setMapStyle(o),t.draw=l;var d=e=>{var r;t.drawScale=null!==(r=b[e])&&void 0!==r?r:1};n.on(r.MAP_SET_SIZE,d);var s=e=>{l.setMapStyle(e)};return n.on(r.MAP_SET_STYLE,s),{manager:l,remove(){n.off(r.MAP_SET_SIZE,d),n.off(r.MAP_SET_STYLE,s),l.remove(),t.draw=null}}})({mapProvider:t,events:r.events,eventBus:r.eventBus,pluginConfig:null!==(n=r.pluginConfig)&&void 0!==n?n:{snapLayers:r.snapLayers},mapStyle:r.mapStyle});this._cleanupOLDraw=o,this._manager=a,this._mapProvider=t}changeMode(e){var t=yt(yt({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),{},{mapProvider:this._mapProvider});return"draw_polygon"===e&&(t.geometryType="Polygon"),"draw_line"===e&&(t.geometryType="LineString"),this._manager.changeMode(e,t)}getMode(){return this._manager.getMode()}setInterfaceType(e){this._manager.setInterfaceType(e)}done(){this._manager.undoStack.clear(),this._manager.done()}cancel(){this._manager.undoStack.clear(),this._manager.cancel()}undo(){this._manager.undo()}deleteVertex(){this._manager.deleteVertex()}nudgeSelectedVertex(e,t,r){this._manager.nudgeSelectedVertex(e,t,r)}setGeometryValid(e){this._manager._geometryValid=e}set _geometryValidator(e){this._manager._geometryValidator=e}get _geometryValidator(){return this._manager._geometryValidator}setInvalid(e){this._manager.setInvalid(e)}get(e){return this._manager.get(e)}add(e){return this._manager.add(e)}delete(e){return this._manager.delete(e)}deleteAll(){return this._manager.deleteAll()}setSnapEnabled(e){var t;this._snapEnabled=e,null===(t=this._manager.snap)||void 0===t||t.setActive(e)}setSnapLayers(e){var t,r=null==e?void 0:e.map(e=>"stroke-inactive.cold"===e?this._manager._layer:e);null===(t=this._manager.snap)||void 0===t||t.setSnapLayers(r)}isSnapEnabled(){return this._snapEnabled}setFeatureProperty(){}setDrawingPreviewProperty(e,t){this._manager.setDrawingPreviewProperty(e,t)}on(e,t){this._manager.on(e,t)}off(e,t){this._manager.off(e,t)}remove(){this._cleanupOLDraw()}}export{mt as OLDrawAdapter};
|
|
1
|
+
import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"ol/layer/Vector.js";import n from"ol/source/Vector.js";import o from"ol/format/GeoJSON.js";import{s as a,g as i,c as l,a as d,b as s,d as c,h as u,e as p,i as v,f as g,r as y}from"./im-draw-ml-adapter.js";import m from"ol/style/Style.js";import h from"ol/style/Fill.js";import x from"ol/style/Stroke.js";import f from"ol/style/Circle.js";import S from"ol/style/Icon.js";import I from"ol/geom/MultiPoint.js";import{S as T,T as w,A as P,M as C,a as V,x as b,K as _,s as E,v as L,t as k}from"./im-draw-plugin.js";import{transform as F}from"ol/proj.js";import O from"ol/layer/VectorTile.js";import D from"ol/Feature.js";import G from"ol/geom/Point.js";import{Style as A}from"ol/style.js";import j from"ol/interaction/Interaction.js";import M from"ol/interaction/Draw.js";import{noModifierKeys as R}from"ol/events/condition.js";import H from"ol/interaction/Modify.js";import N from"ol/Collection.js";import U from"@babel/runtime/helpers/objectWithoutProperties";import B from"ol/interaction/Pointer.js";import"preact/compat";var Y="EPSG:27700",z=new o({dataProjection:Y,featureProjection:Y}),q=()=>{var e=new n;return{source:e,getOL(t){var r;return null!==(r=e.getFeatureById(String(t)))&&void 0!==r?r:null},add(t){var r=this.getOL(t.id);r&&e.removeFeature(r);var n=z.readFeature(t);return e.addFeature(n),n},get(e){var t=this.getOL(e);return t?z.writeFeatureObject(t):null},remove(t){var r=Array.isArray(t)?t:[t];for(var n of r){var o=this.getOL(n);o&&e.removeFeature(o)}},clear(){e.clear()},toGeoJSON:e=>z.writeFeatureObject(e),fromGeoJSON:e=>z.readFeature(e)}},K={Polygon:2,LineString:1},X=e=>{var t,r=e.getType();return("Polygon"===r?null!==(t=e.getCoordinates()[0])&&void 0!==t?t:[]:e.getCoordinates()).slice(0,-K[r])},J=e=>{var t;return null!==(t=X(e).at(-1))&&void 0!==t?t:null},W=new Map,Z={outer:T.vertexHaloRadius+3,mid:T.vertexHaloRadius,inner:T.vertexRadius},Q={outer:T.midpointHaloRadius+3,mid:T.midpointHaloRadius,inner:T.midpointRadius},$=(e,t,r,n,o)=>{e.beginPath(),e.arc(t,r,n,0,2*Math.PI),e.fillStyle=o,e.fill()},ee=(e,t,r)=>{var{outer:n,mid:o,inner:a}=e;return(e,i)=>{var l=i.context,d=i.pixelRatio,[s,c]=e;l.save(),$(l,s,c,n*d,t.editActive),$(l,s,c,o*d,t.editHalo),$(l,s,c,a*d,t[r]),l.restore()}},te=e=>e.charAt(0).toUpperCase()+e.slice(1),re=e=>{var t=(e=>new m({image:new f({radius:T.vertexRadius+3,fill:new h({color:e.shapeFill}),stroke:new x({color:e.shapeStroke,width:2})})}))(e),r=new Map,n=function(e){var t=e[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"symbolImageId"],n=t&&(e=>W.get(e))(t);if(!n)return null;var o=a.getSymbolDef(e),[l,d]=i(e,o),s=e.symbolPixelRatio||1,c="".concat(t,"|").concat(l,"|").concat(d,"|").concat(s),u=r.get(c);return u||(u=new m({image:new S({img:n,anchor:[l,d],scale:1/s})}),r.set(c,u)),u};return{pointStyleFor:e=>{var r;return null!==(r=n(e.getProperties()))&&void 0!==r?r:t},selectedPointStyleFor:e=>{var r,o,a=e.getProperties();return null!==(r=null!==(o=n(a,"symbolSelectedImageId"))&&void 0!==o?o:n(a))&&void 0!==r?r:t}}},ne=e=>{var{vertexImage:t,vertexStyle:r,selectedVertexStyle:n}=(e=>{var t=new f({radius:T.vertexRadius,fill:new h({color:e.editVertex})});return{vertexImage:t,vertexStyle:new m({image:t}),selectedVertexStyle:new m({renderer:ee(Z,e,"editVertex")})}})(e),{midpointStyle:o,selectedMidpointStyle:a}=(e=>({midpointStyle:new m({image:new f({radius:T.midpointRadius,fill:new h({color:e.editMidpoint})})}),selectedMidpointStyle:new m({renderer:ee(Q,e,"editMidpoint")})}))(e),i=new m({stroke:new x({color:e.editStroke,width:2}),fill:new h({color:e.editFill})}),l=new m({stroke:new x({color:e.invalidStroke,width:2,lineDash:[2,4]})}),d=(e=>({valid:new m({stroke:new x({color:e.editStroke,width:2}),fill:new h({color:e.editFill})}),invalid:new m({stroke:new x({color:e.invalidStroke,width:2,lineDash:[2,4]})}),splitValid:new m({stroke:new x({color:e.splitValid,width:2})}),splitInvalid:new m({stroke:new x({color:e.splitInvalid,width:2,lineDash:[2,4]})})}))(e),s=new I([]),c=new m({image:t,geometry:e=>{var t=X(e.getGeometry());return t.length?(s.setCoordinates(t),s):null}}),{pointStyleFor:u,selectedPointStyleFor:p}=re(e);return{vertexStyle:r,selectedVertexStyle:n,midpointStyle:o,selectedMidpointStyle:a,editFeatureStyle:i,editFeatureStyleInvalid:l,selectedPointStyleFor:p,createSketchStyle:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r=>{var n=r.getGeometry().getType();if("Point"===n)return[];var o=r.get("splitter"),a=t?d.invalid:d.valid;return"valid"===o&&(a=d.splitValid),"invalid"===o&&(a=d.splitInvalid),n===e?[a,c]:[a]}},createFeatureStyle:()=>t=>{if("Point"===t.getGeometry().getType())return[u(t)];var r=t.getProperties(),n=e.mapStyleId,o=n&&r["stroke".concat(te(n))]||r.stroke||e.shapeStroke,a=n&&r["fill".concat(te(n))]||r.fill||e.shapeFill,i=r.strokeWidth||e.strokeWidth;return[new m({stroke:new x({color:o,width:i}),fill:new h({color:a})})]}}},oe=(e,t)=>{var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n},ae=(e,t,r)=>{var n=r[0]-t[0],o=r[1]-t[1],a=n*n+o*o;if(0===a)return[t[0],t[1]];var i=Math.max(0,Math.min(1,((e[0]-t[0])*n+(e[1]-t[1])*o)/a));return[t[0]+i*n,t[1]+i*o]},ie=(e,t)=>le(e,t)?t:e,le=(e,t)=>e?!!t&&("edge"===e.type&&"vertex"===t.type||("vertex"!==e.type||"edge"!==t.type)&&t.distSq<e.distSq):!!t,de=(e,t,r,n)=>{for(var o=null,a=n&&e.length>1?e.length-1:e.length,i=n?a:a-1,l=0;l<a;l++){var d=e[l],s=oe(t,d);s<=r&&(o=ie(o,{type:"vertex",coord:[d[0],d[1]],distSq:s}))}for(var c=0;c<i;c++){var u=e[c],p=e[(c+1)%a],v=ae(t,u,p),g=oe(t,v);g<=r&&(o=ie(o,{type:"edge",coord:v,distSq:g}))}return o},se=(e,t,r,n,o,a)=>{for(var i=null,l=0;l<n;l++){var d=t+2*l,s=t+(l+1)%r*2,c=[e[d],e[d+1]],u=[e[s],e[s+1]],p=ae(o,c,u),v=oe(o,p);v<=a&&(i=ie(i,{type:"edge",coord:p,distSq:v,seg:[c,u]}))}return i},ce=(e,t,r)=>[e>0||r?e>0?e-1:t-1:null,e<t-1||r?e<t-1?e+1:0:null],ue=(e,t,r,n,o,a)=>{for(var i=n===r,l=r=>null===r?null:[e[t+2*r],e[t+2*r+1]],d=null,s=0;s<r;s++){var c=l(s),u=oe(o,c);if(u<=a){var[p,v]=ce(s,r,i),g=[l(p),l(v)];d=ie(d,{type:"vertex",coord:c,distSq:u,adjacent:g})}}return d},pe=(e,t,r,n,o,a)=>{var i=(r-t)/2,l=a?i:i-1;return{vertex:ue(e,t,i,l,n,o),edge:se(e,t,i,l,n,o)}},ve={point:(e,t,r)=>{var n=e.getCoordinates(),o=oe(t,n);return o<=r?{type:"vertex",coord:[n[0],n[1]],distSq:o}:null},lineString:(e,t,r)=>de(e.getCoordinates(),t,r,!1),linearRing:(e,t,r)=>de(e.getCoordinates(),t,r,!0),polygon:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())n=ie(n,de(o,t,r,!0));return n},multiLineString:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())n=ie(n,de(o,t,r,!1));return n},multiPolygon:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())for(var a of o)n=ie(n,de(a,t,r,!0));return n}},ge=(e,t,r)=>{var n=e.getGeometry();if(!n)return null;var o=n.getType(),a=ve[o[0].toLowerCase()+o.slice(1)];return a?a(n,t,r):null};function ye(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 me(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?ye(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var he=(e,t,r)=>{if(!t||!r)return!1;var[n,o,a,i]=e.extent,l=(t,r,n)=>Math.min(Math.abs(t-r),Math.abs(t-n))<=e.band,d=Math.abs(t[0]-r[0])<=e.eps&&l(t[0],n,a),s=Math.abs(t[1]-r[1])<=e.eps&&l(t[1],o,i);return d||s},xe=(e,t)=>{var r,n=((e,t)=>{if(!e)return null;var{tileGrid:r,viewProj:n,sourceProj:o,zoom:a}=e,i=e=>e?F(e,n,o):null,l=i(t),d=r.getTileCoordForCoordAndZ(l,a),s=r.getTileCoordExtent(d),c=s[2]-s[0];return{toSource:i,anchor:l,extent:s,band:.0625*c,eps:c/4096*2}})(e,t.coord);if(!n)return!1;if("edge"===t.type){var[o,a]=t.seg;return he(n,n.toSource(o),n.toSource(a))}var[i,l]=null!==(r=t.adjacent)&&void 0!==r?r:[];return he(n,n.anchor,n.toSource(i))||he(n,n.anchor,n.toSource(l))},fe=()=>!0===globalThis.DEBUG_SNAP_VISIBILITY,Se=(e,t)=>{fe()&&console.log("[snap-candidate-found]",{type:e.type,layerId:null==t?void 0:t.id,layerType:null==t?void 0:t.type,coord:[e.coord[0].toFixed(2),e.coord[1].toFixed(2)],distSq:e.distSq.toFixed(2)})},Ie=e=>{var{candidate:t,cursorCoord:r,mapboxLayer:n,boundaryState:o,map:a,vtLayers:i,resolution:l}=e;return xe(o,t)?(fe()&&console.log("[snap-filtered] tile clip artefact",t.type),!0):!("edge"!==t.type||"fill"!==(null==n?void 0:n.type)||!((e,t,r,n,o,a)=>{var i=e[0]-t[0],l=e[1]-t[1],d=i*i+l*l;if(d<1)return!1;var s=Math.sqrt(d),c=4*a,u=[e[0]+i/s*c,e[1]+l/s*c],p=n.getPixelFromCoordinate(u);return!!p&&!!n.forEachFeatureAtPixel(p,e=>{var t;return(null===(t=e.get("mapbox-layer"))||void 0===t?void 0:t.id)===r},{hitTolerance:2,layerFilter:e=>o.includes(e)})})(t.coord,r,n.id,a,i,l))&&(fe()&&console.log("[snap-filtered] invisible fill boundary"),!0)},Te=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=new Set,o=[],a=e=>{for(var t of(n=new Set,o=[],null!=e?e:[]))"string"==typeof t?n.add(t):t instanceof r&&o.push(t)};a(t);return{query:(t,r)=>{fe()&&console.log("[snap-query]",{coord:[t[0].toFixed(2),t[1].toFixed(2)],radiusPx:r,vtLayerCount:n.size,olLayerCount:o.length});var a=e.getView().getResolution();if(!a)return null;var i=r*a,l=i*i,d=[t[0]-i,t[1]-i,t[0]+i,t[1]+i],s=null;for(var c of o){var u=c.getSource();if(u)for(var p of u.getFeaturesInExtent(d))s=ie(s,ge(p,t,l))}if(n.size>0){var v=(e=>{var t=[];return e.getLayers().forEach(e=>{e instanceof O&&t.push(e)}),t})(e),g=v.length>0?e.getPixelFromCoordinate(t):null;if(g){var y=new Map;e.forEachFeatureAtPixel(g,(r,o)=>{var i=r.get("mapbox-layer");if(n.has(null==i?void 0:i.id)){var d=((e,t,r)=>{var n=e.getType(),o=e.getFlatCoordinates(),a=null,i=null;if("Point"===n){var l=oe(t,o);l<=r&&(a={type:"vertex",coord:[o[0],o[1]],distSq:l})}else if("LineString"===n)({vertex:a,edge:i}=pe(o,0,o.length,t,r,!1));else if("Polygon"===n||"MultiLineString"===n){var d=e.getEnds(),s=0,c="Polygon"===n;for(var u of d){var p=pe(o,s,u,t,r,c);a=ie(a,p.vertex),i=ie(i,p.edge),s=u}}return[a,i].filter(Boolean)})(r,t,l);if(d.length){y.has(o)||y.set(o,((e,t)=>{var r,n=e.getSource(),o=null==n?void 0:n.getTileGrid();if(!o)return null;var a=t.getView().getProjection(),i=null!==(r=n.getProjection())&&void 0!==r?r:a,l=o.getZForResolution(t.getView().getResolution(),0);return{tileGrid:o,viewProj:a,sourceProj:i,zoom:l}})(o,e));var c=y.get(o);s=((e,t,r)=>{var n=e;for(var o of t)Se(o,r.mapboxLayer),Ie(me({candidate:o},r))||(n=ie(n,o));return n})(s,d,{cursorCoord:t,mapboxLayer:i,boundaryState:c,map:e,vtLayers:v,resolution:a})}}},{hitTolerance:r,layerFilter:e=>v.includes(e)})}}return s?{type:s.type,coord:s.coord}:null},setLayers:a}},we=e=>(t,r)=>{var n=r.context,[o,a]=t;n.beginPath(),n.arc(o,a,10*r.pixelRatio,0,2*Math.PI),n.fillStyle=e,n.fill()},Pe=e=>({vertex:new A({renderer:we(e.snapVertex)}),edge:new A({renderer:we(e.snapEdge)})}),Ce=new Set(["pointermove","pointerdrag","pointerdown","pointerup","singleclick","click"]),Ve=new Set(["pointermove","pointerdrag"]),be=(e,t,r,n)=>{var o=new j({handleEvent:a=>(o.getActive()&&((e,t,r,n,o)=>{var{type:a}=e;if("pointerout"!==a&&"pointerleave"!==a){if(Ce.has(a)){var i=t.query(e.coordinate,n);i&&(e.coordinate=i.coord.slice()),Ve.has(a)&&o()&&(i?r.show(i.coord,i.type):r.hide())}}else r.hide()})(a,e,t,r,n),!0)});return o},_e=(e,t,o,a)=>{if(null==t||!t.length)return null;var i=Te(e,t),l=((e,t)=>{var o=Pe(t),a=new n,i=new r({source:a,style:e=>{var t;return null!==(t=o[e.get("snapType")])&&void 0!==t?t:null},zIndex:99,updateWhileAnimating:!0,updateWhileInteracting:!0});e.addLayer(i);var l=new D,d=!1;return{show(e,t){l.setGeometry(new G(e)),l.set("snapType",t,!0),d?a.changed():(a.addFeature(l),d=!0)},hide(){d&&(a.clear(),d=!1)},updateColors(e){o=Pe(e),d&&a.changed()},remove(){a.clear(),e.removeLayer(i)}}})(e,o),d=!1,s=be(i,l,a,()=>d);e.addInteraction(s),s.setActive(!1);var c=!1;return{snapRadius:a,apply(e){if(!c)return e;var t=i.query(e,a);return t?(l.show(t.coord,t.type),t.coord):(l.hide(),e)},hideIndicator(){l.hide()},setIndicatorActive(e){d=e,e||l.hide()},setActive(e){c=e,s.setActive(e),e||l.hide()},setSnapLayers(e){i.setLayers(null==e?t:e)},reattach(){e.removeInteraction(s),e.addInteraction(s)},updateColors(e){l.updateColors(e)},destroy(){e.removeInteraction(s),l.remove()}}},Ee=(e,t)=>{var r=e.getPixelFromCoordinate(t);return r?{x:r[0],y:r[1]}:null},Le=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y),ke=(e,t,r,n)=>{var o=e.getPixelFromCoordinate(t);return o?e.getCoordinateFromPixel([o[0]+r,o[1]+n]):t},Fe=4,Oe=e=>{var{drawInteraction:t,canFinish:r,geom:n,sketchCoords:o,coord:a,lastPlacedCoord:i}=e;if(i&&i[0]===a[0]&&i[1]===a[1])return null!=r&&r()&&t.finishDrawing(),{handled:!0,lastPlacedCoord:null};var l=t.getMap();if(((e,t,r,n)=>{if("Polygon"!==n||r.length<Fe)return!1;var o=Ee(e,t),a=Ee(e,r[0]);return!(!o||!a)&&Le(o,a)<12})(l,a,o,n.getType()))return t.finishDrawing(),{handled:!0,lastPlacedCoord:i};var d=J(n);if(d){var s=l.getPixelFromCoordinate(d),c=l.getPixelFromCoordinate(a);if(s&&c){var u=s[0]-c[0],p=s[1]-c[1];if(u*u+p*p<4)return{handled:!0,lastPlacedCoord:a}}}return{handled:!1,lastPlacedCoord:i}},De=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),Ge=(e,t)=>{e&&(["touch","keyboard"].includes(t)?e.fixAtCenter():e.hide())},Ae=e=>{var{container:t,addVertexButtonId:r,olView:n,onUndo:o,getInterfaceType:a,setInterfaceType:i,clearLastCoord:l,updateRubberbanding:d,placeVertex:s}=e,c=()=>{"mouse"!==a()&&d()};null==n||n.on("change:center",c);var u=e=>{t.contains(document.activeElement)&&(De.has(e.key)?i("keyboard"):("Enter"===e.key&&(e.preventDefault(),i("keyboard"),s()),"z"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),null==o||o())))},p=e=>{r&&e.target.closest("#".concat(r))&&s()},v=e=>{"touch"!==e.pointerType&&(i("mouse"),l())},g=()=>{i("touch")},y=()=>{"mouse"!==a()&&d()};return globalThis.addEventListener("keydown",u),globalThis.addEventListener("click",p),t.addEventListener("pointerdown",v),t.addEventListener("touchstart",g,{passive:!0}),t.addEventListener("pointermove",y),{destroy(){null==n||n.un("change:center",c),globalThis.removeEventListener("keydown",u),globalThis.removeEventListener("click",p),t.removeEventListener("pointerdown",v),t.removeEventListener("touchstart",g),t.removeEventListener("pointermove",y)}}},je=e=>{var t,{drawInteraction:r,options:n}=e,{container:o,addVertexButtonId:a,mapProvider:i,snap:l,onUndo:d,canFinish:s,canPlace:c,crossHair:u}=n,p=null!==(t=n.interfaceType)&&void 0!==t?t:"mouse",v=()=>p,g=(e=>{var{drawInteraction:t,mapProvider:r,snap:n,canFinish:o,canPlace:a,getInterfaceType:i}=e,l=null,d=null,s=function(){l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,d=null};t.on("drawstart",e=>s(e.feature)),t.on("drawend",()=>s()),t.on("drawabort",()=>s());var c=()=>{var e=r.getCenter();return"mouse"!==i()&&n?n.apply(e):e};return{placeVertex:()=>{var e=c();if(null==n||n.hideIndicator(),l){var r=l.getGeometry(),i=r.getCoordinates(),s="Polygon"===r.getType()?i[0]||[]:i,u=Oe({drawInteraction:t,canFinish:o,geom:r,sketchCoords:s,coord:e,lastPlacedCoord:d});if(d=u.lastPlacedCoord,u.handled)return}a&&!a(e)||(t.appendCoordinates([e]),d=e)},updateRubberbanding:()=>{if(l){var e=l.getGeometry();e.getCoordinates().length&&((e,t)=>{if("LineString"===e.getType()){var r=[...e.getCoordinates()];r[r.length-1]=t,e.setCoordinates(r)}else if("Polygon"===e.getType()){var n=e.getCoordinates().map((e,r)=>{if(0!==r)return e;var n=[...e];return n[n.length-1]=t,n});e.setCoordinates(n)}})(e,c())}else"mouse"!==i()&&n&&n.apply(r.getCenter())},clearLastCoord(){d=null}}})({drawInteraction:r,mapProvider:i,snap:l,canFinish:s,canPlace:c,getInterfaceType:v}),y=r.getMap(),m=null==y?void 0:y.getView(),h=Ae({container:o,addVertexButtonId:a,olView:m,onUndo:d,getInterfaceType:v,setInterfaceType:e=>{p=e,Ge(u,e)},clearLastCoord:g.clearLastCoord,updateRubberbanding:g.updateRubberbanding,placeVertex:g.placeVertex});Ge(u,p);var x=()=>{"mouse"!==p&&null!=m&&m.getAnimating()&&g.updateRubberbanding()};return null==y||y.on("postrender",x),{getInterfaceType:v,setInterfaceType(e){p=e,Ge(u,e),"mouse"!==e&&g.updateRubberbanding()},destroy(){h.destroy(),null==y||y.un("postrender",x)}}},Me="styleschanged",Re=(e,t)=>!!t&&X(t.getGeometry()).length>=C[e],He=(e,t,r,n)=>o=>{if(!R(o))return!1;var a=r();if(!n(o.coordinate))return!1;if(!a||Re(t,a))return!0;var i=J(a.getGeometry());if(!i)return!0;var l=e.getPixelFromCoordinate(i);if(!l)return!0;var d=o.pixel[0]-l[0],s=o.pixel[1]-l[1];return d*d+s*s>4},Ne={Polygon:2,LineString:1},Ue=(e,t)=>{var{manager:r,featureId:n,properties:o,onStart:a,onSketchChange:i}=t;e.on("drawstart",e=>{a(e.feature),e.feature.getGeometry().on("change",i)}),e.on("drawend",e=>((e,t,r,n)=>{t.setId(String(r)),t.setProperties(n),e.store.source.addFeature(t),e.emit(P.CREATE,e.store.toGeoJSON(t))})(r,e.feature,n,o)),e.on("drawabort",()=>{r.emit(P.CANCEL)})},Be=e=>{var{map:t,manager:r,options:n}=e,{geometryType:o,featureId:a,properties:i={}}=n,s=null,c=!1,u=r.styles.createSketchStyle(o),{updateVertexCount:p,resetCount:v,emitUndoValidation:g}=((e,t)=>{var r=0,n=(r,n)=>{setTimeout(()=>{var o,a,i,l,d,s,c=t();c&&e.emit(P.GEOMETRY_CHANGE,{feature:(o=e.store,a=c,i=o.toGeoJSON(a),l=i.geometry.type,d=Ne[l],s=("Polygon"===l?i.geometry.coordinates[0]:i.geometry.coordinates).slice(0,-d),{type:"Feature",geometry:"Polygon"===l?{type:"Polygon",coordinates:[s]}:{type:"LineString",coordinates:s},properties:i.properties}),phase:r,vertexIndex:n})},0)};return{resetCount:()=>{r=0},updateVertexCount:()=>{var o=t();if(o){var a=X(o.getGeometry()).length;e.emit(P.VERTEX_CHANGE,{numVertices:a}),a>r&&n("commit-add",a-1),r=a}},emitUndoValidation:()=>{var e=t();e&&n("commit-delete",X(e.getGeometry()).length)}}})(r,()=>s),y=(e=>{var{manager:t,geometryType:r,getSketch:n}=e;return e=>{var o=n(),a=V({placed:o?X(o.getGeometry()):[],point:e,geometryType:r,onGeometryChange:t._geometryValidator});return a.valid||t.emit(P.PLACEMENT_BLOCKED,a.blocked),a.valid}})({manager:r,geometryType:o,getSketch:()=>s}),m=new M({type:o,style:e=>u(e),stopClick:!0,snapTolerance:w.snapRadius,condition:He(t,o,()=>s,y),finishCondition:()=>!1!==r._geometryValid});t.addInteraction(m);var h=l({onChange:e=>{c=e,u=r.styles.createSketchStyle(o,c),m.overlay_.changed()}}),x=d({onStrokeChange:(e,t)=>h.set(e,t),onPlaceChange:(e,t)=>r.emit(P.CAN_PLACE_CHANGE,{canPlace:!e,reason:t})}),f=b[o],S=()=>{if(s){var{feature:e,numVertices:t}=((e,t)=>{var r,n=t.getGeometry(),o=n.getCoordinates(),a="Polygon"===e?null!==(r=o[0])&&void 0!==r?r:[]:o;return{feature:{type:"Feature",geometry:"Polygon"===e?{type:"Polygon",coordinates:[a]}:{type:"LineString",coordinates:a}},numVertices:X(n).length}})(o,s);x.update({feature:e,context:{mode:f},numVertices:t,onGeometryChange:r._geometryValidator})}},I=()=>{u=r.styles.createSketchStyle(o,c),m.overlay_.changed()};r.on(Me,I),m.overlay_.updateWhileAnimating_=!0,Ue(m,{manager:r,featureId:a,properties:i,onStart:e=>{s=e,v()},onSketchChange:()=>{p(),S()}});var T=(e=>{var{drawInteraction:t,options:r,geometryType:n,getSketch:o,updateVertexCount:a,emitUndoValidation:i,canPlaceVertex:l}=e;return je({drawInteraction:t,options:{container:r.container,interfaceType:r.interfaceType,addVertexButtonId:r.addVertexButtonId,mapProvider:r.mapProvider,snap:r.snap,crossHair:r.crossHair,onUndo:()=>{t.removeLastPoint(),a(),i()},canFinish:()=>Re(n,o()),canPlace:l}})})({drawInteraction:m,options:n,geometryType:o,getSketch:()=>s,updateVertexCount:p,emitUndoValidation:g,canPlaceVertex:y});return(e=>{var{map:t,manager:r,drawInteraction:n,input:o,geometryType:a,getSketch:i,updateVertexCount:l,emitUndoValidation:d,onStylesChanged:s,clearSketch:c,setInvalid:u,liveStroke:p,liveDrawChecks:v}=e;return{done(){Re(a,i())&&n.finishDrawing()},cancel(){n.abortDrawing()},undo(){n.removeLastPoint(),l(),d()},setInvalid:u,setInterfaceType(e){o.setInterfaceType(e)},setDrawingPreviewProperty(e,t){var r=i();r&&(r.set(e,t),n.overlay_.changed())},destroy(){p.destroy(),v.destroy(),r.off(Me,s),r.emit(P.INTERFACE_TYPE_CHANGE,{interfaceType:o.getInterfaceType()}),o.destroy(),t.removeInteraction(n),c()}}})({map:t,manager:r,drawInteraction:m,input:T,geometryType:o,getSketch:()=>s,updateVertexCount:p,emitUndoValidation:g,onStylesChanged:I,clearSketch:()=>{s=null},setInvalid:e=>h.set(e),liveStroke:h,liveDrawChecks:x})},Ye=e=>{if(null==e||!e.coordinates)return[];switch(e.type){case"LineString":return e.coordinates;case"Polygon":return e.coordinates.flatMap(e=>e.slice(0,-1));case"MultiLineString":return e.coordinates.flat(1);case"MultiPolygon":return e.coordinates.flatMap(e=>e.flatMap(e=>e.slice(0,-1)));default:return[]}},ze=e=>{if(null==e||!e.coordinates)return[];var t=[],r=0;switch(e.type){case"LineString":t.push({start:0,length:e.coordinates.length,path:[],closed:!1});break;case"Polygon":e.coordinates.forEach((e,n)=>{var o=e.length-1;t.push({start:r,length:o,path:[n],closed:!0}),r+=o});break;case"MultiLineString":e.coordinates.forEach((e,n)=>{t.push({start:r,length:e.length,path:[n],closed:!1}),r+=e.length});break;case"MultiPolygon":e.coordinates.forEach((e,n)=>{e.forEach((e,o)=>{var a=e.length-1;t.push({start:r,length:a,path:[n,o],closed:!0}),r+=a})})}return t},qe=(e,t)=>{for(var r of e)if(t>=r.start&&t<r.start+r.length)return{segment:r,localIdx:t-r.start};return null},Ke=(e,t)=>{var r=e.coordinates;for(var n of t)r=r[n];return r},Xe=e=>{var t=Ye(e),r=ze(e);if(!t.length||!r.length)return[];var n=[];for(var o of r)for(var a=o.closed?o.length:o.length-1,i=0;i<a;i++){var l=o.start+i,d=o.start+(i+1)%o.length,[s,c]=t[l],[u,p]=t[d];n.push([(s+u)/2,(c+p)/2])}return n},Je=(e,t)=>{var o=new n,a=new r({source:o,zIndex:103});e.addLayer(a);return{update(e){if(o.clear(),!(e.selectedVertexIndex<0)){var{coord:r,style:n}=(e=>{var{selectedVertexIndex:r,selectedVertexType:n,vertices:o,midpoints:a}=e,i=t();return"vertex"===n?{coord:o[r],style:i.selectedVertexStyle}:"midpoint"===n?{coord:a[r-o.length],style:i.selectedMidpointStyle}:{coord:null,style:null}})(e);if(r){var a=new D({geometry:new G(r)});a.setStyle(n),o.addFeature(a)}}},remove(){o.clear(),e.removeLayer(a)}}},We=e=>{var{map:t,manager:r,store:n,olFeature:o,interfaceType:a,layers:i}=e,{vertexLayer:l,midpointLayer:d,activeLayer:s}=i,c={olFeature:o,selectedVertexIndex:-1,selectedVertexType:null,vertices:[],midpoints:[],interfaceType:null!=a?a:"mouse"},u={onDeselect:null,onUpdate:null},p=()=>{var e=o.getGeometry();return{type:e.getType(),coordinates:e.getCoordinates()}},v=()=>((e,t)=>{var r,{vertexLayer:n,midpointLayer:o,activeLayer:a,manager:i,hooks:l}=t;n.setSelected("vertex"===e.selectedVertexType?e.selectedVertexIndex:-1),o.setSelected("midpoint"===e.selectedVertexType?e.selectedVertexIndex-e.vertices.length:-1),e.selectedVertexIndex<0&&(null===(r=l.onDeselect)||void 0===r||r.call(l)),a.update(e),i.emit(P.VERTEX_SELECTION,{index:"vertex"===e.selectedVertexType?e.selectedVertexIndex:-1,numVertices:e.vertices.length})})(c,{vertexLayer:l,midpointLayer:d,activeLayer:s,manager:r,hooks:u}),g=()=>{var e=p();c.vertices=Ye(e),c.midpoints=Xe(e),d.update(e),l.update(e),s.update(c)},y=((e,t,r)=>(n,o)=>{n&&setTimeout(()=>{e.emit(P.GEOMETRY_CHANGE,{feature:t.toGeoJSON(r),phase:n,vertexIndex:o})},0)})(r,n,o),m=()=>g();return o.getGeometry().on("change",m),{state:c,getState:()=>c,setState:e=>{var r,n;Object.assign(c,e),void 0!==e.selectedVertexIndex&&v(),void 0!==e.vertices&&(n=p(),d.update(n),l.update(n),c.midpoints=d.getCoords(),s.update(c),null===(r=u.onUpdate)||void 0===r||r.call(u),t.render())},syncGeom:()=>{g(),r.emit(P.VERTEX_CHANGE,{numVertices:c.vertices.length}),r.emit(P.UPDATE,n.toGeoJSON(o))},emitGeometryValidation:y,updateLayersFromGeom:g,setHooks:e=>{var{onDeselect:t,onUpdate:r}=e;return Object.assign(u,{onDeselect:t,onUpdate:r})},destroy(){o.getGeometry().un("change",m)}}},Ze=function(e,t,r,n){var o,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:12;return null!==(o=function(e,t,r){var n=-1,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:12;return t.forEach((t,a)=>{var i=Ee(e,t);if(i){var l=Le(i,r);l<o&&(o=l,n=a)}}),n>=0?{index:n,type:"vertex"}:null}(e,t,n,a))&&void 0!==o?o:function(e,t,r,n){var o=-1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:12;return t.forEach((t,n)=>{var i=Ee(e,t);if(i){var l=Le(i,r);l<a&&(a=l,o=n)}}),o>=0?{index:n+o,type:"midpoint"}:null}(e,r,n,t.length,a)},Qe=(e,t)=>{if(t.length>e.length){var r=t.findIndex((t,r)=>{var n;return t[0]!==(null===(n=e[r])||void 0===n?void 0:n[0])});return{type:"insert_vertex",vertexIndex:Math.max(0,r)}}if(t.length===e.length){var n=t.findIndex((t,r)=>t[0]!==e[r][0]||t[1]!==e[r][1]);if(n>=0)return{type:"move_vertex",vertexIndex:n,previousCoord:e[n]}}return null},$e=e=>{var{map:t,olFeature:r,getState:n,onModifyEnd:o,condition:a}=e,i=null!=a?a:(e=>{var{map:t,getState:r}=e;return e=>{var{interfaceType:n,vertices:o,midpoints:a}=r();if("touch"===n)return!1;var i=t.getEventPixel(e.originalEvent);return null!==Ze(t,o,a,{x:i[0],y:i[1]})}})({map:t,getState:n}),l=new H({features:new N([r]),style:()=>[],pixelTolerance:12,condition:i});t.addInteraction(l);var d=null;return l.on("modifystart",()=>{"touch"!==n().interfaceType&&(d=n().vertices.map(e=>[...e]))}),l.on("modifyend",()=>{if("touch"!==n().interfaceType){var e=d;d=null,o(e)}}),{destroy(){t.removeInteraction(l)}}},et=(e,t,r,n)=>{var o=r-n,a=t[o];if(!a)return null;var i=e.getGeometry(),l={type:i.getType(),coordinates:i.getCoordinates()},d=ze(l),s=0;for(var c of d){var u=c.closed?c.length:c.length-1;if(o<s+u){var p=o-s+1,v=c.start+p;return Ke(l,c.path).splice(p,0,[...a]),i.setCoordinates(l.coordinates),{insertedIndex:v}}s+=u}return null},tt=(e,t,r)=>{var n=e.getGeometry(),o={type:n.getType(),coordinates:n.getCoordinates()},a=ze(o),i=qe(a,t);if(i){var l=Ke(o,i.segment.path);l[i.localIdx]=[...r],i.segment.closed&&0===i.localIdx&&(l[l.length-1]=[...r]),n.setCoordinates(o.coordinates)}};function rt(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 nt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?rt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):rt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var ot=(e,t)=>{var{getState:r,onVertexMoved:n,drag:o,updateTargetPosition:a}=t;if(null==o.dragStartIndex)return((e,t)=>{var{map:r,getState:n,onTap:o,drag:a}=t;if(a.tapStart&&!a.tapStart.onTarget&&0!==e.changedTouches.length){var i=e.changedTouches[0],l=Date.now()-a.tapStart.time;if(Math.hypot(i.clientX-a.tapStart.x,i.clientY-a.tapStart.y)<10&&l<400){var d=r.getEventPixel({clientX:i.clientX,clientY:i.clientY}),s=n();null==o||o(Ze(r,s.vertices,s.midpoints,{x:d[0],y:d[1]},24)),e.preventDefault()}}})(e,t),void(o.tapStart=null);o.tapStart=null;var{vertices:i}=r();i[o.dragStartIndex]&&o.dragStartCoord&&n({vertexIndex:o.dragStartIndex,previousCoord:o.dragStartCoord}),o.dragStartCoord=null,o.dragStartIndex=null,o.vertexTouchDelta=null,o.targetTouchDelta=null,a(),e.preventDefault()},at=e=>{var{container:t}=e,r={dragStartCoord:null,dragStartIndex:null,vertexTouchDelta:null,targetTouchDelta:null,tapStart:null},n=nt(nt({},e),{},{drag:r}),o=e=>((e,t)=>{var{map:r,targetEl:n,cssToOl:o,getState:a,drag:i}=t,l=e.touches[0],d=v(e.target);if(i.tapStart={x:l.clientX,y:l.clientY,time:Date.now(),onTarget:d},d){var{selectedVertexIndex:s,vertices:c}=a(),u=c[s];if(u){var p=r.getEventPixel({clientX:l.clientX,clientY:l.clientY}),g=Ee(r,u),y=getComputedStyle(n),m=o({x:Number.parseFloat(y.left),y:Number.parseFloat(y.top)});i.dragStartCoord=[...u],i.dragStartIndex=s,i.vertexTouchDelta={x:p[0]-g.x,y:p[1]-g.y},i.targetTouchDelta={x:p[0]-m.x,y:p[1]-m.y},e.preventDefault()}}})(e,n),a=e=>((e,t)=>{var{map:r,targetEl:n,olToCSS:o,getState:a,setState:i,snap:l,drag:d,moveCoord:s}=t;if(v(e.target)&&null!=d.dragStartIndex){e.preventDefault();var c=r.getEventPixel({clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}),u=((e,t)=>e.getCoordinateFromPixel([t.x,t.y]))(r,{x:c[0]-d.vertexTouchDelta.x,y:c[1]-d.vertexTouchDelta.y}),g=l?l.apply(u):u,{olFeature:y,vertices:m}=a();y&&(s(y,d.dragStartIndex,g),i({vertices:m.map((e,t)=>t===d.dragStartIndex?g:e)}),p(n,o({x:c[0]-d.targetTouchDelta.x,y:c[1]-d.targetTouchDelta.y})))}})(e,n),i=e=>ot(e,n);return t.addEventListener("touchstart",o,{passive:!1}),t.addEventListener("touchmove",a,{passive:!1}),t.addEventListener("touchend",i,{passive:!1}),t.addEventListener("touchcancel",i,{passive:!1}),{isDragging:()=>null!=r.dragStartIndex,destroy(){t.removeEventListener("touchstart",o),t.removeEventListener("touchmove",a),t.removeEventListener("touchend",i),t.removeEventListener("touchcancel",i)}}},it=e=>{var{map:t,container:r,getState:n,setState:o,onVertexMoved:a,onTap:i,colors:l,snap:d,moveCoord:v=tt}=e,g=s(r);c(g,l);var y={scale:1,ox:0,oy:0},m=e=>({x:e.x*y.scale+y.ox,y:e.y*y.scale+y.oy}),h=()=>{var e=t.getViewport(),n=e.getBoundingClientRect(),o=r.getBoundingClientRect(),a=e.offsetWidth>0?n.width/e.offsetWidth:1,i=r.offsetWidth>0?o.width/r.offsetWidth:1;Object.assign(y,{scale:a/i,ox:(n.left-o.left)/i,oy:(n.top-o.top)/i})},x=()=>{var{selectedVertexIndex:e,vertices:r,interfaceType:o}=n();if(e<0||!r[e]||"touch"!==o)u(g);else{var a=Ee(t,r[e]);a?p(g,m(a)):u(g)}},f=at({container:r,map:t,targetEl:g,olToCSS:m,cssToOl:e=>({x:(e.x-y.ox)/y.scale,y:(e.y-y.oy)/y.scale}),getState:n,setState:o,onVertexMoved:a,onTap:i,snap:d,moveCoord:v,updateTargetPosition:x}),S=()=>{var{selectedVertexIndex:e,interfaceType:t}=n();e>=0&&!f.isDragging()&&"touch"===t&&x()};t.on("postrender",S);var I=()=>{h(),t.once("postrender",x)};return t.on("change:size",I),h(),{updateTargetPosition:x,updateColors(e){c(g,e)},hide(){u(g)},destroy(){t.un("change:size",I),t.un("postrender",S),f.destroy(),u(g)}}},lt=e=>{var{map:t,snap:r,getState:n,setState:o,onInserted:a,onVertexMoved:i,moveCoord:l=tt}=e,d={start:null,index:null},s=(e,a)=>{var{selectedVertexIndex:i,vertices:d,olFeature:s}=n();if(!s||i<0||!d[i])return null;var c=d[i],u=ke(t,c,e,a),p=r?r.apply(u):u,v=((e,t,r,n,o,a,i)=>{if(!e)return o;var l=[n[0]-r[0],n[1]-r[1]],d=[o[0]-r[0],o[1]-r[1]],s=l[0]**2+l[1]**2;if(s>0&&(d[0]*l[0]+d[1]*l[1])/s<.5){var c=e.snapRadius+1;return ke(t,r,0===a?0:Math.sign(a)*c,0===i?0:Math.sign(i)*c)}return o})(r,t,c,u,p,e,a);return r&&v!==p&&r.hideIndicator(),l(s,i,v),o({vertices:d.map((e,t)=>t===i?v:e)}),{previousCoord:c,vertexIndex:i}};return{nudge:e=>{var{selectedVertexIndex:i,selectedVertexType:l,vertices:c,midpoints:u,olFeature:p}=n();if(p){var v=e.shiftKey?_.nudgeAmount:_.stepAmount,g={ArrowUp:[0,-v],ArrowDown:[0,v],ArrowLeft:[-v,0],ArrowRight:[v,0]},[y,m]=g[e.key];"midpoint"!==l?i<0||!c[i]||(d.start||(d.start=[...c[i]],d.index=i),s(y,m)):((e,i,l,s,c,u)=>{var p=et(e,i,l,s.length);if(p){a({insertedIndex:p.insertedIndex});var v=n().vertices,g=v[p.insertedIndex];if(g){d.start=[...g],d.index=p.insertedIndex;var y=ke(t,g,c,u),m=r?r.apply(y):y;tt(e,p.insertedIndex,m),o({selectedVertexIndex:p.insertedIndex,selectedVertexType:"vertex",vertices:v.map((e,t)=>t===p.insertedIndex?m:e)})}}})(p,u,i,c,y,m)}},keyMove:d,nudgeByDelta:(e,t,r)=>{var n=r?_.stepAmount:_.nudgeAmount,o=s(e*n,t*n);o&&i({vertexIndex:o.vertexIndex,previousCoord:o.previousCoord})}}},dt=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),st=new Set(["INPUT","TEXTAREA","BUTTON","SELECT","A"]),ct=e=>{var{map:t,getState:r,setState:n,nudge:o,keyMove:a,onUndo:i,onKeyboardActive:l,isFocused:d}=e,s=e=>{e.altKey?(e.preventDefault(),e.stopPropagation(),((e,t,r,n)=>{var{selectedVertexIndex:o,vertices:a,midpoints:i}=r();if(a.length){var l,d=[...a,...i].map(e=>Ee(t,e)).filter(Boolean).map(e=>[e.x,e.y]),s=o>=0?d[o]:(l=Ee(t,t.getView().getCenter()))?[l.x,l.y]:null;if(s){var c=E(s,d,e);n({selectedVertexIndex:c,selectedVertexType:c<a.length?"vertex":"midpoint"})}}})(e.key,t,r,n)):r().selectedVertexIndex>=0&&(e.preventDefault(),e.stopPropagation(),o(e))},c=e=>{if(null==l||l()," "===e.key)e.preventDefault(),r().selectedVertexIndex<0&&((e,t,r)=>{var{vertices:n,midpoints:o}=t();if(n.length){var a=Ee(e,e.getView().getCenter());if(a){var i=[...n.map(t=>Ee(e,t)),...o.map(t=>Ee(e,t))].filter(Boolean).map(e=>[e.x,e.y]),l=E([a.x,a.y],i,void 0);r({selectedVertexIndex:l,selectedVertexType:l<n.length?"vertex":"midpoint"})}}})(t,r,n);else if(dt.has(e.key))s(e);else if("z"===e.key&&(e.metaKey||e.ctrlKey)){var o,a=null===(o=document.activeElement)||void 0===o?void 0:o.tagName;st.has(a)||(e.preventDefault(),e.stopPropagation(),i())}};return e=>{d()||("Escape"===e.key&&r().selectedVertexIndex>=0?(e.preventDefault(),a.start=null,a.index=null,n({selectedVertexIndex:-1,selectedVertexType:null})):c(e))}},ut=e=>{var t,{map:r,snap:n,getState:o,setState:a,onVertexMoved:i,onInserted:l,onDeleted:d,onUndo:s,onKeyboardActive:c,moveCoord:u}=e,{nudge:p,keyMove:v,nudgeByDelta:g}=lt({map:r,snap:n,getState:o,setState:a,onInserted:l,onVertexMoved:i,moveCoord:u}),y=null!==(t=r.getViewport().closest('[role="application"]'))&&void 0!==t?t:r.getViewport(),m=()=>(e=>{var t=document.activeElement;return!(!t||t===document.body)&&!e.contains(t)&&(st.has(t.tagName)||t.isContentEditable||t.hasAttribute("tabindex"))})(y),h=ct({map:r,getState:o,setState:a,nudge:p,keyMove:v,onUndo:s,onKeyboardActive:c,isFocused:m}),x=(e=>{var{keyMove:t,onVertexMoved:r,onDeleted:n,isFocused:o}=e;return e=>{o()||(dt.has(e.key)&&t.start&&null!=t.index&&(r({vertexIndex:t.index,previousCoord:t.start}),t.start=null,t.index=null),"Delete"===e.key&&n())}})({keyMove:v,onVertexMoved:i,onDeleted:d,isFocused:m});return globalThis.addEventListener("keydown",h,{capture:!0}),globalThis.addEventListener("keyup",x,{capture:!0}),{nudgeByDelta:g,destroy(){globalThis.removeEventListener("keydown",h,{capture:!0}),globalThis.removeEventListener("keyup",x,{capture:!0})}}},pt=(e,t)=>{switch(t.type){case"move_vertex":return((e,t)=>{var{vertexIndex:r,previousCoord:n}=t,o=e.getGeometry(),a={type:o.getType(),coordinates:o.getCoordinates()},i=ze(a),l=qe(i,r);if(!l)return-1;var d=Ke(a,l.segment.path);return d[l.localIdx]=[...n],l.segment.closed&&0===l.localIdx&&(d[d.length-1]=[...n]),o.setCoordinates(a.coordinates),r})(e,t);case"insert_vertex":return((e,t)=>{var{vertexIndex:r}=t,n=e.getGeometry(),o={type:n.getType(),coordinates:n.getCoordinates()},a=ze(o),i=qe(a,r);if(i){var l=Ke(o,i.segment.path);l.splice(i.localIdx,1),i.segment.closed&&(l[l.length-1]=[...l[0]]),n.setCoordinates(o.coordinates)}return-1})(e,t);case"delete_vertex":return((e,t)=>{var{vertexIndex:r,deletedCoord:n}=t,o=e.getGeometry(),a={type:o.getType(),coordinates:o.getCoordinates()},i=ze(a),l=qe(i,r);if(!l)for(var d of i)if(r===d.start+d.length){l={segment:d,localIdx:d.length};break}if(!l)return-1;var s=Ke(a,l.segment.path);return s.splice(l.localIdx,0,[...n]),l.segment.closed&&(s[s.length-1]=[...s[0]]),o.setCoordinates(a.coordinates),r})(e,t);default:return-1}},vt="touch",gt="vertex",yt="commit-move",mt="commit-insert",ht="commit-delete",xt={move_vertex:yt,insert_vertex:mt,delete_vertex:ht},ft={move_vertex:yt,insert_vertex:ht,delete_vertex:mt},St=e=>{var{olFeature:t,undoStack:r,selection:n,getTouchHandler:o}=e,{state:a,setState:i,syncGeom:l,emitGeometryValidation:d}=n;return{doDeleteVertex:()=>{if(!(a.selectedVertexType!==gt||a.selectedVertexIndex<0)){var e=((e,t)=>{var r=e.getGeometry(),n={type:r.getType(),coordinates:r.getCoordinates()},o=Ye(n),a=ze(n),i=qe(a,t);if(!i)return null;var{segment:l}=i,d=l.closed?C.Polygon:C.LineString;if(l.length<=d)return null;var s=[...o[t]],c=Ke(n,l.path);return c.splice(i.localIdx,1),l.closed&&(c[c.length-1]=[...c[0]]),r.setCoordinates(n.coordinates),{deletedIndex:t,deletedCoord:s}})(t,a.selectedVertexIndex);e&&(r.push({type:"delete_vertex",vertexIndex:e.deletedIndex,deletedCoord:e.deletedCoord}),l(),d(ht,e.deletedIndex),i({selectedVertexIndex:-1,selectedVertexType:null}))}},doUndo:()=>{var e=r.pop();if(e){var n=a.selectedVertexIndex,s=pt(t,e);l(),d(ft[e.type],s);var c=n>=0?s:-1;i({selectedVertexIndex:c,selectedVertexType:c>=0?gt:null}),n>=0&&c>=0&&a.interfaceType===vt&&o().updateTargetPosition()}}}},It=e=>{var{map:t,manager:o,options:a}=e,{featureId:i,container:d,interfaceType:s,deleteVertexButtonId:c,snap:u}=a,{store:p,undoStack:v}=o,g=p.getOL(i);if(!g)return null;var y=g.getStyle(),m=((e,t)=>{var o=t,a=-1,i=new n,l=new r({source:i,style:e=>e.get("midpointIndex")===a?null:[o],zIndex:101});return e.addLayer(l),{update(e){i.clear();var t=Xe(e).map((e,t)=>{var r=new D({geometry:new G(e)});return r.set("midpointIndex",t),r});i.addFeatures(t)},setSelected(e){a=e,i.changed()},updateStyle(e){o=e,i.changed()},getCoords:()=>i.getFeatures().sort((e,t)=>e.get("midpointIndex")-t.get("midpointIndex")).map(e=>e.getGeometry().getCoordinates()),remove(){i.clear(),e.removeLayer(l)}}})(t,o.styles.midpointStyle),h=((e,t)=>{var o=t,a=-1,i=new n,l=new r({source:i,style:e=>e.get("vertexIndex")===a?null:[o],zIndex:102});return e.addLayer(l),{update(e){i.clear(),Ye(e).forEach((e,t)=>{var r=new D({geometry:new G(e)});r.set("vertexIndex",t),i.addFeature(r)})},setSelected(e){a=e,i.changed()},updateStyle(e){o=e,i.changed()},remove(){i.clear(),e.removeLayer(l)}}})(t,o.styles.vertexStyle),x=Je(t,()=>o.styles),f=We({map:t,manager:o,store:p,olFeature:g,interfaceType:s,layers:{vertexLayer:h,midpointLayer:m,activeLayer:x}}),{state:S,getState:I,setState:T,syncGeom:w,emitGeometryValidation:C}=f,V=$e({map:t,olFeature:g,getState:I,onModifyEnd(e){w();var t=e&&Qe(e,S.vertices);t&&(v.push(t),C(xt[t.type],t.vertexIndex),T({selectedVertexIndex:t.vertexIndex,selectedVertexType:gt}))}});w();var b={vertexLayer:h,midpointLayer:m,activeLayer:x},_=(e=>{var{map:t,manager:r,olFeature:n}=e,o=!1;n.setStyle(()=>o?r.styles.editFeatureStyleInvalid:r.styles.editFeatureStyle);var a=l({onChange:(e,n)=>{o=e,t.render(),r.emit(P.VALIDITY_CHANGE,{valid:!e,reason:n})}}),i=()=>{var e,t,o=n.getGeometry(),i=o.getType(),l=o.getCoordinates(),d="Polygon"===i?Math.max(0,(null!==(e=null===(t=l[0])||void 0===t?void 0:t.length)&&void 0!==e?e:1)-1):l.length;a.update({feature:{type:"Feature",geometry:{type:i,coordinates:l}},context:{mode:"edit_vertex"},numVertices:d,onGeometryChange:r._geometryValidator})};return n.getGeometry().on("change",i),{liveStroke:a,destroy(){n.getGeometry().un("change",i),a.destroy()}}})({map:t,manager:o,olFeature:g}),E=(e=>{var{map:t,container:r,manager:n,snap:o,olFeature:a,undoStack:i,selection:l}=e,{state:d,getState:s,setState:c,syncGeom:u,emitGeometryValidation:p}=l,v=e=>c({selectedVertexIndex:e,selectedVertexType:gt}),g=it({map:t,container:r,getState:s,setState:c,colors:n.colors,snap:o,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;i.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),u(),p(yt,t),v(t),g.updateTargetPosition()},onTap(e){if(e){if(e.type===gt)return v(e.index),void g.updateTargetPosition();var t=et(a,d.midpoints,e.index,d.vertices.length);t&&(i.push({type:"insert_vertex",vertexIndex:t.insertedIndex}),u(),p(mt,t.insertedIndex),v(t.insertedIndex),g.updateTargetPosition())}else c({selectedVertexIndex:-1,selectedVertexType:null})}});return l.setHooks({onDeselect:()=>g.hide(),onUpdate(){d.interfaceType===vt&&g.updateTargetPosition()}}),g})({map:t,container:d,manager:o,snap:u,olFeature:g,undoStack:v,selection:f}),L=St({olFeature:g,undoStack:v,selection:f,getTouchHandler:()=>E}),k=(e=>{var{map:t,container:r,snap:n,undoStack:o,selection:a,touchHandler:i,actions:l}=e,{state:d,getState:s,setState:c,syncGeom:u,emitGeometryValidation:p}=a;return ut({map:t,getState:s,setState:c,snap:n,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;o.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),u(),p(yt,t),c({selectedVertexIndex:t,selectedVertexType:gt})},onInserted(e){var{insertedIndex:t}=e;o.push({type:"insert_vertex",vertexIndex:t}),u(),p(mt,t)},onDeleted:l.doDeleteVertex,onUndo:l.doUndo,onKeyboardActive(){"keyboard"!==d.interfaceType&&(d.interfaceType="keyboard",i.hide(),r.focus({preventScroll:!0}))}})})({map:t,container:d,snap:u,undoStack:v,selection:f,touchHandler:E,actions:L}),F=(e=>{var{map:t,container:r,getState:n,setState:o,touchHandler:a,deleteVertexButtonId:i,onDeleteVertex:l}=e,d=e=>{var{vertices:r,midpoints:o}=n(),a=t.getEventPixel(e);return Ze(t,r,o,{x:a[0],y:a[1]})},s=e=>{var t=n();if("touch"===e.pointerType)return t.interfaceType="touch",void a.updateTargetPosition();t.interfaceType="mouse";var r=d(e);"vertex"===(null==r?void 0:r.type)&&o({selectedVertexIndex:r.index,selectedVertexType:"vertex"})},c=e=>{if("touch"!==n().interfaceType){var t=d(e);"vertex"===(null==t?void 0:t.type)?o({selectedVertexIndex:t.index,selectedVertexType:"vertex"}):"midpoint"===(null==t?void 0:t.type)||o({selectedVertexIndex:-1,selectedVertexType:null})}},u=e=>{var t=n();"mouse"===e.pointerType&&"mouse"!==t.interfaceType&&(t.interfaceType="mouse",a.hide())},p=e=>{i&&e.target.closest("#".concat(i))&&l()};return r.addEventListener("pointerdown",s),r.addEventListener("pointerenter",u),r.addEventListener("pointermove",u),r.addEventListener("click",c),globalThis.addEventListener("click",p),{destroy(){r.removeEventListener("pointerdown",s),r.removeEventListener("pointerenter",u),r.removeEventListener("pointermove",u),r.removeEventListener("click",c),globalThis.removeEventListener("click",p)}}})({map:t,container:d,getState:I,setState:T,touchHandler:E,deleteVertexButtonId:c,onDeleteVertex:L.doDeleteVertex}),O=(e=>{var{map:t,manager:r,layers:n,selection:o,touchHandler:a,live:i}=e,{state:l}=o,d=e=>{i.liveStroke.refresh(),n.vertexLayer.updateStyle(e.vertexStyle),n.midpointLayer.updateStyle(e.midpointStyle),n.activeLayer.update(l),a.updateColors(r.colors)};r.on(Me,d);var s=()=>{l.interfaceType!==vt||l.selectedVertexIndex<0||t.once("postrender",()=>a.updateTargetPosition())};return t.on("change:size",s),{destroy(){r.off(Me,d),t.un("change:size",s)}}})({map:t,manager:o,layers:b,selection:f,touchHandler:E,live:_});return(e=>{var{manager:t,store:r,olFeature:n,originalFeatureStyle:o,selection:a,actions:i,parts:l}=e,{state:d}=a,{touchHandler:s}=l;return{setInterfaceType(e){e!==d.interfaceType&&(d.interfaceType=e,e===vt?s.updateTargetPosition():s.hide())},done(){t.emit(P.EDIT_FINISH,r.toGeoJSON(n))},setInvalid(e){l.live.liveStroke.set(e)},cancel(){},undo:i.doUndo,deleteVertex:i.doDeleteVertex,nudgeSelectedVertex:l.keyboardHandler.nudgeByDelta,destroy(){l.live.destroy(),n.setStyle(o),a.destroy(),l.mapSync.destroy(),l.pointerHandlers.destroy(),l.modify.destroy(),l.layers.activeLayer.remove(),l.layers.midpointLayer.remove(),l.layers.vertexLayer.remove(),s.destroy(),l.keyboardHandler.destroy()}}})({manager:o,store:p,olFeature:g,originalFeatureStyle:y,selection:f,actions:L,parts:{touchHandler:E,keyboardHandler:k,pointerHandlers:F,modify:V,mapSync:O,layers:b,live:_}})},Tt=["selectedVertexIndex","selectedVertexType"],wt=e=>{var{manager:t,store:r,olFeature:n,interfaceType:o}=e,a={olFeature:n,selectedVertexIndex:0,selectedVertexType:"vertex",vertices:[],midpoints:[],interfaceType:null!=o?o:"mouse"},i={onUpdate:null},l=()=>{a.vertices=[n.getGeometry().getCoordinates()]},d=((e,t,r)=>(n,o)=>{n&&setTimeout(()=>{e.emit(P.GEOMETRY_CHANGE,{feature:t.toGeoJSON(r),phase:n,vertexIndex:o})},0)})(t,r,n),s=()=>l();return n.getGeometry().on("change",s),l(),t.emit(P.VERTEX_SELECTION,{index:0,numVertices:1}),{state:a,getState:()=>a,setState:e=>{var t,{selectedVertexIndex:r,selectedVertexType:n}=e,o=U(e,Tt);(Object.assign(a,o),void 0!==e.vertices)&&(null===(t=i.onUpdate)||void 0===t||t.call(i))},syncGeom:()=>{l(),t.emit(P.UPDATE,r.toGeoJSON(n))},emitGeometryValidation:d,setHooks:e=>{var{onUpdate:t}=e;i.onUpdate=t},destroy(){n.getGeometry().un("change",s)}}},Pt=(e,t,r)=>{e.getGeometry().setCoordinates([...r])},Ct="touch",Vt="commit-move",bt=e=>{var{map:t,olFeature:r}=e;return e=>{var n=t.getEventPixel(e.originalEvent);return!!t.forEachFeatureAtPixel(n,e=>e===r,{hitTolerance:12})}},_t=e=>{var{map:t,manager:r,options:n}=e,{featureId:o,container:a,interfaceType:i,snap:d}=n,{store:s,undoStack:c}=r,u=s.getOL(o);if(!u)return null;null==a||a.focus({preventScroll:!0});var p=u.getStyle();u.setStyle(()=>r.styles.selectedPointStyleFor(u));var v=wt({manager:r,store:s,olFeature:u,interfaceType:i}),{getState:g,setState:y}=v,m=(e=>{var{map:t,olFeature:r,getState:n,condition:o,snap:a,onModifyEnd:i}=e,l=null,d=null,s=e=>t.getCoordinateFromPixel(e.pixel),c=new B({handleDownEvent:e=>{if("touch"===n().interfaceType||!o(e))return!1;var t=r.getGeometry().getCoordinates(),a=s(e);return l=[t[0]-a[0],t[1]-a[1]],d=[...t],!0},handleDragEvent:e=>{if(l){var t=s(e),n=[t[0]+l[0],t[1]+l[1]],o=a?a.apply(n):n;r.getGeometry().setCoordinates(o)}},handleUpEvent:()=>(l=null,d&&i([d]),d=null,!1)});return t.addInteraction(c),{destroy(){t.removeInteraction(c)}}})({map:t,olFeature:u,getState:g,condition:bt({map:t,olFeature:u}),snap:d,onModifyEnd(e){v.syncGeom();var t=e&&Qe(e,g().vertices);t&&(c.push(t),v.emitGeometryValidation(Vt,t.vertexIndex))}}),h=(e=>{var{olFeature:t,undoStack:r,selection:n}=e;return()=>{var e=r.pop();e&&(((e,t)=>{"move_vertex"===t.type&&((e,t)=>{var{previousCoord:r}=t;e.getGeometry().setCoordinates([...r])})(e,t)})(t,e),n.syncGeom(),n.emitGeometryValidation(Vt,0))}})({olFeature:u,undoStack:c,selection:v}),x=(e=>{var{manager:t,olFeature:r}=e,n=l({onChange:(e,r)=>{t.emit(P.VALIDITY_CHANGE,{valid:!e,reason:r})}}),o=()=>{var e=r.getGeometry().getCoordinates();n.update({feature:{type:"Feature",geometry:{type:"Point",coordinates:e}},context:{mode:"edit_point"},numVertices:1,onGeometryChange:t._geometryValidator})};return r.getGeometry().on("change",o),{liveStroke:n,destroy(){r.getGeometry().un("change",o),n.destroy()}}})({manager:r,olFeature:u}),f=(e=>{var{map:t,container:r,manager:n,snap:o,undoStack:a,selection:i}=e,{getState:l,setState:d,syncGeom:s,emitGeometryValidation:c}=i,u=it({map:t,container:r,getState:l,setState:d,colors:n.colors,snap:o,moveCoord:Pt,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;a.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),s(),c(Vt,t)},onTap(){}});return i.setHooks({onUpdate(){l().interfaceType===Ct&&u.updateTargetPosition()}}),u})({map:t,container:a,manager:r,snap:d,undoStack:c,selection:v}),S=(e=>{var{map:t,container:r,snap:n,undoStack:o,selection:a,touchHandler:i,doUndo:l}=e,{getState:d,setState:s,syncGeom:c,emitGeometryValidation:u}=a;return ut({map:t,getState:d,setState:s,snap:n,moveCoord:Pt,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;o.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),c(),u(Vt,t)},onInserted(){},onDeleted(){},onUndo:l,onKeyboardActive(){"keyboard"!==d().interfaceType&&(d().interfaceType="keyboard",i.hide(),r.focus({preventScroll:!0}))}})})({map:t,container:a,snap:d,undoStack:c,selection:v,touchHandler:f,doUndo:h}),I=(e=>{var{map:t,manager:r,selection:n,touchHandler:o,live:a}=e,{state:i}=n,l=()=>{a.liveStroke.refresh(),o.updateColors(r.colors)};r.on(Me,l);var d=()=>{i.interfaceType===Ct&&t.once("postrender",()=>o.updateTargetPosition())};return t.on("change:size",d),{destroy(){r.off(Me,l),t.un("change:size",d)}}})({map:t,manager:r,selection:v,touchHandler:f,live:x});return{setInterfaceType(e){e!==g().interfaceType&&(y({interfaceType:e}),e===Ct?f.updateTargetPosition():f.hide())},done(){r.emit(P.EDIT_FINISH,s.toGeoJSON(u))},setInvalid(e){x.liveStroke.set(e)},cancel(){},undo:h,deleteVertex(){},nudgeSelectedVertex:S.nudgeByDelta,destroy(){x.destroy(),u.setStyle(p),v.destroy(),I.destroy(),m.destroy(),f.destroy(),S.destroy()}}},Et="draw_point",Lt=e=>{var{map:t,manager:r,options:n}=e,{featureId:o,properties:a={}}=n,i=(e=>t=>{var r={type:"Feature",geometry:{type:"Point",coordinates:t},properties:{}},{valid:n,reason:o}=L(r,{mode:Et,vertexIndex:0},{onGeometryChange:e._geometryValidator});return n||e.emit(P.PLACEMENT_BLOCKED,{feature:r,reason:null!=o?o:null,phase:"place",mode:Et,vertexIndex:0}),n})(r),l=new M({type:"Point",style:()=>[],snapTolerance:w.snapRadius,condition:e=>R(e)&&i(e.coordinate)});t.addInteraction(l),l.on("drawend",e=>((e,t,r,n,o)=>{r.setId(String(n)),r.setProperties(o),e.store.source.addFeature(r),e.emit(P.CREATE,e.store.toGeoJSON(r)),null==t||t(r)})(r,n.resolvePointSymbol,e.feature,o,a)),l.on("drawabort",()=>{r.emit(P.CANCEL)});var d=(e=>{var t,r,{drawInteraction:n,options:o,canPlace:a}=e,{container:i,addVertexButtonId:l,mapProvider:d,snap:s,crossHair:c}=o,u=null!==(t=o.interfaceType)&&void 0!==t?t:"mouse",p=()=>u,v=()=>{"mouse"!==p()&&s&&s.apply(d.getCenter())},g=e=>{u=e,Ge(c,e),v()},y=Ae({container:i,addVertexButtonId:l,olView:null===(r=n.getMap())||void 0===r?void 0:r.getView(),onUndo:null,getInterfaceType:p,setInterfaceType:g,clearLastCoord:()=>{},updateRubberbanding:v,placeVertex:()=>{var e=d.getCenter(),t="mouse"!==p()&&s?s.apply(e):e;null==s||s.hideIndicator(),a(t)&&(n.appendCoordinates([t]),n.finishDrawing())}});return Ge(c,u),{getInterfaceType:p,setInterfaceType:g,destroy(){y.destroy()}}})({drawInteraction:l,options:n,canPlace:i});return{done(){},cancel(){l.abortDrawing()},undo(){},setInterfaceType(e){d.setInterfaceType(e)},destroy(){r.emit(P.INTERFACE_TYPE_CHANGE,{interfaceType:d.getInterfaceType()}),d.destroy(),t.removeInteraction(l)}}},kt=["normal","active","selected"],Ft={normal:"symbolImageId",active:"symbolActiveImageId",selected:"symbolSelectedImageId"},Ot=e=>!!(null!=e&&e.symbol||null!=e&&e.symbolSvgContent),Dt=function(){var e=t(function*(e){var{manager:t,mapProvider:r,olFeature:n}=e,o=n.getProperties();if(Ot(o)){var i=(e=>{var t;return(globalThis.devicePixelRatio||1)*(null!==(t=null==e?void 0:e.drawScale)&&void 0!==t?t:1)})(r);try{var l=yield Promise.all(kt.map(e=>a.rasteriseSymbolImage(o,t.mapStyle,e,i)));if(!l[0])return;if(!t.store.source.hasFeature(n))return;kt.forEach((e,t)=>{var r=l[t];r&&(((e,t)=>{var r=W.get(e);if(r)return r;var n=document.createElement("canvas");n.width=t.width,n.height=t.height,n.getContext("2d").putImageData(t,0,0),W.set(e,n)})(r.imageId,r.imageData),n.set(Ft[e],r.imageId))}),n.set("symbolPixelRatio",i)}catch(e){console.error("[draw] failed to resolve point symbol",n.getId(),e)}}});return function(t){return e.apply(this,arguments)}}(),Gt=e=>{var{manager:t,mapProvider:r}=e,n=t.store.source.getFeatures().filter(e=>{var t;return"Point"===(null===(t=e.getGeometry())||void 0===t?void 0:t.getType())&&Ot(e.getProperties())});return Promise.all(n.map(e=>Dt({manager:t,mapProvider:r,olFeature:e})))};function At(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 jt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?At(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):At(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}class Mt{constructor(e){var t,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._map=e,this._pluginConfig=o,this._mode="disabled",this._modeInstance=null,this._listeners=new Map,this.store=q(),this.undoStack=g(e=>this.emit(P.UNDO_CHANGE,e)),this.mapStyle=null,this.colors=y(null,o),this.styles=ne(this.colors),this.snap=_e(e,null!==(t=o.snapLayers)&&void 0!==t?t:null,this.colors,null!==(n=o.snapRadius)&&void 0!==n?n:w.snapRadius),this._layer=new r({source:this.store.source,style:this.styles.createFeatureStyle(),zIndex:100}),this._layer.set("layerId","draw"),e.addLayer(this._layer)}setMapStyle(e){var t;this.mapStyle=e,this.colors=y(e,this._pluginConfig),this.styles=ne(this.colors),this._layer.setStyle(this.styles.createFeatureStyle()),this.store.source.changed(),null===(t=this.snap)||void 0===t||t.updateColors(this.colors),this.emit(Me,this.styles)}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){var r;null===(r=this._listeners.get(e))||void 0===r||r.delete(t)}emit(e,t){var r=this._listeners.get(e);r&&Array.from(r).forEach(e=>e(t))}changeMode(e){var r=arguments,n=this;return t(function*(){var t,o,a,i=r.length>1&&void 0!==r[1]?r[1]:{};null===(t=n._modeInstance)||void 0===t||t.destroy(),n._modeInstance=null,n._mode=e;var l="draw_polygon"===e||"draw_line"===e||"draw_point"===e||"edit_vertex"===e||"edit_point"===e;null===(o=n.snap)||void 0===o||o.setIndicatorActive(l);var d=jt(jt({},i),{},{snap:n.snap});if("draw_polygon"===e||"draw_line"===e)n._modeInstance=Be({map:n._map,manager:n,options:d});else if("draw_point"===e){var s=jt(jt({},d),{},{resolvePointSymbol:e=>Dt({manager:n,mapProvider:i.mapProvider,olFeature:e})});n._modeInstance=Lt({map:n._map,manager:n,options:s})}else"edit_vertex"===e?n._modeInstance=It({map:n._map,manager:n,options:d}):"edit_point"===e&&(n._modeInstance=_t({map:n._map,manager:n,options:d}));null===(a=n.snap)||void 0===a||a.reattach()})()}getMode(){return this._mode}done(){var e;null===(e=this._modeInstance)||void 0===e||e.done()}cancel(){var e;null===(e=this._modeInstance)||void 0===e||e.cancel(),this.changeMode("disabled")}undo(){var e;null===(e=this._modeInstance)||void 0===e||e.undo()}deleteVertex(){var e;null===(e=this._modeInstance)||void 0===e||e.deleteVertex()}nudgeSelectedVertex(e,t,r){var n,o;null===(n=this._modeInstance)||void 0===n||null===(o=n.nudgeSelectedVertex)||void 0===o||o.call(n,e,t,r)}setInvalid(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.setInvalid)||void 0===r||r.call(t,e)}setDrawingPreviewProperty(e,t){var r,n;null===(r=this._modeInstance)||void 0===r||null===(n=r.setDrawingPreviewProperty)||void 0===n||n.call(r,e,t)}setInterfaceType(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.setInterfaceType)||void 0===r||r.call(t,e),this.emit(P.INTERFACE_TYPE_CHANGE,{interfaceType:e})}get(e){return this.store.get(e)}add(e){return this.store.add(e)}delete(e){return this.store.remove(e)}deleteAll(){return this.store.clear()}remove(){var e,t;null===(e=this._modeInstance)||void 0===e||e.destroy(),this._modeInstance=null,null===(t=this.snap)||void 0===t||t.destroy(),this.snap=null,this.store.clear(),this._map.removeLayer(this._layer),this._listeners.clear()}}function Rt(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 Ht(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Rt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Rt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}class Nt{constructor(t,r){var n;e(this,"_snapEnabled",!1);var{manager:o,remove:a}=(e=>{var t,{mapProvider:r,events:n,eventBus:o,pluginConfig:a={},mapStyle:i=null}=e,{map:l}=r,d=new Mt(l,a);i&&d.setMapStyle(i),r.draw=d,r.drawScale=null!==(t=k[r.mapSize])&&void 0!==t?t:1;var s=()=>o.emit(n.MAP_DATA_CHANGE),c=e=>{var t;r.drawScale=null!==(t=k[e])&&void 0!==t?t:1,Gt({manager:d,mapProvider:r}).then(s)};o.on(n.MAP_SET_SIZE,c);var u=e=>{d.setMapStyle(e),Gt({manager:d,mapProvider:r}).then(s)};return o.on(n.MAP_SET_STYLE,u),{manager:d,remove(){o.off(n.MAP_SET_SIZE,c),o.off(n.MAP_SET_STYLE,u),d.remove(),r.draw=null}}})({mapProvider:t,events:r.events,eventBus:r.eventBus,pluginConfig:null!==(n=r.pluginConfig)&&void 0!==n?n:{snapLayers:r.snapLayers},mapStyle:r.mapStyle});this._cleanupOLDraw=a,this._manager=o,this._mapProvider=t}changeMode(e){var t=Ht(Ht({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),{},{mapProvider:this._mapProvider});return"draw_polygon"===e&&(t.geometryType="Polygon"),"draw_line"===e&&(t.geometryType="LineString"),this._manager.changeMode(e,t)}getMode(){return this._manager.getMode()}setInterfaceType(e){this._manager.setInterfaceType(e)}done(){this._manager.undoStack.clear(),this._manager.done()}cancel(){this._manager.undoStack.clear(),this._manager.cancel()}undo(){this._manager.undo()}deleteVertex(){this._manager.deleteVertex()}nudgeSelectedVertex(e,t,r){this._manager.nudgeSelectedVertex(e,t,r)}setGeometryValid(e){this._manager._geometryValid=e}set _geometryValidator(e){this._manager._geometryValidator=e}get _geometryValidator(){return this._manager._geometryValidator}setInvalid(e){this._manager.setInvalid(e)}get(e){return this._manager.get(e)}add(e){var t,r=this._manager.add(e);return"Point"===(null===(t=e.geometry)||void 0===t?void 0:t.type)&&Ot(e.properties)&&Dt({manager:this._manager,mapProvider:this._mapProvider,olFeature:r}),r}setStyle(e,t){var r,n=this._manager.store.getOL(e);n&&(n.setProperties(t),"Point"===(null===(r=n.getGeometry())||void 0===r?void 0:r.getType())&&Ot(n.getProperties())&&Dt({manager:this._manager,mapProvider:this._mapProvider,olFeature:n}))}delete(e){return this._manager.delete(e)}deleteAll(){return this._manager.deleteAll()}setSnapEnabled(e){var t;this._snapEnabled=e,null===(t=this._manager.snap)||void 0===t||t.setActive(e)}setSnapLayers(e){var t,r=null==e?void 0:e.map(e=>"stroke-inactive.cold"===e?this._manager._layer:e);null===(t=this._manager.snap)||void 0===t||t.setSnapLayers(r)}isSnapEnabled(){return this._snapEnabled}setFeatureProperty(){}setDrawingPreviewProperty(e,t){this._manager.setDrawingPreviewProperty(e,t)}on(e,t){this._manager.on(e,t)}off(e,t){this._manager.off(e,t)}remove(){this._cleanupOLDraw()}}export{Nt as OLDrawAdapter};
|