@defra/interactive-map 0.0.5-alpha → 0.0.7-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.
Files changed (70) hide show
  1. package/dist/css/index.css +1 -1
  2. package/dist/esm/im-core.js +1 -1
  3. package/dist/esm/index.js +1 -1
  4. package/dist/umd/im-core.js +1 -1
  5. package/dist/umd/index.js +1 -1
  6. package/docs/api.md +10 -5
  7. package/package.json +56 -4
  8. package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +2 -0
  9. package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js.LICENSE.txt +1 -0
  10. package/plugins/beta/draw-es/dist/esm/index.js +2 -0
  11. package/plugins/beta/draw-es/dist/esm/index.js.LICENSE.txt +1 -0
  12. package/plugins/beta/draw-ml/dist/css/index.css +1 -1
  13. package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
  14. package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
  15. package/plugins/beta/draw-ml/src/DrawInit.jsx +15 -0
  16. package/plugins/beta/draw-ml/src/api/deleteFeature.js +4 -4
  17. package/plugins/beta/draw-ml/src/api/editFeature.js +10 -5
  18. package/plugins/beta/draw-ml/src/draw.scss +1 -0
  19. package/plugins/beta/draw-ml/src/events.js +2 -0
  20. package/plugins/beta/draw-ml/src/manifest.js +18 -43
  21. package/plugins/beta/draw-ml/src/modes/createDrawMode.js +35 -1
  22. package/plugins/beta/draw-ml/src/modes/editVertexMode.js +17 -1
  23. package/plugins/interact/dist/css/index.css +1 -1
  24. package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
  25. package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
  26. package/plugins/interact/src/defaults.js +1 -0
  27. package/plugins/interact/src/events.js +6 -1
  28. package/plugins/interact/src/events.test.js +19 -5
  29. package/plugins/interact/src/hooks/useInteractionHandlers.js +7 -2
  30. package/plugins/interact/src/hooks/useInteractionHandlers.test.js +28 -0
  31. package/plugins/interact/src/interact.scss +1 -0
  32. package/plugins/interact/src/manifest.js +22 -16
  33. package/plugins/interact/src/manifest.test.js +1 -1
  34. package/plugins/interact/src/reducer.js +1 -0
  35. package/plugins/interact/src/reducer.test.js +1 -0
  36. package/plugins/interact/src/utils/spatial.js +4 -0
  37. package/plugins/interact/src/utils/spatial.test.js +8 -1
  38. package/providers/beta/esri/dist/css/im-esri-provider.css +1 -0
  39. package/providers/beta/esri/dist/esm/im-esri-provider.js +2 -0
  40. package/providers/beta/esri/dist/esm/im-esri-provider.js.LICENSE.txt +1 -0
  41. package/providers/beta/esri/dist/esm/index.js +2 -0
  42. package/providers/beta/esri/dist/esm/index.js.LICENSE.txt +1 -0
  43. package/providers/beta/esri/src/esriProvider.js +12 -0
  44. package/providers/beta/esri/src/mapEvents.js +2 -2
  45. package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
  46. package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
  47. package/providers/maplibre/src/maplibreProvider.js +11 -1
  48. package/providers/maplibre/src/utils/highlightFeatures.js +6 -2
  49. package/src/App/components/Actions/Actions.jsx +2 -1
  50. package/src/App/components/Actions/Actions.module.scss +14 -0
  51. package/src/App/components/Actions/Actions.test.jsx +2 -2
  52. package/src/App/components/MapButton/MapButton.module.scss +19 -6
  53. package/src/App/components/PopupMenu/PopupMenu.jsx +69 -14
  54. package/src/App/components/PopupMenu/PopupMenu.module.scss +70 -7
  55. package/src/App/components/PopupMenu/PopupMenu.test.jsx +102 -16
  56. package/src/App/hooks/useButtonStateEvaluator.js +2 -2
  57. package/src/App/hooks/useInterfaceAPI.js +26 -32
  58. package/src/App/registry/pluginRegistry.js +2 -2
  59. package/src/App/renderer/mapButtons.js +6 -1
  60. package/src/App/renderer/mapButtons.test.js +20 -0
  61. package/src/App/store/AppProvider.jsx +18 -18
  62. package/src/App/store/MapProvider.jsx +2 -2
  63. package/src/App/store/appActionsMap.js +3 -0
  64. package/src/App/store/appActionsMap.test.js +5 -0
  65. package/src/App/store/mapActionsMap.js +3 -2
  66. package/src/App/store/mapReducer.js +1 -0
  67. package/src/scss/settings/_colors.scss +1 -1
  68. package/src/scss/settings/_dimensions.scss +3 -2
  69. package/src/utils/detectInterfaceType.js +2 -1
  70. package/webpack.esm.mjs +19 -10
@@ -4,6 +4,8 @@ import { createMapboxDraw } from './mapboxDraw.js'
4
4
 
