@defra/interactive-map 0.0.10-alpha → 0.0.12-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 (121) hide show
  1. package/README.md +1 -1
  2. package/dist/css/index.css +1 -1
  3. package/dist/esm/im-core.js +1 -1
  4. package/dist/esm/im-shell.js +1 -1
  5. package/dist/umd/im-core.js +1 -1
  6. package/dist/umd/index.js +1 -1
  7. package/docs/api/button-definition.md +21 -3
  8. package/docs/api/panel-definition.md +10 -12
  9. package/docs/api.md +80 -7
  10. package/docs/demo.mdx +70 -0
  11. package/docs/index.md +0 -4
  12. package/docs/plugins/plugin-context.md +3 -3
  13. package/docs/plugins/plugin-descriptor.md +37 -0
  14. package/docs/plugins/plugin-manifest.md +1 -1
  15. package/docusaurus.config.cjs +55 -25
  16. package/package.json +18 -9
  17. package/plugins/beta/datasets/dist/esm/im-datasets-plugin.js +1 -1
  18. package/plugins/beta/datasets/dist/umd/im-datasets-plugin.js +1 -1
  19. package/plugins/beta/datasets/src/manifest.js +3 -3
  20. package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
  21. package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
  22. package/plugins/beta/draw-ml/src/events.js +4 -14
  23. package/plugins/beta/draw-ml/src/modes/createDrawMode.js +1 -3
  24. package/plugins/beta/map-styles/dist/esm/im-map-styles-plugin.js +1 -1
  25. package/plugins/beta/map-styles/dist/umd/im-map-styles-plugin.js +1 -1
  26. package/plugins/beta/map-styles/src/manifest.js +3 -3
  27. package/plugins/beta/use-location/dist/esm/im-use-location-plugin.js +1 -1
  28. package/plugins/beta/use-location/dist/umd/im-use-location-plugin.js +1 -1
  29. package/plugins/beta/use-location/src/manifest.js +7 -7
  30. package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
  31. package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
  32. package/plugins/interact/src/InteractInit.jsx +28 -6
  33. package/plugins/interact/src/InteractInit.test.js +19 -5
  34. package/plugins/interact/src/events.js +17 -15
  35. package/plugins/interact/src/events.test.js +25 -16
  36. package/plugins/search/dist/css/index.css +1 -1
  37. package/plugins/search/dist/esm/im-search-plugin.js +1 -1
  38. package/plugins/search/dist/esm/index.js +1 -1
  39. package/plugins/search/dist/umd/im-search-plugin.js +1 -1
  40. package/plugins/search/dist/umd/index.js +1 -1
  41. package/plugins/search/src/Search.jsx +9 -3
  42. package/plugins/search/src/Search.test.jsx +26 -6
  43. package/plugins/search/src/components/Form/Form.jsx +35 -7
  44. package/plugins/search/src/components/Form/Form.module.scss +27 -0
  45. package/plugins/search/src/components/Form/Form.test.jsx +99 -2
  46. package/plugins/search/src/components/SubmitButton/SubmitButton.jsx +28 -0
  47. package/plugins/search/src/components/SubmitButton/SubmitButton.module.scss +8 -0
  48. package/plugins/search/src/components/SubmitButton/SubmitButton.test.jsx +33 -0
  49. package/plugins/search/src/datasets.js +15 -11
  50. package/plugins/search/src/datasets.test.js +17 -2
  51. package/plugins/search/src/events/fetchSuggestions.js +1 -1
  52. package/plugins/search/src/index.js +1 -1
  53. package/plugins/search/src/index.test.js +4 -4
  54. package/plugins/search/src/reducer.js +9 -4
  55. package/plugins/search/src/reducer.test.js +12 -7
  56. package/plugins/search/src/search.scss +5 -1
  57. package/plugins/search/src/utils/parseOsNamesResults.js +18 -2
  58. package/plugins/search/src/utils/parseOsNamesResults.test.js +33 -15
  59. package/providers/beta/esri/dist/esm/im-esri-provider.js +1 -1
  60. package/providers/beta/esri/src/appEvents.js +8 -2
  61. package/providers/beta/esri/src/esriProvider.js +25 -17
  62. package/providers/beta/esri/src/mapEvents.js +41 -4
  63. package/providers/beta/esri/src/utils/coords.js +34 -1
  64. package/providers/beta/esri/src/utils/coords.test.js +126 -0
  65. package/providers/beta/esri/src/utils/spatial.js +47 -1
  66. package/providers/beta/esri/src/utils/spatial.test.js +55 -0
  67. package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
  68. package/providers/maplibre/dist/esm/index.js +1 -1
  69. package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
  70. package/providers/maplibre/dist/umd/index.js +1 -1
  71. package/providers/maplibre/src/appEvents.js +10 -1
  72. package/providers/maplibre/src/appEvents.test.js +13 -4
  73. package/providers/maplibre/src/index.js +5 -13
  74. package/providers/maplibre/src/index.test.js +34 -15
  75. package/providers/maplibre/src/mapEvents.js +9 -1
  76. package/providers/maplibre/src/maplibreProvider.js +25 -15
  77. package/providers/maplibre/src/maplibreProvider.test.js +28 -2
  78. package/providers/maplibre/src/utils/spatial.js +51 -0
  79. package/providers/maplibre/src/utils/spatial.test.js +47 -0
  80. package/src/App/components/Actions/Actions.module.scss +5 -4
  81. package/src/App/components/MapButton/MapButton.jsx +4 -16
  82. package/src/App/components/MapButton/MapButton.module.scss +12 -12
  83. package/src/App/components/MapButton/MapButton.test.jsx +0 -9
  84. package/src/App/components/Panel/Panel.jsx +6 -6
  85. package/src/App/components/Panel/Panel.test.jsx +14 -15
  86. package/src/App/components/Viewport/MapController.jsx +6 -1
  87. package/src/App/hooks/useLayoutMeasurements.js +1 -1
  88. package/src/App/hooks/useLayoutMeasurements.test.js +1 -1
  89. package/src/App/hooks/useMapProviderOverrides.js +21 -1
  90. package/src/App/hooks/useMapProviderOverrides.test.js +51 -2
  91. package/src/App/hooks/useMarkersAPI.js +5 -3
  92. package/src/App/hooks/useModalPanelBehaviour.js +19 -2
  93. package/src/App/hooks/useModalPanelBehaviour.test.js +84 -60
  94. package/src/App/hooks/useVisibleGeometry.js +100 -0
  95. package/src/App/hooks/useVisibleGeometry.test.js +331 -0
  96. package/src/App/layout/Layout.jsx +5 -5
  97. package/src/App/layout/layout.module.scss +2 -4
  98. package/src/App/registry/panelRegistry.js +1 -10
  99. package/src/App/registry/panelRegistry.test.js +6 -11
  100. package/src/App/renderer/HtmlElementHost.jsx +12 -3
  101. package/src/App/renderer/HtmlElementHost.test.jsx +89 -0
  102. package/src/App/renderer/mapButtons.js +128 -28
  103. package/src/App/renderer/mapButtons.test.js +119 -19
  104. package/src/App/renderer/pluginWrapper.js +3 -2
  105. package/src/App/renderer/slots.js +1 -1
  106. package/src/App/store/AppProvider.jsx +1 -0
  107. package/src/App/store/MapProvider.jsx +18 -5
  108. package/src/App/store/MapProvider.test.jsx +56 -1
  109. package/src/App/store/appActionsMap.js +17 -9
  110. package/src/App/store/appActionsMap.test.js +33 -7
  111. package/src/App/store/appDispatchMiddleware.js +19 -0
  112. package/src/App/store/appDispatchMiddleware.test.js +56 -0
  113. package/src/App/store/mapActionsMap.js +4 -7
  114. package/src/InteractiveMap/InteractiveMap.js +18 -0
  115. package/src/InteractiveMap/InteractiveMap.test.js +12 -0
  116. package/src/config/appConfig.js +17 -15
  117. package/src/config/events.js +41 -4
  118. package/src/config/getInitialOpenPanels.js +2 -2
  119. package/src/config/getInitialOpenPanels.test.js +7 -7
  120. package/src/types.js +22 -11
  121. package/src/utils/getValueForStyle.js +1 -1
@@ -33,28 +33,18 @@ export function attachEvents({ pluginState, mapProvider, buttonConfig, eventBus
33
33
  disableSnap()
34
34
  mapProvider.undoStack?.clear()
35
35
 
36
- const features = draw.getAll().features
37
-
38
36
  if (mode === 'edit_vertex') {
39
37
  map.fire('draw.editfinish', { features: [draw.get(tempFeature.id)] })
40
38
  return
41
39
  }
42
40
 
43
- if (!['draw_polygon', 'draw_line'].includes(mode) || features.length === 0) {
41
+ if (!['draw_polygon', 'draw_line'].includes(mode)) {
44
42
  return
45
43
  }
46
44
 
47
- const feature = features?.[0]
48
- const geom = feature.geometry
49
-
50
- if (geom.type === 'Polygon') {
51
- const ring = geom.coordinates[0]
52
- geom.coordinates[0] = [...ring.slice(0, -2), ring[0]]
53
- } else {
54
- geom.coordinates = geom.coordinates.slice(0, -1)
55
- }
56
-
57
- map.fire('draw.create', { features: [feature] })
45
+ // Trigger onStop → ParentMode.onStop, which strips the rubber-band vertex
46
+ // and fires draw.create once with the correct geometry.
47
+ draw.changeMode('disabled')
58
48
  }
59
49
 
60
50
  const handleCancel = () => {
@@ -137,9 +137,7 @@ export const createDrawMode = (ParentMode, config) => {
137
137
  // For lines: clicking same spot (like double-click) should finish the line
138
138
  if (finishOnInvalidClick && coords.length > 1) {
139
139
  coords.pop()
140
- this.map.fire('draw.create', {
141
- features: [feature.toGeoJSON()]
142
- })
140
+ this.map.fire('draw.create', { features: [feature.toGeoJSON()] })
143
141
  this.changeMode('simple_select', { featureIds: [feature.id] })
144
142
  }
145
143
  return
@@ -1 +1 @@
1
- import{useEffect as e,useContext as t,createContext as i}from"preact/compat";import{jsx as s,Fragment as l,jsxs as a}from"preact/jsx-runtime";import r from"@babel/runtime/helpers/defineProperty";new Set;function m(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,s)}return i}function n(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?m(Object(i),!0).forEach(function(t){r(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):m(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}var c={slot:"middle",initiallyOpen:!1,dismissable:!0,modal:!0};n({},c),n(n({},c),{},{width:"500px"}),n(n({},c),{},{width:"500px"});var o={small:1,medium:1.5,large:2},p={InitComponent:function(t){var{pluginConfig:i,services:a}=t,{events:r,eventBus:m}=a,n=()=>{m.emit(r.MAP_INIT_MAP_STYLES,i.mapStyles)};return e(()=>(m.on(r.APP_READY,n),()=>m.off(r.APP_READY,n)),[]),s(l,{})},panels:[{id:"mapStyles",label:"Map styles",mobile:{slot:"bottom",modal:!0,dismissable:!0},tablet:{slot:"inset",modal:!0,width:"400px",dismissable:!0},desktop:{slot:"inset",modal:!0,width:"400px",dismissable:!0},render:e=>{var{mapState:t,pluginConfig:i,services:l,mapProvider:r}=e,{mapStyle:m,mapSize:n}=t,{mapStyles:c}=i,{events:p,eventBus:d}=l,{supportsMapSizes:h}=r.capabilities;return a("div",{className:"im-c-map-styles",children:[s("div",{className:"im-c-map-styles__group",children:s("div",{className:"im-c-map-styles__inner",children:c.filter(e=>e.url).map(e=>s("div",{className:"im-c-map-styles__item",children:a("button",{className:"im-c-map-styles__button","aria-pressed":e.id===m.id,onClick:()=>{return t=e,void d.emit(p.MAP_SET_STYLE,t);var t},children:[s("div",{className:"im-c-map-styles__image",children:s("img",{src:e.thumbnail||void 0,alt:"",height:"60",width:"60"})}),e.label]})},e.id))})}),h&&a("div",{className:"im-c-map-styles__group",children:[s("h3",{className:"im-c-map-styles__heading",id:"map-text-sizes",children:"Map size"}),s("div",{className:"im-c-map-styles__inner",children:["small","medium","large"].map(e=>s("div",{className:"im-c-map-styles__item",children:a("button",{className:"im-c-map-styles__button",onClick:()=>{return t=e,d.emit(p.MAP_SET_SIZE,t),void d.emit(p.MAP_SET_PIXEL_RATIO,window.devicePixelRatio*o[t]);var t},"aria-pressed":e===n,children:[s("div",{className:"im-c-map-styles__image",children:a("svg",{width:"60",height:"60",viewBox:"0 0 60 60",fillRule:"evenodd",children:[s("rect",{className:"im-c-map-styles__image-bg",width:"100%",height:"100%"}),s("g",{style:{transform:"scale(".concat(o[e],")"),transformOrigin:"8px 52px"},children:s("path",{d:"M8 51.785L12.948 38.9h1.837l5.274 12.885h-1.943l-1.503-3.903h-5.387l-1.415 3.903H8zm3.718-5.291h4.368l-1.345-3.569-.914-2.671c-.164.826-.395 1.646-.694 2.46l-1.415 3.78zm15.592 4.139c-3.698 3.143-7.836.271-6.315-2.562.963-1.794 5.529-1.982 6.183-2.21.022-.825.052-2.27-2.241-2.312-1.751-.031-2.242 1.025-2.435 1.776l-1.547-.211c.234-1.102.963-2.856 4.21-2.874 4.037-.022 3.612 2.962 3.612 3.524v2.11c0 .315 0 3.012.501 3.911h-1.652c-.164-.328-.27-.712-.316-1.152zm-.132-3.533c-.907.37-3.444.694-3.964.914-1.293.548-.911 2.399.225 2.637.639.134 3.739.476 3.739-2.971v-.58z"})})]})}),e[0].toUpperCase()+e.slice(1)]})},e))})]})]})}}],buttons:[{id:"mapStyles",label:"Styles",panelId:"mapStyles",iconId:"map",mobile:{slot:"top-left",showLabel:!1},tablet:{slot:"top-left",showLabel:!0},desktop:{slot:"top-left",showLabel:!0}}],icons:[{id:"map",svgContent:'<path d="M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z"/><path d="M15 5.764v15"/><path d="M9 3.236v15"/>'}]};export{p as manifest};
1
+ import{useEffect as e,useContext as t,createContext as i}from"preact/compat";import{jsx as s,Fragment as l,jsxs as a}from"preact/jsx-runtime";import r from"@babel/runtime/helpers/defineProperty";new Set;function m(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,s)}return i}function n(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?m(Object(i),!0).forEach(function(t){r(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):m(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}var o={slot:"middle",open:!1,dismissible:!0,modal:!0};n({},o),n(n({},o),{},{width:"500px"}),n(n({},o),{},{width:"500px"});var c={small:1,medium:1.5,large:2},p={InitComponent:function(t){var{pluginConfig:i,services:a}=t,{events:r,eventBus:m}=a,n=()=>{m.emit(r.MAP_INIT_MAP_STYLES,i.mapStyles)};return e(()=>(m.on(r.APP_READY,n),()=>m.off(r.APP_READY,n)),[]),s(l,{})},panels:[{id:"mapStyles",label:"Map styles",mobile:{slot:"bottom",modal:!0,dismissible:!0},tablet:{slot:"inset",modal:!0,width:"400px",dismissible:!0},desktop:{slot:"inset",modal:!0,width:"400px",dismissible:!0},render:e=>{var{mapState:t,pluginConfig:i,services:l,mapProvider:r}=e,{mapStyle:m,mapSize:n}=t,{mapStyles:o}=i,{events:p,eventBus:d}=l,{supportsMapSizes:h}=r.capabilities;return a("div",{className:"im-c-map-styles",children:[s("div",{className:"im-c-map-styles__group",children:s("div",{className:"im-c-map-styles__inner",children:o.filter(e=>e.url).map(e=>s("div",{className:"im-c-map-styles__item",children:a("button",{className:"im-c-map-styles__button","aria-pressed":e.id===m.id,onClick:()=>{return t=e,void d.emit(p.MAP_SET_STYLE,t);var t},children:[s("div",{className:"im-c-map-styles__image",children:s("img",{src:e.thumbnail||void 0,alt:"",height:"60",width:"60"})}),e.label]})},e.id))})}),h&&a("div",{className:"im-c-map-styles__group",children:[s("h3",{className:"im-c-map-styles__heading",id:"map-text-sizes",children:"Map size"}),s("div",{className:"im-c-map-styles__inner",children:["small","medium","large"].map(e=>s("div",{className:"im-c-map-styles__item",children:a("button",{className:"im-c-map-styles__button",onClick:()=>{return t=e,d.emit(p.MAP_SET_SIZE,t),void d.emit(p.MAP_SET_PIXEL_RATIO,window.devicePixelRatio*c[t]);var t},"aria-pressed":e===n,children:[s("div",{className:"im-c-map-styles__image",children:a("svg",{width:"60",height:"60",viewBox:"0 0 60 60",fillRule:"evenodd",children:[s("rect",{className:"im-c-map-styles__image-bg",width:"100%",height:"100%"}),s("g",{style:{transform:"scale(".concat(c[e],")"),transformOrigin:"8px 52px"},children:s("path",{d:"M8 51.785L12.948 38.9h1.837l5.274 12.885h-1.943l-1.503-3.903h-5.387l-1.415 3.903H8zm3.718-5.291h4.368l-1.345-3.569-.914-2.671c-.164.826-.395 1.646-.694 2.46l-1.415 3.78zm15.592 4.139c-3.698 3.143-7.836.271-6.315-2.562.963-1.794 5.529-1.982 6.183-2.21.022-.825.052-2.27-2.241-2.312-1.751-.031-2.242 1.025-2.435 1.776l-1.547-.211c.234-1.102.963-2.856 4.21-2.874 4.037-.022 3.612 2.962 3.612 3.524v2.11c0 .315 0 3.012.501 3.911h-1.652c-.164-.328-.27-.712-.316-1.152zm-.132-3.533c-.907.37-3.444.694-3.964.914-1.293.548-.911 2.399.225 2.637.639.134 3.739.476 3.739-2.971v-.58z"})})]})}),e[0].toUpperCase()+e.slice(1)]})},e))})]})]})}}],buttons:[{id:"mapStyles",label:"Styles",panelId:"mapStyles",iconId:"map",mobile:{slot:"top-left",showLabel:!1},tablet:{slot:"top-left",showLabel:!0},desktop:{slot:"top-left",showLabel:!0}}],icons:[{id:"map",svgContent:'<path d="M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z"/><path d="M15 5.764v15"/><path d="M9 3.236v15"/>'}]};export{p as manifest};
@@ -1 +1 @@
1
- "use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[657],{860(e,t,i){i.r(t),i.d(t,{manifest:()=>p});var s=i(738),r=i(287);new Set,new Set;function n(e){return n="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},n(e)}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,s)}return i}function l(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?a(Object(i),!0).forEach(function(t){o(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):a(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function o(e,t,i){return(t=function(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var c={slot:"middle",initiallyOpen:!1,dismissable:!0,modal:!0},m=(l({},c),l(l({},c),{},{width:"500px"}),l(l({},c),{},{width:"500px"}),{small:1,medium:1.5,large:2}),p={InitComponent:function(e){var t=e.pluginConfig,i=e.services,n=i.events,a=i.eventBus,l=function(){a.emit(n.MAP_INIT_MAP_STYLES,t.mapStyles)};return(0,s.useEffect)(function(){return a.on(n.APP_READY,l),function(){return a.off(n.APP_READY,l)}},[]),(0,r.jsx)(r.Fragment,{})},panels:[{id:"mapStyles",label:"Map styles",mobile:{slot:"bottom",modal:!0,dismissable:!0},tablet:{slot:"inset",modal:!0,width:"400px",dismissable:!0},desktop:{slot:"inset",modal:!0,width:"400px",dismissable:!0},render:function(e){var t=e.mapState,i=e.pluginConfig,s=e.services,n=e.mapProvider,a=t.mapStyle,l=t.mapSize,o=i.mapStyles,c=s.events,p=s.eventBus,d=n.capabilities.supportsMapSizes;return(0,r.jsxs)("div",{className:"im-c-map-styles",children:[(0,r.jsx)("div",{className:"im-c-map-styles__group",children:(0,r.jsx)("div",{className:"im-c-map-styles__inner",children:o.filter(function(e){return e.url}).map(function(e){return(0,r.jsx)("div",{className:"im-c-map-styles__item",children:(0,r.jsxs)("button",{className:"im-c-map-styles__button","aria-pressed":e.id===a.id,onClick:function(){return t=e,void p.emit(c.MAP_SET_STYLE,t);var t},children:[(0,r.jsx)("div",{className:"im-c-map-styles__image",children:(0,r.jsx)("img",{src:e.thumbnail||void 0,alt:"",height:"60",width:"60"})}),e.label]})},e.id)})})}),d&&(0,r.jsxs)("div",{className:"im-c-map-styles__group",children:[(0,r.jsx)("h3",{className:"im-c-map-styles__heading",id:"map-text-sizes",children:"Map size"}),(0,r.jsx)("div",{className:"im-c-map-styles__inner",children:["small","medium","large"].map(function(e){return(0,r.jsx)("div",{className:"im-c-map-styles__item",children:(0,r.jsxs)("button",{className:"im-c-map-styles__button",onClick:function(){return t=e,p.emit(c.MAP_SET_SIZE,t),void p.emit(c.MAP_SET_PIXEL_RATIO,window.devicePixelRatio*m[t]);var t},"aria-pressed":e===l,children:[(0,r.jsx)("div",{className:"im-c-map-styles__image",children:(0,r.jsxs)("svg",{width:"60",height:"60",viewBox:"0 0 60 60",fillRule:"evenodd",children:[(0,r.jsx)("rect",{className:"im-c-map-styles__image-bg",width:"100%",height:"100%"}),(0,r.jsx)("g",{style:{transform:"scale(".concat(m[e],")"),transformOrigin:"8px 52px"},children:(0,r.jsx)("path",{d:"M8 51.785L12.948 38.9h1.837l5.274 12.885h-1.943l-1.503-3.903h-5.387l-1.415 3.903H8zm3.718-5.291h4.368l-1.345-3.569-.914-2.671c-.164.826-.395 1.646-.694 2.46l-1.415 3.78zm15.592 4.139c-3.698 3.143-7.836.271-6.315-2.562.963-1.794 5.529-1.982 6.183-2.21.022-.825.052-2.27-2.241-2.312-1.751-.031-2.242 1.025-2.435 1.776l-1.547-.211c.234-1.102.963-2.856 4.21-2.874 4.037-.022 3.612 2.962 3.612 3.524v2.11c0 .315 0 3.012.501 3.911h-1.652c-.164-.328-.27-.712-.316-1.152zm-.132-3.533c-.907.37-3.444.694-3.964.914-1.293.548-.911 2.399.225 2.637.639.134 3.739.476 3.739-2.971v-.58z"})})]})}),e[0].toUpperCase()+e.slice(1)]})},e)})})]})]})}}],buttons:[{id:"mapStyles",label:"Styles",panelId:"mapStyles",iconId:"map",mobile:{slot:"top-left",showLabel:!1},tablet:{slot:"top-left",showLabel:!0},desktop:{slot:"top-left",showLabel:!0}}],icons:[{id:"map",svgContent:'<path d="M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z"/><path d="M15 5.764v15"/><path d="M9 3.236v15"/>'}]}}}]);
1
+ "use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[657],{860(e,t,i){i.r(t),i.d(t,{manifest:()=>p});var s=i(738),r=i(287);new Set,new Set;function n(e){return n="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},n(e)}function l(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,s)}return i}function a(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?l(Object(i),!0).forEach(function(t){o(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):l(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function o(e,t,i){return(t=function(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var c={slot:"middle",open:!1,dismissible:!0,modal:!0},m=(a({},c),a(a({},c),{},{width:"500px"}),a(a({},c),{},{width:"500px"}),{small:1,medium:1.5,large:2}),p={InitComponent:function(e){var t=e.pluginConfig,i=e.services,n=i.events,l=i.eventBus,a=function(){l.emit(n.MAP_INIT_MAP_STYLES,t.mapStyles)};return(0,s.useEffect)(function(){return l.on(n.APP_READY,a),function(){return l.off(n.APP_READY,a)}},[]),(0,r.jsx)(r.Fragment,{})},panels:[{id:"mapStyles",label:"Map styles",mobile:{slot:"bottom",modal:!0,dismissible:!0},tablet:{slot:"inset",modal:!0,width:"400px",dismissible:!0},desktop:{slot:"inset",modal:!0,width:"400px",dismissible:!0},render:function(e){var t=e.mapState,i=e.pluginConfig,s=e.services,n=e.mapProvider,l=t.mapStyle,a=t.mapSize,o=i.mapStyles,c=s.events,p=s.eventBus,d=n.capabilities.supportsMapSizes;return(0,r.jsxs)("div",{className:"im-c-map-styles",children:[(0,r.jsx)("div",{className:"im-c-map-styles__group",children:(0,r.jsx)("div",{className:"im-c-map-styles__inner",children:o.filter(function(e){return e.url}).map(function(e){return(0,r.jsx)("div",{className:"im-c-map-styles__item",children:(0,r.jsxs)("button",{className:"im-c-map-styles__button","aria-pressed":e.id===l.id,onClick:function(){return t=e,void p.emit(c.MAP_SET_STYLE,t);var t},children:[(0,r.jsx)("div",{className:"im-c-map-styles__image",children:(0,r.jsx)("img",{src:e.thumbnail||void 0,alt:"",height:"60",width:"60"})}),e.label]})},e.id)})})}),d&&(0,r.jsxs)("div",{className:"im-c-map-styles__group",children:[(0,r.jsx)("h3",{className:"im-c-map-styles__heading",id:"map-text-sizes",children:"Map size"}),(0,r.jsx)("div",{className:"im-c-map-styles__inner",children:["small","medium","large"].map(function(e){return(0,r.jsx)("div",{className:"im-c-map-styles__item",children:(0,r.jsxs)("button",{className:"im-c-map-styles__button",onClick:function(){return t=e,p.emit(c.MAP_SET_SIZE,t),void p.emit(c.MAP_SET_PIXEL_RATIO,window.devicePixelRatio*m[t]);var t},"aria-pressed":e===a,children:[(0,r.jsx)("div",{className:"im-c-map-styles__image",children:(0,r.jsxs)("svg",{width:"60",height:"60",viewBox:"0 0 60 60",fillRule:"evenodd",children:[(0,r.jsx)("rect",{className:"im-c-map-styles__image-bg",width:"100%",height:"100%"}),(0,r.jsx)("g",{style:{transform:"scale(".concat(m[e],")"),transformOrigin:"8px 52px"},children:(0,r.jsx)("path",{d:"M8 51.785L12.948 38.9h1.837l5.274 12.885h-1.943l-1.503-3.903h-5.387l-1.415 3.903H8zm3.718-5.291h4.368l-1.345-3.569-.914-2.671c-.164.826-.395 1.646-.694 2.46l-1.415 3.78zm15.592 4.139c-3.698 3.143-7.836.271-6.315-2.562.963-1.794 5.529-1.982 6.183-2.21.022-.825.052-2.27-2.241-2.312-1.751-.031-2.242 1.025-2.435 1.776l-1.547-.211c.234-1.102.963-2.856 4.21-2.874 4.037-.022 3.612 2.962 3.612 3.524v2.11c0 .315 0 3.012.501 3.911h-1.652c-.164-.328-.27-.712-.316-1.152zm-.132-3.533c-.907.37-3.444.694-3.964.914-1.293.548-.911 2.399.225 2.637.639.134 3.739.476 3.739-2.971v-.58z"})})]})}),e[0].toUpperCase()+e.slice(1)]})},e)})})]})]})}}],buttons:[{id:"mapStyles",label:"Styles",panelId:"mapStyles",iconId:"map",mobile:{slot:"top-left",showLabel:!1},tablet:{slot:"top-left",showLabel:!0},desktop:{slot:"top-left",showLabel:!0}}],icons:[{id:"map",svgContent:'<path d="M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z"/><path d="M15 5.764v15"/><path d="M9 3.236v15"/>'}]}}}]);
@@ -11,19 +11,19 @@ export const manifest = {
11
11
  mobile: {
12
12
  slot: 'bottom',
13
13
  modal: true,
14
- dismissable: true
14
+ dismissible: true
15
15
  },
16
16
  tablet: {
17
17
  slot: 'inset',
18
18
  modal: true,
19
19
  width: '400px',
20
- dismissable: true
20
+ dismissible: true
21
21
  },
22
22
  desktop: {
23
23
  slot: 'inset',
24
24
  modal: true,
25
25
  width: '400px',
26
- dismissable: true
26
+ dismissible: true
27
27
  },
28
28
  render: MapStyles // will be wrapped automatically
29
29
  }],
@@ -1 +1 @@
1
- import{useEffect as e}from"preact/compat";import{jsx as t}from"preact/jsx-runtime";import o from"@babel/runtime/helpers/defineProperty";function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,r)}return o}function i(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach(function(t){o(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}var n={PERMISSION_DENIED:"Location permission denied. Please enable it in your browser settings.",POSITION_UNAVAILABLE:"Location information is unavailable.",TIMEOUT:"The location request timed out. Please try again.",FALLBACK:"Unable to get your location."};var a={slot:"right-top",showLabel:!1},l={InitComponent:function(t){var{appConfig:o,appState:r,pluginState:i,mapState:a,mapProvider:l,buttonConfig:c}=t,{useLocation:s}=c;return e(()=>{if(a.isMapReady)return function(e){var{appState:t,pluginState:o,mapProvider:r,useLocationButton:i}=e,{dispatch:a,buttonRefs:l}=t,{dispatch:c}=o,s=e=>e&&"number"==typeof e.code&&n[e.code]||n.FALLBACK;i.onClick=()=>{navigator.geolocation.getCurrentPosition(e=>{var{latitude:t,longitude:o}=e.coords;try{r.setView({center:[o,t],zoom:12})}catch(e){console.log("Map provider failed to pan:",e)}},e=>{var t=s(e),o=l.current[i.id];c({type:"SET_ERROR_MESSAGE",payload:t}),a({type:"OPEN_PANEL",payload:{panelId:"useLocation",props:{triggeringElement:o}}})},{enableHighAccuracy:!0,maximumAge:0,timeout:1e4})};var p=null}({appState:r,pluginState:i,mapProvider:l,useLocationButton:s}),()=>{s.onClick=null}},[a.isMapReady]),null},reducer:{initialState:{errorMessage:null},actions:{SET_ERROR_MESSAGE:(e,t)=>i(i({},e),{},{errorMessage:t})}},buttons:[{id:"useLocation",group:"location",label:"Use your location",iconId:"locateFixed",hiddenWhen:()=>!navigator.geolocation,mobile:a,tablet:a,desktop:a}],panels:[{id:"useLocation",label:"Problem getting your location",mobile:{slot:"banner",initiallyOpen:!1,dismissable:!0,modal:!0},tablet:{slot:"banner",initiallyOpen:!1,dismissable:!0,modal:!0},desktop:{slot:"banner",initiallyOpen:!1,dismissable:!0,modal:!0},render:e=>{var{pluginState:o}=e,{errorMessage:r}=o;return t("div",{className:"im-c-use-location",children:t("p",{children:r})})}}],icons:[{id:"locateFixed",svgContent:'<line x1="2" x2="5" y1="12" y2="12"/><line x1="19" x2="22" y1="12" y2="12"/><line x1="12" x2="12" y1="2" y2="5"/><line x1="12" x2="12" y1="19" y2="22"/><circle cx="12" cy="12" r="7"/><circle cx="12" cy="12" r="3"/>'}]};export{l as manifest};
1
+ import{useEffect as e}from"preact/compat";import{jsx as t}from"preact/jsx-runtime";import o from"@babel/runtime/helpers/defineProperty";function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,r)}return o}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach(function(t){o(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var i={PERMISSION_DENIED:"Location permission denied. Please enable it in your browser settings.",POSITION_UNAVAILABLE:"Location information is unavailable.",TIMEOUT:"The location request timed out. Please try again.",FALLBACK:"Unable to get your location."};var a={slot:"right-top",showLabel:!1},l={InitComponent:function(t){var{appConfig:o,appState:r,pluginState:n,mapState:a,mapProvider:l,buttonConfig:c}=t,{useLocation:s}=c;return e(()=>{if(a.isMapReady)return function(e){var{appState:t,pluginState:o,mapProvider:r,useLocationButton:n}=e,{dispatch:a,buttonRefs:l}=t,{dispatch:c}=o,s=e=>e&&"number"==typeof e.code&&i[e.code]||i.FALLBACK;n.onClick=()=>{navigator.geolocation.getCurrentPosition(e=>{var{latitude:t,longitude:o}=e.coords;try{r.setView({center:[o,t],zoom:12})}catch(e){console.log("Map provider failed to pan:",e)}},e=>{var t=s(e),o=l.current[n.id];c({type:"SET_ERROR_MESSAGE",payload:t}),a({type:"OPEN_PANEL",payload:{panelId:"useLocation",props:{triggeringElement:o}}})},{enableHighAccuracy:!0,maximumAge:0,timeout:1e4})};var p=null}({appState:r,pluginState:n,mapProvider:l,useLocationButton:s}),()=>{s.onClick=null}},[a.isMapReady]),null},reducer:{initialState:{errorMessage:null},actions:{SET_ERROR_MESSAGE:(e,t)=>n(n({},e),{},{errorMessage:t})}},buttons:[{id:"useLocation",group:{name:"location",label:"Location",order:0},label:"Use your location",iconId:"locateFixed",hiddenWhen:()=>!navigator.geolocation,mobile:a,tablet:a,desktop:a}],panels:[{id:"useLocation",label:"Problem getting your location",mobile:{slot:"banner",open:!1,dismissible:!0,modal:!0},tablet:{slot:"banner",open:!1,dismissible:!0,modal:!0},desktop:{slot:"banner",open:!1,dismissible:!0,modal:!0},render:e=>{var{pluginState:o}=e,{errorMessage:r}=o;return t("div",{className:"im-c-use-location",children:t("p",{children:r})})}}],icons:[{id:"locateFixed",svgContent:'<line x1="2" x2="5" y1="12" y2="12"/><line x1="19" x2="22" y1="12" y2="12"/><line x1="12" x2="12" y1="2" y2="5"/><line x1="12" x2="12" y1="19" y2="22"/><circle cx="12" cy="12" r="7"/><circle cx="12" cy="12" r="3"/>'}]};export{l as manifest};
@@ -1 +1 @@
1
- "use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[419],{528(e,t,n){function o(e){return o="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},o(e)}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function a(e,t,n){return(t=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(t),n.d(t,{manifest:()=>f});var c={SET_ERROR_MESSAGE:function(e,t){return i(i({},e),{},{errorMessage:t})}},l=n(738),u={PERMISSION_DENIED:"Location permission denied. Please enable it in your browser settings.",POSITION_UNAVAILABLE:"Location information is unavailable.",TIMEOUT:"The location request timed out. Please try again.",FALLBACK:"Unable to get your location."},s=n(287),p={slot:"right-top",showLabel:!1},f={InitComponent:function(e){e.appConfig;var t=e.appState,n=e.pluginState,o=e.mapState,r=e.mapProvider,i=e.buttonConfig.useLocation;return(0,l.useEffect)(function(){if(o.isMapReady)return function(e){var t=e.appState,n=e.pluginState,o=e.mapProvider,r=e.useLocationButton,i=t.dispatch,a=t.buttonRefs,c=n.dispatch;r.onClick=function(){navigator.geolocation.getCurrentPosition(function(e){var t=e.coords,n=t.latitude,r=t.longitude;try{o.setView({center:[r,n],zoom:12})}catch(e){console.log("Map provider failed to pan:",e)}},function(e){var t=function(e){return e&&"number"==typeof e.code&&u[e.code]||u.FALLBACK}(e),n=a.current[r.id];c({type:"SET_ERROR_MESSAGE",payload:t}),i({type:"OPEN_PANEL",payload:{panelId:"useLocation",props:{triggeringElement:n}}})},{enableHighAccuracy:!0,maximumAge:0,timeout:1e4})}}({appState:t,pluginState:n,mapProvider:r,useLocationButton:i}),function(){i.onClick=null}},[o.isMapReady]),null},reducer:{initialState:{errorMessage:null},actions:c},buttons:[{id:"useLocation",group:"location",label:"Use your location",iconId:"locateFixed",hiddenWhen:function(){return!navigator.geolocation},mobile:p,tablet:p,desktop:p}],panels:[{id:"useLocation",label:"Problem getting your location",mobile:{slot:"banner",initiallyOpen:!1,dismissable:!0,modal:!0},tablet:{slot:"banner",initiallyOpen:!1,dismissable:!0,modal:!0},desktop:{slot:"banner",initiallyOpen:!1,dismissable:!0,modal:!0},render:function(e){var t=e.pluginState.errorMessage;return(0,s.jsx)("div",{className:"im-c-use-location",children:(0,s.jsx)("p",{children:t})})}}],icons:[{id:"locateFixed",svgContent:'<line x1="2" x2="5" y1="12" y2="12"/><line x1="19" x2="22" y1="12" y2="12"/><line x1="12" x2="12" y1="2" y2="5"/><line x1="12" x2="12" y1="19" y2="22"/><circle cx="12" cy="12" r="7"/><circle cx="12" cy="12" r="3"/>'}]}}}]);
1
+ "use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[419],{528(e,t,o){function n(e){return n="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},n(e)}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach(function(t){a(e,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))})}return e}function a(e,t,o){return(t=function(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}o.r(t),o.d(t,{manifest:()=>b});var c={SET_ERROR_MESSAGE:function(e,t){return i(i({},e),{},{errorMessage:t})}},l=o(738),u={PERMISSION_DENIED:"Location permission denied. Please enable it in your browser settings.",POSITION_UNAVAILABLE:"Location information is unavailable.",TIMEOUT:"The location request timed out. Please try again.",FALLBACK:"Unable to get your location."},s=o(287),p={slot:"right-top",showLabel:!1},b={InitComponent:function(e){e.appConfig;var t=e.appState,o=e.pluginState,n=e.mapState,r=e.mapProvider,i=e.buttonConfig.useLocation;return(0,l.useEffect)(function(){if(n.isMapReady)return function(e){var t=e.appState,o=e.pluginState,n=e.mapProvider,r=e.useLocationButton,i=t.dispatch,a=t.buttonRefs,c=o.dispatch;r.onClick=function(){navigator.geolocation.getCurrentPosition(function(e){var t=e.coords,o=t.latitude,r=t.longitude;try{n.setView({center:[r,o],zoom:12})}catch(e){console.log("Map provider failed to pan:",e)}},function(e){var t=function(e){return e&&"number"==typeof e.code&&u[e.code]||u.FALLBACK}(e),o=a.current[r.id];c({type:"SET_ERROR_MESSAGE",payload:t}),i({type:"OPEN_PANEL",payload:{panelId:"useLocation",props:{triggeringElement:o}}})},{enableHighAccuracy:!0,maximumAge:0,timeout:1e4})}}({appState:t,pluginState:o,mapProvider:r,useLocationButton:i}),function(){i.onClick=null}},[n.isMapReady]),null},reducer:{initialState:{errorMessage:null},actions:c},buttons:[{id:"useLocation",group:{name:"location",label:"Location",order:0},label:"Use your location",iconId:"locateFixed",hiddenWhen:function(){return!navigator.geolocation},mobile:p,tablet:p,desktop:p}],panels:[{id:"useLocation",label:"Problem getting your location",mobile:{slot:"banner",open:!1,dismissible:!0,modal:!0},tablet:{slot:"banner",open:!1,dismissible:!0,modal:!0},desktop:{slot:"banner",open:!1,dismissible:!0,modal:!0},render:function(e){var t=e.pluginState.errorMessage;return(0,s.jsx)("div",{className:"im-c-use-location",children:(0,s.jsx)("p",{children:t})})}}],icons:[{id:"locateFixed",svgContent:'<line x1="2" x2="5" y1="12" y2="12"/><line x1="19" x2="22" y1="12" y2="12"/><line x1="12" x2="12" y1="2" y2="5"/><line x1="12" x2="12" y1="19" y2="22"/><circle cx="12" cy="12" r="7"/><circle cx="12" cy="12" r="3"/>'}]}}}]);
@@ -18,7 +18,7 @@ export const manifest = {
18
18
 
19
19
  buttons: [{
20
20
  id: 'useLocation',
21
- group: 'location',
21
+ group: { name: 'location', label: 'Location', order: 0 },
22
22
  label: 'Use your location',
23
23
  iconId: 'locateFixed',
24
24
  hiddenWhen: () => !navigator.geolocation,
@@ -32,20 +32,20 @@ export const manifest = {
32
32
  label: 'Problem getting your location',
33
33
  mobile: {
34
34
  slot: 'banner',
35
- initiallyOpen: false,
36
- dismissable: true,
35
+ open: false,
36
+ dismissible: true,
37
37
  modal: true
38
38
  },
39
39
  tablet: {
40
40
  slot: 'banner',
41
- initiallyOpen: false,
42
- dismissable: true,
41
+ open: false,
42
+ dismissible: true,
43
43
  modal: true
44
44
  },
45
45
  desktop: {
46
46
  slot: 'banner',
47
- initiallyOpen: false,
48
- dismissable: true,
47
+ open: false,
48
+ dismissible: true,
49
49
  modal: true
50
50
  },
51
51
  render: UseLocation
@@ -1 +1 @@
1
- import{useCallback as e,useRef as t,useEffect as r,useMemo as n}from"preact/compat";import o from"@babel/runtime/helpers/defineProperty";function i(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function a(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!u(e[0])||!u(e[1]))throw new Error("coordinates must contain numbers");return i({type:"Point",coordinates:e},t,r)}function s(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return i({type:"LineString",coordinates:e},t,r)}function l(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function c(e,t,r={}){return i({type:"MultiLineString",coordinates:e},t,r)}function u(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}const p=11102230246251565e-32,d=134217729,f=(3+8*p)*p;function y(e,t,r,n,o){let i,a,s,l,c=t[0],u=n[0],p=0,d=0;u>c==u>-c?(i=c,c=t[++p]):(i=u,u=n[++d]);let f=0;if(p<e&&d<r)for(u>c==u>-c?(a=c+i,s=i-(a-c),c=t[++p]):(a=u+i,s=i-(a-u),u=n[++d]),i=a,0!==s&&(o[f++]=s);p<e&&d<r;)u>c==u>-c?(a=i+c,l=a-i,s=i-(a-l)+(c-l),c=t[++p]):(a=i+u,l=a-i,s=i-(a-l)+(u-l),u=n[++d]),i=a,0!==s&&(o[f++]=s);for(;p<e;)a=i+c,l=a-i,s=i-(a-l)+(c-l),c=t[++p],i=a,0!==s&&(o[f++]=s);for(;d<r;)a=i+u,l=a-i,s=i-(a-l)+(u-l),u=n[++d],i=a,0!==s&&(o[f++]=s);return 0===i&&0!==f||(o[f++]=i),f}function h(e){return new Float64Array(e)}const g=h(4),v=h(8),S=h(12),E=h(16),b=h(4);function m(e,t,r,n,o,i){const a=(t-i)*(r-o),s=(e-o)*(n-i),l=a-s,c=Math.abs(a+s);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let s,l,c,u,p,h,m,w,P,O,L,F,k,A,C,I,M,j;const D=e-o,T=r-o,x=t-i,B=n-i;A=D*B,h=d*D,m=h-(h-D),w=D-m,h=d*B,P=h-(h-B),O=B-P,C=w*O-(A-m*P-w*P-m*O),I=x*T,h=d*x,m=h-(h-x),w=x-m,h=d*T,P=h-(h-T),O=T-P,M=w*O-(I-m*P-w*P-m*O),L=C-M,p=C-L,g[0]=C-(L+p)+(p-M),F=A+L,p=F-A,k=A-(F-p)+(L-p),L=k-I,p=k-L,g[1]=k-(L+p)+(p-I),j=F+L,p=j-F,g[2]=F-(j-p)+(L-p),g[3]=j;let _=function(e,t){let r=t[0];for(let n=1;n<e;n++)r+=t[n];return r}(4,g),R=22204460492503146e-32*a;if(_>=R||-_>=R)return _;if(p=e-D,s=e-(D+p)+(p-o),p=r-T,c=r-(T+p)+(p-o),p=t-x,l=t-(x+p)+(p-i),p=n-B,u=n-(B+p)+(p-i),0===s&&0===l&&0===c&&0===u)return _;if(R=11093356479670487e-47*a+f*Math.abs(_),_+=D*u+B*s-(x*c+T*l),_>=R||-_>=R)return _;A=s*B,h=d*s,m=h-(h-s),w=s-m,h=d*B,P=h-(h-B),O=B-P,C=w*O-(A-m*P-w*P-m*O),I=l*T,h=d*l,m=h-(h-l),w=l-m,h=d*T,P=h-(h-T),O=T-P,M=w*O-(I-m*P-w*P-m*O),L=C-M,p=C-L,b[0]=C-(L+p)+(p-M),F=A+L,p=F-A,k=A-(F-p)+(L-p),L=k-I,p=k-L,b[1]=k-(L+p)+(p-I),j=F+L,p=j-F,b[2]=F-(j-p)+(L-p),b[3]=j;const U=y(4,g,4,b,v);A=D*u,h=d*D,m=h-(h-D),w=D-m,h=d*u,P=h-(h-u),O=u-P,C=w*O-(A-m*P-w*P-m*O),I=x*c,h=d*x,m=h-(h-x),w=x-m,h=d*c,P=h-(h-c),O=c-P,M=w*O-(I-m*P-w*P-m*O),L=C-M,p=C-L,b[0]=C-(L+p)+(p-M),F=A+L,p=F-A,k=A-(F-p)+(L-p),L=k-I,p=k-L,b[1]=k-(L+p)+(p-I),j=F+L,p=j-F,b[2]=F-(j-p)+(L-p),b[3]=j;const G=y(U,v,4,b,S);A=s*u,h=d*s,m=h-(h-s),w=s-m,h=d*u,P=h-(h-u),O=u-P,C=w*O-(A-m*P-w*P-m*O),I=l*c,h=d*l,m=h-(h-l),w=l-m,h=d*c,P=h-(h-c),O=c-P,M=w*O-(I-m*P-w*P-m*O),L=C-M,p=C-L,b[0]=C-(L+p)+(p-M),F=A+L,p=F-A,k=A-(F-p)+(L-p),L=k-I,p=k-L,b[1]=k-(L+p)+(p-I),j=F+L,p=j-F,b[2]=F-(j-p)+(L-p),b[3]=j;const N=y(G,S,4,b,E);return E[N-1]}(e,t,r,n,o,i,c)}function w(e,t){var r,n,o,i,a,s,l,c,u,p=0,d=e[0],f=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]-d,a=c[1]-f;n<g;n++){if(s=(u=h[n+1])[0]-d,l=u[1]-f,0===a&&0===l){if(s<=0&&i>=0||i<=0&&s>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=m(i,s,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&p++}c=u,a=l,i=s}}return p%2!=0}function P(e){return"Feature"===e.type?e.geometry:e}function O(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=P(t),i=o.type,a=t.bbox;let s=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&&(s=[s]);let l=!1;for(var c=0;c<s.length;++c){const e=w(n,s[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}class L{constructor(e=[],t=F){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 F(e,t){return e<t?-1:e>t?1:0}function k(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 A(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 C{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,M=0,j=0;function D(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;M+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const s=new C(o,I,M,j),l=new C(i,I,M,j+1);s.otherEvent=l,l.otherEvent=s,k(s,l)>0?(l.isLeftEndpoint=!0,s.isLeftEndpoint=!1):(s.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(s),t.push(l),o=i,j+=1}}I+=1}class T{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function x(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,s=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,u=(c-s)*(o-r)-(l-a)*(i-n),p=(l-a)*(n-s)-(c-s)*(r-a),d=(o-r)*(n-s)-(i-n)*(r-a);if(0===u)return!1;const f=p/u,y=d/u;if(f>=0&&f<=1&&y>=0&&y<=1){return[r+f*(o-r),n+f*(i-n)]}return!1}var B=function(e,t){const r=new L([],k);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)D(r[e],t)}else D(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new L([],A);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 s=x(e,a);!1!==s&&r.push(s)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)};function _(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:o=!0}=r;let s=[];"FeatureCollection"===e.type?s=s.concat(e.features):"Feature"===e.type?s.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||s.push(i(e)),"FeatureCollection"===t.type?s=s.concat(t.features):"Feature"===t.type?s.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||s.push(i(t));const c=B(l(s),o);let u=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,u.push(t))})}else u=c;return l(u.map(e=>a(e)))}function R(e,t){!function(e,t){var r,n,o,i,a,s,l,c,u,p,d=0,f="FeatureCollection"===e.type,y="Feature"===e.type,h=f?e.features.length:1;for(r=0;r<h;r++){for(s=f?e.features[r].geometry:y?e.geometry:e,c=f?e.features[r].properties:y?e.properties:{},u=f?e.features[r].bbox:y?e.bbox:void 0,p=f?e.features[r].id:y?e.id:void 0,a=(l=!!s&&"GeometryCollection"===s.type)?s.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?s.geometries[o]:s))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,d,c,u,p))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],d,c,u,p))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,d,c,u,p))return!1;d++}}(e,function(e,r,n,o,a){var s,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(i(e,n,{bbox:o,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon"}for(var c=0;c<e.coordinates.length;c++){var u=e.coordinates[c];if(!1===t(i({type:s,coordinates:u},n),r,c))return!1}})}function U(e,t={}){const r=P(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){const r=P(e),n=r.coordinates,o=t.properties?t.properties:"Feature"===e.type?e.properties:{};return G(n,o)}(r,t);case"MultiPolygon":return function(e,t={}){const r=P(e),n=r.coordinates,o=t.properties?t.properties:"Feature"===e.type?e.properties:{},i=[];return n.forEach(e=>{i.push(G(e,o))}),l(i)}(r,t);default:throw new Error("invalid poly")}}function G(e,t){return e.length>1?c(e,t):s(e[0],t)}function N(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(q(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function W(e,t,r){for(const r of t.coordinates)if(O(r,e))return!0;return _(t,U(e),{ignoreSelfIntersections:r}).features.length>0}function q(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])}var H=function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return R(e,e=>{R(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!N(t,e);case"Polygon":return!O(e,t)}break;case"LineString":switch(t.type){case"Point":return!N(e,t);case"LineString":return!function(e,t,r){const n=_(e,t,{ignoreSelfIntersections:r});if(n.features.length>0)return!0;return!1}(e,t,r);case"Polygon":return!W(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!O(t,e);case"LineString":return!W(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(O(r,t))return!0;for(const r of t.coordinates[0])if(O(r,e))return!0;const n=_(U(e),U(t),{ignoreSelfIntersections:r});if(n.features.length>0)return!0;return!1}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n};function J(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return i({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return i({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return s(t.coordinates);case"MultiLineString":return c(t.coordinates);case"Point":return a(t.coordinates);case"MultiPoint":return function(e,t,r={}){return i({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function K(e,t){return t.some(t=>!H(J(t),J(e)))}function V(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 z(e){if(e.length<2)return!1;if(e.some(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=[...t].map(t=>e[t]);K(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}var Q=n=>{var{mapState:o,pluginState:i,services:a,mapProvider:s}=n,{markers:l}=o,{dispatch:c,dataLayers:u,interactionMode:p,multiSelect:d,contiguous:f,markerColor:y,tolerance:h,selectedFeatures:g,selectionBounds:v,deselectOnClickOutside:S}=i,{eventBus:E}=a,b=(e=>{var t={};for(var r of e)t[r.layerId]=r;return t})(u),m=e(e=>{var{point:t,coords:r}=e,n=((e,t,r)=>{try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}})(s,t,{radius:h}),o=u.length>0;null!=i&&i.debug&&console.log("--- Features at ".concat(r," ---"),n);var a=o&&("select"===p||"auto"===p)?((e,t)=>{for(var r of e){var n,o=null===(n=r.layer)||void 0===n?void 0:n.id;if(t[o])return{feature:r,config:t[o]}}return null})(n,b):null;a?function(e){var t,r,{feature:n,config:o}=e;l.remove("location");var i=f&&K(n,g),a=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;if(!a)return;c({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:a,multiSelect:d,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:f&&!i}})}(a):"marker"===p||"auto"===p&&o?(c({type:"CLEAR_SELECTED_FEATURES"}),l.add("location",r,{color:y}),E.emit("interact:markerchange",{coords:r})):S&&c({type:"CLEAR_SELECTED_FEATURES"})},[s,u,p,d,E,c,l,f,g,b,null==i?void 0:i.debug,h,y,S]);return((e,n,o)=>{var i=t(null);r(()=>{if(!(n.length>0)||o){var t=i.current;(null===t||0===t.length)&&0===n.length||(e.emit("interact:selectionchange",{selectedFeatures:n,selectionBounds:o,canMerge:z(n),canSplit:V(n)}),i.current=n)}},[n,o])})(E,g,v),{handleInteraction:m}},X={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},Y=(e,t)=>{if(!e)return null;if("string"==typeof e)return e.trim();if("object"==typeof e){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null},Z=e=>{var{mapProvider:t,mapStyle:o,pluginState:i,selectedFeatures:a,dispatch:s,events:l,eventBus:c}=e,{dataLayers:u}=i,p=n(()=>o?((e,t)=>{var r={};return t?(e.forEach(e=>{var n=e.selectedStroke||X.selectedStroke,o=e.selectedFill||X.selectedFill,i=e.selectedStrokeWidth||X.selectedStrokeWidth;r[e.layerId]={stroke:Y(n,t.id),fill:Y(o,t.id),strokeWidth:i}}),r):r})(u,o):null,[u,o]),d=()=>{var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,a,p);s({type:"UPDATE_SELECTED_BOUNDS",payload:r})};r(()=>{if(t&&a&&p)return d(),c.on(l.MAP_DATA_CHANGE,d),()=>{c.off(l.MAP_DATA_CHANGE,d)}},[a,t,p])};function $(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 ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?$(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):$(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function te(e){var{appState:t,mapState:r,pluginState:n,buttonConfig:o,events:i,eventBus:a,handleInteraction:s,closeApp:l}=e,{selectDone:c,selectAtTarget:u,selectCancel:p}=o,{viewportRef:d}=t.layoutRefs,f=!1,y=e=>{f="Enter"===e.key&&d.current===e.target},h=e=>{"Enter"===e.key&&f&&(e.preventDefault(),E())},g=!1,v=setTimeout(()=>{g=!0},0),S=e=>{g&&s(e)},E=()=>s(r.crossHair.getDetail()),b=((e,t)=>(r,n)=>{e.markers.remove("location"),t.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:ee({multiSelect:t.multiSelect,addToExisting:n},r)})})(r,n),m=e=>b(e,!0),w=e=>b(e,!1);return document.addEventListener("keydown",y),document.addEventListener("keyup",h),a.on(i.MAP_CLICK,S),a.on("interact:selectFeature",m),a.on("interact:unselectFeature",w),u.onClick=E,c.onClick=()=>{var e,o=r.markers.getMarker("location"),{coords:i}=o||{},{selectionBounds:s,selectedFeatures:c}=n;t.disabledButtons.has("selectDone")||(a.emit("interact:done",ee(ee(ee({},i&&{coords:i}),!i&&c&&{selectedFeatures:c}),!i&&s&&{selectionBounds:s})),(null===(e=n.closeOnAction)||void 0===e||e)&&l())},p.onClick=()=>{var e;a.emit("interact:cancel"),(null===(e=n.closeOnAction)||void 0===e||e)&&l()},()=>{clearTimeout(v),c.onClick=null,u.onClick=null,p.onClick=null,document.removeEventListener("keydown",y),document.removeEventListener("keyup",h),a.off(i.MAP_CLICK,S),a.off("interact:selectFeature",m),a.off("interact:unselectFeature",w)}}function re(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ne(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?re(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):re(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var oe={ENABLE:(e,t)=>ne(ne(ne({},e),t),{},{enabled:!0}),DISABLE:e=>ne(ne({},e),{},{enabled:!1,selectedFeatures:[],selectionBounds:null}),TOGGLE_SELECTED_FEATURES:(e,t)=>{var{featureId:r,multiSelect:n,layerId:o,idProperty:i,addToExisting:a=!0,replaceAll:s=!1,properties:l,geometry:c}=t,u=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],p=u.findIndex(e=>e.featureId===r&&e.layerId===o);if(!1===a){var d=u.filter((e,t)=>t!==p);return ne(ne({},e),{},{selectedFeatures:d,selectionBounds:null})}var f,y={featureId:r,layerId:o,idProperty:i,properties:l,geometry:c};if(n&&!s){var h=[...u];-1===p?h.push(y):h.splice(p,1),f=h}else{f=-1!==p&&1===u.length?[]:[y]}return ne(ne({},e),{},{selectedFeatures:f,selectionBounds:null})},UPDATE_SELECTED_BOUNDS:(e,t)=>JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:ne(ne({},e),{},{selectionBounds:t}),CLEAR_SELECTED_FEATURES:e=>ne(ne({},e),{},{selectedFeatures:[],selectionBounds:null})};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){o(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}var se={InitComponent:e=>{var{appState:t,mapState:n,services:o,buttonConfig:i,mapProvider:a,pluginState:s}=e,{interfaceType:l}=t,{dispatch:c,enabled:u,selectedFeatures:p,selectionBounds:d}=s,{events:f,eventBus:y,closeApp:h}=o,{crossHair:g,mapStyle:v}=n,S=["touch","keyboard"].includes(l),{handleInteraction:E}=Q({mapState:n,pluginState:s,services:o,mapProvider:a});return Z({mapProvider:a,mapStyle:v,pluginState:s,selectedFeatures:p,dispatch:c,events:f,eventBus:y}),r(()=>{u&&S?g.fixAtCenter():g.hide()},[u,l]),r(()=>{if(s.enabled)return te({appState:t,pluginState:s,mapState:n,buttonConfig:i,events:f,eventBus:y,handleInteraction:E,closeApp:h})},[t,n,s,i,y,E]),null},reducer:{initialState:{enabled:!1,dataLayers:[],markerColor:null,interactionMode:null,multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectionBounds:null,closeOnAction:!0},actions:oe},buttons:[{id:"selectAtTarget",label:"Select",iconId:"select",variant:"touch",hiddenWhen:e=>{var{appState:t,pluginState:r}=e;return!r.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:e=>{var{appConfig:t,appState:r,pluginState:n}=e;return!n.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:e=>{var{appState:t,pluginState:r}=e;return!r.enabled||!t.isFullscreen},enableWhen:e=>{var{mapState:t,pluginState:r}=e;return!!t.markers.items.some(e=>"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:(e,t)=>{var{pluginState:r,pluginConfig:n}=e;r.dispatch({type:"ENABLE",payload:ae(ae(ae({},X),n),t)})},disable:e=>{var{pluginState:t}=e;t.dispatch({type:"DISABLE"})},clear:e=>{var{pluginState:t,mapState:r}=e;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:(e,t)=>{var{services:r}=e,{featureId:n,layerId:o,idProperty:i}=t;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:(e,t)=>{var{services:r}=e,{featureId:n,layerId:o,idProperty:i}=t;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})}}};export{se as manifest};
1
+ import{useCallback as e,useRef as t,useEffect as r,useMemo as n}from"preact/compat";import o from"@babel/runtime/helpers/defineProperty";function i(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function a(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!u(e[0])||!u(e[1]))throw new Error("coordinates must contain numbers");return i({type:"Point",coordinates:e},t,r)}function s(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return i({type:"LineString",coordinates:e},t,r)}function l(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function c(e,t,r={}){return i({type:"MultiLineString",coordinates:e},t,r)}function u(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}const p=11102230246251565e-32,d=134217729,f=(3+8*p)*p;function y(e,t,r,n,o){let i,a,s,l,c=t[0],u=n[0],p=0,d=0;u>c==u>-c?(i=c,c=t[++p]):(i=u,u=n[++d]);let f=0;if(p<e&&d<r)for(u>c==u>-c?(a=c+i,s=i-(a-c),c=t[++p]):(a=u+i,s=i-(a-u),u=n[++d]),i=a,0!==s&&(o[f++]=s);p<e&&d<r;)u>c==u>-c?(a=i+c,l=a-i,s=i-(a-l)+(c-l),c=t[++p]):(a=i+u,l=a-i,s=i-(a-l)+(u-l),u=n[++d]),i=a,0!==s&&(o[f++]=s);for(;p<e;)a=i+c,l=a-i,s=i-(a-l)+(c-l),c=t[++p],i=a,0!==s&&(o[f++]=s);for(;d<r;)a=i+u,l=a-i,s=i-(a-l)+(u-l),u=n[++d],i=a,0!==s&&(o[f++]=s);return 0===i&&0!==f||(o[f++]=i),f}function g(e){return new Float64Array(e)}const h=g(4),v=g(8),S=g(12),b=g(16),E=g(4);function m(e,t,r,n,o,i){const a=(t-i)*(r-o),s=(e-o)*(n-i),l=a-s,c=Math.abs(a+s);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let s,l,c,u,p,g,m,w,P,O,L,k,A,F,C,I,M,j;const D=e-o,T=r-o,x=t-i,B=n-i;F=D*B,g=d*D,m=g-(g-D),w=D-m,g=d*B,P=g-(g-B),O=B-P,C=w*O-(F-m*P-w*P-m*O),I=x*T,g=d*x,m=g-(g-x),w=x-m,g=d*T,P=g-(g-T),O=T-P,M=w*O-(I-m*P-w*P-m*O),L=C-M,p=C-L,h[0]=C-(L+p)+(p-M),k=F+L,p=k-F,A=F-(k-p)+(L-p),L=A-I,p=A-L,h[1]=A-(L+p)+(p-I),j=k+L,p=j-k,h[2]=k-(j-p)+(L-p),h[3]=j;let _=function(e,t){let r=t[0];for(let n=1;n<e;n++)r+=t[n];return r}(4,h),R=22204460492503146e-32*a;if(_>=R||-_>=R)return _;if(p=e-D,s=e-(D+p)+(p-o),p=r-T,c=r-(T+p)+(p-o),p=t-x,l=t-(x+p)+(p-i),p=n-B,u=n-(B+p)+(p-i),0===s&&0===l&&0===c&&0===u)return _;if(R=11093356479670487e-47*a+f*Math.abs(_),_+=D*u+B*s-(x*c+T*l),_>=R||-_>=R)return _;F=s*B,g=d*s,m=g-(g-s),w=s-m,g=d*B,P=g-(g-B),O=B-P,C=w*O-(F-m*P-w*P-m*O),I=l*T,g=d*l,m=g-(g-l),w=l-m,g=d*T,P=g-(g-T),O=T-P,M=w*O-(I-m*P-w*P-m*O),L=C-M,p=C-L,E[0]=C-(L+p)+(p-M),k=F+L,p=k-F,A=F-(k-p)+(L-p),L=A-I,p=A-L,E[1]=A-(L+p)+(p-I),j=k+L,p=j-k,E[2]=k-(j-p)+(L-p),E[3]=j;const U=y(4,h,4,E,v);F=D*u,g=d*D,m=g-(g-D),w=D-m,g=d*u,P=g-(g-u),O=u-P,C=w*O-(F-m*P-w*P-m*O),I=x*c,g=d*x,m=g-(g-x),w=x-m,g=d*c,P=g-(g-c),O=c-P,M=w*O-(I-m*P-w*P-m*O),L=C-M,p=C-L,E[0]=C-(L+p)+(p-M),k=F+L,p=k-F,A=F-(k-p)+(L-p),L=A-I,p=A-L,E[1]=A-(L+p)+(p-I),j=k+L,p=j-k,E[2]=k-(j-p)+(L-p),E[3]=j;const G=y(U,v,4,E,S);F=s*u,g=d*s,m=g-(g-s),w=s-m,g=d*u,P=g-(g-u),O=u-P,C=w*O-(F-m*P-w*P-m*O),I=l*c,g=d*l,m=g-(g-l),w=l-m,g=d*c,P=g-(g-c),O=c-P,M=w*O-(I-m*P-w*P-m*O),L=C-M,p=C-L,E[0]=C-(L+p)+(p-M),k=F+L,p=k-F,A=F-(k-p)+(L-p),L=A-I,p=A-L,E[1]=A-(L+p)+(p-I),j=k+L,p=j-k,E[2]=k-(j-p)+(L-p),E[3]=j;const N=y(G,S,4,E,b);return b[N-1]}(e,t,r,n,o,i,c)}function w(e,t){var r,n,o,i,a,s,l,c,u,p=0,d=e[0],f=e[1],y=t.length;for(r=0;r<y;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]-d,a=c[1]-f;n<h;n++){if(s=(u=g[n+1])[0]-d,l=u[1]-f,0===a&&0===l){if(s<=0&&i>=0||i<=0&&s>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=m(i,s,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&p++}c=u,a=l,i=s}}return p%2!=0}function P(e){return"Feature"===e.type?e.geometry:e}function O(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=P(t),i=o.type,a=t.bbox;let s=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&&(s=[s]);let l=!1;for(var c=0;c<s.length;++c){const e=w(n,s[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}class L{constructor(e=[],t=k){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 k(e,t){return e<t?-1:e>t?1:0}function A(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 F(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 C{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,M=0,j=0;function D(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;M+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const s=new C(o,I,M,j),l=new C(i,I,M,j+1);s.otherEvent=l,l.otherEvent=s,A(s,l)>0?(l.isLeftEndpoint=!0,s.isLeftEndpoint=!1):(s.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(s),t.push(l),o=i,j+=1}}I+=1}class T{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function x(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,s=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,u=(c-s)*(o-r)-(l-a)*(i-n),p=(l-a)*(n-s)-(c-s)*(r-a),d=(o-r)*(n-s)-(i-n)*(r-a);if(0===u)return!1;const f=p/u,y=d/u;if(f>=0&&f<=1&&y>=0&&y<=1){return[r+f*(o-r),n+f*(i-n)]}return!1}var B=function(e,t){const r=new L([],A);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)D(r[e],t)}else D(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new L([],F);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 s=x(e,a);!1!==s&&r.push(s)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)};function _(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:o=!0}=r;let s=[];"FeatureCollection"===e.type?s=s.concat(e.features):"Feature"===e.type?s.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||s.push(i(e)),"FeatureCollection"===t.type?s=s.concat(t.features):"Feature"===t.type?s.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||s.push(i(t));const c=B(l(s),o);let u=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,u.push(t))})}else u=c;return l(u.map(e=>a(e)))}function R(e,t){!function(e,t){var r,n,o,i,a,s,l,c,u,p,d=0,f="FeatureCollection"===e.type,y="Feature"===e.type,g=f?e.features.length:1;for(r=0;r<g;r++){for(s=f?e.features[r].geometry:y?e.geometry:e,c=f?e.features[r].properties:y?e.properties:{},u=f?e.features[r].bbox:y?e.bbox:void 0,p=f?e.features[r].id:y?e.id:void 0,a=(l=!!s&&"GeometryCollection"===s.type)?s.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?s.geometries[o]:s))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,d,c,u,p))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],d,c,u,p))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,d,c,u,p))return!1;d++}}(e,function(e,r,n,o,a){var s,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(i(e,n,{bbox:o,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon"}for(var c=0;c<e.coordinates.length;c++){var u=e.coordinates[c];if(!1===t(i({type:s,coordinates:u},n),r,c))return!1}})}function U(e,t={}){const r=P(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){const r=P(e),n=r.coordinates,o=t.properties?t.properties:"Feature"===e.type?e.properties:{};return G(n,o)}(r,t);case"MultiPolygon":return function(e,t={}){const r=P(e),n=r.coordinates,o=t.properties?t.properties:"Feature"===e.type?e.properties:{},i=[];return n.forEach(e=>{i.push(G(e,o))}),l(i)}(r,t);default:throw new Error("invalid poly")}}function G(e,t){return e.length>1?c(e,t):s(e[0],t)}function N(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(q(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function W(e,t,r){for(const r of t.coordinates)if(O(r,e))return!0;return _(t,U(e),{ignoreSelfIntersections:r}).features.length>0}function q(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])}var H=function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return R(e,e=>{R(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!N(t,e);case"Polygon":return!O(e,t)}break;case"LineString":switch(t.type){case"Point":return!N(e,t);case"LineString":return!function(e,t,r){const n=_(e,t,{ignoreSelfIntersections:r});if(n.features.length>0)return!0;return!1}(e,t,r);case"Polygon":return!W(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!O(t,e);case"LineString":return!W(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(O(r,t))return!0;for(const r of t.coordinates[0])if(O(r,e))return!0;const n=_(U(e),U(t),{ignoreSelfIntersections:r});if(n.features.length>0)return!0;return!1}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n};function J(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return i({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return i({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return s(t.coordinates);case"MultiLineString":return c(t.coordinates);case"Point":return a(t.coordinates);case"MultiPoint":return function(e,t,r={}){return i({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function K(e,t){return t.some(t=>!H(J(t),J(e)))}function V(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 z(e){if(e.length<2)return!1;if(e.some(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=[...t].map(t=>e[t]);K(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}var Q=n=>{var{mapState:o,pluginState:i,services:a,mapProvider:s}=n,{markers:l}=o,{dispatch:c,dataLayers:u,interactionMode:p,multiSelect:d,contiguous:f,markerColor:y,tolerance:g,selectedFeatures:h,selectionBounds:v,deselectOnClickOutside:S}=i,{eventBus:b}=a,E=(e=>{var t={};for(var r of e)t[r.layerId]=r;return t})(u),m=e(e=>{var{point:t,coords:r}=e,n=((e,t,r)=>{try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}})(s,t,{radius:g}),o=u.length>0;null!=i&&i.debug&&console.log("--- Features at ".concat(r," ---"),n);var a=o&&("select"===p||"auto"===p)?((e,t)=>{for(var r of e){var n,o=null===(n=r.layer)||void 0===n?void 0:n.id;if(t[o])return{feature:r,config:t[o]}}return null})(n,E):null;a?function(e){var t,r,{feature:n,config:o}=e;l.remove("location");var i=f&&K(n,h),a=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;if(!a)return;c({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:a,multiSelect:d,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:f&&!i}})}(a):"marker"===p||"auto"===p&&o?(c({type:"CLEAR_SELECTED_FEATURES"}),l.add("location",r,{color:y}),b.emit("interact:markerchange",{coords:r})):S&&c({type:"CLEAR_SELECTED_FEATURES"})},[s,u,p,d,b,c,l,f,h,E,null==i?void 0:i.debug,g,y,S]);return((e,n,o)=>{var i=t(null);r(()=>{if(!(n.length>0)||o){var t=i.current;(null===t||0===t.length)&&0===n.length||(e.emit("interact:selectionchange",{selectedFeatures:n,selectionBounds:o,canMerge:z(n),canSplit:V(n)}),i.current=n)}},[n,o])})(b,h,v),{handleInteraction:m}},X={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},Y=(e,t)=>{if(!e)return null;if("string"==typeof e)return e.trim();if("object"==typeof e){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null},Z=e=>{var{mapProvider:t,mapStyle:o,pluginState:i,selectedFeatures:a,dispatch:s,events:l,eventBus:c}=e,{dataLayers:u}=i,p=n(()=>o?((e,t)=>{var r={};return t?(e.forEach(e=>{var n=e.selectedStroke||X.selectedStroke,o=e.selectedFill||X.selectedFill,i=e.selectedStrokeWidth||X.selectedStrokeWidth;r[e.layerId]={stroke:Y(n,t.id),fill:Y(o,t.id),strokeWidth:i}}),r):r})(u,o):null,[u,o]),d=()=>{var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,a,p);s({type:"UPDATE_SELECTED_BOUNDS",payload:r})};r(()=>{if(t&&a&&p)return d(),c.on(l.MAP_DATA_CHANGE,d),()=>{c.off(l.MAP_DATA_CHANGE,d)}},[a,t,p])};function $(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 ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?$(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):$(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function te(e){var{getAppState:t,mapState:r,getPluginState:n,buttonConfig:o,events:i,eventBus:a,handleInteraction:s,clickReadyRef:l,closeApp:c}=e,{selectDone:u,selectAtTarget:p,selectCancel:d}=o,{viewportRef:f}=t().layoutRefs,y=!1,g=e=>{y="Enter"===e.key&&f.current===e.target},h=e=>{"Enter"===e.key&&y&&(e.preventDefault(),S())},v=e=>{l.current&&s(e)},S=()=>s(r.crossHair.getDetail()),b=((e,t)=>(r,n)=>{var o=t();e.markers.remove("location"),o.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:ee({multiSelect:o.multiSelect,addToExisting:n},r)})})(r,n),E=e=>b(e,!0),m=e=>b(e,!1);return document.addEventListener("keydown",g),document.addEventListener("keyup",h),a.on(i.MAP_CLICK,v),a.on("interact:selectFeature",E),a.on("interact:unselectFeature",m),p.onClick=S,u.onClick=()=>{var e,o=n(),i=r.markers.getMarker("location"),{coords:s}=i||{},{selectionBounds:l,selectedFeatures:u}=o;t().disabledButtons.has("selectDone")||(a.emit("interact:done",ee(ee(ee({},s&&{coords:s}),!s&&u&&{selectedFeatures:u}),!s&&l&&{selectionBounds:l})),(null===(e=o.closeOnAction)||void 0===e||e)&&c())},d.onClick=()=>{var e;a.emit("interact:cancel"),(null===(e=n().closeOnAction)||void 0===e||e)&&c()},()=>{u.onClick=null,p.onClick=null,d.onClick=null,document.removeEventListener("keydown",g),document.removeEventListener("keyup",h),a.off(i.MAP_CLICK,v),a.off("interact:selectFeature",E),a.off("interact:unselectFeature",m)}}function re(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ne(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?re(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):re(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var oe={ENABLE:(e,t)=>ne(ne(ne({},e),t),{},{enabled:!0}),DISABLE:e=>ne(ne({},e),{},{enabled:!1,selectedFeatures:[],selectionBounds:null}),TOGGLE_SELECTED_FEATURES:(e,t)=>{var{featureId:r,multiSelect:n,layerId:o,idProperty:i,addToExisting:a=!0,replaceAll:s=!1,properties:l,geometry:c}=t,u=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],p=u.findIndex(e=>e.featureId===r&&e.layerId===o);if(!1===a){var d=u.filter((e,t)=>t!==p);return ne(ne({},e),{},{selectedFeatures:d,selectionBounds:null})}var f,y={featureId:r,layerId:o,idProperty:i,properties:l,geometry:c};if(n&&!s){var g=[...u];-1===p?g.push(y):g.splice(p,1),f=g}else{f=-1!==p&&1===u.length?[]:[y]}return ne(ne({},e),{},{selectedFeatures:f,selectionBounds:null})},UPDATE_SELECTED_BOUNDS:(e,t)=>JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:ne(ne({},e),{},{selectionBounds:t}),CLEAR_SELECTED_FEATURES:e=>ne(ne({},e),{},{selectedFeatures:[],selectionBounds:null})};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){o(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}var se={InitComponent:e=>{var{appState:n,mapState:o,services:i,buttonConfig:a,mapProvider:s,pluginState:l}=e,{interfaceType:c}=n,{dispatch:u,enabled:p,selectedFeatures:d,selectionBounds:f}=l,{events:y,eventBus:g,closeApp:h}=i,{crossHair:v,mapStyle:S}=o,b=["touch","keyboard"].includes(c),{handleInteraction:E}=Q({mapState:o,pluginState:l,services:i,mapProvider:s}),m=t(E);m.current=E;var w=t(l);w.current=l;var P=t(n);P.current=n;var O=t(!1);return r(()=>{O.current=!1;var e=setTimeout(()=>{O.current=!0},0);return()=>clearTimeout(e)},[l.enabled]),Z({mapProvider:s,mapStyle:S,pluginState:l,selectedFeatures:d,dispatch:u,events:y,eventBus:g}),r(()=>{p&&b?v.fixAtCenter():v.hide()},[p,c]),r(()=>{if(l.enabled)return te({getAppState:()=>P.current,mapState:o,getPluginState:()=>w.current,buttonConfig:a,events:y,eventBus:g,handleInteraction:e=>m.current(e),clickReadyRef:O,closeApp:h})},[l.enabled,a,y,g,h]),null},reducer:{initialState:{enabled:!1,dataLayers:[],markerColor:null,interactionMode:null,multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectionBounds:null,closeOnAction:!0},actions:oe},buttons:[{id:"selectAtTarget",label:"Select",iconId:"select",variant:"touch",hiddenWhen:e=>{var{appState:t,pluginState:r}=e;return!r.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:e=>{var{appConfig:t,appState:r,pluginState:n}=e;return!n.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:e=>{var{appState:t,pluginState:r}=e;return!r.enabled||!t.isFullscreen},enableWhen:e=>{var{mapState:t,pluginState:r}=e;return!!t.markers.items.some(e=>"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:(e,t)=>{var{pluginState:r,pluginConfig:n}=e;r.dispatch({type:"ENABLE",payload:ae(ae(ae({},X),n),t)})},disable:e=>{var{pluginState:t}=e;t.dispatch({type:"DISABLE"})},clear:e=>{var{pluginState:t,mapState:r}=e;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:(e,t)=>{var{services:r}=e,{featureId:n,layerId:o,idProperty:i}=t;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:(e,t)=>{var{services:r}=e,{featureId:n,layerId:o,idProperty:i}=t;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})}}};export{se as manifest};
@@ -1 +1 @@
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})}}}}}]);
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(!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,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,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),M=L+O,y=M-L,g[2]=L-(M-y)+(O-y),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),R=22204460492503146e-32*a;if(_>=R||-_>=R)return _;if(y=e-T,u=e-(T+y)+(y-o),y=r-D,l=r-(D+y)+(y-o),y=t-x,c=t-(x+y)+(y-i),y=n-B,s=n-(B+y)+(y-i),0===u&&0===c&&0===l&&0===s)return _;if(R=11093356479670487e-47*a+p*Math.abs(_),_+=T*s+B*u-(x*l+D*c),_>=R||-_>=R)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=c*D,S=f*c,E=S-(S-c),w=c-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 U=d(4,g,4,m,h);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*l,S=f*x,E=S-(S-x),w=x-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),M=L+O,y=M-L,m[2]=L-(M-y)+(O-y),m[3]=M;const G=d(U,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),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,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 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),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 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,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 x(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++)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(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 B(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 _(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 R(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(R(e,n))}),u(o)}(r,t);default:throw new Error("invalid poly")}}function R(e,t){return e.length>1?c(e,t):a(e[0],t)}function U(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 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 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!U(t,e);case"Polygon":return!P(e,t)}break;case"LineString":switch(t.type){case"Point":return!U(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 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,S=(0,n.useRef)(m);S.current=m;var E=(0,n.useRef)(u);E.current=u;var w=(0,n.useRef)(t);w.current=t;var P=(0,n.useRef)(!1);return(0,n.useEffect)(function(){P.current=!1;var e=setTimeout(function(){P.current=!0},0);return function(){return clearTimeout(e)}},[u.enabled]),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.getAppState,r=e.mapState,n=e.getPluginState,o=e.buttonConfig,i=e.events,a=e.eventBus,u=e.handleInteraction,c=e.clickReadyRef,l=e.closeApp,s=o.selectDone,f=o.selectAtTarget,p=o.selectCancel,d=t().layoutRefs.viewportRef,y=!1,g=function(e){y="Enter"===e.key&&d.current===e.target},h=function(e){"Enter"===e.key&&y&&(e.preventDefault(),b())},v=function(e){c.current&&u(e)},b=function(){return u(r.crossHair.getDetail())},m=function(e,t){return function(r,n){var o=t();e.markers.remove("location"),o.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:te({multiSelect:o.multiSelect,addToExisting:n},r)})}}(r,n),S=function(e){return m(e,!0)},E=function(e){return m(e,!1)};return document.addEventListener("keydown",g),document.addEventListener("keyup",h),a.on(i.MAP_CLICK,v),a.on("interact:selectFeature",S),a.on("interact:unselectFeature",E),f.onClick=b,s.onClick=function(){var e,o=n(),i=(r.markers.getMarker("location")||{}).coords,u=o.selectionBounds,c=o.selectedFeatures;t().disabledButtons.has("selectDone")||(a.emit("interact:done",te(te(te({},i&&{coords:i}),!i&&c&&{selectedFeatures:c}),!i&&u&&{selectionBounds:u})),(null===(e=o.closeOnAction)||void 0===e||e)&&l())},p.onClick=function(){var e;a.emit("interact:cancel"),(null===(e=n().closeOnAction)||void 0===e||e)&&l()},function(){s.onClick=null,f.onClick=null,p.onClick=null,document.removeEventListener("keydown",g),document.removeEventListener("keyup",h),a.off(i.MAP_CLICK,v),a.off("interact:selectFeature",S),a.off("interact:unselectFeature",E)}}({getAppState:function(){return w.current},mapState:r,getPluginState:function(){return E.current},buttonConfig:i,events:d,eventBus:y,handleInteraction:function(e){return S.current(e)},clickReadyRef:P,closeApp:g})},[u.enabled,i,d,y,g]),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,4 +1,4 @@
1
- import { useEffect } from 'react'
1
+ import { useEffect, useRef } from 'react'
2
2
  import { useInteractionHandlers } from './hooks/useInteractionHandlers.js'