5
5
  export const DrawInit = ({ appState, appConfig, mapState, pluginConfig, pluginState, services, mapProvider, buttonConfig }) => {
6
6
  const { events, eventBus } = services
7
+ const { crossHair } = mapState
8
+ const isTouchOrKeyboard = ['touch', 'keyboard'].includes(appState.interfaceType)
7
9
 
8
10
  // Create draw instance once
9
11
  useEffect(() => {
@@ -33,6 +35,19 @@ export const DrawInit = ({ appState, appConfig, mapState, pluginConfig, pluginSt
33
35
 
34
36
  }, [mapState.isMapReady, appState.mode])
35
37
 
38
+ // Show crosshair immediately on touch/keyboard when entering draw mode
39
+ useEffect(() => {
40
+ if (['draw_polygon', 'draw_line'].includes(pluginState.mode) && isTouchOrKeyboard) {
41
+ const wasAlreadyVisible = crossHair.isVisible
42
+ crossHair.fixAtCenter()
43
+ return () => {
44
+ if (!wasAlreadyVisible) {
45
+ crossHair.hide()
46
+ }
47
+ }
48
+ }
49
+ }, [pluginState.mode, appState.interfaceType])
50
+
36
51
  // Attach events when plgin state changes
37
52
  useEffect(() => {
38
53
 
@@ -1,4 +1,4 @@
1
- export const deleteFeature = ({ mapProvider, services }, featureId) => {
1
+ export const deleteFeature = ({ mapProvider, services }, featureIds) => {
2
2
  const { draw } = mapProvider
3
3
  const { eventBus } = services
4
4
 
@@ -6,8 +6,8 @@ export const deleteFeature = ({ mapProvider, services }, featureId) => {
6
6
  return
7
7
  }
8
8
 
9
- // --- Delete feature from draw instance
10
- draw.delete(featureId)
9
+ // --- Delete features from draw instance
10
+ draw.delete(featureIds)
11
11
 
12
- eventBus.emit('draw:delete', { featureId })
12
+ eventBus.emit('draw:delete', { featureIds })
13
13
  }
@@ -14,14 +14,17 @@ export const editFeature = ({ appState, appConfig, mapState, pluginConfig, plugi
14
14
  return
15
15
  }
16
16
 
17
+ // Guard: feature must exist in draw before doing anything
18
+ if (!draw.get(featureId)) {
19
+ return
20
+ }
21
+
17
22
  // Determin snapLayers from pluginConfig or runtime config
18
23
  let snapLayers = null
19
- if (options.snapLayers !== undefined) {
20
- snapLayers = options.snapLayers
21
- } else if (pluginConfig.snapLayers !== undefined) {
22
- snapLayers = pluginConfig.snapLayers
24
+ if (options.snapLayers === undefined) {
25
+ snapLayers = pluginConfig.snapLayers ?? null
23
26
  } else {
24
- snapLayers = null
27
+ snapLayers = options.snapLayers
25
28
  }
26
29
 
27
30
  // Set per-call snap layers if provided
@@ -59,4 +62,6 @@ export const editFeature = ({ appState, appConfig, mapState, pluginConfig, plugi
59
62
 
60
63
  // Set mode to edit_vertex
61
64
  dispatch({ type: 'SET_MODE', payload: 'edit_vertex' })
65
+
66
+ return true
62
67
  }
@@ -29,4 +29,5 @@
29
29
  .im-c-button-wrapper--draw-add-point {
30
30
  position: absolute;
31
31
  bottom: calc(100% + var(--primary-gap));
32
+ z-index: 0;
32
33
  }
@@ -148,6 +148,7 @@ export function attachEvents({ pluginState, mapProvider, buttonConfig, eventBus
148
148
  drawSnap.onClick = handleSnap
149
149
 
150
150
  map.on('styledata', handleStyleData)
151
+ map.on('draw.cancel', handleCancel)
151
152
  map.on('draw.create', onCreate)
152
153
  map.on('draw.editfinish', onEditFinish)
153
154
  map.on('draw.update', onUpdate)
@@ -161,6 +162,7 @@ export function attachEvents({ pluginState, mapProvider, buttonConfig, eventBus
161
162
  btn.onClick = null
162
163
  }})
163
164
  map.off('styledata', handleStyleData)
165
+ map.off('draw.cancel', handleCancel)
164
166
  map.off('draw.create', onCreate)
165
167
  map.off('draw.editfinish', onEditFinish)
166
168
  map.off('draw.update', onUpdate)
@@ -26,15 +26,15 @@ export const manifest = {
26
26
  buttons: [{
27
27
  id: 'drawAddPoint',
28
28
  label: 'Add point',
29
- variant: 'primary',
30
- hiddenWhen: ({ appState, pluginState }) => !['draw_polygon', 'draw_line'].includes(pluginState.mode) || appState.interfaceType === 'mouse',
31
- ...createButtonSlots(true)
29
+ iconId: 'plus',
30
+ variant: 'touch',
31
+ hiddenWhen: ({ appState, pluginState }) => !['draw_polygon', 'draw_line'].includes(pluginState.mode) || appState.interfaceType !== 'touch',
32
+ ...createButtonSlots(false)
32
33
  },{
33
- id: 'drawDone',
34
- label: 'Done',
35
- variant: 'primary',
36
- hiddenWhen: ({ pluginState }) => !['draw_polygon', 'draw_line', 'edit_vertex'].includes(pluginState.mode),
37
- enableWhen: ({ pluginState }) => pluginState.numVertecies >= (pluginState.mode === 'draw_polygon' ? 3 : 2),
34
+ id: 'drawCancel',
35
+ label: 'Cancel',
36
+ variant: 'tertiary',
37
+ hiddenWhen: ({ pluginState }) => !pluginState.mode,
38
38
  ...createButtonSlots(true)
39
39
  },{
40
40
  id: 'drawMenu',
@@ -62,40 +62,12 @@ export const manifest = {
62
62
  hiddenWhen: ({ pluginState }) => !(['simple_select', 'edit_vertex'].includes(pluginState.mode)),
63
63
  }],
64
64
  ...createButtonSlots(true)
65
- },
66
- // {
67
- // id: 'drawUndo',
68
- // label: 'Undo',
69
- // iconId: 'undo',
70
- // variant: 'tertiary',
71
- // hiddenWhen: ({ pluginState }) => !['draw_polygon', 'draw_line', 'edit_vertex'].includes(pluginState.mode),
72
- // enableWhen: ({ pluginState }) => pluginState.undoStackLength > 0,
73
- // excludeWhen: () => true,
74
- // ...createButtonSlots(false)
75
- // },{
76
- // id: 'drawDeletePoint',
77
- // label: 'Delete point',
78
- // iconId: 'trash',
79
- // variant: 'tertiary',
80
- // enableWhen: ({ pluginState }) => pluginState.selectedVertexIndex >= 0 && pluginState.numVertecies > (pluginState.tempFeature?.geometry?.type === 'Polygon' ? 3 : 2),
81
- // hiddenWhen: ({ pluginState }) => !(['simple_select', 'edit_vertex'].includes(pluginState.mode)),
82
- // excludeWhen: () => true,
83
- // ...createButtonSlots(false)
84
- // },{
85
- // id: 'drawSnap',
86
- // label: 'Snap to line',
87
- // iconId: 'magnet',
88
- // variant: 'tertiary',
89
- // hiddenWhen: ({ pluginState }) => !pluginState.mode || !pluginState.hasSnapLayers,
90
- // pressedWhen: ({ pluginState }) => !!pluginState.snap,
91
- // excludeWhen: () => true,
92
- // ...createButtonSlots(false)
93
- // },
94
- {
95
- id: 'drawCancel',
96
- label: 'Cancel',
97
- variant: 'tertiary',
98
- hiddenWhen: ({ pluginState }) => !pluginState.mode,
65
+ },{
66
+ id: 'drawDone',
67
+ label: 'Done',
68
+ variant: 'primary',
69
+ hiddenWhen: ({ pluginState }) => !['draw_polygon', 'draw_line', 'edit_vertex'].includes(pluginState.mode),
70
+ enableWhen: ({ pluginState }) => pluginState.numVertecies >= (pluginState.mode === 'draw_polygon' ? 3 : 2),
99
71
  ...createButtonSlots(true)
100
72
  }],
101
73
 
@@ -108,10 +80,13 @@ export const manifest = {
108
80
 
109
81
  icons: [{
110
82
  id: 'menu',
111
- svgContent: '<circle cx="12" cy="12" r="10"/><path d="m16 10-4 4-4-4"/>'
83
+ svgContent: '<path d="m6 9 6 6 6-6"/>'
112
84
  },{
113
85
  id: 'undo',
114
86
  svgContent: '<path d="M9 14 4 9l5-5"/><path d="M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"/>'
87
+ },{
88
+ id: 'check',
89
+ svgContent: '<path d="M20 6 9 17l-5-5"/>'
115
90
  },{
116
91
  id: 'magnet',
117
92
  svgContent: '<path d="m12 15 4 4"/><path d="M2.352 10.648a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.029-6.029a1 1 0 1 1 3 3l-6.029 6.029a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.365-6.367A1 1 0 0 0 8.716 4.282z"/><path d="m5 8 4 4"/>'
@@ -399,7 +399,15 @@ export const createDrawMode = (ParentMode, config) => {
399
399
  },
400
400
 
401
401
  onKeyup(state, e) {
402
- if (e.key === 'Escape' || document.activeElement !== state.container) {
402
+ if (e.key === 'Escape') {
403
+ if (state.interfaceType !== 'keyboard') {
404
+ // Mouse/touch: cancel drawing — onKeyUp (capital U) won't fire since container isn't focused
405
+ this.map.fire('draw.cancel')
406
+ }
407
+ // Keyboard: onKeyUp (capital U) handles reinitialize (container is focused, event reaches it)
408
+ return
409
+ }
410
+ if (document.activeElement !== state.container) {
403
411
  return
404
412
  }
405
413
  this._setInterface(state, 'keyboard')
@@ -409,6 +417,32 @@ export const createDrawMode = (ParentMode, config) => {
409
417
  }
410
418
  },
411
419
 
420
+ // Called by mapbox-gl-draw's event system (capital U — distinct from onKeyup above).
421
+ // Registered on ctx.container, so only fires when the viewport has focus (keyboard drawing).
422
+ // 1. A UI element inside the viewport has focus (e.g. popup menu) → ignore, let React handle
423
+ // 2. Keyboard drawing (container focused, interfaceType === 'keyboard') → Escape restarts
424
+ // 3. Non-keyboard with container focused → skip (already handled by window onKeyup via draw.cancel)
425
+ onKeyUp(state, e) {
426
+ const activeEl = document.activeElement
427
+ if (activeEl && activeEl !== state.container && state.container.contains(activeEl)) {
428
+ return
429
+ }
430
+ if (e.key === 'Escape') {
431
+ if (state.interfaceType === 'keyboard') {
432
+ const undoStack = this.map._undoStack
433
+ if (undoStack) {
434
+ undoStack.clear()
435
+ }
436
+ this._reinitializeFeature(state, getFeature(state))
437
+ }
438
+ // Non-keyboard already handled by onKeyup (window) via draw.cancel
439
+ return
440
+ }
441
+ if (activeEl !== state.container) {
442
+ ParentMode.onKeyUp.call(this, state, e)
443
+ }
444
+ },
445
+
412
446
  onFocus(state) {
413
447
  state.vertexMarker.style.display = ['touch', 'keyboard'].includes(state.interfaceType) ? 'block' : 'none'
414
448
  },
@@ -153,6 +153,10 @@ export const EditVertexMode = {
153
153
  },
154
154
 
155
155
  onKeydown(state, e) {
156
+ if (!state.container.contains(document.activeElement)) {
157
+ return
158
+ }
159
+
156
160
  state.interfaceType = 'keyboard'
157
161
  this.hideTouchVertexIndicator(state)
158
162
 
@@ -244,6 +248,10 @@ export const EditVertexMode = {
244
248
  },
245
249
 
246
250
  onKeyup(state, e) {
251
+ if (!state.container.contains(document.activeElement)) {
252
+ return
253
+ }
254
+
247
255
  state.interfaceType = 'keyboard'
248
256
  if (ARROW_KEYS.has(e.key) && state.selectedVertexIndex >= 0) {
249
257
  e.stopPropagation()
@@ -331,13 +339,21 @@ export const EditVertexMode = {
331
339
 
332
340
  // Push undo for vertex insertion (from dragging midpoint)
333
341
  if (wasInsertion) {
342
+ const insertedIndex = state._insertedVertexIndex
334
343
  this.pushUndo({
335
344
  type: 'insert_vertex',
336
345
  featureId: state.featureId,
337
- vertexIndex: state._insertedVertexIndex
346
+ vertexIndex: insertedIndex
338
347
  })
348
+ // selectedVertexIndex was pointing to the old midpoint-range index;
349
+ // update it to the actual flat index of the newly inserted vertex
350
+ state.selectedVertexIndex = insertedIndex
351
+ state.selectedVertexType = 'vertex'
339
352
  state._isInsertingVertex = false
340
353
  state._insertedVertexIndex = undefined
354
+ // Broadcast the updated vertex count — DirectSelect.onMouseUp only fires
355
+ // draw.update (not draw.selectionchange), so onSelectionChange never runs
356
+ this.map.fire('draw.vertexselection', { index: insertedIndex, numVertecies: state.vertecies.length })
341
357
  }
342
358
  // Push undo for the move if vertex actually moved
343
359
  else if (vertexMoved && state._moveStartPosition && state._moveStartIndex !== undefined) {
@@ -1 +1 @@
1
- .im-c-mark-location{display:flex;justify-content:center;gap:var(--divider-gap)}.im-o-app--mobile .im-c-mark-location .im-c-button-wrapper,.im-o-app--mobile .im-c-mark-location .im-c-map-button{flex:1 1 auto;min-width:fit-content}.im-o-app--mouse.im-o-app--tablet .im-c-mark-location .im-c-map-button,.im-o-app--mouse.im-o-app--desktop .im-c-mark-location .im-c-map-button{min-width:150px}.im-o-app--mobile .im-c-mark-location .im-c-map-button{flex:1 1 auto;min-width:fit-content}.im-c-button-wrapper--select-at-target{position:absolute;bottom:calc(100% + var(--primary-gap))}
1
+ .im-c-mark-location{display:flex;justify-content:center;gap:var(--divider-gap)}.im-o-app--mobile .im-c-mark-location .im-c-button-wrapper,.im-o-app--mobile .im-c-mark-location .im-c-map-button{flex:1 1 auto;min-width:fit-content}.im-o-app--mouse.im-o-app--tablet .im-c-mark-location .im-c-map-button,.im-o-app--mouse.im-o-app--desktop .im-c-mark-location .im-c-map-button{min-width:150px}.im-o-app--mobile .im-c-mark-location .im-c-map-button{flex:1 1 auto;min-width:fit-content}.im-c-button-wrapper--select-at-target{position:absolute;bottom:calc(100% + var(--primary-gap));z-index:0}
@@ -1 +1 @@
1
- export const __webpack_esm_id__="im-interact-plugin";export const __webpack_esm_ids__=["im-interact-plugin"];export const __webpack_esm_modules__={"./plugins/interact/src/manifest.js"(e,t,r){r.d(t,{manifest:()=>ye}),r.r(t);var n=r("react");function o(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function i(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!c(e[0])||!c(e[1]))throw new Error("coordinates must contain numbers");return o({type:"Point",coordinates:e},t,r)}function a(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return o({type:"LineString",coordinates:e},t,r)}function u(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function l(e,t,r={}){return o({type:"MultiLineString",coordinates:e},t,r)}function c(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;const s=11102230246251565e-32,f=134217729,p=(3+8*s)*s;function y(e,t,r,n,o){let i,a,u,l,c=t[0],s=n[0],f=0,p=0;s>c==s>-c?(i=c,c=t[++f]):(i=s,s=n[++p]);let y=0;if(f<e&&p<r)for(s>c==s>-c?(a=c+i,u=i-(a-c),c=t[++f]):(a=s+i,u=i-(a-s),s=n[++p]),i=a,0!==u&&(o[y++]=u);f<e&&p<r;)s>c==s>-c?(a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f]):(a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p]),i=a,0!==u&&(o[y++]=u);for(;f<e;)a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f],i=a,0!==u&&(o[y++]=u);for(;p<r;)a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p],i=a,0!==u&&(o[y++]=u);return 0===i&&0!==y||(o[y++]=i),y}function d(e){return new Float64Array(e)}const g=d(4),h=d(8),b=d(12),v=d(16),m=d(4);function S(e,t,r,n,o,i){const a=(t-i)*(r-o),u=(e-o)*(n-i),l=a-u,c=Math.abs(a+u);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let u,l,c,s,d,S,E,w,P,A,O,L,k,F,j,I,C,_;const M=e-o,D=r-o,x=t-i,T=n-i;F=M*T,S=f*M,E=S-(S-M),w=M-E,S=f*T,P=S-(S-T),A=T-P,j=w*A-(F-E*P-w*P-E*A),I=x*D,S=f*x,E=S-(S-x),w=x-E,S=f*D,P=S-(S-D),A=D-P,C=w*A-(I-E*P-w*P-E*A),O=j-C,d=j-O,g[0]=j-(O+d)+(d-C),L=F+O,d=L-F,k=F-(L-d)+(O-d),O=k-I,d=k-O,g[1]=k-(O+d)+(d-I),_=L+O,d=_-L,g[2]=L-(_-d)+(O-d),g[3]=_;let B=function(e,t){let r=t[0];for(let e=1;e<4;e++)r+=t[e];return r}(0,g),U=22204460492503146e-32*a;if(B>=U||-B>=U)return B;if(d=e-M,u=e-(M+d)+(d-o),d=r-D,c=r-(D+d)+(d-o),d=t-x,l=t-(x+d)+(d-i),d=n-T,s=n-(T+d)+(d-i),0===u&&0===l&&0===c&&0===s)return B;if(U=11093356479670487e-47*a+p*Math.abs(B),B+=M*s+T*u-(x*c+D*l),B>=U||-B>=U)return B;F=u*T,S=f*u,E=S-(S-u),w=u-E,S=f*T,P=S-(S-T),A=T-P,j=w*A-(F-E*P-w*P-E*A),I=l*D,S=f*l,E=S-(S-l),w=l-E,S=f*D,P=S-(S-D),A=D-P,C=w*A-(I-E*P-w*P-E*A),O=j-C,d=j-O,m[0]=j-(O+d)+(d-C),L=F+O,d=L-F,k=F-(L-d)+(O-d),O=k-I,d=k-O,m[1]=k-(O+d)+(d-I),_=L+O,d=_-L,m[2]=L-(_-d)+(O-d),m[3]=_;const R=y(4,g,4,m,h);F=M*s,S=f*M,E=S-(S-M),w=M-E,S=f*s,P=S-(S-s),A=s-P,j=w*A-(F-E*P-w*P-E*A),I=x*c,S=f*x,E=S-(S-x),w=x-E,S=f*c,P=S-(S-c),A=c-P,C=w*A-(I-E*P-w*P-E*A),O=j-C,d=j-O,m[0]=j-(O+d)+(d-C),L=F+O,d=L-F,k=F-(L-d)+(O-d),O=k-I,d=k-O,m[1]=k-(O+d)+(d-I),_=L+O,d=_-L,m[2]=L-(_-d)+(O-d),m[3]=_;const G=y(R,h,4,m,b);F=u*s,S=f*u,E=S-(S-u),w=u-E,S=f*s,P=S-(S-s),A=s-P,j=w*A-(F-E*P-w*P-E*A),I=l*c,S=f*l,E=S-(S-l),w=l-E,S=f*c,P=S-(S-c),A=c-P,C=w*A-(I-E*P-w*P-E*A),O=j-C,d=j-O,m[0]=j-(O+d)+(d-C),L=F+O,d=L-F,k=F-(L-d)+(O-d),O=k-I,d=k-O,m[1]=k-(O+d)+(d-I),_=L+O,d=_-L,m[2]=L-(_-d)+(O-d),m[3]=_;const N=y(G,b,4,m,v);return v[N-1]}(e,t,r,n,o,i,c)}function E(e,t){var r,n,o,i,a,u,l,c,s,f=0,p=e[0],y=e[1],d=t.length;for(r=0;r<d;r++){n=0;var g=t[r],h=g.length-1;if((c=g[0])[0]!==g[h][0]&&c[1]!==g[h][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-p,a=c[1]-y;n<h;n++){if(u=(s=g[n+1])[0]-p,l=s[1]-y,0===a&&0===l){if(u<=0&&i>=0||i<=0&&u>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=S(i,u,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&f++}c=s,a=l,i=u}}return f%2!=0}function w(e){return"Feature"===e.type?e.geometry:e}function P(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=w(t),i=o.type,a=t.bbox;let u=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(u=[u]);let l=!1;for(var c=0;c<u.length;++c){const e=E(n,u[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(8),d(8),d(8),d(4),d(8),d(8),d(8),d(12),d(192),d(192),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(8),d(8),d(8),d(8),d(8),d(8),d(8),d(8),d(8),d(4),d(4),d(4),d(8),d(16),d(16),d(16),d(32),d(32),d(48),d(64),d(1152),d(1152),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(24),d(24),d(24),d(24),d(24),d(24),d(24),d(24),d(24),d(24),d(1152),d(1152),d(1152),d(1152),d(1152),d(2304),d(2304),d(3456),d(5760),d(8),d(8),d(8),d(16),d(24),d(48),d(48),d(96),d(192),d(384),d(384),d(384),d(768),d(96),d(96),d(96),d(1152);class A{constructor(e=[],t=O){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function O(e,t){return e<t?-1:e>t?1:0}function L(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function k(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class F{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let j=0,I=0,C=0;function _(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;I+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const u=new F(o,j,I,C),l=new F(i,j,I,C+1);u.otherEvent=l,l.otherEvent=u,L(u,l)>0?(l.isLeftEndpoint=!0,u.isLeftEndpoint=!1):(u.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(u),t.push(l),o=i,C+=1}}j+=1}class M{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function D(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,u=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,s=(c-u)*(o-r)-(l-a)*(i-n);if(0===s)return!1;const f=((l-a)*(n-u)-(c-u)*(r-a))/s,p=((o-r)*(n-u)-(i-n)*(r-a))/s;return f>=0&&f<=1&&p>=0&&p<=1&&[r+f*(o-r),n+f*(i-n)]}function x(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:a=!0}=r;let l=[];"FeatureCollection"===e.type?l=l.concat(e.features):"Feature"===e.type?l.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||l.push(o(e)),"FeatureCollection"===t.type?l=l.concat(t.features):"Feature"===t.type?l.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||l.push(o(t));const c=function(e,t){const r=new A([],L);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)_(r[e],t)}else _(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new A([],k);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new M(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const u=D(e,a);!1!==u&&r.push(u)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)}(u(l),a);let s=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=c;return u(s.map(e=>i(e)))}function T(e,t){!function(e,t){var r,n,o,i,a,u,l,c,s,f,p=0,y="FeatureCollection"===e.type,d="Feature"===e.type,g=y?e.features.length:1;for(r=0;r<g;r++){for(u=y?e.features[r].geometry:d?e.geometry:e,c=y?e.features[r].properties:d?e.properties:{},s=y?e.features[r].bbox:d?e.bbox:void 0,f=y?e.features[r].id:d?e.id:void 0,a=(l=!!u&&"GeometryCollection"===u.type)?u.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?u.geometries[o]:u))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,p,c,s,f))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],p,c,s,f))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,c,s,f))return!1;p++}}(e,function(e,r,n,i,a){var u,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(o(e,n,{bbox:i,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":u="Point";break;case"MultiLineString":u="LineString";break;case"MultiPolygon":u="Polygon"}for(var c=0;c<e.coordinates.length;c++){var s=e.coordinates[c];if(!1===t(o({type:u,coordinates:s},n),r,c))return!1}})}function B(e,t={}){const r=w(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return U(w(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=w(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},o=[];return r.forEach(e=>{o.push(U(e,n))}),u(o)}(r,t);default:throw new Error("invalid poly")}}function U(e,t){return e.length>1?l(e,t):a(e[0],t)}function R(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(N(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function G(e,t,r){for(const r of t.coordinates)if(P(r,e))return!0;return x(t,B(e),{ignoreSelfIntersections:r}).features.length>0}function N(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function W(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?q(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function H(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return o({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return o({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return a(t.coordinates);case"MultiLineString":return l(t.coordinates);case"Point":return i(t.coordinates);case"MultiPoint":return function(e,t,r={}){return o({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function J(e,t){return t.some(function(t){return!function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return T(e,e=>{T(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!R(t,e);case"Polygon":return!P(e,t)}break;case"LineString":switch(t.type){case"Point":return!R(e,t);case"LineString":return!function(e,t,r){return x(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!G(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!P(t,e);case"LineString":return!G(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(P(r,t))return!0;for(const r of t.coordinates[0])if(P(r,e))return!0;return x(B(e),B(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n}(H(t),H(e))})}function $(e){var t;if(1!==e.length)return!1;var r=null===(t=e[0].geometry)||void 0===t?void 0:t.type;return"Polygon"===r||"MultiPolygon"===r}function K(e){if(e.length<2)return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=W(t).map(function(t){return e[t]});J(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}function z(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return Q(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Q(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var V={tolerance:10,interactionMode:"marker",multiSelect:!1,contiguous:!1,markerColor:"rgba(212,53,28,1)",selectedStroke:"rgba(212,53,28,1)",selectedFill:"rgba(255, 0, 0, 0.1)",selectedStrokeWidth:2};function X(e){return X="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},X(e)}var Y=function(e,t){if(!e)return null;if("string"==typeof e)return e.trim();if("object"===X(e)){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null};function Z(e){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z(e)}function ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function te(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ee(Object(r),!0).forEach(function(t){re(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ee(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function re(e,t,r){return(t=function(e){var t=function(e){if("object"!=Z(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Z(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Z(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ne(e){return ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ne(e)}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function ie(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 ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ie(Object(r),!0).forEach(function(t){ue(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ie(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ue(e,t,r){return(t=function(e){var t=function(e){if("object"!=ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ne(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ne(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var le={ENABLE:function(e,t){return ae(ae(ae({},e),t),{},{enabled:!0})},DISABLE:function(e){return ae(ae({},e),{},{enabled:!1,selectedFeatures:[],selectionBounds:null})},TOGGLE_SELECTED_FEATURES:function(e,t){var r=t.featureId,n=t.multiSelect,o=t.layerId,i=t.idProperty,a=t.addToExisting,u=void 0===a||a,l=t.replaceAll,c=void 0!==l&&l,s=t.properties,f=t.geometry,p=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],y=p.findIndex(function(e){return e.featureId===r&&e.layerId===o});if(!1===u){var d=p.filter(function(e,t){return t!==y});return ae(ae({},e),{},{selectedFeatures:d,selectionBounds:null})}var g,h,b={featureId:r,layerId:o,idProperty:i,properties:s,geometry:f};if(n&&!c){var v=function(e){if(Array.isArray(e))return oe(e)}(h=p)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(h)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?oe(e,t):void 0}}(h)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();-1===y?v.push(b):v.splice(y,1),g=v}else g=-1!==y&&1===p.length?[]:[b];return ae(ae({},e),{},{selectedFeatures:g,selectionBounds:null})},UPDATE_SELECTED_BOUNDS:function(e,t){return JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:ae(ae({},e),{},{selectionBounds:t})},CLEAR_SELECTED_FEATURES:function(e){return ae(ae({},e),{},{selectedFeatures:[],selectionBounds:null})}};function ce(e){return ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ce(e)}function se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function fe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?se(Object(r),!0).forEach(function(t){pe(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):se(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function pe(e,t,r){return(t=function(e){var t=function(e){if("object"!=ce(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ce(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ce(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ye={InitComponent:function(e){var t=e.appState,r=e.mapState,o=e.services,i=e.buttonConfig,a=e.mapProvider,u=e.pluginState,l=t.interfaceType,c=u.dispatch,s=u.enabled,f=u.selectedFeatures,p=u.selectionBounds,y=o.events,d=o.eventBus,g=o.closeApp,h=r.crossHair,b=r.mapStyle,v=["touch","keyboard"].includes(l),m=function(e){var t=e.mapState,r=e.pluginState,o=e.services,i=e.mapProvider,a=t.markers,u=r.dispatch,l=r.dataLayers,c=r.interactionMode,s=r.multiSelect,f=r.contiguous,p=r.markerColor,y=r.tolerance,d=r.selectedFeatures,g=r.selectionBounds,h=o.eventBus,b=function(e){var t,r={},n=z(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;r[o.layerId]=o}}catch(e){n.e(e)}finally{n.f()}return r}(l),v=(0,n.useCallback)(function(e){var t=e.point,n=e.coords,o=function(e,t,r){try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}}(i,t,{radius:y}),g=l.length>0;null!=r&&r.debug&&console.log("--- Features at ".concat(n," ---"),o);var v=!g||"select"!==c&&"auto"!==c?null:function(e,t){var r,n=z(e);try{for(n.s();!(r=n.n()).done;){var o,i=r.value,a=null===(o=i.layer)||void 0===o?void 0:o.id;if(t[a])return{feature:i,config:t[a]}}}catch(e){n.e(e)}finally{n.f()}return null}(o,b);v?function(e){var t,r,n=e.feature,o=e.config;a.remove("location");var i=f&&J(n,d),l=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;l&&u({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:l,multiSelect:s,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:f&&!i}})}(v):("marker"===c||"auto"===c&&g)&&(u({type:"CLEAR_SELECTED_FEATURES"}),a.add("location",n,{color:p}),h.emit("interact:markerchange",{coords:n}))},[i,l,c,s,h,u,a,f,d,b,null==r?void 0:r.debug,y,p]);return function(e,t,r){var o=(0,n.useRef)(null);(0,n.useEffect)(function(){if(!(t.length>0)||r){var n=o.current;(null===n||0===n.length)&&0===t.length||(e.emit("interact:selectionchange",{selectedFeatures:t,selectionBounds:r,canMerge:K(t),canSplit:$(t)}),o.current=t)}},[t,r])}(h,d,g),{handleInteraction:v}}({appState:t,mapState:r,pluginState:u,services:o,mapProvider:a}).handleInteraction;return function(e){var t=e.mapProvider,r=e.mapStyle,o=e.pluginState,i=e.selectedFeatures,a=e.dispatch,u=e.events,l=e.eventBus,c=o.dataLayers,s=(0,n.useMemo)(function(){return r?function(e,t){var r={};return t?(e.forEach(function(e){var n=e.selectedStroke||V.selectedStroke,o=e.selectedFill||V.selectedFill,i=e.selectedStrokeWidth||V.selectedStrokeWidth;r[e.layerId]={stroke:Y(n,t.id),fill:Y(o,t.id),strokeWidth:i}}),r):r}(c,r):null},[c,r]),f=function(){var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,i,s);a({type:"UPDATE_SELECTED_BOUNDS",payload:r})};(0,n.useEffect)(function(){if(t&&i&&s)return f(),l.on(u.MAP_DATA_CHANGE,f),function(){l.off(u.MAP_DATA_CHANGE,f)}},[i,t,s])}({mapProvider:a,mapStyle:b,pluginState:u,selectedFeatures:f,selectionBounds:p,dispatch:c,events:y,eventBus:d}),(0,n.useEffect)(function(){s&&v?h.fixAtCenter():h.hide()},[s,l]),(0,n.useEffect)(function(){if(u.enabled)return function(e){var t=e.appState,r=e.mapState,n=e.pluginState,o=e.buttonConfig,i=e.events,a=e.eventBus,u=e.handleInteraction,l=e.closeApp,c=o.selectDone,s=o.selectAtTarget,f=o.selectCancel,p=t.layoutRefs.viewportRef,y=!1,d=function(e){y="Enter"===e.key&&p.current===e.target},g=function(e){"Enter"===e.key&&y&&(e.preventDefault(),b())},h=function(e){return u(e)},b=function(){return u(r.crossHair.getDetail())},v=function(e,t){return function(r,n){e.markers.remove("location"),t.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:te({multiSelect:t.multiSelect,addToExisting:n},r)})}}(r,n),m=function(e){return v(e,!0)},S=function(e){return v(e,!1)};return document.addEventListener("keydown",d),document.addEventListener("keyup",g),a.on(i.MAP_CLICK,h),a.on("interact:selectFeature",m),a.on("interact:unselectFeature",S),s.onClick=b,c.onClick=function(){var e,o=(r.markers.getMarker("location")||{}).coords,i=n.selectionBounds,u=n.selectedFeatures;t.disabledButtons.has("selectDone")||(a.emit("interact:done",te(te(te({},o&&{coords:o}),!o&&u&&{selectedFeatures:u}),!o&&i&&{selectionBounds:i})),(null===(e=n.closeOnAction)||void 0===e||e)&&l())},f.onClick=function(){var e;a.emit("interact:cancel"),(null===(e=n.closeOnAction)||void 0===e||e)&&l()},function(){c.onClick=null,s.onClick=null,f.onClick=null,document.removeEventListener("keydown",d),document.removeEventListener("keyup",g),a.off(i.MAP_CLICK,h),a.off("interact:selectFeature",m),a.off("interact:unselectFeature",S)}}({appState:t,pluginState:u,mapState:r,buttonConfig:i,events:y,eventBus:d,handleInteraction:m,closeApp:g})},[t,r,u,i,d,m]),null},reducer:{initialState:{enabled:!1,dataLayers:[],markerColor:null,interactionMode:null,multiSelect:!1,contiguous:!1,selectedFeatures:[],selectionBounds:null,closeOnAction:!0},actions:le},buttons:[{id:"selectDone",label:"Done",variant:"primary",excludeWhen:function(e){var t=e.appState;return!e.pluginState.enabled||!t.isFullscreen},enableWhen:function(e){var t=e.mapState,r=e.pluginState;return!!t.markers.items.some(function(e){return"location"===e.id})||!!r.selectionBounds},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectAtTarget",label:"Select",variant:"primary",hiddenWhen:function(e){var t=e.appState;return!e.pluginState.enabled||!["touch","keyboard"].includes(t.interfaceType)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectCancel",label:"Cancel",variant:"tertiary",hiddenWhen:function(e){var t=e.appConfig,r=e.appState;return!e.pluginState.enabled||!(["hybrid","buttonFirst"].includes(t.behaviour)&&r.isFullscreen)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}}],keyboardShortcuts:[{id:"selectOrMark",group:"Select",title:"Select feature",command:"<kbd>Enter</kbd></dd>"}],api:{enable:function(e,t){var r=e.pluginState,n=e.pluginConfig;r.dispatch({type:"ENABLE",payload:fe(fe(fe({},V),n),t)})},disable:function(e){e.pluginState.dispatch({type:"DISABLE"})},clear:function(e){var t=e.pluginState,r=e.mapState;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})}}}}};
1
+ export const __webpack_esm_id__="im-interact-plugin";export const __webpack_esm_ids__=["im-interact-plugin"];export const __webpack_esm_modules__={"./plugins/interact/src/manifest.js"(e,t,r){r.d(t,{manifest:()=>de}),r.r(t);var n=r("react");function o(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function i(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!l(e[0])||!l(e[1]))throw new Error("coordinates must contain numbers");return o({type:"Point",coordinates:e},t,r)}function a(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return o({type:"LineString",coordinates:e},t,r)}function u(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function c(e,t,r={}){return o({type:"MultiLineString",coordinates:e},t,r)}function l(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;const s=11102230246251565e-32,f=134217729,p=(3+8*s)*s;function d(e,t,r,n,o){let i,a,u,c,l=t[0],s=n[0],f=0,p=0;s>l==s>-l?(i=l,l=t[++f]):(i=s,s=n[++p]);let d=0;if(f<e&&p<r)for(s>l==s>-l?(a=l+i,u=i-(a-l),l=t[++f]):(a=s+i,u=i-(a-s),s=n[++p]),i=a,0!==u&&(o[d++]=u);f<e&&p<r;)s>l==s>-l?(a=i+l,c=a-i,u=i-(a-c)+(l-c),l=t[++f]):(a=i+s,c=a-i,u=i-(a-c)+(s-c),s=n[++p]),i=a,0!==u&&(o[d++]=u);for(;f<e;)a=i+l,c=a-i,u=i-(a-c)+(l-c),l=t[++f],i=a,0!==u&&(o[d++]=u);for(;p<r;)a=i+s,c=a-i,u=i-(a-c)+(s-c),s=n[++p],i=a,0!==u&&(o[d++]=u);return 0===i&&0!==d||(o[d++]=i),d}function y(e){return new Float64Array(e)}const g=y(4),h=y(8),v=y(12),b=y(16),m=y(4);function S(e,t,r,n,o,i){const a=(t-i)*(r-o),u=(e-o)*(n-i),c=a-u,l=Math.abs(a+u);return Math.abs(c)>=33306690738754716e-32*l?c:-function(e,t,r,n,o,i,a){let u,c,l,s,y,S,E,w,P,A,O,L,k,F,C,I,j,_;const M=e-o,T=r-o,D=t-i,x=n-i;F=M*x,S=f*M,E=S-(S-M),w=M-E,S=f*x,P=S-(S-x),A=x-P,C=w*A-(F-E*P-w*P-E*A),I=D*T,S=f*D,E=S-(S-D),w=D-E,S=f*T,P=S-(S-T),A=T-P,j=w*A-(I-E*P-w*P-E*A),O=C-j,y=C-O,g[0]=C-(O+y)+(y-j),L=F+O,y=L-F,k=F-(L-y)+(O-y),O=k-I,y=k-O,g[1]=k-(O+y)+(y-I),_=L+O,y=_-L,g[2]=L-(_-y)+(O-y),g[3]=_;let B=function(e,t){let r=t[0];for(let e=1;e<4;e++)r+=t[e];return r}(0,g),U=22204460492503146e-32*a;if(B>=U||-B>=U)return B;if(y=e-M,u=e-(M+y)+(y-o),y=r-T,l=r-(T+y)+(y-o),y=t-D,c=t-(D+y)+(y-i),y=n-x,s=n-(x+y)+(y-i),0===u&&0===c&&0===l&&0===s)return B;if(U=11093356479670487e-47*a+p*Math.abs(B),B+=M*s+x*u-(D*l+T*c),B>=U||-B>=U)return B;F=u*x,S=f*u,E=S-(S-u),w=u-E,S=f*x,P=S-(S-x),A=x-P,C=w*A-(F-E*P-w*P-E*A),I=c*T,S=f*c,E=S-(S-c),w=c-E,S=f*T,P=S-(S-T),A=T-P,j=w*A-(I-E*P-w*P-E*A),O=C-j,y=C-O,m[0]=C-(O+y)+(y-j),L=F+O,y=L-F,k=F-(L-y)+(O-y),O=k-I,y=k-O,m[1]=k-(O+y)+(y-I),_=L+O,y=_-L,m[2]=L-(_-y)+(O-y),m[3]=_;const R=d(4,g,4,m,h);F=M*s,S=f*M,E=S-(S-M),w=M-E,S=f*s,P=S-(S-s),A=s-P,C=w*A-(F-E*P-w*P-E*A),I=D*l,S=f*D,E=S-(S-D),w=D-E,S=f*l,P=S-(S-l),A=l-P,j=w*A-(I-E*P-w*P-E*A),O=C-j,y=C-O,m[0]=C-(O+y)+(y-j),L=F+O,y=L-F,k=F-(L-y)+(O-y),O=k-I,y=k-O,m[1]=k-(O+y)+(y-I),_=L+O,y=_-L,m[2]=L-(_-y)+(O-y),m[3]=_;const G=d(R,h,4,m,v);F=u*s,S=f*u,E=S-(S-u),w=u-E,S=f*s,P=S-(S-s),A=s-P,C=w*A-(F-E*P-w*P-E*A),I=c*l,S=f*c,E=S-(S-c),w=c-E,S=f*l,P=S-(S-l),A=l-P,j=w*A-(I-E*P-w*P-E*A),O=C-j,y=C-O,m[0]=C-(O+y)+(y-j),L=F+O,y=L-F,k=F-(L-y)+(O-y),O=k-I,y=k-O,m[1]=k-(O+y)+(y-I),_=L+O,y=_-L,m[2]=L-(_-y)+(O-y),m[3]=_;const N=d(G,v,4,m,b);return b[N-1]}(e,t,r,n,o,i,l)}function E(e,t){var r,n,o,i,a,u,c,l,s,f=0,p=e[0],d=e[1],y=t.length;for(r=0;r<y;r++){n=0;var g=t[r],h=g.length-1;if((l=g[0])[0]!==g[h][0]&&l[1]!==g[h][1])throw new Error("First and last coordinates in a ring must be the same");for(i=l[0]-p,a=l[1]-d;n<h;n++){if(u=(s=g[n+1])[0]-p,c=s[1]-d,0===a&&0===c){if(u<=0&&i>=0||i<=0&&u>=0)return 0}else if(c>=0&&a<=0||c<=0&&a>=0){if(0===(o=S(i,u,a,c,0,0)))return 0;(o>0&&c>0&&a<=0||o<0&&c<=0&&a>0)&&f++}l=s,a=c,i=u}}return f%2!=0}function w(e){return"Feature"===e.type?e.geometry:e}function P(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=w(t),i=o.type,a=t.bbox;let u=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(u=[u]);let c=!1;for(var l=0;l<u.length;++l){const e=E(n,u[l]);if(0===e)return!r.ignoreBoundary;e&&(c=!0)}return c}y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(8),y(8),y(8),y(4),y(8),y(8),y(8),y(12),y(192),y(192),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(8),y(8),y(8),y(8),y(8),y(8),y(8),y(8),y(8),y(4),y(4),y(4),y(8),y(16),y(16),y(16),y(32),y(32),y(48),y(64),y(1152),y(1152),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(24),y(24),y(24),y(24),y(24),y(24),y(24),y(24),y(24),y(24),y(1152),y(1152),y(1152),y(1152),y(1152),y(2304),y(2304),y(3456),y(5760),y(8),y(8),y(8),y(16),y(24),y(48),y(48),y(96),y(192),y(384),y(384),y(384),y(768),y(96),y(96),y(96),y(1152);class A{constructor(e=[],t=O){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function O(e,t){return e<t?-1:e>t?1:0}function L(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function k(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class F{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let C=0,I=0,j=0;function _(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;I+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const u=new F(o,C,I,j),c=new F(i,C,I,j+1);u.otherEvent=c,c.otherEvent=u,L(u,c)>0?(c.isLeftEndpoint=!0,u.isLeftEndpoint=!1):(u.isLeftEndpoint=!0,c.isLeftEndpoint=!1),t.push(u),t.push(c),o=i,j+=1}}C+=1}class M{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function T(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,u=t.leftSweepEvent.p.y,c=t.rightSweepEvent.p.x,l=t.rightSweepEvent.p.y,s=(l-u)*(o-r)-(c-a)*(i-n);if(0===s)return!1;const f=((c-a)*(n-u)-(l-u)*(r-a))/s,p=((o-r)*(n-u)-(i-n)*(r-a))/s;return f>=0&&f<=1&&p>=0&&p<=1&&[r+f*(o-r),n+f*(i-n)]}function D(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:a=!0}=r;let c=[];"FeatureCollection"===e.type?c=c.concat(e.features):"Feature"===e.type?c.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||c.push(o(e)),"FeatureCollection"===t.type?c=c.concat(t.features):"Feature"===t.type?c.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||c.push(o(t));const l=function(e,t){const r=new A([],L);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)_(r[e],t)}else _(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new A([],k);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new M(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const u=T(e,a);!1!==u&&r.push(u)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)}(u(c),a);let s=[];if(n){const e={};l.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=l;return u(s.map(e=>i(e)))}function x(e,t){!function(e,t){var r,n,o,i,a,u,c,l,s,f,p=0,d="FeatureCollection"===e.type,y="Feature"===e.type,g=d?e.features.length:1;for(r=0;r<g;r++){for(u=d?e.features[r].geometry:y?e.geometry:e,l=d?e.features[r].properties:y?e.properties:{},s=d?e.features[r].bbox:y?e.bbox:void 0,f=d?e.features[r].id:y?e.id:void 0,a=(c=!!u&&"GeometryCollection"===u.type)?u.geometries.length:1,o=0;o<a;o++)if(null!==(i=c?u.geometries[o]:u))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,p,l,s,f))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],p,l,s,f))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,l,s,f))return!1;p++}}(e,function(e,r,n,i,a){var u,c=null===e?null:e.type;switch(c){case null:case"Point":case"LineString":case"Polygon":return!1!==t(o(e,n,{bbox:i,id:a}),r,0)&&void 0}switch(c){case"MultiPoint":u="Point";break;case"MultiLineString":u="LineString";break;case"MultiPolygon":u="Polygon"}for(var l=0;l<e.coordinates.length;l++){var s=e.coordinates[l];if(!1===t(o({type:u,coordinates:s},n),r,l))return!1}})}function B(e,t={}){const r=w(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return U(w(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=w(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},o=[];return r.forEach(e=>{o.push(U(e,n))}),u(o)}(r,t);default:throw new Error("invalid poly")}}function U(e,t){return e.length>1?c(e,t):a(e[0],t)}function R(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(N(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function G(e,t,r){for(const r of t.coordinates)if(P(r,e))return!0;return D(t,B(e),{ignoreSelfIntersections:r}).features.length>0}function N(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function W(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?q(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function H(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return o({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return o({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return a(t.coordinates);case"MultiLineString":return c(t.coordinates);case"Point":return i(t.coordinates);case"MultiPoint":return function(e,t,r={}){return o({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function J(e,t){return t.some(function(t){return!function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return x(e,e=>{x(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!R(t,e);case"Polygon":return!P(e,t)}break;case"LineString":switch(t.type){case"Point":return!R(e,t);case"LineString":return!function(e,t,r){return D(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!G(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!P(t,e);case"LineString":return!G(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(P(r,t))return!0;for(const r of t.coordinates[0])if(P(r,e))return!0;return D(B(e),B(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n}(H(t),H(e))})}function $(e){var t;if(1!==e.length)return!1;var r=null===(t=e[0].geometry)||void 0===t?void 0:t.type;return"Polygon"===r||"MultiPolygon"===r}function K(e){if(e.length<2)return!1;if(e.some(function(e){var t;return!(null!==(t=e.geometry)&&void 0!==t&&t.type)}))return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=W(t).map(function(t){return e[t]});J(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}function V(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return z(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?z(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var Q={tolerance:10,interactionMode:"marker",multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,markerColor:"rgba(212,53,28,1)",selectedStroke:"rgba(212,53,28,1)",selectedFill:"rgba(255, 0, 0, 0.1)",selectedStrokeWidth:2};function X(e){return X="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},X(e)}var Y=function(e,t){if(!e)return null;if("string"==typeof e)return e.trim();if("object"===X(e)){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null};function Z(e){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z(e)}function ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function te(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ee(Object(r),!0).forEach(function(t){re(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ee(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function re(e,t,r){return(t=function(e){var t=function(e){if("object"!=Z(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Z(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Z(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ne(e){return ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ne(e)}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function ie(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 ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ie(Object(r),!0).forEach(function(t){ue(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ie(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ue(e,t,r){return(t=function(e){var t=function(e){if("object"!=ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ne(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ne(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ce={ENABLE:function(e,t){return ae(ae(ae({},e),t),{},{enabled:!0})},DISABLE:function(e){return ae(ae({},e),{},{enabled:!1,selectedFeatures:[],selectionBounds:null})},TOGGLE_SELECTED_FEATURES:function(e,t){var r=t.featureId,n=t.multiSelect,o=t.layerId,i=t.idProperty,a=t.addToExisting,u=void 0===a||a,c=t.replaceAll,l=void 0!==c&&c,s=t.properties,f=t.geometry,p=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],d=p.findIndex(function(e){return e.featureId===r&&e.layerId===o});if(!1===u){var y=p.filter(function(e,t){return t!==d});return ae(ae({},e),{},{selectedFeatures:y,selectionBounds:null})}var g,h,v={featureId:r,layerId:o,idProperty:i,properties:s,geometry:f};if(n&&!l){var b=function(e){if(Array.isArray(e))return oe(e)}(h=p)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(h)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?oe(e,t):void 0}}(h)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();-1===d?b.push(v):b.splice(d,1),g=b}else g=-1!==d&&1===p.length?[]:[v];return ae(ae({},e),{},{selectedFeatures:g,selectionBounds:null})},UPDATE_SELECTED_BOUNDS:function(e,t){return JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:ae(ae({},e),{},{selectionBounds:t})},CLEAR_SELECTED_FEATURES:function(e){return ae(ae({},e),{},{selectedFeatures:[],selectionBounds:null})}};function le(e){return le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(e)}function se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function fe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?se(Object(r),!0).forEach(function(t){pe(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):se(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function pe(e,t,r){return(t=function(e){var t=function(e){if("object"!=le(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=le(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==le(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var de={InitComponent:function(e){var t=e.appState,r=e.mapState,o=e.services,i=e.buttonConfig,a=e.mapProvider,u=e.pluginState,c=t.interfaceType,l=u.dispatch,s=u.enabled,f=u.selectedFeatures,p=u.selectionBounds,d=o.events,y=o.eventBus,g=o.closeApp,h=r.crossHair,v=r.mapStyle,b=["touch","keyboard"].includes(c),m=function(e){var t=e.mapState,r=e.pluginState,o=e.services,i=e.mapProvider,a=t.markers,u=r.dispatch,c=r.dataLayers,l=r.interactionMode,s=r.multiSelect,f=r.contiguous,p=r.markerColor,d=r.tolerance,y=r.selectedFeatures,g=r.selectionBounds,h=r.deselectOnClickOutside,v=o.eventBus,b=function(e){var t,r={},n=V(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;r[o.layerId]=o}}catch(e){n.e(e)}finally{n.f()}return r}(c),m=(0,n.useCallback)(function(e){var t=e.point,n=e.coords,o=function(e,t,r){try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}}(i,t,{radius:d}),g=c.length>0;null!=r&&r.debug&&console.log("--- Features at ".concat(n," ---"),o);var m=!g||"select"!==l&&"auto"!==l?null:function(e,t){var r,n=V(e);try{for(n.s();!(r=n.n()).done;){var o,i=r.value,a=null===(o=i.layer)||void 0===o?void 0:o.id;if(t[a])return{feature:i,config:t[a]}}}catch(e){n.e(e)}finally{n.f()}return null}(o,b);m?function(e){var t,r,n=e.feature,o=e.config;a.remove("location");var i=f&&J(n,y),c=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;c&&u({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:c,multiSelect:s,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:f&&!i}})}(m):"marker"===l||"auto"===l&&g?(u({type:"CLEAR_SELECTED_FEATURES"}),a.add("location",n,{color:p}),v.emit("interact:markerchange",{coords:n})):h&&u({type:"CLEAR_SELECTED_FEATURES"})},[i,c,l,s,v,u,a,f,y,b,null==r?void 0:r.debug,d,p,h]);return function(e,t,r){var o=(0,n.useRef)(null);(0,n.useEffect)(function(){if(!(t.length>0)||r){var n=o.current;(null===n||0===n.length)&&0===t.length||(e.emit("interact:selectionchange",{selectedFeatures:t,selectionBounds:r,canMerge:K(t),canSplit:$(t)}),o.current=t)}},[t,r])}(v,y,g),{handleInteraction:m}}({appState:t,mapState:r,pluginState:u,services:o,mapProvider:a}).handleInteraction;return function(e){var t=e.mapProvider,r=e.mapStyle,o=e.pluginState,i=e.selectedFeatures,a=e.dispatch,u=e.events,c=e.eventBus,l=o.dataLayers,s=(0,n.useMemo)(function(){return r?function(e,t){var r={};return t?(e.forEach(function(e){var n=e.selectedStroke||Q.selectedStroke,o=e.selectedFill||Q.selectedFill,i=e.selectedStrokeWidth||Q.selectedStrokeWidth;r[e.layerId]={stroke:Y(n,t.id),fill:Y(o,t.id),strokeWidth:i}}),r):r}(l,r):null},[l,r]),f=function(){var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,i,s);a({type:"UPDATE_SELECTED_BOUNDS",payload:r})};(0,n.useEffect)(function(){if(t&&i&&s)return f(),c.on(u.MAP_DATA_CHANGE,f),function(){c.off(u.MAP_DATA_CHANGE,f)}},[i,t,s])}({mapProvider:a,mapStyle:v,pluginState:u,selectedFeatures:f,selectionBounds:p,dispatch:l,events:d,eventBus:y}),(0,n.useEffect)(function(){s&&b?h.fixAtCenter():h.hide()},[s,c]),(0,n.useEffect)(function(){if(u.enabled)return function(e){var t=e.appState,r=e.mapState,n=e.pluginState,o=e.buttonConfig,i=e.events,a=e.eventBus,u=e.handleInteraction,c=e.closeApp,l=o.selectDone,s=o.selectAtTarget,f=o.selectCancel,p=t.layoutRefs.viewportRef,d=!1,y=function(e){d="Enter"===e.key&&p.current===e.target},g=function(e){"Enter"===e.key&&d&&(e.preventDefault(),m())},h=!1,v=setTimeout(function(){h=!0},0),b=function(e){h&&u(e)},m=function(){return u(r.crossHair.getDetail())},S=function(e,t){return function(r,n){e.markers.remove("location"),t.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:te({multiSelect:t.multiSelect,addToExisting:n},r)})}}(r,n),E=function(e){return S(e,!0)},w=function(e){return S(e,!1)};return document.addEventListener("keydown",y),document.addEventListener("keyup",g),a.on(i.MAP_CLICK,b),a.on("interact:selectFeature",E),a.on("interact:unselectFeature",w),s.onClick=m,l.onClick=function(){var e,o=(r.markers.getMarker("location")||{}).coords,i=n.selectionBounds,u=n.selectedFeatures;t.disabledButtons.has("selectDone")||(a.emit("interact:done",te(te(te({},o&&{coords:o}),!o&&u&&{selectedFeatures:u}),!o&&i&&{selectionBounds:i})),(null===(e=n.closeOnAction)||void 0===e||e)&&c())},f.onClick=function(){var e;a.emit("interact:cancel"),(null===(e=n.closeOnAction)||void 0===e||e)&&c()},function(){clearTimeout(v),l.onClick=null,s.onClick=null,f.onClick=null,document.removeEventListener("keydown",y),document.removeEventListener("keyup",g),a.off(i.MAP_CLICK,b),a.off("interact:selectFeature",E),a.off("interact:unselectFeature",w)}}({appState:t,pluginState:u,mapState:r,buttonConfig:i,events:d,eventBus:y,handleInteraction:m,closeApp:g})},[t,r,u,i,y,m]),null},reducer:{initialState:{enabled:!1,dataLayers:[],markerColor:null,interactionMode:null,multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectionBounds:null,closeOnAction:!0},actions:ce},buttons:[{id:"selectAtTarget",label:"Select",iconId:"select",variant:"touch",hiddenWhen:function(e){var t=e.appState;return!e.pluginState.enabled||"touch"!==t.interfaceType},mobile:{slot:"actions",showLabel:!1},tablet:{slot:"actions",showLabel:!1},desktop:{slot:"actions",showLabel:!1}},{id:"selectCancel",label:"Back",variant:"tertiary",hiddenWhen:function(e){var t=e.appConfig,r=e.appState;return!e.pluginState.enabled||!(["hybrid","buttonFirst"].includes(t.behaviour)&&r.isFullscreen)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectDone",label:"Continue",variant:"primary",excludeWhen:function(e){var t=e.appState;return!e.pluginState.enabled||!t.isFullscreen},enableWhen:function(e){var t=e.mapState,r=e.pluginState;return!!t.markers.items.some(function(e){return"location"===e.id})||!!r.selectionBounds},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}}],keyboardShortcuts:[{id:"selectOrMark",group:"Select",title:"Select feature",command:"<kbd>Enter</kbd></dd>"}],icons:[{id:"select",svgContent:'<path d="M22 14a8 8 0 0 1-8 8"/><path d="M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1"/><path d="M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10"/><path d="M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/>'}],api:{enable:function(e,t){var r=e.pluginState,n=e.pluginConfig;r.dispatch({type:"ENABLE",payload:fe(fe(fe({},Q),n),t)})},disable:function(e){e.pluginState.dispatch({type:"DISABLE"})},clear:function(e){var t=e.pluginState,r=e.mapState;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})}}}}};
@@ -1 +1 @@
1
- "use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[936],{363(e,t,r){r.r(t),r.d(t,{manifest:()=>ye});var n=r(738);function o(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function i(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!c(e[0])||!c(e[1]))throw new Error("coordinates must contain numbers");return o({type:"Point",coordinates:e},t,r)}function a(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return o({type:"LineString",coordinates:e},t,r)}function u(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function l(e,t,r={}){return o({type:"MultiLineString",coordinates:e},t,r)}function c(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;const s=11102230246251565e-32,f=134217729,p=(3+8*s)*s;function y(e,t,r,n,o){let i,a,u,l,c=t[0],s=n[0],f=0,p=0;s>c==s>-c?(i=c,c=t[++f]):(i=s,s=n[++p]);let y=0;if(f<e&&p<r)for(s>c==s>-c?(a=c+i,u=i-(a-c),c=t[++f]):(a=s+i,u=i-(a-s),s=n[++p]),i=a,0!==u&&(o[y++]=u);f<e&&p<r;)s>c==s>-c?(a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f]):(a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p]),i=a,0!==u&&(o[y++]=u);for(;f<e;)a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f],i=a,0!==u&&(o[y++]=u);for(;p<r;)a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p],i=a,0!==u&&(o[y++]=u);return 0===i&&0!==y||(o[y++]=i),y}function d(e){return new Float64Array(e)}const g=d(4),h=d(8),b=d(12),v=d(16),m=d(4);function S(e,t,r,n,o,i){const a=(t-i)*(r-o),u=(e-o)*(n-i),l=a-u,c=Math.abs(a+u);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let u,l,c,s,d,S,E,w,P,A,O,L,k,F,I,j,C,M;const D=e-o,T=r-o,x=t-i,B=n-i;F=D*B,S=f*D,E=S-(S-D),w=D-E,S=f*B,P=S-(S-B),A=B-P,I=w*A-(F-E*P-w*P-E*A),j=x*T,S=f*x,E=S-(S-x),w=x-E,S=f*T,P=S-(S-T),A=T-P,C=w*A-(j-E*P-w*P-E*A),O=I-C,d=I-O,g[0]=I-(O+d)+(d-C),L=F+O,d=L-F,k=F-(L-d)+(O-d),O=k-j,d=k-O,g[1]=k-(O+d)+(d-j),M=L+O,d=M-L,g[2]=L-(M-d)+(O-d),g[3]=M;let _=function(e,t){let r=t[0];for(let e=1;e<4;e++)r+=t[e];return r}(0,g),U=22204460492503146e-32*a;if(_>=U||-_>=U)return _;if(d=e-D,u=e-(D+d)+(d-o),d=r-T,c=r-(T+d)+(d-o),d=t-x,l=t-(x+d)+(d-i),d=n-B,s=n-(B+d)+(d-i),0===u&&0===l&&0===c&&0===s)return _;if(U=11093356479670487e-47*a+p*Math.abs(_),_+=D*s+B*u-(x*c+T*l),_>=U||-_>=U)return _;F=u*B,S=f*u,E=S-(S-u),w=u-E,S=f*B,P=S-(S-B),A=B-P,I=w*A-(F-E*P-w*P-E*A),j=l*T,S=f*l,E=S-(S-l),w=l-E,S=f*T,P=S-(S-T),A=T-P,C=w*A-(j-E*P-w*P-E*A),O=I-C,d=I-O,m[0]=I-(O+d)+(d-C),L=F+O,d=L-F,k=F-(L-d)+(O-d),O=k-j,d=k-O,m[1]=k-(O+d)+(d-j),M=L+O,d=M-L,m[2]=L-(M-d)+(O-d),m[3]=M;const R=y(4,g,4,m,h);F=D*s,S=f*D,E=S-(S-D),w=D-E,S=f*s,P=S-(S-s),A=s-P,I=w*A-(F-E*P-w*P-E*A),j=x*c,S=f*x,E=S-(S-x),w=x-E,S=f*c,P=S-(S-c),A=c-P,C=w*A-(j-E*P-w*P-E*A),O=I-C,d=I-O,m[0]=I-(O+d)+(d-C),L=F+O,d=L-F,k=F-(L-d)+(O-d),O=k-j,d=k-O,m[1]=k-(O+d)+(d-j),M=L+O,d=M-L,m[2]=L-(M-d)+(O-d),m[3]=M;const G=y(R,h,4,m,b);F=u*s,S=f*u,E=S-(S-u),w=u-E,S=f*s,P=S-(S-s),A=s-P,I=w*A-(F-E*P-w*P-E*A),j=l*c,S=f*l,E=S-(S-l),w=l-E,S=f*c,P=S-(S-c),A=c-P,C=w*A-(j-E*P-w*P-E*A),O=I-C,d=I-O,m[0]=I-(O+d)+(d-C),L=F+O,d=L-F,k=F-(L-d)+(O-d),O=k-j,d=k-O,m[1]=k-(O+d)+(d-j),M=L+O,d=M-L,m[2]=L-(M-d)+(O-d),m[3]=M;const N=y(G,b,4,m,v);return v[N-1]}(e,t,r,n,o,i,c)}function E(e,t){var r,n,o,i,a,u,l,c,s,f=0,p=e[0],y=e[1],d=t.length;for(r=0;r<d;r++){n=0;var g=t[r],h=g.length-1;if((c=g[0])[0]!==g[h][0]&&c[1]!==g[h][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-p,a=c[1]-y;n<h;n++){if(u=(s=g[n+1])[0]-p,l=s[1]-y,0===a&&0===l){if(u<=0&&i>=0||i<=0&&u>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=S(i,u,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&f++}c=s,a=l,i=u}}return f%2!=0}function w(e){return"Feature"===e.type?e.geometry:e}function P(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=w(t),i=o.type,a=t.bbox;let u=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(u=[u]);let l=!1;for(var c=0;c<u.length;++c){const e=E(n,u[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(8),d(8),d(8),d(4),d(8),d(8),d(8),d(12),d(192),d(192),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(8),d(8),d(8),d(8),d(8),d(8),d(8),d(8),d(8),d(4),d(4),d(4),d(8),d(16),d(16),d(16),d(32),d(32),d(48),d(64),d(1152),d(1152),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(4),d(24),d(24),d(24),d(24),d(24),d(24),d(24),d(24),d(24),d(24),d(1152),d(1152),d(1152),d(1152),d(1152),d(2304),d(2304),d(3456),d(5760),d(8),d(8),d(8),d(16),d(24),d(48),d(48),d(96),d(192),d(384),d(384),d(384),d(768),d(96),d(96),d(96),d(1152);class A{constructor(e=[],t=O){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function O(e,t){return e<t?-1:e>t?1:0}function L(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function k(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class F{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let I=0,j=0,C=0;function M(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;j+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const u=new F(o,I,j,C),l=new F(i,I,j,C+1);u.otherEvent=l,l.otherEvent=u,L(u,l)>0?(l.isLeftEndpoint=!0,u.isLeftEndpoint=!1):(u.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(u),t.push(l),o=i,C+=1}}I+=1}class D{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function T(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,u=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,s=(c-u)*(o-r)-(l-a)*(i-n);if(0===s)return!1;const f=((l-a)*(n-u)-(c-u)*(r-a))/s,p=((o-r)*(n-u)-(i-n)*(r-a))/s;return f>=0&&f<=1&&p>=0&&p<=1&&[r+f*(o-r),n+f*(i-n)]}function x(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:a=!0}=r;let l=[];"FeatureCollection"===e.type?l=l.concat(e.features):"Feature"===e.type?l.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||l.push(o(e)),"FeatureCollection"===t.type?l=l.concat(t.features):"Feature"===t.type?l.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||l.push(o(t));const c=function(e,t){const r=new A([],L);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)M(r[e],t)}else M(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new A([],k);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new D(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const u=T(e,a);!1!==u&&r.push(u)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)}(u(l),a);let s=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=c;return u(s.map(e=>i(e)))}function B(e,t){!function(e,t){var r,n,o,i,a,u,l,c,s,f,p=0,y="FeatureCollection"===e.type,d="Feature"===e.type,g=y?e.features.length:1;for(r=0;r<g;r++){for(u=y?e.features[r].geometry:d?e.geometry:e,c=y?e.features[r].properties:d?e.properties:{},s=y?e.features[r].bbox:d?e.bbox:void 0,f=y?e.features[r].id:d?e.id:void 0,a=(l=!!u&&"GeometryCollection"===u.type)?u.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?u.geometries[o]:u))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,p,c,s,f))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],p,c,s,f))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,c,s,f))return!1;p++}}(e,function(e,r,n,i,a){var u,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(o(e,n,{bbox:i,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":u="Point";break;case"MultiLineString":u="LineString";break;case"MultiPolygon":u="Polygon"}for(var c=0;c<e.coordinates.length;c++){var s=e.coordinates[c];if(!1===t(o({type:u,coordinates:s},n),r,c))return!1}})}function _(e,t={}){const r=w(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return U(w(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=w(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},o=[];return r.forEach(e=>{o.push(U(e,n))}),u(o)}(r,t);default:throw new Error("invalid poly")}}function U(e,t){return e.length>1?l(e,t):a(e[0],t)}function R(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(N(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function G(e,t,r){for(const r of t.coordinates)if(P(r,e))return!0;return x(t,_(e),{ignoreSelfIntersections:r}).features.length>0}function N(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function W(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?q(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function H(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return o({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return o({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return a(t.coordinates);case"MultiLineString":return l(t.coordinates);case"Point":return i(t.coordinates);case"MultiPoint":return function(e,t,r={}){return o({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function J(e,t){return t.some(function(t){return!function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return B(e,e=>{B(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!R(t,e);case"Polygon":return!P(e,t)}break;case"LineString":switch(t.type){case"Point":return!R(e,t);case"LineString":return!function(e,t,r){return x(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!G(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!P(t,e);case"LineString":return!G(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(P(r,t))return!0;for(const r of t.coordinates[0])if(P(r,e))return!0;return x(_(e),_(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n}(H(t),H(e))})}function $(e){var t;if(1!==e.length)return!1;var r=null===(t=e[0].geometry)||void 0===t?void 0:t.type;return"Polygon"===r||"MultiPolygon"===r}function K(e){if(e.length<2)return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=W(t).map(function(t){return e[t]});J(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}function z(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return Q(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Q(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var V={tolerance:10,interactionMode:"marker",multiSelect:!1,contiguous:!1,markerColor:"rgba(212,53,28,1)",selectedStroke:"rgba(212,53,28,1)",selectedFill:"rgba(255, 0, 0, 0.1)",selectedStrokeWidth:2};function X(e){return X="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},X(e)}var Y=function(e,t){if(!e)return null;if("string"==typeof e)return e.trim();if("object"===X(e)){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null};function Z(e){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z(e)}function ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function te(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ee(Object(r),!0).forEach(function(t){re(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ee(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function re(e,t,r){return(t=function(e){var t=function(e){if("object"!=Z(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Z(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Z(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ne(e){return ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ne(e)}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function ie(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 ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ie(Object(r),!0).forEach(function(t){ue(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ie(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ue(e,t,r){return(t=function(e){var t=function(e){if("object"!=ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ne(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ne(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var le={ENABLE:function(e,t){return ae(ae(ae({},e),t),{},{enabled:!0})},DISABLE:function(e){return ae(ae({},e),{},{enabled:!1,selectedFeatures:[],selectionBounds:null})},TOGGLE_SELECTED_FEATURES:function(e,t){var r=t.featureId,n=t.multiSelect,o=t.layerId,i=t.idProperty,a=t.addToExisting,u=void 0===a||a,l=t.replaceAll,c=void 0!==l&&l,s=t.properties,f=t.geometry,p=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],y=p.findIndex(function(e){return e.featureId===r&&e.layerId===o});if(!1===u){var d=p.filter(function(e,t){return t!==y});return ae(ae({},e),{},{selectedFeatures:d,selectionBounds:null})}var g,h,b={featureId:r,layerId:o,idProperty:i,properties:s,geometry:f};if(n&&!c){var v=function(e){if(Array.isArray(e))return oe(e)}(h=p)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(h)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?oe(e,t):void 0}}(h)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();-1===y?v.push(b):v.splice(y,1),g=v}else g=-1!==y&&1===p.length?[]:[b];return ae(ae({},e),{},{selectedFeatures:g,selectionBounds:null})},UPDATE_SELECTED_BOUNDS:function(e,t){return JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:ae(ae({},e),{},{selectionBounds:t})},CLEAR_SELECTED_FEATURES:function(e){return ae(ae({},e),{},{selectedFeatures:[],selectionBounds:null})}};function ce(e){return ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ce(e)}function se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function fe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?se(Object(r),!0).forEach(function(t){pe(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):se(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function pe(e,t,r){return(t=function(e){var t=function(e){if("object"!=ce(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ce(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ce(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ye={InitComponent:function(e){var t=e.appState,r=e.mapState,o=e.services,i=e.buttonConfig,a=e.mapProvider,u=e.pluginState,l=t.interfaceType,c=u.dispatch,s=u.enabled,f=u.selectedFeatures,p=u.selectionBounds,y=o.events,d=o.eventBus,g=o.closeApp,h=r.crossHair,b=r.mapStyle,v=["touch","keyboard"].includes(l),m=function(e){var t=e.mapState,r=e.pluginState,o=e.services,i=e.mapProvider,a=t.markers,u=r.dispatch,l=r.dataLayers,c=r.interactionMode,s=r.multiSelect,f=r.contiguous,p=r.markerColor,y=r.tolerance,d=r.selectedFeatures,g=r.selectionBounds,h=o.eventBus,b=function(e){var t,r={},n=z(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;r[o.layerId]=o}}catch(e){n.e(e)}finally{n.f()}return r}(l),v=(0,n.useCallback)(function(e){var t=e.point,n=e.coords,o=function(e,t,r){try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}}(i,t,{radius:y}),g=l.length>0;null!=r&&r.debug&&console.log("--- Features at ".concat(n," ---"),o);var v=!g||"select"!==c&&"auto"!==c?null:function(e,t){var r,n=z(e);try{for(n.s();!(r=n.n()).done;){var o,i=r.value,a=null===(o=i.layer)||void 0===o?void 0:o.id;if(t[a])return{feature:i,config:t[a]}}}catch(e){n.e(e)}finally{n.f()}return null}(o,b);v?function(e){var t,r,n=e.feature,o=e.config;a.remove("location");var i=f&&J(n,d),l=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;l&&u({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:l,multiSelect:s,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:f&&!i}})}(v):("marker"===c||"auto"===c&&g)&&(u({type:"CLEAR_SELECTED_FEATURES"}),a.add("location",n,{color:p}),h.emit("interact:markerchange",{coords:n}))},[i,l,c,s,h,u,a,f,d,b,null==r?void 0:r.debug,y,p]);return function(e,t,r){var o=(0,n.useRef)(null);(0,n.useEffect)(function(){if(!(t.length>0)||r){var n=o.current;(null===n||0===n.length)&&0===t.length||(e.emit("interact:selectionchange",{selectedFeatures:t,selectionBounds:r,canMerge:K(t),canSplit:$(t)}),o.current=t)}},[t,r])}(h,d,g),{handleInteraction:v}}({appState:t,mapState:r,pluginState:u,services:o,mapProvider:a}).handleInteraction;return function(e){var t=e.mapProvider,r=e.mapStyle,o=e.pluginState,i=e.selectedFeatures,a=e.dispatch,u=e.events,l=e.eventBus,c=o.dataLayers,s=(0,n.useMemo)(function(){return r?function(e,t){var r={};return t?(e.forEach(function(e){var n=e.selectedStroke||V.selectedStroke,o=e.selectedFill||V.selectedFill,i=e.selectedStrokeWidth||V.selectedStrokeWidth;r[e.layerId]={stroke:Y(n,t.id),fill:Y(o,t.id),strokeWidth:i}}),r):r}(c,r):null},[c,r]),f=function(){var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,i,s);a({type:"UPDATE_SELECTED_BOUNDS",payload:r})};(0,n.useEffect)(function(){if(t&&i&&s)return f(),l.on(u.MAP_DATA_CHANGE,f),function(){l.off(u.MAP_DATA_CHANGE,f)}},[i,t,s])}({mapProvider:a,mapStyle:b,pluginState:u,selectedFeatures:f,selectionBounds:p,dispatch:c,events:y,eventBus:d}),(0,n.useEffect)(function(){s&&v?h.fixAtCenter():h.hide()},[s,l]),(0,n.useEffect)(function(){if(u.enabled)return function(e){var t=e.appState,r=e.mapState,n=e.pluginState,o=e.buttonConfig,i=e.events,a=e.eventBus,u=e.handleInteraction,l=e.closeApp,c=o.selectDone,s=o.selectAtTarget,f=o.selectCancel,p=t.layoutRefs.viewportRef,y=!1,d=function(e){y="Enter"===e.key&&p.current===e.target},g=function(e){"Enter"===e.key&&y&&(e.preventDefault(),b())},h=function(e){return u(e)},b=function(){return u(r.crossHair.getDetail())},v=function(e,t){return function(r,n){e.markers.remove("location"),t.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:te({multiSelect:t.multiSelect,addToExisting:n},r)})}}(r,n),m=function(e){return v(e,!0)},S=function(e){return v(e,!1)};return document.addEventListener("keydown",d),document.addEventListener("keyup",g),a.on(i.MAP_CLICK,h),a.on("interact:selectFeature",m),a.on("interact:unselectFeature",S),s.onClick=b,c.onClick=function(){var e,o=(r.markers.getMarker("location")||{}).coords,i=n.selectionBounds,u=n.selectedFeatures;t.disabledButtons.has("selectDone")||(a.emit("interact:done",te(te(te({},o&&{coords:o}),!o&&u&&{selectedFeatures:u}),!o&&i&&{selectionBounds:i})),(null===(e=n.closeOnAction)||void 0===e||e)&&l())},f.onClick=function(){var e;a.emit("interact:cancel"),(null===(e=n.closeOnAction)||void 0===e||e)&&l()},function(){c.onClick=null,s.onClick=null,f.onClick=null,document.removeEventListener("keydown",d),document.removeEventListener("keyup",g),a.off(i.MAP_CLICK,h),a.off("interact:selectFeature",m),a.off("interact:unselectFeature",S)}}({appState:t,pluginState:u,mapState:r,buttonConfig:i,events:y,eventBus:d,handleInteraction:m,closeApp:g})},[t,r,u,i,d,m]),null},reducer:{initialState:{enabled:!1,dataLayers:[],markerColor:null,interactionMode:null,multiSelect:!1,contiguous:!1,selectedFeatures:[],selectionBounds:null,closeOnAction:!0},actions:le},buttons:[{id:"selectDone",label:"Done",variant:"primary",excludeWhen:function(e){var t=e.appState;return!e.pluginState.enabled||!t.isFullscreen},enableWhen:function(e){var t=e.mapState,r=e.pluginState;return!!t.markers.items.some(function(e){return"location"===e.id})||!!r.selectionBounds},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectAtTarget",label:"Select",variant:"primary",hiddenWhen:function(e){var t=e.appState;return!e.pluginState.enabled||!["touch","keyboard"].includes(t.interfaceType)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectCancel",label:"Cancel",variant:"tertiary",hiddenWhen:function(e){var t=e.appConfig,r=e.appState;return!e.pluginState.enabled||!(["hybrid","buttonFirst"].includes(t.behaviour)&&r.isFullscreen)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}}],keyboardShortcuts:[{id:"selectOrMark",group:"Select",title:"Select feature",command:"<kbd>Enter</kbd></dd>"}],api:{enable:function(e,t){var r=e.pluginState,n=e.pluginConfig;r.dispatch({type:"ENABLE",payload:fe(fe(fe({},V),n),t)})},disable:function(e){e.pluginState.dispatch({type:"DISABLE"})},clear:function(e){var t=e.pluginState,r=e.mapState;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})}}}}}]);
1
+ "use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[936],{363(e,t,r){r.r(t),r.d(t,{manifest:()=>de});var n=r(738);function o(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function i(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!c(e[0])||!c(e[1]))throw new Error("coordinates must contain numbers");return o({type:"Point",coordinates:e},t,r)}function a(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return o({type:"LineString",coordinates:e},t,r)}function u(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function l(e,t,r={}){return o({type:"MultiLineString",coordinates:e},t,r)}function c(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;const s=11102230246251565e-32,f=134217729,p=(3+8*s)*s;function d(e,t,r,n,o){let i,a,u,l,c=t[0],s=n[0],f=0,p=0;s>c==s>-c?(i=c,c=t[++f]):(i=s,s=n[++p]);let d=0;if(f<e&&p<r)for(s>c==s>-c?(a=c+i,u=i-(a-c),c=t[++f]):(a=s+i,u=i-(a-s),s=n[++p]),i=a,0!==u&&(o[d++]=u);f<e&&p<r;)s>c==s>-c?(a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f]):(a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p]),i=a,0!==u&&(o[d++]=u);for(;f<e;)a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f],i=a,0!==u&&(o[d++]=u);for(;p<r;)a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p],i=a,0!==u&&(o[d++]=u);return 0===i&&0!==d||(o[d++]=i),d}function y(e){return new Float64Array(e)}const h=y(4),g=y(8),v=y(12),b=y(16),m=y(4);function S(e,t,r,n,o,i){const a=(t-i)*(r-o),u=(e-o)*(n-i),l=a-u,c=Math.abs(a+u);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let u,l,c,s,y,S,E,w,P,A,O,L,k,F,C,I,j,M;const T=e-o,D=r-o,x=t-i,B=n-i;F=T*B,S=f*T,E=S-(S-T),w=T-E,S=f*B,P=S-(S-B),A=B-P,C=w*A-(F-E*P-w*P-E*A),I=x*D,S=f*x,E=S-(S-x),w=x-E,S=f*D,P=S-(S-D),A=D-P,j=w*A-(I-E*P-w*P-E*A),O=C-j,y=C-O,h[0]=C-(O+y)+(y-j),L=F+O,y=L-F,k=F-(L-y)+(O-y),O=k-I,y=k-O,h[1]=k-(O+y)+(y-I),M=L+O,y=M-L,h[2]=L-(M-y)+(O-y),h[3]=M;let _=function(e,t){let r=t[0];for(let e=1;e<4;e++)r+=t[e];return r}(0,h),U=22204460492503146e-32*a;if(_>=U||-_>=U)return _;if(y=e-T,u=e-(T+y)+(y-o),y=r-D,c=r-(D+y)+(y-o),y=t-x,l=t-(x+y)+(y-i),y=n-B,s=n-(B+y)+(y-i),0===u&&0===l&&0===c&&0===s)return _;if(U=11093356479670487e-47*a+p*Math.abs(_),_+=T*s+B*u-(x*c+D*l),_>=U||-_>=U)return _;F=u*B,S=f*u,E=S-(S-u),w=u-E,S=f*B,P=S-(S-B),A=B-P,C=w*A-(F-E*P-w*P-E*A),I=l*D,S=f*l,E=S-(S-l),w=l-E,S=f*D,P=S-(S-D),A=D-P,j=w*A-(I-E*P-w*P-E*A),O=C-j,y=C-O,m[0]=C-(O+y)+(y-j),L=F+O,y=L-F,k=F-(L-y)+(O-y),O=k-I,y=k-O,m[1]=k-(O+y)+(y-I),M=L+O,y=M-L,m[2]=L-(M-y)+(O-y),m[3]=M;const R=d(4,h,4,m,g);F=T*s,S=f*T,E=S-(S-T),w=T-E,S=f*s,P=S-(S-s),A=s-P,C=w*A-(F-E*P-w*P-E*A),I=x*c,S=f*x,E=S-(S-x),w=x-E,S=f*c,P=S-(S-c),A=c-P,j=w*A-(I-E*P-w*P-E*A),O=C-j,y=C-O,m[0]=C-(O+y)+(y-j),L=F+O,y=L-F,k=F-(L-y)+(O-y),O=k-I,y=k-O,m[1]=k-(O+y)+(y-I),M=L+O,y=M-L,m[2]=L-(M-y)+(O-y),m[3]=M;const G=d(R,g,4,m,v);F=u*s,S=f*u,E=S-(S-u),w=u-E,S=f*s,P=S-(S-s),A=s-P,C=w*A-(F-E*P-w*P-E*A),I=l*c,S=f*l,E=S-(S-l),w=l-E,S=f*c,P=S-(S-c),A=c-P,j=w*A-(I-E*P-w*P-E*A),O=C-j,y=C-O,m[0]=C-(O+y)+(y-j),L=F+O,y=L-F,k=F-(L-y)+(O-y),O=k-I,y=k-O,m[1]=k-(O+y)+(y-I),M=L+O,y=M-L,m[2]=L-(M-y)+(O-y),m[3]=M;const N=d(G,v,4,m,b);return b[N-1]}(e,t,r,n,o,i,c)}function E(e,t){var r,n,o,i,a,u,l,c,s,f=0,p=e[0],d=e[1],y=t.length;for(r=0;r<y;r++){n=0;var h=t[r],g=h.length-1;if((c=h[0])[0]!==h[g][0]&&c[1]!==h[g][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-p,a=c[1]-d;n<g;n++){if(u=(s=h[n+1])[0]-p,l=s[1]-d,0===a&&0===l){if(u<=0&&i>=0||i<=0&&u>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=S(i,u,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&f++}c=s,a=l,i=u}}return f%2!=0}function w(e){return"Feature"===e.type?e.geometry:e}function P(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=w(t),i=o.type,a=t.bbox;let u=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(u=[u]);let l=!1;for(var c=0;c<u.length;++c){const e=E(n,u[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(8),y(8),y(8),y(4),y(8),y(8),y(8),y(12),y(192),y(192),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(8),y(8),y(8),y(8),y(8),y(8),y(8),y(8),y(8),y(4),y(4),y(4),y(8),y(16),y(16),y(16),y(32),y(32),y(48),y(64),y(1152),y(1152),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(4),y(24),y(24),y(24),y(24),y(24),y(24),y(24),y(24),y(24),y(24),y(1152),y(1152),y(1152),y(1152),y(1152),y(2304),y(2304),y(3456),y(5760),y(8),y(8),y(8),y(16),y(24),y(48),y(48),y(96),y(192),y(384),y(384),y(384),y(768),y(96),y(96),y(96),y(1152);class A{constructor(e=[],t=O){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function O(e,t){return e<t?-1:e>t?1:0}function L(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function k(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class F{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let C=0,I=0,j=0;function M(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;I+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const u=new F(o,C,I,j),l=new F(i,C,I,j+1);u.otherEvent=l,l.otherEvent=u,L(u,l)>0?(l.isLeftEndpoint=!0,u.isLeftEndpoint=!1):(u.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(u),t.push(l),o=i,j+=1}}C+=1}class T{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function D(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,u=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,s=(c-u)*(o-r)-(l-a)*(i-n);if(0===s)return!1;const f=((l-a)*(n-u)-(c-u)*(r-a))/s,p=((o-r)*(n-u)-(i-n)*(r-a))/s;return f>=0&&f<=1&&p>=0&&p<=1&&[r+f*(o-r),n+f*(i-n)]}function x(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:a=!0}=r;let l=[];"FeatureCollection"===e.type?l=l.concat(e.features):"Feature"===e.type?l.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||l.push(o(e)),"FeatureCollection"===t.type?l=l.concat(t.features):"Feature"===t.type?l.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||l.push(o(t));const c=function(e,t){const r=new A([],L);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)M(r[e],t)}else M(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new A([],k);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new T(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const u=D(e,a);!1!==u&&r.push(u)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)}(u(l),a);let s=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=c;return u(s.map(e=>i(e)))}function B(e,t){!function(e,t){var r,n,o,i,a,u,l,c,s,f,p=0,d="FeatureCollection"===e.type,y="Feature"===e.type,h=d?e.features.length:1;for(r=0;r<h;r++){for(u=d?e.features[r].geometry:y?e.geometry:e,c=d?e.features[r].properties:y?e.properties:{},s=d?e.features[r].bbox:y?e.bbox:void 0,f=d?e.features[r].id:y?e.id:void 0,a=(l=!!u&&"GeometryCollection"===u.type)?u.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?u.geometries[o]:u))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,p,c,s,f))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],p,c,s,f))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,c,s,f))return!1;p++}}(e,function(e,r,n,i,a){var u,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(o(e,n,{bbox:i,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":u="Point";break;case"MultiLineString":u="LineString";break;case"MultiPolygon":u="Polygon"}for(var c=0;c<e.coordinates.length;c++){var s=e.coordinates[c];if(!1===t(o({type:u,coordinates:s},n),r,c))return!1}})}function _(e,t={}){const r=w(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return U(w(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=w(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},o=[];return r.forEach(e=>{o.push(U(e,n))}),u(o)}(r,t);default:throw new Error("invalid poly")}}function U(e,t){return e.length>1?l(e,t):a(e[0],t)}function R(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(N(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function G(e,t,r){for(const r of t.coordinates)if(P(r,e))return!0;return x(t,_(e),{ignoreSelfIntersections:r}).features.length>0}function N(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function W(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?q(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function H(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return o({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return o({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return a(t.coordinates);case"MultiLineString":return l(t.coordinates);case"Point":return i(t.coordinates);case"MultiPoint":return function(e,t,r={}){return o({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function J(e,t){return t.some(function(t){return!function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return B(e,e=>{B(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!R(t,e);case"Polygon":return!P(e,t)}break;case"LineString":switch(t.type){case"Point":return!R(e,t);case"LineString":return!function(e,t,r){return x(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!G(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!P(t,e);case"LineString":return!G(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(P(r,t))return!0;for(const r of t.coordinates[0])if(P(r,e))return!0;return x(_(e),_(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n}(H(t),H(e))})}function $(e){var t;if(1!==e.length)return!1;var r=null===(t=e[0].geometry)||void 0===t?void 0:t.type;return"Polygon"===r||"MultiPolygon"===r}function K(e){if(e.length<2)return!1;if(e.some(function(e){var t;return!(null!==(t=e.geometry)&&void 0!==t&&t.type)}))return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=W(t).map(function(t){return e[t]});J(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}function V(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return z(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?z(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var Q={tolerance:10,interactionMode:"marker",multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,markerColor:"rgba(212,53,28,1)",selectedStroke:"rgba(212,53,28,1)",selectedFill:"rgba(255, 0, 0, 0.1)",selectedStrokeWidth:2};function X(e){return X="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},X(e)}var Y=function(e,t){if(!e)return null;if("string"==typeof e)return e.trim();if("object"===X(e)){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null};function Z(e){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z(e)}function ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function te(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ee(Object(r),!0).forEach(function(t){re(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ee(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function re(e,t,r){return(t=function(e){var t=function(e){if("object"!=Z(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Z(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Z(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ne(e){return ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ne(e)}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function ie(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 ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ie(Object(r),!0).forEach(function(t){ue(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ie(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ue(e,t,r){return(t=function(e){var t=function(e){if("object"!=ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ne(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ne(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var le={ENABLE:function(e,t){return ae(ae(ae({},e),t),{},{enabled:!0})},DISABLE:function(e){return ae(ae({},e),{},{enabled:!1,selectedFeatures:[],selectionBounds:null})},TOGGLE_SELECTED_FEATURES:function(e,t){var r=t.featureId,n=t.multiSelect,o=t.layerId,i=t.idProperty,a=t.addToExisting,u=void 0===a||a,l=t.replaceAll,c=void 0!==l&&l,s=t.properties,f=t.geometry,p=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],d=p.findIndex(function(e){return e.featureId===r&&e.layerId===o});if(!1===u){var y=p.filter(function(e,t){return t!==d});return ae(ae({},e),{},{selectedFeatures:y,selectionBounds:null})}var h,g,v={featureId:r,layerId:o,idProperty:i,properties:s,geometry:f};if(n&&!c){var b=function(e){if(Array.isArray(e))return oe(e)}(g=p)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(g)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?oe(e,t):void 0}}(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();-1===d?b.push(v):b.splice(d,1),h=b}else h=-1!==d&&1===p.length?[]:[v];return ae(ae({},e),{},{selectedFeatures:h,selectionBounds:null})},UPDATE_SELECTED_BOUNDS:function(e,t){return JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:ae(ae({},e),{},{selectionBounds:t})},CLEAR_SELECTED_FEATURES:function(e){return ae(ae({},e),{},{selectedFeatures:[],selectionBounds:null})}};function ce(e){return ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ce(e)}function se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function fe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?se(Object(r),!0).forEach(function(t){pe(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):se(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function pe(e,t,r){return(t=function(e){var t=function(e){if("object"!=ce(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ce(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ce(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var de={InitComponent:function(e){var t=e.appState,r=e.mapState,o=e.services,i=e.buttonConfig,a=e.mapProvider,u=e.pluginState,l=t.interfaceType,c=u.dispatch,s=u.enabled,f=u.selectedFeatures,p=u.selectionBounds,d=o.events,y=o.eventBus,h=o.closeApp,g=r.crossHair,v=r.mapStyle,b=["touch","keyboard"].includes(l),m=function(e){var t=e.mapState,r=e.pluginState,o=e.services,i=e.mapProvider,a=t.markers,u=r.dispatch,l=r.dataLayers,c=r.interactionMode,s=r.multiSelect,f=r.contiguous,p=r.markerColor,d=r.tolerance,y=r.selectedFeatures,h=r.selectionBounds,g=r.deselectOnClickOutside,v=o.eventBus,b=function(e){var t,r={},n=V(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;r[o.layerId]=o}}catch(e){n.e(e)}finally{n.f()}return r}(l),m=(0,n.useCallback)(function(e){var t=e.point,n=e.coords,o=function(e,t,r){try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}}(i,t,{radius:d}),h=l.length>0;null!=r&&r.debug&&console.log("--- Features at ".concat(n," ---"),o);var m=!h||"select"!==c&&"auto"!==c?null:function(e,t){var r,n=V(e);try{for(n.s();!(r=n.n()).done;){var o,i=r.value,a=null===(o=i.layer)||void 0===o?void 0:o.id;if(t[a])return{feature:i,config:t[a]}}}catch(e){n.e(e)}finally{n.f()}return null}(o,b);m?function(e){var t,r,n=e.feature,o=e.config;a.remove("location");var i=f&&J(n,y),l=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;l&&u({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:l,multiSelect:s,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:f&&!i}})}(m):"marker"===c||"auto"===c&&h?(u({type:"CLEAR_SELECTED_FEATURES"}),a.add("location",n,{color:p}),v.emit("interact:markerchange",{coords:n})):g&&u({type:"CLEAR_SELECTED_FEATURES"})},[i,l,c,s,v,u,a,f,y,b,null==r?void 0:r.debug,d,p,g]);return function(e,t,r){var o=(0,n.useRef)(null);(0,n.useEffect)(function(){if(!(t.length>0)||r){var n=o.current;(null===n||0===n.length)&&0===t.length||(e.emit("interact:selectionchange",{selectedFeatures:t,selectionBounds:r,canMerge:K(t),canSplit:$(t)}),o.current=t)}},[t,r])}(v,y,h),{handleInteraction:m}}({appState:t,mapState:r,pluginState:u,services:o,mapProvider:a}).handleInteraction;return function(e){var t=e.mapProvider,r=e.mapStyle,o=e.pluginState,i=e.selectedFeatures,a=e.dispatch,u=e.events,l=e.eventBus,c=o.dataLayers,s=(0,n.useMemo)(function(){return r?function(e,t){var r={};return t?(e.forEach(function(e){var n=e.selectedStroke||Q.selectedStroke,o=e.selectedFill||Q.selectedFill,i=e.selectedStrokeWidth||Q.selectedStrokeWidth;r[e.layerId]={stroke:Y(n,t.id),fill:Y(o,t.id),strokeWidth:i}}),r):r}(c,r):null},[c,r]),f=function(){var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,i,s);a({type:"UPDATE_SELECTED_BOUNDS",payload:r})};(0,n.useEffect)(function(){if(t&&i&&s)return f(),l.on(u.MAP_DATA_CHANGE,f),function(){l.off(u.MAP_DATA_CHANGE,f)}},[i,t,s])}({mapProvider:a,mapStyle:v,pluginState:u,selectedFeatures:f,selectionBounds:p,dispatch:c,events:d,eventBus:y}),(0,n.useEffect)(function(){s&&b?g.fixAtCenter():g.hide()},[s,l]),(0,n.useEffect)(function(){if(u.enabled)return function(e){var t=e.appState,r=e.mapState,n=e.pluginState,o=e.buttonConfig,i=e.events,a=e.eventBus,u=e.handleInteraction,l=e.closeApp,c=o.selectDone,s=o.selectAtTarget,f=o.selectCancel,p=t.layoutRefs.viewportRef,d=!1,y=function(e){d="Enter"===e.key&&p.current===e.target},h=function(e){"Enter"===e.key&&d&&(e.preventDefault(),m())},g=!1,v=setTimeout(function(){g=!0},0),b=function(e){g&&u(e)},m=function(){return u(r.crossHair.getDetail())},S=function(e,t){return function(r,n){e.markers.remove("location"),t.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:te({multiSelect:t.multiSelect,addToExisting:n},r)})}}(r,n),E=function(e){return S(e,!0)},w=function(e){return S(e,!1)};return document.addEventListener("keydown",y),document.addEventListener("keyup",h),a.on(i.MAP_CLICK,b),a.on("interact:selectFeature",E),a.on("interact:unselectFeature",w),s.onClick=m,c.onClick=function(){var e,o=(r.markers.getMarker("location")||{}).coords,i=n.selectionBounds,u=n.selectedFeatures;t.disabledButtons.has("selectDone")||(a.emit("interact:done",te(te(te({},o&&{coords:o}),!o&&u&&{selectedFeatures:u}),!o&&i&&{selectionBounds:i})),(null===(e=n.closeOnAction)||void 0===e||e)&&l())},f.onClick=function(){var e;a.emit("interact:cancel"),(null===(e=n.closeOnAction)||void 0===e||e)&&l()},function(){clearTimeout(v),c.onClick=null,s.onClick=null,f.onClick=null,document.removeEventListener("keydown",y),document.removeEventListener("keyup",h),a.off(i.MAP_CLICK,b),a.off("interact:selectFeature",E),a.off("interact:unselectFeature",w)}}({appState:t,pluginState:u,mapState:r,buttonConfig:i,events:d,eventBus:y,handleInteraction:m,closeApp:h})},[t,r,u,i,y,m]),null},reducer:{initialState:{enabled:!1,dataLayers:[],markerColor:null,interactionMode:null,multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectionBounds:null,closeOnAction:!0},actions:le},buttons:[{id:"selectAtTarget",label:"Select",iconId:"select",variant:"touch",hiddenWhen:function(e){var t=e.appState;return!e.pluginState.enabled||"touch"!==t.interfaceType},mobile:{slot:"actions",showLabel:!1},tablet:{slot:"actions",showLabel:!1},desktop:{slot:"actions",showLabel:!1}},{id:"selectCancel",label:"Back",variant:"tertiary",hiddenWhen:function(e){var t=e.appConfig,r=e.appState;return!e.pluginState.enabled||!(["hybrid","buttonFirst"].includes(t.behaviour)&&r.isFullscreen)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectDone",label:"Continue",variant:"primary",excludeWhen:function(e){var t=e.appState;return!e.pluginState.enabled||!t.isFullscreen},enableWhen:function(e){var t=e.mapState,r=e.pluginState;return!!t.markers.items.some(function(e){return"location"===e.id})||!!r.selectionBounds},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}}],keyboardShortcuts:[{id:"selectOrMark",group:"Select",title:"Select feature",command:"<kbd>Enter</kbd></dd>"}],icons:[{id:"select",svgContent:'<path d="M22 14a8 8 0 0 1-8 8"/><path d="M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1"/><path d="M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10"/><path d="M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/>'}],api:{enable:function(e,t){var r=e.pluginState,n=e.pluginConfig;r.dispatch({type:"ENABLE",payload:fe(fe(fe({},Q),n),t)})},disable:function(e){e.pluginState.dispatch({type:"DISABLE"})},clear:function(e){var t=e.pluginState,r=e.mapState;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})}}}}}]);
@@ -3,6 +3,7 @@ export const DEFAULTS = {
3
3
  interactionMode: 'marker',
4
4
  multiSelect: false,
5
5
  contiguous: false,
6
+ deselectOnClickOutside: false,
6
7
  markerColor: 'rgba(212,53,28,1)',
7
8
  selectedStroke: 'rgba(212,53,28,1)',
8
9
  selectedFill: 'rgba(255, 0, 0, 0.1)',
@@ -35,7 +35,11 @@ export function attachEvents ({
35
35
  }
36
36
 
37
37
  // Interaction Handlers
38
- const handleMapClick = (e) => handleInteraction(e)
38
+ // Defer click handling by one macrotask so any click that triggered the enable
39
+ // (e.g. finishing a draw gesture) fires before this handler is live.
40
+ let clickReady = false
41
+ const clickReadyTimer = setTimeout(() => { clickReady = true }, 0)
42
+ const handleMapClick = (e) => { if (clickReady) { handleInteraction(e) } }
39
43
  const handleSelectAtTarget = () => handleInteraction(mapState.crossHair.getDetail())
40
44
 
41
45
  const handleSelectDone = () => {
@@ -80,6 +84,7 @@ export function attachEvents ({
80
84
  selectCancel.onClick = handleSelectCancel
81
85
 
82
86
  return () => {
87
+ clearTimeout(clickReadyTimer)
83
88
  selectDone.onClick = null
84
89
  selectAtTarget.onClick = null
85
90
  selectCancel.onClick = null