3
3
  import { useHighlightSync } from './hooks/useHighlightSync.js'
4
4
  import { attachEvents } from './events.js'
@@ -27,6 +27,27 @@ export const InteractInit = ({
27
27
  mapProvider,
28
28
  })
29
29
 
30
+ // Refs updated synchronously each render — keeps callbacks fresh without re-attaching events
31
+ const handleInteractionRef = useRef(handleInteraction)
32
+ handleInteractionRef.current = handleInteraction
33
+
34
+ const pluginStateRef = useRef(pluginState)
35
+ pluginStateRef.current = pluginState
36
+
37
+ const appStateRef = useRef(appState)
38
+ appStateRef.current = appState
39
+
40
+ // Defer click handling by one macrotask so any click that triggered the enable
41
+ // (e.g. finishing a draw gesture) fires before this handler is live.
42
+ // Managed separately from attachEvents so re-runs of that effect don't reset it —
43
+ // only resets when enabled actually changes.
44
+ const clickReadyRef = useRef(false)
45
+ useEffect(() => {
46
+ clickReadyRef.current = false
47
+ const timer = setTimeout(() => { clickReadyRef.current = true }, 0)
48
+ return () => clearTimeout(timer)
49
+ }, [pluginState.enabled])
50
+
30
51
  // Highlight features and sync state selectedBounds from mapProvider
31
52
  useHighlightSync({
32
53
  mapProvider,
@@ -54,18 +75,19 @@ export const InteractInit = ({
54
75
  }
55
76
 
56
77
  const cleanupEvents = attachEvents({
57
- appState,
58
- pluginState,
78
+ getAppState: () => appStateRef.current,
59
79
  mapState,
80
+ getPluginState: () => pluginStateRef.current,
60
81
  buttonConfig,
61
82
  events,
62
83
  eventBus,
63
- handleInteraction,
84
+ handleInteraction: (e) => handleInteractionRef.current(e),
85
+ clickReadyRef,
64
86
  closeApp
65
87
  })
66
-
88
+
67
89
  return cleanupEvents
68
- }, [appState, mapState, pluginState, buttonConfig, eventBus, handleInteraction])
90
+ }, [pluginState.enabled, buttonConfig, events, eventBus, closeApp])
69
91
 
70
92
 
71
93
  return null
@@ -1,4 +1,4 @@
1
- import { render } from '@testing-library/react'
1
+ import { act, render } from '@testing-library/react'
2
2
  import { InteractInit } from './InteractInit.jsx'
3
3
  import { useInteractionHandlers } from './hooks/useInteractionHandlers.js'
4
4
  import { useHighlightSync } from './hooks/useHighlightSync.js'
@@ -70,9 +70,9 @@ describe('InteractInit', () => {
70
70
  it('attaches events and returns cleanup', () => {
71
71
  const { unmount } = render(<InteractInit {...props} />)
72
72
  expect(attachEvents).toHaveBeenCalledWith(expect.objectContaining({
73
- handleInteraction: handleInteractionMock,
74
- appState: props.appState,
75
- pluginState: props.pluginState,
73
+ getAppState: expect.any(Function),
74
+ getPluginState: expect.any(Function),
75
+ handleInteraction: expect.any(Function),
76
76
  mapState: props.mapState,
77
77
  buttonConfig: props.buttonConfig,
78
78
  events: props.services.events,
@@ -80,11 +80,25 @@ describe('InteractInit', () => {
80
80
  closeApp: props.services.closeApp
81
81
  }))
82
82
 
83
- // simulate unmount
83
+ const { getAppState, getPluginState, handleInteraction } = attachEvents.mock.calls.at(-1)[0]
84
+ expect(getAppState()).toMatchObject(props.appState)
85
+ expect(getPluginState()).toMatchObject({ enabled: props.pluginState.enabled })
86
+
87
+ const event = { point: {}, coords: [] }
88
+ handleInteraction(event)
89
+ expect(handleInteractionMock).toHaveBeenCalledWith(event)
90
+
84
91
  unmount()
85
92
  expect(cleanupMock).toHaveBeenCalled()
86
93
  })
87
94
 
95
+ it('enables click handling after a macrotask', () => {
96
+ jest.useFakeTimers()
97
+ render(<InteractInit {...props} />)
98
+ act(() => jest.runAllTimers())
99
+ jest.useRealTimers()
100
+ })
101
+
88
102
  it('does not attach events if plugin not enabled', () => {
89
103
  const disabledProps = {
90
104
  ...props,