@defra/interactive-map 0.0.43-alpha → 0.0.44-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 (159) hide show
  1. package/dist/css/index.css +1 -1
  2. package/dist/esm/im-core.js +1 -1
  3. package/dist/esm/im-shell.js +1 -1
  4. package/dist/umd/im-core.js +1 -1
  5. package/dist/umd/index.js +1 -1
  6. package/docs/api.md +16 -8
  7. package/docs/plugins/draw.md +1 -1
  8. package/package.json +1 -1
  9. package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
  10. package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
  11. package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
  12. package/plugins/beta/draw-ol/dist/esm/im-draw-ol-plugin.js +1 -1
  13. package/plugins/beta/map-styles/dist/umd/im-map-styles-plugin.js +1 -1
  14. package/plugins/beta/map-styles/dist/umd/index.js +1 -1
  15. package/plugins/datasets/dist/css/index.css +1 -1
  16. package/plugins/datasets/dist/esm/im-datasets-plugin.js +1 -1
  17. package/plugins/datasets/dist/umd/im-datasets-plugin.js +1 -1
  18. package/plugins/datasets/src/components/LayersMenu/Layers.module.scss +1 -0
  19. package/plugins/datasets/src/initialise/DatasetsInit.jsx +2 -2
  20. package/plugins/datasets/src/initialise/DatasetsInit.test.jsx +6 -5
  21. package/plugins/draw/dist/esm/im-draw-ml-adapter.js +1 -1
  22. package/plugins/draw/dist/esm/im-draw-ol-adapter.js +1 -1
  23. package/plugins/draw/dist/esm/im-draw-plugin.js +1 -1
  24. package/plugins/draw/dist/esm/index.js +1 -1
  25. package/plugins/draw/dist/umd/im-draw-ml-adapter.js +1 -1
  26. package/plugins/draw/dist/umd/im-draw-ol-adapter.js +1 -1
  27. package/plugins/draw/dist/umd/im-draw-plugin.js +1 -1
  28. package/plugins/draw/dist/umd/index.js +1 -1
  29. package/plugins/draw/src/DrawInit.jsx +31 -26
  30. package/plugins/draw/src/DrawInit.test.jsx +55 -12
  31. package/plugins/draw/src/adapters/maplibre/MaplibreDrawAdapter.js +113 -114
  32. package/plugins/draw/src/adapters/maplibre/MaplibreDrawAdapter.test.js +82 -9
  33. package/plugins/draw/src/adapters/maplibre/drawEvents.js +3 -1
  34. package/plugins/draw/src/adapters/maplibre/modes/createDrawMode.test.js +1 -1
  35. package/plugins/draw/src/adapters/maplibre/modes/drawMode/__helpers__/harness.js +18 -9
  36. package/plugins/draw/src/adapters/maplibre/modes/drawMode/clickHandlers.js +9 -1
  37. package/plugins/draw/src/adapters/maplibre/modes/drawMode/clickHandlers.test.js +11 -1
  38. package/plugins/draw/src/adapters/maplibre/modes/drawMode/lifecycle.js +8 -2
  39. package/plugins/draw/src/adapters/maplibre/modes/drawMode/lifecycle.test.js +35 -0
  40. package/plugins/draw/src/adapters/maplibre/modes/drawMode/pointerHandlers.js +29 -19
  41. package/plugins/draw/src/adapters/maplibre/modes/drawMode/pointerHandlers.test.js +17 -2
  42. package/plugins/draw/src/adapters/maplibre/modes/drawMode/undoHandlers.test.js +1 -1
  43. package/plugins/draw/src/adapters/maplibre/modes/drawPointMode.js +35 -29
  44. package/plugins/draw/src/adapters/maplibre/modes/drawPointMode.test.js +24 -6
  45. package/plugins/draw/src/adapters/maplibre/modes/editPointMode/keyboardHandlers.js +22 -20
  46. package/plugins/draw/src/adapters/maplibre/modes/editPointMode/pointOperations.js +1 -1
  47. package/plugins/draw/src/adapters/maplibre/modes/editPointMode.js +2 -2
  48. package/plugins/draw/src/adapters/maplibre/modes/editPointMode.test.js +3 -3
  49. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/geometryHelpers.js +31 -0
  50. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/geometryHelpers.test.js +8 -1
  51. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/keyboardHandlers.js +38 -30
  52. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/keyboardHandlers.test.js +20 -3
  53. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/pointerHandlers.js +5 -5
  54. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/touchHandlers.js +2 -2
  55. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/touchHandlers.test.js +2 -2
  56. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/undoHandlers.js +3 -3
  57. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/undoHandlers.test.js +7 -7
  58. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexOperations.js +4 -4
  59. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexOperations.test.js +14 -14
  60. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexQueries.js +12 -32
  61. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexQueries.test.js +10 -10
  62. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode.js +48 -22
  63. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode.test.js +74 -6
  64. package/plugins/draw/src/adapters/maplibre/utils/snapMovement.js +2 -2
  65. package/plugins/draw/src/adapters/openlayers/OLDrawAdapter.js +6 -0
  66. package/plugins/draw/src/adapters/openlayers/OLDrawAdapter.test.js +9 -0
  67. package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.js +15 -2
  68. package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.test.js +27 -1
  69. package/plugins/draw/src/adapters/openlayers/draw/DrawMode.test.js +1 -1
  70. package/plugins/draw/src/adapters/openlayers/draw/drawInput.js +31 -17
  71. package/plugins/draw/src/adapters/openlayers/draw/drawInput.test.js +55 -1
  72. package/plugins/draw/src/adapters/openlayers/draw/vertexPlacement.js +13 -7
  73. package/plugins/draw/src/adapters/openlayers/draw/vertexPlacement.test.js +7 -15
  74. package/plugins/draw/src/adapters/openlayers/edit/EditMode.js +36 -4
  75. package/plugins/draw/src/adapters/openlayers/edit/EditMode.test.js +41 -1
  76. package/plugins/draw/src/adapters/openlayers/edit/keyboardHandler.js +35 -25
  77. package/plugins/draw/src/adapters/openlayers/edit/keyboardHandler.test.js +40 -2
  78. package/plugins/draw/src/adapters/openlayers/edit/nudge.js +2 -2
  79. package/plugins/draw/src/adapters/openlayers/edit/nudge.test.js +2 -2
  80. package/plugins/draw/src/adapters/openlayers/point/drawPointMode.js +32 -57
  81. package/plugins/draw/src/adapters/openlayers/point/drawPointMode.test.js +14 -13
  82. package/plugins/draw/src/adapters/openlayers/point/editPointMode.js +1 -1
  83. package/plugins/draw/src/adapters/openlayers/point/editPointMode.test.js +17 -1
  84. package/plugins/draw/src/events.js +4 -4
  85. package/plugins/draw/src/events.test.js +1 -1
  86. package/plugins/draw/src/hooks/useSpatialList.js +180 -0
  87. package/plugins/draw/src/hooks/useSpatialList.test.js +339 -0
  88. package/plugins/draw/src/utils/spatial.js +1 -31
  89. package/plugins/draw/src/utils/spatial.test.js +1 -24
  90. package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
  91. package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
  92. package/plugins/interact/dist/umd/index.js +1 -1
  93. package/plugins/interact/src/InteractInit.jsx +2 -2
  94. package/plugins/interact/src/InteractInit.test.js +3 -3
  95. package/plugins/interact/src/events.js +5 -0
  96. package/plugins/interact/src/hooks/useAttachEvents.js +20 -0
  97. package/plugins/interact/src/hooks/useAttachEvents.test.js +44 -1
  98. package/plugins/interact/src/hooks/useCrossHairVisibility.js +4 -4
  99. package/plugins/interact/src/hooks/useCrossHairVisibility.test.js +7 -7
  100. package/plugins/interact/src/hooks/{useMapItemList.js → useSpatialList.js} +87 -52
  101. package/plugins/interact/src/hooks/{useMapItemList.test.js → useSpatialList.test.js} +152 -71
  102. package/plugins/interact/src/manifest.js +12 -1
  103. package/plugins/interact/src/manifest.test.js +20 -0
  104. package/plugins/interact/src/utils/spatial.js +1 -1
  105. package/providers/beta/openlayers/src/utils/queryFeatures.js +1 -1
  106. package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
  107. package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
  108. package/providers/maplibre/dist/umd/index.js +1 -1
  109. package/providers/maplibre/src/utils/labels.js +2 -2
  110. package/providers/maplibre/src/utils/labels.test.js +5 -5
  111. package/providers/maplibre/src/utils/spatial.js +0 -57
  112. package/providers/maplibre/src/utils/spatial.test.js +0 -27
  113. package/src/App/components/CrossHair/CrossHair.jsx +10 -4
  114. package/src/App/components/CrossHair/CrossHair.module.scss +16 -12
  115. package/src/App/components/CrossHair/CrossHair.test.jsx +9 -4
  116. package/src/App/components/Hints/Hints.jsx +3 -3
  117. package/src/App/components/Hints/Hints.test.jsx +3 -3
  118. package/src/App/components/MapButton/MapButton.module.scss +1 -2
  119. package/src/App/components/{MoveControls/MoveControls.jsx → MapControls/MapControls.jsx} +10 -10
  120. package/src/App/components/{MoveControls/MoveControls.module.scss → MapControls/MapControls.module.scss} +25 -25
  121. package/src/App/components/{MoveControls/MoveControls.test.jsx → MapControls/MapControls.test.jsx} +48 -48
  122. package/src/App/components/Markers/Markers.jsx +2 -2
  123. package/src/App/components/Markers/Markers.test.jsx +3 -3
  124. package/src/App/components/Markers/SymbolMarker.test.jsx +2 -2
  125. package/src/App/components/Viewport/MapStatus.jsx +1 -1
  126. package/src/App/components/Viewport/SpatialList.jsx +47 -0
  127. package/src/App/components/Viewport/{Features.module.scss → SpatialList.module.scss} +3 -3
  128. package/src/App/components/Viewport/{Features.test.jsx → SpatialList.test.jsx} +60 -43
  129. package/src/App/components/Viewport/Viewport.jsx +20 -10
  130. package/src/App/components/Viewport/Viewport.test.jsx +18 -2
  131. package/src/App/hooks/useCrossHairAPI.js +5 -5
  132. package/src/App/hooks/useCrossHairAPI.test.js +5 -5
  133. package/src/App/hooks/useHintsAPI.js +5 -5
  134. package/src/App/hooks/useSpatialListFocus.js +296 -0
  135. package/src/App/hooks/{useFeatureFocus.test.js → useSpatialListFocus.test.js} +318 -163
  136. package/src/App/hooks/useSpatialListItems.js +51 -0
  137. package/src/App/hooks/useSpatialListItems.test.js +217 -0
  138. package/src/App/initialiseApp.js +6 -3
  139. package/src/App/initialiseApp.test.js +11 -0
  140. package/src/App/registry/spatialListRegistry.js +104 -0
  141. package/src/App/registry/spatialListRegistry.test.js +218 -0
  142. package/src/App/store/AppProvider.jsx +3 -2
  143. package/src/config/appConfig.js +14 -14
  144. package/src/config/appConfig.test.js +19 -19
  145. package/src/config/defaults.js +2 -2
  146. package/src/config/events.js +8 -8
  147. package/src/scss/main.scss +2 -2
  148. package/src/test-utils.js +8 -0
  149. package/src/types.js +11 -9
  150. package/src/utils/findNearestItemInDirection.js +29 -0
  151. package/src/utils/findNearestItemInDirection.test.js +67 -0
  152. package/src/utils/globalAltShortcuts.js +12 -0
  153. package/src/utils/globalAltShortcuts.test.js +27 -0
  154. package/src/utils/spatialNavigate.js +49 -0
  155. package/src/utils/spatialNavigate.test.js +42 -0
  156. package/src/App/components/Viewport/Features.jsx +0 -49
  157. package/src/App/hooks/useFeatureFocus.js +0 -257
  158. package/src/App/hooks/useFeatureItems.js +0 -39
  159. package/src/App/hooks/useFeatureItems.test.js +0 -155
@@ -1 +1 @@
1
- import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"ol/layer/Vector.js";import n from"ol/source/Vector.js";import o from"ol/format/GeoJSON.js";import{s as a,g as i,c as l,a as d,b as s,d as c,h as u,e as p,i as v,f as g,r as y}from"./im-draw-ml-adapter.js";import m from"ol/style/Style.js";import h from"ol/style/Fill.js";import x from"ol/style/Stroke.js";import f from"ol/style/Circle.js";import S from"ol/style/Icon.js";import I from"ol/geom/MultiPoint.js";import{S as T,T as w,A as P,M as C,a as V,x as b,K as _,s as E,v as L,t as k}from"./im-draw-plugin.js";import{transform as F}from"ol/proj.js";import O from"ol/layer/VectorTile.js";import D from"ol/Feature.js";import G from"ol/geom/Point.js";import{Style as A}from"ol/style.js";import j from"ol/interaction/Interaction.js";import M from"ol/interaction/Draw.js";import{noModifierKeys as R}from"ol/events/condition.js";import H from"ol/interaction/Modify.js";import N from"ol/Collection.js";import U from"@babel/runtime/helpers/objectWithoutProperties";import B from"ol/interaction/Pointer.js";import"preact/compat";var Y="EPSG:27700",z=new o({dataProjection:Y,featureProjection:Y}),q=()=>{var e=new n;return{source:e,getOL(t){var r;return null!==(r=e.getFeatureById(String(t)))&&void 0!==r?r:null},add(t){var r=this.getOL(t.id);r&&e.removeFeature(r);var n=z.readFeature(t);return e.addFeature(n),n},get(e){var t=this.getOL(e);return t?z.writeFeatureObject(t):null},remove(t){var r=Array.isArray(t)?t:[t];for(var n of r){var o=this.getOL(n);o&&e.removeFeature(o)}},clear(){e.clear()},toGeoJSON:e=>z.writeFeatureObject(e),fromGeoJSON:e=>z.readFeature(e)}},K={Polygon:2,LineString:1},X=e=>{var t,r=e.getType();return("Polygon"===r?null!==(t=e.getCoordinates()[0])&&void 0!==t?t:[]:e.getCoordinates()).slice(0,-K[r])},J=e=>{var t;return null!==(t=X(e).at(-1))&&void 0!==t?t:null},W=new Map,Z={outer:T.vertexHaloRadius+3,mid:T.vertexHaloRadius,inner:T.vertexRadius},Q={outer:T.midpointHaloRadius+3,mid:T.midpointHaloRadius,inner:T.midpointRadius},$=(e,t,r,n,o)=>{e.beginPath(),e.arc(t,r,n,0,2*Math.PI),e.fillStyle=o,e.fill()},ee=(e,t,r)=>{var{outer:n,mid:o,inner:a}=e;return(e,i)=>{var l=i.context,d=i.pixelRatio,[s,c]=e;l.save(),$(l,s,c,n*d,t.editActive),$(l,s,c,o*d,t.editHalo),$(l,s,c,a*d,t[r]),l.restore()}},te=e=>e.charAt(0).toUpperCase()+e.slice(1),re=e=>{var t=(e=>new m({image:new f({radius:T.vertexRadius+3,fill:new h({color:e.shapeFill}),stroke:new x({color:e.shapeStroke,width:2})})}))(e),r=new Map,n=function(e){var t=e[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"symbolImageId"],n=t&&(e=>W.get(e))(t);if(!n)return null;var o=a.getSymbolDef(e),[l,d]=i(e,o),s=e.symbolPixelRatio||1,c="".concat(t,"|").concat(l,"|").concat(d,"|").concat(s),u=r.get(c);return u||(u=new m({image:new S({img:n,anchor:[l,d],scale:1/s})}),r.set(c,u)),u};return{pointStyleFor:e=>{var r;return null!==(r=n(e.getProperties()))&&void 0!==r?r:t},selectedPointStyleFor:e=>{var r,o,a=e.getProperties();return null!==(r=null!==(o=n(a,"symbolSelectedImageId"))&&void 0!==o?o:n(a))&&void 0!==r?r:t}}},ne=e=>{var{vertexImage:t,vertexStyle:r,selectedVertexStyle:n}=(e=>{var t=new f({radius:T.vertexRadius,fill:new h({color:e.editVertex})});return{vertexImage:t,vertexStyle:new m({image:t}),selectedVertexStyle:new m({renderer:ee(Z,e,"editVertex")})}})(e),{midpointStyle:o,selectedMidpointStyle:a}=(e=>({midpointStyle:new m({image:new f({radius:T.midpointRadius,fill:new h({color:e.editMidpoint})})}),selectedMidpointStyle:new m({renderer:ee(Q,e,"editMidpoint")})}))(e),i=new m({stroke:new x({color:e.editStroke,width:2}),fill:new h({color:e.editFill})}),l=new m({stroke:new x({color:e.invalidStroke,width:2,lineDash:[2,4]})}),d=(e=>({valid:new m({stroke:new x({color:e.editStroke,width:2}),fill:new h({color:e.editFill})}),invalid:new m({stroke:new x({color:e.invalidStroke,width:2,lineDash:[2,4]})}),splitValid:new m({stroke:new x({color:e.splitValid,width:2})}),splitInvalid:new m({stroke:new x({color:e.splitInvalid,width:2,lineDash:[2,4]})})}))(e),s=new I([]),c=new m({image:t,geometry:e=>{var t=X(e.getGeometry());return t.length?(s.setCoordinates(t),s):null}}),{pointStyleFor:u,selectedPointStyleFor:p}=re(e);return{vertexStyle:r,selectedVertexStyle:n,midpointStyle:o,selectedMidpointStyle:a,editFeatureStyle:i,editFeatureStyleInvalid:l,selectedPointStyleFor:p,createSketchStyle:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r=>{var n=r.getGeometry().getType();if("Point"===n)return[];var o=r.get("splitter"),a=t?d.invalid:d.valid;return"valid"===o&&(a=d.splitValid),"invalid"===o&&(a=d.splitInvalid),n===e?[a,c]:[a]}},createFeatureStyle:()=>t=>{if("Point"===t.getGeometry().getType())return[u(t)];var r=t.getProperties(),n=e.mapStyleId,o=n&&r["stroke".concat(te(n))]||r.stroke||e.shapeStroke,a=n&&r["fill".concat(te(n))]||r.fill||e.shapeFill,i=r.strokeWidth||e.strokeWidth;return[new m({stroke:new x({color:o,width:i}),fill:new h({color:a})})]}}},oe=(e,t)=>{var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n},ae=(e,t,r)=>{var n=r[0]-t[0],o=r[1]-t[1],a=n*n+o*o;if(0===a)return[t[0],t[1]];var i=Math.max(0,Math.min(1,((e[0]-t[0])*n+(e[1]-t[1])*o)/a));return[t[0]+i*n,t[1]+i*o]},ie=(e,t)=>le(e,t)?t:e,le=(e,t)=>e?!!t&&("edge"===e.type&&"vertex"===t.type||("vertex"!==e.type||"edge"!==t.type)&&t.distSq<e.distSq):!!t,de=(e,t,r,n)=>{for(var o=null,a=n&&e.length>1?e.length-1:e.length,i=n?a:a-1,l=0;l<a;l++){var d=e[l],s=oe(t,d);s<=r&&(o=ie(o,{type:"vertex",coord:[d[0],d[1]],distSq:s}))}for(var c=0;c<i;c++){var u=e[c],p=e[(c+1)%a],v=ae(t,u,p),g=oe(t,v);g<=r&&(o=ie(o,{type:"edge",coord:v,distSq:g}))}return o},se=(e,t,r,n,o,a)=>{for(var i=null,l=0;l<n;l++){var d=t+2*l,s=t+(l+1)%r*2,c=[e[d],e[d+1]],u=[e[s],e[s+1]],p=ae(o,c,u),v=oe(o,p);v<=a&&(i=ie(i,{type:"edge",coord:p,distSq:v,seg:[c,u]}))}return i},ce=(e,t,r)=>[e>0||r?e>0?e-1:t-1:null,e<t-1||r?e<t-1?e+1:0:null],ue=(e,t,r,n,o,a)=>{for(var i=n===r,l=r=>null===r?null:[e[t+2*r],e[t+2*r+1]],d=null,s=0;s<r;s++){var c=l(s),u=oe(o,c);if(u<=a){var[p,v]=ce(s,r,i),g=[l(p),l(v)];d=ie(d,{type:"vertex",coord:c,distSq:u,adjacent:g})}}return d},pe=(e,t,r,n,o,a)=>{var i=(r-t)/2,l=a?i:i-1;return{vertex:ue(e,t,i,l,n,o),edge:se(e,t,i,l,n,o)}},ve={point:(e,t,r)=>{var n=e.getCoordinates(),o=oe(t,n);return o<=r?{type:"vertex",coord:[n[0],n[1]],distSq:o}:null},lineString:(e,t,r)=>de(e.getCoordinates(),t,r,!1),linearRing:(e,t,r)=>de(e.getCoordinates(),t,r,!0),polygon:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())n=ie(n,de(o,t,r,!0));return n},multiLineString:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())n=ie(n,de(o,t,r,!1));return n},multiPolygon:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())for(var a of o)n=ie(n,de(a,t,r,!0));return n}},ge=(e,t,r)=>{var n=e.getGeometry();if(!n)return null;var o=n.getType(),a=ve[o[0].toLowerCase()+o.slice(1)];return a?a(n,t,r):null};function ye(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function me(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?ye(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var he=(e,t,r)=>{if(!t||!r)return!1;var[n,o,a,i]=e.extent,l=(t,r,n)=>Math.min(Math.abs(t-r),Math.abs(t-n))<=e.band,d=Math.abs(t[0]-r[0])<=e.eps&&l(t[0],n,a),s=Math.abs(t[1]-r[1])<=e.eps&&l(t[1],o,i);return d||s},xe=(e,t)=>{var r,n=((e,t)=>{if(!e)return null;var{tileGrid:r,viewProj:n,sourceProj:o,zoom:a}=e,i=e=>e?F(e,n,o):null,l=i(t),d=r.getTileCoordForCoordAndZ(l,a),s=r.getTileCoordExtent(d),c=s[2]-s[0];return{toSource:i,anchor:l,extent:s,band:.0625*c,eps:c/4096*2}})(e,t.coord);if(!n)return!1;if("edge"===t.type){var[o,a]=t.seg;return he(n,n.toSource(o),n.toSource(a))}var[i,l]=null!==(r=t.adjacent)&&void 0!==r?r:[];return he(n,n.anchor,n.toSource(i))||he(n,n.anchor,n.toSource(l))},fe=()=>!0===globalThis.DEBUG_SNAP_VISIBILITY,Se=(e,t)=>{fe()&&console.log("[snap-candidate-found]",{type:e.type,layerId:null==t?void 0:t.id,layerType:null==t?void 0:t.type,coord:[e.coord[0].toFixed(2),e.coord[1].toFixed(2)],distSq:e.distSq.toFixed(2)})},Ie=e=>{var{candidate:t,cursorCoord:r,mapboxLayer:n,boundaryState:o,map:a,vtLayers:i,resolution:l}=e;return xe(o,t)?(fe()&&console.log("[snap-filtered] tile clip artefact",t.type),!0):!("edge"!==t.type||"fill"!==(null==n?void 0:n.type)||!((e,t,r,n,o,a)=>{var i=e[0]-t[0],l=e[1]-t[1],d=i*i+l*l;if(d<1)return!1;var s=Math.sqrt(d),c=4*a,u=[e[0]+i/s*c,e[1]+l/s*c],p=n.getPixelFromCoordinate(u);return!!p&&!!n.forEachFeatureAtPixel(p,e=>{var t;return(null===(t=e.get("mapbox-layer"))||void 0===t?void 0:t.id)===r},{hitTolerance:2,layerFilter:e=>o.includes(e)})})(t.coord,r,n.id,a,i,l))&&(fe()&&console.log("[snap-filtered] invisible fill boundary"),!0)},Te=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=new Set,o=[],a=e=>{for(var t of(n=new Set,o=[],null!=e?e:[]))"string"==typeof t?n.add(t):t instanceof r&&o.push(t)};a(t);return{query:(t,r)=>{fe()&&console.log("[snap-query]",{coord:[t[0].toFixed(2),t[1].toFixed(2)],radiusPx:r,vtLayerCount:n.size,olLayerCount:o.length});var a=e.getView().getResolution();if(!a)return null;var i=r*a,l=i*i,d=[t[0]-i,t[1]-i,t[0]+i,t[1]+i],s=null;for(var c of o){var u=c.getSource();if(u)for(var p of u.getFeaturesInExtent(d))s=ie(s,ge(p,t,l))}if(n.size>0){var v=(e=>{var t=[];return e.getLayers().forEach(e=>{e instanceof O&&t.push(e)}),t})(e),g=v.length>0?e.getPixelFromCoordinate(t):null;if(g){var y=new Map;e.forEachFeatureAtPixel(g,(r,o)=>{var i=r.get("mapbox-layer");if(n.has(null==i?void 0:i.id)){var d=((e,t,r)=>{var n=e.getType(),o=e.getFlatCoordinates(),a=null,i=null;if("Point"===n){var l=oe(t,o);l<=r&&(a={type:"vertex",coord:[o[0],o[1]],distSq:l})}else if("LineString"===n)({vertex:a,edge:i}=pe(o,0,o.length,t,r,!1));else if("Polygon"===n||"MultiLineString"===n){var d=e.getEnds(),s=0,c="Polygon"===n;for(var u of d){var p=pe(o,s,u,t,r,c);a=ie(a,p.vertex),i=ie(i,p.edge),s=u}}return[a,i].filter(Boolean)})(r,t,l);if(d.length){y.has(o)||y.set(o,((e,t)=>{var r,n=e.getSource(),o=null==n?void 0:n.getTileGrid();if(!o)return null;var a=t.getView().getProjection(),i=null!==(r=n.getProjection())&&void 0!==r?r:a,l=o.getZForResolution(t.getView().getResolution(),0);return{tileGrid:o,viewProj:a,sourceProj:i,zoom:l}})(o,e));var c=y.get(o);s=((e,t,r)=>{var n=e;for(var o of t)Se(o,r.mapboxLayer),Ie(me({candidate:o},r))||(n=ie(n,o));return n})(s,d,{cursorCoord:t,mapboxLayer:i,boundaryState:c,map:e,vtLayers:v,resolution:a})}}},{hitTolerance:r,layerFilter:e=>v.includes(e)})}}return s?{type:s.type,coord:s.coord}:null},setLayers:a}},we=e=>(t,r)=>{var n=r.context,[o,a]=t;n.beginPath(),n.arc(o,a,10*r.pixelRatio,0,2*Math.PI),n.fillStyle=e,n.fill()},Pe=e=>({vertex:new A({renderer:we(e.snapVertex)}),edge:new A({renderer:we(e.snapEdge)})}),Ce=new Set(["pointermove","pointerdrag","pointerdown","pointerup","singleclick","click"]),Ve=new Set(["pointermove","pointerdrag"]),be=(e,t,r,n)=>{var o=new j({handleEvent:a=>(o.getActive()&&((e,t,r,n,o)=>{var{type:a}=e;if("pointerout"!==a&&"pointerleave"!==a){if(Ce.has(a)){var i=t.query(e.coordinate,n);i&&(e.coordinate=i.coord.slice()),Ve.has(a)&&o()&&(i?r.show(i.coord,i.type):r.hide())}}else r.hide()})(a,e,t,r,n),!0)});return o},_e=(e,t,o,a)=>{if(null==t||!t.length)return null;var i=Te(e,t),l=((e,t)=>{var o=Pe(t),a=new n,i=new r({source:a,style:e=>{var t;return null!==(t=o[e.get("snapType")])&&void 0!==t?t:null},zIndex:99,updateWhileAnimating:!0,updateWhileInteracting:!0});e.addLayer(i);var l=new D,d=!1;return{show(e,t){l.setGeometry(new G(e)),l.set("snapType",t,!0),d?a.changed():(a.addFeature(l),d=!0)},hide(){d&&(a.clear(),d=!1)},updateColors(e){o=Pe(e),d&&a.changed()},remove(){a.clear(),e.removeLayer(i)}}})(e,o),d=!1,s=be(i,l,a,()=>d);e.addInteraction(s),s.setActive(!1);var c=!1;return{snapRadius:a,apply(e){if(!c)return e;var t=i.query(e,a);return t?(l.show(t.coord,t.type),t.coord):(l.hide(),e)},hideIndicator(){l.hide()},setIndicatorActive(e){d=e,e||l.hide()},setActive(e){c=e,s.setActive(e),e||l.hide()},setSnapLayers(e){i.setLayers(null==e?t:e)},reattach(){e.removeInteraction(s),e.addInteraction(s)},updateColors(e){l.updateColors(e)},destroy(){e.removeInteraction(s),l.remove()}}},Ee=(e,t)=>{var r=e.getPixelFromCoordinate(t);return r?{x:r[0],y:r[1]}:null},Le=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y),ke=(e,t,r,n)=>{var o=e.getPixelFromCoordinate(t);return o?e.getCoordinateFromPixel([o[0]+r,o[1]+n]):t},Fe=4,Oe=e=>{var{drawInteraction:t,canFinish:r,geom:n,sketchCoords:o,coord:a,lastPlacedCoord:i}=e;if(i&&i[0]===a[0]&&i[1]===a[1])return null!=r&&r()&&t.finishDrawing(),{handled:!0,lastPlacedCoord:null};var l=t.getMap();if(((e,t,r,n)=>{if("Polygon"!==n||r.length<Fe)return!1;var o=Ee(e,t),a=Ee(e,r[0]);return!(!o||!a)&&Le(o,a)<12})(l,a,o,n.getType()))return t.finishDrawing(),{handled:!0,lastPlacedCoord:i};var d=J(n);if(d){var s=l.getPixelFromCoordinate(d),c=l.getPixelFromCoordinate(a);if(s&&c){var u=s[0]-c[0],p=s[1]-c[1];if(u*u+p*p<4)return{handled:!0,lastPlacedCoord:a}}}return{handled:!1,lastPlacedCoord:i}},De=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),Ge=(e,t)=>{e&&(["touch","keyboard"].includes(t)?e.fixAtCenter():e.hide())},Ae=e=>{var{container:t,addVertexButtonId:r,olView:n,onUndo:o,getInterfaceType:a,setInterfaceType:i,clearLastCoord:l,updateRubberbanding:d,placeVertex:s}=e,c=()=>{"mouse"!==a()&&d()};null==n||n.on("change:center",c);var u=e=>{t.contains(document.activeElement)&&(De.has(e.key)?i("keyboard"):("Enter"===e.key&&(e.preventDefault(),i("keyboard"),s()),"z"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),null==o||o())))},p=e=>{r&&e.target.closest("#".concat(r))&&s()},v=e=>{"touch"!==e.pointerType&&(i("mouse"),l())},g=()=>{i("touch")},y=()=>{"mouse"!==a()&&d()};return globalThis.addEventListener("keydown",u),globalThis.addEventListener("click",p),t.addEventListener("pointerdown",v),t.addEventListener("touchstart",g,{passive:!0}),t.addEventListener("pointermove",y),{destroy(){null==n||n.un("change:center",c),globalThis.removeEventListener("keydown",u),globalThis.removeEventListener("click",p),t.removeEventListener("pointerdown",v),t.removeEventListener("touchstart",g),t.removeEventListener("pointermove",y)}}},je=e=>{var t,{drawInteraction:r,options:n}=e,{container:o,addVertexButtonId:a,mapProvider:i,snap:l,onUndo:d,canFinish:s,canPlace:c,crossHair:u}=n,p=null!==(t=n.interfaceType)&&void 0!==t?t:"mouse",v=()=>p,g=(e=>{var{drawInteraction:t,mapProvider:r,snap:n,canFinish:o,canPlace:a,getInterfaceType:i}=e,l=null,d=null,s=function(){l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,d=null};t.on("drawstart",e=>s(e.feature)),t.on("drawend",()=>s()),t.on("drawabort",()=>s());var c=()=>{var e=r.getCenter();return"mouse"!==i()&&n?n.apply(e):e};return{placeVertex:()=>{var e=c();if(null==n||n.hideIndicator(),l){var r=l.getGeometry(),i=r.getCoordinates(),s="Polygon"===r.getType()?i[0]||[]:i,u=Oe({drawInteraction:t,canFinish:o,geom:r,sketchCoords:s,coord:e,lastPlacedCoord:d});if(d=u.lastPlacedCoord,u.handled)return}a&&!a(e)||(t.appendCoordinates([e]),d=e)},updateRubberbanding:()=>{if(l){var e=l.getGeometry();e.getCoordinates().length&&((e,t)=>{if("LineString"===e.getType()){var r=[...e.getCoordinates()];r[r.length-1]=t,e.setCoordinates(r)}else if("Polygon"===e.getType()){var n=e.getCoordinates().map((e,r)=>{if(0!==r)return e;var n=[...e];return n[n.length-1]=t,n});e.setCoordinates(n)}})(e,c())}else"mouse"!==i()&&n&&n.apply(r.getCenter())},clearLastCoord(){d=null}}})({drawInteraction:r,mapProvider:i,snap:l,canFinish:s,canPlace:c,getInterfaceType:v}),y=r.getMap(),m=null==y?void 0:y.getView(),h=Ae({container:o,addVertexButtonId:a,olView:m,onUndo:d,getInterfaceType:v,setInterfaceType:e=>{p=e,Ge(u,e)},clearLastCoord:g.clearLastCoord,updateRubberbanding:g.updateRubberbanding,placeVertex:g.placeVertex});Ge(u,p),u&&(u.activate=g.placeVertex);var x=()=>{"mouse"!==p&&null!=m&&m.getAnimating()&&g.updateRubberbanding()};return null==y||y.on("postrender",x),{getInterfaceType:v,setInterfaceType(e){p=e,Ge(u,e),"mouse"!==e&&g.updateRubberbanding()},destroy(){(null==u?void 0:u.activate)===g.placeVertex&&(u.activate=null),h.destroy(),null==y||y.un("postrender",x)}}},Me="styleschanged",Re=(e,t)=>!!t&&X(t.getGeometry()).length>=C[e],He=(e,t,r,n)=>o=>{if(!R(o))return!1;var a=r();if(!n(o.coordinate))return!1;if(!a||Re(t,a))return!0;var i=J(a.getGeometry());if(!i)return!0;var l=e.getPixelFromCoordinate(i);if(!l)return!0;var d=o.pixel[0]-l[0],s=o.pixel[1]-l[1];return d*d+s*s>4},Ne={Polygon:2,LineString:1},Ue=(e,t)=>{var{manager:r,featureId:n,properties:o,onStart:a,onSketchChange:i}=t;e.on("drawstart",e=>{a(e.feature),e.feature.getGeometry().on("change",i)}),e.on("drawend",e=>((e,t,r,n)=>{t.setId(String(r)),t.setProperties(n),e.store.source.addFeature(t),e.emit(P.CREATE,e.store.toGeoJSON(t))})(r,e.feature,n,o)),e.on("drawabort",()=>{r.emit(P.CANCEL)})},Be=e=>{var{map:t,manager:r,options:n}=e,{geometryType:o,featureId:a,properties:i={}}=n,s=null,c=!1,u=r.styles.createSketchStyle(o),{updateVertexCount:p,resetCount:v,emitUndoValidation:g}=((e,t)=>{var r=0,n=(r,n)=>{setTimeout(()=>{var o,a,i,l,d,s,c=t();c&&e.emit(P.GEOMETRY_CHANGE,{feature:(o=e.store,a=c,i=o.toGeoJSON(a),l=i.geometry.type,d=Ne[l],s=("Polygon"===l?i.geometry.coordinates[0]:i.geometry.coordinates).slice(0,-d),{type:"Feature",geometry:"Polygon"===l?{type:"Polygon",coordinates:[s]}:{type:"LineString",coordinates:s},properties:i.properties}),phase:r,vertexIndex:n})},0)};return{resetCount:()=>{r=0},updateVertexCount:()=>{var o=t();if(o){var a=X(o.getGeometry()).length;e.emit(P.VERTEX_CHANGE,{numVertices:a}),a>r&&n("commit-add",a-1),r=a}},emitUndoValidation:()=>{var e=t();e&&n("commit-delete",X(e.getGeometry()).length)}}})(r,()=>s),y=(e=>{var{manager:t,geometryType:r,getSketch:n}=e;return e=>{var o=n(),a=V({placed:o?X(o.getGeometry()):[],point:e,geometryType:r,onGeometryChange:t._geometryValidator});return a.valid||t.emit(P.PLACEMENT_BLOCKED,a.blocked),a.valid}})({manager:r,geometryType:o,getSketch:()=>s}),m=new M({type:o,style:e=>u(e),stopClick:!0,snapTolerance:w.snapRadius,condition:He(t,o,()=>s,y),finishCondition:()=>!1!==r._geometryValid});t.addInteraction(m);var h=l({onChange:e=>{c=e,u=r.styles.createSketchStyle(o,c),m.overlay_.changed()}}),x=d({onStrokeChange:(e,t)=>h.set(e,t),onPlaceChange:(e,t)=>r.emit(P.CAN_PLACE_CHANGE,{canPlace:!e,reason:t})}),f=b[o],S=()=>{if(s){var{feature:e,numVertices:t}=((e,t)=>{var r,n=t.getGeometry(),o=n.getCoordinates(),a="Polygon"===e?null!==(r=o[0])&&void 0!==r?r:[]:o;return{feature:{type:"Feature",geometry:"Polygon"===e?{type:"Polygon",coordinates:[a]}:{type:"LineString",coordinates:a}},numVertices:X(n).length}})(o,s);x.update({feature:e,context:{mode:f},numVertices:t,onGeometryChange:r._geometryValidator})}},I=()=>{u=r.styles.createSketchStyle(o,c),m.overlay_.changed()};r.on(Me,I),m.overlay_.updateWhileAnimating_=!0,Ue(m,{manager:r,featureId:a,properties:i,onStart:e=>{s=e,v()},onSketchChange:()=>{p(),S()}});var T=(e=>{var{drawInteraction:t,options:r,geometryType:n,getSketch:o,updateVertexCount:a,emitUndoValidation:i,canPlaceVertex:l}=e;return je({drawInteraction:t,options:{container:r.container,interfaceType:r.interfaceType,addVertexButtonId:r.addVertexButtonId,mapProvider:r.mapProvider,snap:r.snap,crossHair:r.crossHair,onUndo:()=>{t.removeLastPoint(),a(),i()},canFinish:()=>Re(n,o()),canPlace:l}})})({drawInteraction:m,options:n,geometryType:o,getSketch:()=>s,updateVertexCount:p,emitUndoValidation:g,canPlaceVertex:y});return(e=>{var{map:t,manager:r,drawInteraction:n,input:o,geometryType:a,getSketch:i,updateVertexCount:l,emitUndoValidation:d,onStylesChanged:s,clearSketch:c,setInvalid:u,liveStroke:p,liveDrawChecks:v}=e;return{done(){Re(a,i())&&n.finishDrawing()},cancel(){n.abortDrawing()},undo(){n.removeLastPoint(),l(),d()},setInvalid:u,setInterfaceType(e){o.setInterfaceType(e)},setDrawingPreviewProperty(e,t){var r=i();r&&(r.set(e,t),n.overlay_.changed())},destroy(){p.destroy(),v.destroy(),r.off(Me,s),r.emit(P.INTERFACE_TYPE_CHANGE,{interfaceType:o.getInterfaceType()}),o.destroy(),t.removeInteraction(n),c()}}})({map:t,manager:r,drawInteraction:m,input:T,geometryType:o,getSketch:()=>s,updateVertexCount:p,emitUndoValidation:g,onStylesChanged:I,clearSketch:()=>{s=null},setInvalid:e=>h.set(e),liveStroke:h,liveDrawChecks:x})},Ye=e=>{if(null==e||!e.coordinates)return[];switch(e.type){case"LineString":return e.coordinates;case"Polygon":return e.coordinates.flatMap(e=>e.slice(0,-1));case"MultiLineString":return e.coordinates.flat(1);case"MultiPolygon":return e.coordinates.flatMap(e=>e.flatMap(e=>e.slice(0,-1)));default:return[]}},ze=e=>{if(null==e||!e.coordinates)return[];var t=[],r=0;switch(e.type){case"LineString":t.push({start:0,length:e.coordinates.length,path:[],closed:!1});break;case"Polygon":e.coordinates.forEach((e,n)=>{var o=e.length-1;t.push({start:r,length:o,path:[n],closed:!0}),r+=o});break;case"MultiLineString":e.coordinates.forEach((e,n)=>{t.push({start:r,length:e.length,path:[n],closed:!1}),r+=e.length});break;case"MultiPolygon":e.coordinates.forEach((e,n)=>{e.forEach((e,o)=>{var a=e.length-1;t.push({start:r,length:a,path:[n,o],closed:!0}),r+=a})})}return t},qe=(e,t)=>{for(var r of e)if(t>=r.start&&t<r.start+r.length)return{segment:r,localIdx:t-r.start};return null},Ke=(e,t)=>{var r=e.coordinates;for(var n of t)r=r[n];return r},Xe=e=>{var t=Ye(e),r=ze(e);if(!t.length||!r.length)return[];var n=[];for(var o of r)for(var a=o.closed?o.length:o.length-1,i=0;i<a;i++){var l=o.start+i,d=o.start+(i+1)%o.length,[s,c]=t[l],[u,p]=t[d];n.push([(s+u)/2,(c+p)/2])}return n},Je=(e,t)=>{var o=new n,a=new r({source:o,zIndex:103});e.addLayer(a);return{update(e){if(o.clear(),!(e.selectedVertexIndex<0)){var{coord:r,style:n}=(e=>{var{selectedVertexIndex:r,selectedVertexType:n,vertices:o,midpoints:a}=e,i=t();return"vertex"===n?{coord:o[r],style:i.selectedVertexStyle}:"midpoint"===n?{coord:a[r-o.length],style:i.selectedMidpointStyle}:{coord:null,style:null}})(e);if(r){var a=new D({geometry:new G(r)});a.setStyle(n),o.addFeature(a)}}},remove(){o.clear(),e.removeLayer(a)}}},We=e=>{var{map:t,manager:r,store:n,olFeature:o,interfaceType:a,layers:i}=e,{vertexLayer:l,midpointLayer:d,activeLayer:s}=i,c={olFeature:o,selectedVertexIndex:-1,selectedVertexType:null,vertices:[],midpoints:[],interfaceType:null!=a?a:"mouse"},u={onDeselect:null,onUpdate:null},p=()=>{var e=o.getGeometry();return{type:e.getType(),coordinates:e.getCoordinates()}},v=()=>((e,t)=>{var r,{vertexLayer:n,midpointLayer:o,activeLayer:a,manager:i,hooks:l}=t;n.setSelected("vertex"===e.selectedVertexType?e.selectedVertexIndex:-1),o.setSelected("midpoint"===e.selectedVertexType?e.selectedVertexIndex-e.vertices.length:-1),e.selectedVertexIndex<0&&(null===(r=l.onDeselect)||void 0===r||r.call(l)),a.update(e),i.emit(P.VERTEX_SELECTION,{index:"vertex"===e.selectedVertexType?e.selectedVertexIndex:-1,numVertices:e.vertices.length})})(c,{vertexLayer:l,midpointLayer:d,activeLayer:s,manager:r,hooks:u}),g=()=>{var e=p();c.vertices=Ye(e),c.midpoints=Xe(e),d.update(e),l.update(e),s.update(c)},y=((e,t,r)=>(n,o)=>{n&&setTimeout(()=>{e.emit(P.GEOMETRY_CHANGE,{feature:t.toGeoJSON(r),phase:n,vertexIndex:o})},0)})(r,n,o),m=()=>g();return o.getGeometry().on("change",m),{state:c,getState:()=>c,setState:e=>{var r,n;Object.assign(c,e),void 0!==e.selectedVertexIndex&&v(),void 0!==e.vertices&&(n=p(),d.update(n),l.update(n),c.midpoints=d.getCoords(),s.update(c),null===(r=u.onUpdate)||void 0===r||r.call(u),t.render())},syncGeom:()=>{g(),r.emit(P.VERTEX_CHANGE,{numVertices:c.vertices.length}),r.emit(P.UPDATE,n.toGeoJSON(o))},emitGeometryValidation:y,updateLayersFromGeom:g,setHooks:e=>{var{onDeselect:t,onUpdate:r}=e;return Object.assign(u,{onDeselect:t,onUpdate:r})},destroy(){o.getGeometry().un("change",m)}}},Ze=function(e,t,r,n){var o,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:12;return null!==(o=function(e,t,r){var n=-1,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:12;return t.forEach((t,a)=>{var i=Ee(e,t);if(i){var l=Le(i,r);l<o&&(o=l,n=a)}}),n>=0?{index:n,type:"vertex"}:null}(e,t,n,a))&&void 0!==o?o:function(e,t,r,n){var o=-1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:12;return t.forEach((t,n)=>{var i=Ee(e,t);if(i){var l=Le(i,r);l<a&&(a=l,o=n)}}),o>=0?{index:n+o,type:"midpoint"}:null}(e,r,n,t.length,a)},Qe=(e,t)=>{if(t.length>e.length){var r=t.findIndex((t,r)=>{var n;return t[0]!==(null===(n=e[r])||void 0===n?void 0:n[0])});return{type:"insert_vertex",vertexIndex:Math.max(0,r)}}if(t.length===e.length){var n=t.findIndex((t,r)=>t[0]!==e[r][0]||t[1]!==e[r][1]);if(n>=0)return{type:"move_vertex",vertexIndex:n,previousCoord:e[n]}}return null},$e=e=>{var{map:t,olFeature:r,getState:n,onModifyEnd:o,condition:a}=e,i=null!=a?a:(e=>{var{map:t,getState:r}=e;return e=>{var{interfaceType:n,vertices:o,midpoints:a}=r();if("touch"===n)return!1;var i=t.getEventPixel(e.originalEvent);return null!==Ze(t,o,a,{x:i[0],y:i[1]})}})({map:t,getState:n}),l=new H({features:new N([r]),style:()=>[],pixelTolerance:12,condition:i});t.addInteraction(l);var d=null;return l.on("modifystart",()=>{"touch"!==n().interfaceType&&(d=n().vertices.map(e=>[...e]))}),l.on("modifyend",()=>{if("touch"!==n().interfaceType){var e=d;d=null,o(e)}}),{destroy(){t.removeInteraction(l)}}},et=(e,t,r,n)=>{var o=r-n,a=t[o];if(!a)return null;var i=e.getGeometry(),l={type:i.getType(),coordinates:i.getCoordinates()},d=ze(l),s=0;for(var c of d){var u=c.closed?c.length:c.length-1;if(o<s+u){var p=o-s+1,v=c.start+p;return Ke(l,c.path).splice(p,0,[...a]),i.setCoordinates(l.coordinates),{insertedIndex:v}}s+=u}return null},tt=(e,t,r)=>{var n=e.getGeometry(),o={type:n.getType(),coordinates:n.getCoordinates()},a=ze(o),i=qe(a,t);if(i){var l=Ke(o,i.segment.path);l[i.localIdx]=[...r],i.segment.closed&&0===i.localIdx&&(l[l.length-1]=[...r]),n.setCoordinates(o.coordinates)}};function rt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function nt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?rt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):rt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var ot=(e,t)=>{var{getState:r,onVertexMoved:n,drag:o,updateTargetPosition:a}=t;if(null==o.dragStartIndex)return((e,t)=>{var{map:r,getState:n,onTap:o,drag:a}=t;if(a.tapStart&&!a.tapStart.onTarget&&0!==e.changedTouches.length){var i=e.changedTouches[0],l=Date.now()-a.tapStart.time;if(Math.hypot(i.clientX-a.tapStart.x,i.clientY-a.tapStart.y)<10&&l<400){var d=r.getEventPixel({clientX:i.clientX,clientY:i.clientY}),s=n();null==o||o(Ze(r,s.vertices,s.midpoints,{x:d[0],y:d[1]},24)),e.preventDefault()}}})(e,t),void(o.tapStart=null);o.tapStart=null;var{vertices:i}=r();i[o.dragStartIndex]&&o.dragStartCoord&&n({vertexIndex:o.dragStartIndex,previousCoord:o.dragStartCoord}),o.dragStartCoord=null,o.dragStartIndex=null,o.vertexTouchDelta=null,o.targetTouchDelta=null,a(),e.preventDefault()},at=e=>{var{container:t}=e,r={dragStartCoord:null,dragStartIndex:null,vertexTouchDelta:null,targetTouchDelta:null,tapStart:null},n=nt(nt({},e),{},{drag:r}),o=e=>((e,t)=>{var{map:r,targetEl:n,cssToOl:o,getState:a,drag:i}=t,l=e.touches[0],d=v(e.target);if(i.tapStart={x:l.clientX,y:l.clientY,time:Date.now(),onTarget:d},d){var{selectedVertexIndex:s,vertices:c}=a(),u=c[s];if(u){var p=r.getEventPixel({clientX:l.clientX,clientY:l.clientY}),g=Ee(r,u),y=getComputedStyle(n),m=o({x:Number.parseFloat(y.left),y:Number.parseFloat(y.top)});i.dragStartCoord=[...u],i.dragStartIndex=s,i.vertexTouchDelta={x:p[0]-g.x,y:p[1]-g.y},i.targetTouchDelta={x:p[0]-m.x,y:p[1]-m.y},e.preventDefault()}}})(e,n),a=e=>((e,t)=>{var{map:r,targetEl:n,olToCSS:o,getState:a,setState:i,snap:l,drag:d,moveCoord:s}=t;if(v(e.target)&&null!=d.dragStartIndex){e.preventDefault();var c=r.getEventPixel({clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}),u=((e,t)=>e.getCoordinateFromPixel([t.x,t.y]))(r,{x:c[0]-d.vertexTouchDelta.x,y:c[1]-d.vertexTouchDelta.y}),g=l?l.apply(u):u,{olFeature:y,vertices:m}=a();y&&(s(y,d.dragStartIndex,g),i({vertices:m.map((e,t)=>t===d.dragStartIndex?g:e)}),p(n,o({x:c[0]-d.targetTouchDelta.x,y:c[1]-d.targetTouchDelta.y})))}})(e,n),i=e=>ot(e,n);return t.addEventListener("touchstart",o,{passive:!1}),t.addEventListener("touchmove",a,{passive:!1}),t.addEventListener("touchend",i,{passive:!1}),t.addEventListener("touchcancel",i,{passive:!1}),{isDragging:()=>null!=r.dragStartIndex,destroy(){t.removeEventListener("touchstart",o),t.removeEventListener("touchmove",a),t.removeEventListener("touchend",i),t.removeEventListener("touchcancel",i)}}},it=e=>{var{map:t,container:r,getState:n,setState:o,onVertexMoved:a,onTap:i,colors:l,snap:d,moveCoord:v=tt}=e,g=s(r);c(g,l);var y={scale:1,ox:0,oy:0},m=e=>({x:e.x*y.scale+y.ox,y:e.y*y.scale+y.oy}),h=()=>{var e=t.getViewport(),n=e.getBoundingClientRect(),o=r.getBoundingClientRect(),a=e.offsetWidth>0?n.width/e.offsetWidth:1,i=r.offsetWidth>0?o.width/r.offsetWidth:1;Object.assign(y,{scale:a/i,ox:(n.left-o.left)/i,oy:(n.top-o.top)/i})},x=()=>{var{selectedVertexIndex:e,vertices:r,interfaceType:o}=n();if(e<0||!r[e]||"touch"!==o)u(g);else{var a=Ee(t,r[e]);a?p(g,m(a)):u(g)}},f=at({container:r,map:t,targetEl:g,olToCSS:m,cssToOl:e=>({x:(e.x-y.ox)/y.scale,y:(e.y-y.oy)/y.scale}),getState:n,setState:o,onVertexMoved:a,onTap:i,snap:d,moveCoord:v,updateTargetPosition:x}),S=()=>{var{selectedVertexIndex:e,interfaceType:t}=n();e>=0&&!f.isDragging()&&"touch"===t&&x()};t.on("postrender",S);var I=()=>{h(),t.once("postrender",x)};return t.on("change:size",I),h(),{updateTargetPosition:x,updateColors(e){c(g,e)},hide(){u(g)},destroy(){t.un("change:size",I),t.un("postrender",S),f.destroy(),u(g)}}},lt=e=>{var{map:t,snap:r,getState:n,setState:o,onInserted:a,onVertexMoved:i,moveCoord:l=tt}=e,d={start:null,index:null},s=(e,a)=>{var{selectedVertexIndex:i,vertices:d,olFeature:s}=n();if(!s||i<0||!d[i])return null;var c=d[i],u=ke(t,c,e,a),p=r?r.apply(u):u,v=((e,t,r,n,o,a,i)=>{if(!e)return o;var l=[n[0]-r[0],n[1]-r[1]],d=[o[0]-r[0],o[1]-r[1]],s=l[0]**2+l[1]**2;if(s>0&&(d[0]*l[0]+d[1]*l[1])/s<.5){var c=e.snapRadius+1;return ke(t,r,0===a?0:Math.sign(a)*c,0===i?0:Math.sign(i)*c)}return o})(r,t,c,u,p,e,a);return r&&v!==p&&r.hideIndicator(),l(s,i,v),o({vertices:d.map((e,t)=>t===i?v:e)}),{previousCoord:c,vertexIndex:i}};return{nudge:e=>{var{selectedVertexIndex:i,selectedVertexType:l,vertices:c,midpoints:u,olFeature:p}=n();if(p){var v=e.shiftKey?_.nudgeAmount:_.stepAmount,g={ArrowUp:[0,-v],ArrowDown:[0,v],ArrowLeft:[-v,0],ArrowRight:[v,0]},[y,m]=g[e.key];"midpoint"!==l?i<0||!c[i]||(d.start||(d.start=[...c[i]],d.index=i),s(y,m)):((e,i,l,s,c,u)=>{var p=et(e,i,l,s.length);if(p){a({insertedIndex:p.insertedIndex});var v=n().vertices,g=v[p.insertedIndex];if(g){d.start=[...g],d.index=p.insertedIndex;var y=ke(t,g,c,u),m=r?r.apply(y):y;tt(e,p.insertedIndex,m),o({selectedVertexIndex:p.insertedIndex,selectedVertexType:"vertex",vertices:v.map((e,t)=>t===p.insertedIndex?m:e)})}}})(p,u,i,c,y,m)}},keyMove:d,nudgeByDelta:(e,t,r)=>{var n=r?_.stepAmount:_.nudgeAmount,o=s(e*n,t*n);o&&i({vertexIndex:o.vertexIndex,previousCoord:o.previousCoord})}}},dt=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),st=new Set(["INPUT","TEXTAREA","BUTTON","SELECT","A"]),ct=e=>{var{map:t,getState:r,setState:n,nudge:o,keyMove:a,onUndo:i,onKeyboardActive:l,isFocused:d}=e,s=e=>{e.altKey?(e.preventDefault(),e.stopPropagation(),((e,t,r,n)=>{var{selectedVertexIndex:o,vertices:a,midpoints:i}=r();if(a.length){var l,d=[...a,...i].map(e=>Ee(t,e)).filter(Boolean).map(e=>[e.x,e.y]),s=o>=0?d[o]:(l=Ee(t,t.getView().getCenter()))?[l.x,l.y]:null;if(s){var c=E(s,d,e);n({selectedVertexIndex:c,selectedVertexType:c<a.length?"vertex":"midpoint"})}}})(e.key,t,r,n)):r().selectedVertexIndex>=0&&(e.preventDefault(),e.stopPropagation(),o(e))},c=e=>{if(null==l||l()," "===e.key)e.preventDefault(),r().selectedVertexIndex<0&&((e,t,r)=>{var{vertices:n,midpoints:o}=t();if(n.length){var a=Ee(e,e.getView().getCenter());if(a){var i=[...n.map(t=>Ee(e,t)),...o.map(t=>Ee(e,t))].filter(Boolean).map(e=>[e.x,e.y]),l=E([a.x,a.y],i,void 0);r({selectedVertexIndex:l,selectedVertexType:l<n.length?"vertex":"midpoint"})}}})(t,r,n);else if(dt.has(e.key))s(e);else if("z"===e.key&&(e.metaKey||e.ctrlKey)){var o,a=null===(o=document.activeElement)||void 0===o?void 0:o.tagName;st.has(a)||(e.preventDefault(),e.stopPropagation(),i())}};return e=>{d()||("Escape"===e.key&&r().selectedVertexIndex>=0?(e.preventDefault(),a.start=null,a.index=null,n({selectedVertexIndex:-1,selectedVertexType:null})):c(e))}},ut=e=>{var t,{map:r,snap:n,getState:o,setState:a,onVertexMoved:i,onInserted:l,onDeleted:d,onUndo:s,onKeyboardActive:c,moveCoord:u}=e,{nudge:p,keyMove:v,nudgeByDelta:g}=lt({map:r,snap:n,getState:o,setState:a,onInserted:l,onVertexMoved:i,moveCoord:u}),y=null!==(t=r.getViewport().closest('[role="application"]'))&&void 0!==t?t:r.getViewport(),m=()=>(e=>{var t=document.activeElement;return!(!t||t===document.body)&&!e.contains(t)&&(st.has(t.tagName)||t.isContentEditable||t.hasAttribute("tabindex"))})(y),h=ct({map:r,getState:o,setState:a,nudge:p,keyMove:v,onUndo:s,onKeyboardActive:c,isFocused:m}),x=(e=>{var{keyMove:t,onVertexMoved:r,onDeleted:n,isFocused:o}=e;return e=>{o()||(dt.has(e.key)&&t.start&&null!=t.index&&(r({vertexIndex:t.index,previousCoord:t.start}),t.start=null,t.index=null),"Delete"===e.key&&n())}})({keyMove:v,onVertexMoved:i,onDeleted:d,isFocused:m});return globalThis.addEventListener("keydown",h,{capture:!0}),globalThis.addEventListener("keyup",x,{capture:!0}),{nudgeByDelta:g,destroy(){globalThis.removeEventListener("keydown",h,{capture:!0}),globalThis.removeEventListener("keyup",x,{capture:!0})}}},pt=(e,t)=>{switch(t.type){case"move_vertex":return((e,t)=>{var{vertexIndex:r,previousCoord:n}=t,o=e.getGeometry(),a={type:o.getType(),coordinates:o.getCoordinates()},i=ze(a),l=qe(i,r);if(!l)return-1;var d=Ke(a,l.segment.path);return d[l.localIdx]=[...n],l.segment.closed&&0===l.localIdx&&(d[d.length-1]=[...n]),o.setCoordinates(a.coordinates),r})(e,t);case"insert_vertex":return((e,t)=>{var{vertexIndex:r}=t,n=e.getGeometry(),o={type:n.getType(),coordinates:n.getCoordinates()},a=ze(o),i=qe(a,r);if(i){var l=Ke(o,i.segment.path);l.splice(i.localIdx,1),i.segment.closed&&(l[l.length-1]=[...l[0]]),n.setCoordinates(o.coordinates)}return-1})(e,t);case"delete_vertex":return((e,t)=>{var{vertexIndex:r,deletedCoord:n}=t,o=e.getGeometry(),a={type:o.getType(),coordinates:o.getCoordinates()},i=ze(a),l=qe(i,r);if(!l)for(var d of i)if(r===d.start+d.length){l={segment:d,localIdx:d.length};break}if(!l)return-1;var s=Ke(a,l.segment.path);return s.splice(l.localIdx,0,[...n]),l.segment.closed&&(s[s.length-1]=[...s[0]]),o.setCoordinates(a.coordinates),r})(e,t);default:return-1}},vt="touch",gt="vertex",yt="commit-move",mt="commit-insert",ht="commit-delete",xt={move_vertex:yt,insert_vertex:mt,delete_vertex:ht},ft={move_vertex:yt,insert_vertex:ht,delete_vertex:mt},St=e=>{var{olFeature:t,undoStack:r,selection:n,getTouchHandler:o}=e,{state:a,setState:i,syncGeom:l,emitGeometryValidation:d}=n;return{doDeleteVertex:()=>{if(!(a.selectedVertexType!==gt||a.selectedVertexIndex<0)){var e=((e,t)=>{var r=e.getGeometry(),n={type:r.getType(),coordinates:r.getCoordinates()},o=Ye(n),a=ze(n),i=qe(a,t);if(!i)return null;var{segment:l}=i,d=l.closed?C.Polygon:C.LineString;if(l.length<=d)return null;var s=[...o[t]],c=Ke(n,l.path);return c.splice(i.localIdx,1),l.closed&&(c[c.length-1]=[...c[0]]),r.setCoordinates(n.coordinates),{deletedIndex:t,deletedCoord:s}})(t,a.selectedVertexIndex);e&&(r.push({type:"delete_vertex",vertexIndex:e.deletedIndex,deletedCoord:e.deletedCoord}),l(),d(ht,e.deletedIndex),i({selectedVertexIndex:-1,selectedVertexType:null}))}},doUndo:()=>{var e=r.pop();if(e){var n=a.selectedVertexIndex,s=pt(t,e);l(),d(ft[e.type],s);var c=n>=0?s:-1;i({selectedVertexIndex:c,selectedVertexType:c>=0?gt:null}),n>=0&&c>=0&&a.interfaceType===vt&&o().updateTargetPosition()}}}},It=e=>{var{map:t,manager:o,options:a}=e,{featureId:i,container:d,interfaceType:s,deleteVertexButtonId:c,snap:u}=a,{store:p,undoStack:v}=o,g=p.getOL(i);if(!g)return null;var y=g.getStyle(),m=((e,t)=>{var o=t,a=-1,i=new n,l=new r({source:i,style:e=>e.get("midpointIndex")===a?null:[o],zIndex:101});return e.addLayer(l),{update(e){i.clear();var t=Xe(e).map((e,t)=>{var r=new D({geometry:new G(e)});return r.set("midpointIndex",t),r});i.addFeatures(t)},setSelected(e){a=e,i.changed()},updateStyle(e){o=e,i.changed()},getCoords:()=>i.getFeatures().sort((e,t)=>e.get("midpointIndex")-t.get("midpointIndex")).map(e=>e.getGeometry().getCoordinates()),remove(){i.clear(),e.removeLayer(l)}}})(t,o.styles.midpointStyle),h=((e,t)=>{var o=t,a=-1,i=new n,l=new r({source:i,style:e=>e.get("vertexIndex")===a?null:[o],zIndex:102});return e.addLayer(l),{update(e){i.clear(),Ye(e).forEach((e,t)=>{var r=new D({geometry:new G(e)});r.set("vertexIndex",t),i.addFeature(r)})},setSelected(e){a=e,i.changed()},updateStyle(e){o=e,i.changed()},remove(){i.clear(),e.removeLayer(l)}}})(t,o.styles.vertexStyle),x=Je(t,()=>o.styles),f=We({map:t,manager:o,store:p,olFeature:g,interfaceType:s,layers:{vertexLayer:h,midpointLayer:m,activeLayer:x}}),{state:S,getState:I,setState:T,syncGeom:w,emitGeometryValidation:C}=f,V=$e({map:t,olFeature:g,getState:I,onModifyEnd(e){w();var t=e&&Qe(e,S.vertices);t&&(v.push(t),C(xt[t.type],t.vertexIndex),T({selectedVertexIndex:t.vertexIndex,selectedVertexType:gt}))}});w();var b={vertexLayer:h,midpointLayer:m,activeLayer:x},_=(e=>{var{map:t,manager:r,olFeature:n}=e,o=!1;n.setStyle(()=>o?r.styles.editFeatureStyleInvalid:r.styles.editFeatureStyle);var a=l({onChange:(e,n)=>{o=e,t.render(),r.emit(P.VALIDITY_CHANGE,{valid:!e,reason:n})}}),i=()=>{var e,t,o=n.getGeometry(),i=o.getType(),l=o.getCoordinates(),d="Polygon"===i?Math.max(0,(null!==(e=null===(t=l[0])||void 0===t?void 0:t.length)&&void 0!==e?e:1)-1):l.length;a.update({feature:{type:"Feature",geometry:{type:i,coordinates:l}},context:{mode:"edit_vertex"},numVertices:d,onGeometryChange:r._geometryValidator})};return n.getGeometry().on("change",i),{liveStroke:a,destroy(){n.getGeometry().un("change",i),a.destroy()}}})({map:t,manager:o,olFeature:g}),E=(e=>{var{map:t,container:r,manager:n,snap:o,olFeature:a,undoStack:i,selection:l}=e,{state:d,getState:s,setState:c,syncGeom:u,emitGeometryValidation:p}=l,v=e=>c({selectedVertexIndex:e,selectedVertexType:gt}),g=it({map:t,container:r,getState:s,setState:c,colors:n.colors,snap:o,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;i.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),u(),p(yt,t),v(t),g.updateTargetPosition()},onTap(e){if(e){if(e.type===gt)return v(e.index),void g.updateTargetPosition();var t=et(a,d.midpoints,e.index,d.vertices.length);t&&(i.push({type:"insert_vertex",vertexIndex:t.insertedIndex}),u(),p(mt,t.insertedIndex),v(t.insertedIndex),g.updateTargetPosition())}else c({selectedVertexIndex:-1,selectedVertexType:null})}});return l.setHooks({onDeselect:()=>g.hide(),onUpdate(){d.interfaceType===vt&&g.updateTargetPosition()}}),g})({map:t,container:d,manager:o,snap:u,olFeature:g,undoStack:v,selection:f}),L=St({olFeature:g,undoStack:v,selection:f,getTouchHandler:()=>E}),k=(e=>{var{map:t,container:r,snap:n,undoStack:o,selection:a,touchHandler:i,actions:l}=e,{state:d,getState:s,setState:c,syncGeom:u,emitGeometryValidation:p}=a;return ut({map:t,getState:s,setState:c,snap:n,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;o.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),u(),p(yt,t),c({selectedVertexIndex:t,selectedVertexType:gt})},onInserted(e){var{insertedIndex:t}=e;o.push({type:"insert_vertex",vertexIndex:t}),u(),p(mt,t)},onDeleted:l.doDeleteVertex,onUndo:l.doUndo,onKeyboardActive(){"keyboard"!==d.interfaceType&&(d.interfaceType="keyboard",i.hide(),r.focus({preventScroll:!0}))}})})({map:t,container:d,snap:u,undoStack:v,selection:f,touchHandler:E,actions:L}),F=(e=>{var{map:t,container:r,getState:n,setState:o,touchHandler:a,deleteVertexButtonId:i,onDeleteVertex:l}=e,d=e=>{var{vertices:r,midpoints:o}=n(),a=t.getEventPixel(e);return Ze(t,r,o,{x:a[0],y:a[1]})},s=e=>{var t=n();if("touch"===e.pointerType)return t.interfaceType="touch",void a.updateTargetPosition();t.interfaceType="mouse";var r=d(e);"vertex"===(null==r?void 0:r.type)&&o({selectedVertexIndex:r.index,selectedVertexType:"vertex"})},c=e=>{if("touch"!==n().interfaceType){var t=d(e);"vertex"===(null==t?void 0:t.type)?o({selectedVertexIndex:t.index,selectedVertexType:"vertex"}):"midpoint"===(null==t?void 0:t.type)||o({selectedVertexIndex:-1,selectedVertexType:null})}},u=e=>{var t=n();"mouse"===e.pointerType&&"mouse"!==t.interfaceType&&(t.interfaceType="mouse",a.hide())},p=e=>{i&&e.target.closest("#".concat(i))&&l()};return r.addEventListener("pointerdown",s),r.addEventListener("pointerenter",u),r.addEventListener("pointermove",u),r.addEventListener("click",c),globalThis.addEventListener("click",p),{destroy(){r.removeEventListener("pointerdown",s),r.removeEventListener("pointerenter",u),r.removeEventListener("pointermove",u),r.removeEventListener("click",c),globalThis.removeEventListener("click",p)}}})({map:t,container:d,getState:I,setState:T,touchHandler:E,deleteVertexButtonId:c,onDeleteVertex:L.doDeleteVertex}),O=(e=>{var{map:t,manager:r,layers:n,selection:o,touchHandler:a,live:i}=e,{state:l}=o,d=e=>{i.liveStroke.refresh(),n.vertexLayer.updateStyle(e.vertexStyle),n.midpointLayer.updateStyle(e.midpointStyle),n.activeLayer.update(l),a.updateColors(r.colors)};r.on(Me,d);var s=()=>{l.interfaceType!==vt||l.selectedVertexIndex<0||t.once("postrender",()=>a.updateTargetPosition())};return t.on("change:size",s),{destroy(){r.off(Me,d),t.un("change:size",s)}}})({map:t,manager:o,layers:b,selection:f,touchHandler:E,live:_});return(e=>{var{manager:t,store:r,olFeature:n,originalFeatureStyle:o,selection:a,actions:i,parts:l}=e,{state:d}=a,{touchHandler:s}=l;return{setInterfaceType(e){e!==d.interfaceType&&(d.interfaceType=e,e===vt?s.updateTargetPosition():s.hide())},done(){t.emit(P.EDIT_FINISH,r.toGeoJSON(n))},setInvalid(e){l.live.liveStroke.set(e)},cancel(){},undo:i.doUndo,deleteVertex:i.doDeleteVertex,nudgeSelectedVertex:l.keyboardHandler.nudgeByDelta,destroy(){l.live.destroy(),n.setStyle(o),a.destroy(),l.mapSync.destroy(),l.pointerHandlers.destroy(),l.modify.destroy(),l.layers.activeLayer.remove(),l.layers.midpointLayer.remove(),l.layers.vertexLayer.remove(),s.destroy(),l.keyboardHandler.destroy()}}})({manager:o,store:p,olFeature:g,originalFeatureStyle:y,selection:f,actions:L,parts:{touchHandler:E,keyboardHandler:k,pointerHandlers:F,modify:V,mapSync:O,layers:b,live:_}})},Tt=["selectedVertexIndex","selectedVertexType"],wt=e=>{var{manager:t,store:r,olFeature:n,interfaceType:o}=e,a={olFeature:n,selectedVertexIndex:0,selectedVertexType:"vertex",vertices:[],midpoints:[],interfaceType:null!=o?o:"mouse"},i={onUpdate:null},l=()=>{a.vertices=[n.getGeometry().getCoordinates()]},d=((e,t,r)=>(n,o)=>{n&&setTimeout(()=>{e.emit(P.GEOMETRY_CHANGE,{feature:t.toGeoJSON(r),phase:n,vertexIndex:o})},0)})(t,r,n),s=()=>l();return n.getGeometry().on("change",s),l(),t.emit(P.VERTEX_SELECTION,{index:0,numVertices:1}),{state:a,getState:()=>a,setState:e=>{var t,{selectedVertexIndex:r,selectedVertexType:n}=e,o=U(e,Tt);(Object.assign(a,o),void 0!==e.vertices)&&(null===(t=i.onUpdate)||void 0===t||t.call(i))},syncGeom:()=>{l(),t.emit(P.UPDATE,r.toGeoJSON(n))},emitGeometryValidation:d,setHooks:e=>{var{onUpdate:t}=e;i.onUpdate=t},destroy(){n.getGeometry().un("change",s)}}},Pt=(e,t,r)=>{e.getGeometry().setCoordinates([...r])},Ct="touch",Vt="commit-move",bt=e=>{var{map:t,olFeature:r}=e;return e=>{var n=t.getEventPixel(e.originalEvent);return!!t.forEachFeatureAtPixel(n,e=>e===r,{hitTolerance:12})}},_t=e=>{var{map:t,manager:r,options:n}=e,{featureId:o,container:a,interfaceType:i,snap:d}=n,{store:s,undoStack:c}=r,u=s.getOL(o);if(!u)return null;null==a||a.focus({preventScroll:!0});var p=u.getStyle();u.setStyle(()=>r.styles.selectedPointStyleFor(u));var v=wt({manager:r,store:s,olFeature:u,interfaceType:i}),{getState:g,setState:y}=v,m=(e=>{var{map:t,olFeature:r,getState:n,condition:o,snap:a,onModifyEnd:i}=e,l=null,d=null,s=e=>t.getCoordinateFromPixel(e.pixel),c=new B({handleDownEvent:e=>{if("touch"===n().interfaceType||!o(e))return!1;var t=r.getGeometry().getCoordinates(),a=s(e);return l=[t[0]-a[0],t[1]-a[1]],d=[...t],!0},handleDragEvent:e=>{if(l){var t=s(e),n=[t[0]+l[0],t[1]+l[1]],o=a?a.apply(n):n;r.getGeometry().setCoordinates(o)}},handleUpEvent:()=>(l=null,d&&i([d]),d=null,!1)});return t.addInteraction(c),{destroy(){t.removeInteraction(c)}}})({map:t,olFeature:u,getState:g,condition:bt({map:t,olFeature:u}),snap:d,onModifyEnd(e){v.syncGeom();var t=e&&Qe(e,g().vertices);t&&(c.push(t),v.emitGeometryValidation(Vt,t.vertexIndex))}}),h=(e=>{var{olFeature:t,undoStack:r,selection:n}=e;return()=>{var e=r.pop();e&&(((e,t)=>{"move_vertex"===t.type&&((e,t)=>{var{previousCoord:r}=t;e.getGeometry().setCoordinates([...r])})(e,t)})(t,e),n.syncGeom(),n.emitGeometryValidation(Vt,0))}})({olFeature:u,undoStack:c,selection:v}),x=(e=>{var{manager:t,olFeature:r}=e,n=l({onChange:(e,r)=>{t.emit(P.VALIDITY_CHANGE,{valid:!e,reason:r})}}),o=()=>{var e=r.getGeometry().getCoordinates();n.update({feature:{type:"Feature",geometry:{type:"Point",coordinates:e}},context:{mode:"edit_point"},numVertices:1,onGeometryChange:t._geometryValidator})};return r.getGeometry().on("change",o),{liveStroke:n,destroy(){r.getGeometry().un("change",o),n.destroy()}}})({manager:r,olFeature:u}),f=(e=>{var{map:t,container:r,manager:n,snap:o,undoStack:a,selection:i}=e,{getState:l,setState:d,syncGeom:s,emitGeometryValidation:c}=i,u=it({map:t,container:r,getState:l,setState:d,colors:n.colors,snap:o,moveCoord:Pt,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;a.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),s(),c(Vt,t)},onTap(){}});return i.setHooks({onUpdate(){l().interfaceType===Ct&&u.updateTargetPosition()}}),u})({map:t,container:a,manager:r,snap:d,undoStack:c,selection:v}),S=(e=>{var{map:t,container:r,snap:n,undoStack:o,selection:a,touchHandler:i,doUndo:l}=e,{getState:d,setState:s,syncGeom:c,emitGeometryValidation:u}=a;return ut({map:t,getState:d,setState:s,snap:n,moveCoord:Pt,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;o.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),c(),u(Vt,t)},onInserted(){},onDeleted(){},onUndo:l,onKeyboardActive(){"keyboard"!==d().interfaceType&&(d().interfaceType="keyboard",i.hide(),r.focus({preventScroll:!0}))}})})({map:t,container:a,snap:d,undoStack:c,selection:v,touchHandler:f,doUndo:h}),I=(e=>{var{map:t,manager:r,selection:n,touchHandler:o,live:a}=e,{state:i}=n,l=()=>{a.liveStroke.refresh(),o.updateColors(r.colors)};r.on(Me,l);var d=()=>{i.interfaceType===Ct&&t.once("postrender",()=>o.updateTargetPosition())};return t.on("change:size",d),{destroy(){r.off(Me,l),t.un("change:size",d)}}})({map:t,manager:r,selection:v,touchHandler:f,live:x});return{setInterfaceType(e){e!==g().interfaceType&&(y({interfaceType:e}),e===Ct?f.updateTargetPosition():f.hide())},done(){r.emit(P.EDIT_FINISH,s.toGeoJSON(u))},setInvalid(e){x.liveStroke.set(e)},cancel(){},undo:h,deleteVertex(){},nudgeSelectedVertex:S.nudgeByDelta,destroy(){x.destroy(),u.setStyle(p),v.destroy(),I.destroy(),m.destroy(),f.destroy(),S.destroy()}}},Et="draw_point",Lt=e=>{var{map:t,manager:r,options:n}=e,{featureId:o,properties:a={}}=n,i=(e=>t=>{var r={type:"Feature",geometry:{type:"Point",coordinates:t},properties:{}},{valid:n,reason:o}=L(r,{mode:Et,vertexIndex:0},{onGeometryChange:e._geometryValidator});return n||e.emit(P.PLACEMENT_BLOCKED,{feature:r,reason:null!=o?o:null,phase:"place",mode:Et,vertexIndex:0}),n})(r),l=new M({type:"Point",style:()=>[],snapTolerance:w.snapRadius,condition:e=>R(e)&&i(e.coordinate)});t.addInteraction(l),l.on("drawend",e=>((e,t,r,n,o)=>{r.setId(String(n)),r.setProperties(o),e.store.source.addFeature(r),e.emit(P.CREATE,e.store.toGeoJSON(r)),null==t||t(r)})(r,n.resolvePointSymbol,e.feature,o,a)),l.on("drawabort",()=>{r.emit(P.CANCEL)});var d=(e=>{var t,r,{drawInteraction:n,options:o,canPlace:a}=e,{container:i,addVertexButtonId:l,mapProvider:d,snap:s,crossHair:c}=o,u=null!==(t=o.interfaceType)&&void 0!==t?t:"mouse",p=()=>u,v=()=>{var e=d.getCenter(),t="mouse"!==p()&&s?s.apply(e):e;null==s||s.hideIndicator(),a(t)&&(n.appendCoordinates([t]),n.finishDrawing())},g=()=>{"mouse"!==p()&&s&&s.apply(d.getCenter())},y=e=>{u=e,Ge(c,e),g()},m=Ae({container:i,addVertexButtonId:l,olView:null===(r=n.getMap())||void 0===r?void 0:r.getView(),onUndo:null,getInterfaceType:p,setInterfaceType:y,clearLastCoord:()=>{},updateRubberbanding:g,placeVertex:v});return Ge(c,u),c&&(c.activate=v),{getInterfaceType:p,setInterfaceType:y,destroy(){(null==c?void 0:c.activate)===v&&(c.activate=null),m.destroy()}}})({drawInteraction:l,options:n,canPlace:i});return{done(){},cancel(){l.abortDrawing()},undo(){},setInterfaceType(e){d.setInterfaceType(e)},destroy(){r.emit(P.INTERFACE_TYPE_CHANGE,{interfaceType:d.getInterfaceType()}),d.destroy(),t.removeInteraction(l)}}},kt=["normal","active","selected"],Ft={normal:"symbolImageId",active:"symbolActiveImageId",selected:"symbolSelectedImageId"},Ot=e=>!!(null!=e&&e.symbol||null!=e&&e.symbolSvgContent),Dt=function(){var e=t(function*(e){var{manager:t,mapProvider:r,olFeature:n}=e,o=n.getProperties();if(Ot(o)){var i=(e=>{var t;return(globalThis.devicePixelRatio||1)*(null!==(t=null==e?void 0:e.drawScale)&&void 0!==t?t:1)})(r);try{var l=yield Promise.all(kt.map(e=>a.rasteriseSymbolImage(o,t.mapStyle,e,i)));if(!l[0])return;if(!t.store.source.hasFeature(n))return;kt.forEach((e,t)=>{var r=l[t];r&&(((e,t)=>{var r=W.get(e);if(r)return r;var n=document.createElement("canvas");n.width=t.width,n.height=t.height,n.getContext("2d").putImageData(t,0,0),W.set(e,n)})(r.imageId,r.imageData),n.set(Ft[e],r.imageId))}),n.set("symbolPixelRatio",i)}catch(e){console.error("[draw] failed to resolve point symbol",n.getId(),e)}}});return function(t){return e.apply(this,arguments)}}(),Gt=e=>{var{manager:t,mapProvider:r}=e,n=t.store.source.getFeatures().filter(e=>{var t;return"Point"===(null===(t=e.getGeometry())||void 0===t?void 0:t.getType())&&Ot(e.getProperties())});return Promise.all(n.map(e=>Dt({manager:t,mapProvider:r,olFeature:e})))};function At(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function jt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?At(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):At(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}class Mt{constructor(e){var t,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._map=e,this._pluginConfig=o,this._mode="disabled",this._modeInstance=null,this._listeners=new Map,this.store=q(),this.undoStack=g(e=>this.emit(P.UNDO_CHANGE,e)),this.mapStyle=null,this.colors=y(null,o),this.styles=ne(this.colors),this.snap=_e(e,null!==(t=o.snapLayers)&&void 0!==t?t:null,this.colors,null!==(n=o.snapRadius)&&void 0!==n?n:w.snapRadius),this._layer=new r({source:this.store.source,style:this.styles.createFeatureStyle(),zIndex:100}),this._layer.set("layerId","draw"),e.addLayer(this._layer)}setMapStyle(e){var t;this.mapStyle=e,this.colors=y(e,this._pluginConfig),this.styles=ne(this.colors),this._layer.setStyle(this.styles.createFeatureStyle()),this.store.source.changed(),null===(t=this.snap)||void 0===t||t.updateColors(this.colors),this.emit(Me,this.styles)}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){var r;null===(r=this._listeners.get(e))||void 0===r||r.delete(t)}emit(e,t){var r=this._listeners.get(e);r&&Array.from(r).forEach(e=>e(t))}changeMode(e){var r=arguments,n=this;return t(function*(){var t,o,a,i=r.length>1&&void 0!==r[1]?r[1]:{};null===(t=n._modeInstance)||void 0===t||t.destroy(),n._modeInstance=null,n._mode=e;var l="draw_polygon"===e||"draw_line"===e||"draw_point"===e||"edit_vertex"===e||"edit_point"===e;null===(o=n.snap)||void 0===o||o.setIndicatorActive(l);var d=jt(jt({},i),{},{snap:n.snap});if("draw_polygon"===e||"draw_line"===e)n._modeInstance=Be({map:n._map,manager:n,options:d});else if("draw_point"===e){var s=jt(jt({},d),{},{resolvePointSymbol:e=>Dt({manager:n,mapProvider:i.mapProvider,olFeature:e})});n._modeInstance=Lt({map:n._map,manager:n,options:s})}else"edit_vertex"===e?n._modeInstance=It({map:n._map,manager:n,options:d}):"edit_point"===e&&(n._modeInstance=_t({map:n._map,manager:n,options:d}));null===(a=n.snap)||void 0===a||a.reattach()})()}getMode(){return this._mode}done(){var e;null===(e=this._modeInstance)||void 0===e||e.done()}cancel(){var e;null===(e=this._modeInstance)||void 0===e||e.cancel(),this.changeMode("disabled")}undo(){var e;null===(e=this._modeInstance)||void 0===e||e.undo()}deleteVertex(){var e;null===(e=this._modeInstance)||void 0===e||e.deleteVertex()}nudgeSelectedVertex(e,t,r){var n,o;null===(n=this._modeInstance)||void 0===n||null===(o=n.nudgeSelectedVertex)||void 0===o||o.call(n,e,t,r)}setInvalid(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.setInvalid)||void 0===r||r.call(t,e)}setDrawingPreviewProperty(e,t){var r,n;null===(r=this._modeInstance)||void 0===r||null===(n=r.setDrawingPreviewProperty)||void 0===n||n.call(r,e,t)}setInterfaceType(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.setInterfaceType)||void 0===r||r.call(t,e),this.emit(P.INTERFACE_TYPE_CHANGE,{interfaceType:e})}get(e){return this.store.get(e)}add(e){return this.store.add(e)}delete(e){return this.store.remove(e)}deleteAll(){return this.store.clear()}remove(){var e,t;null===(e=this._modeInstance)||void 0===e||e.destroy(),this._modeInstance=null,null===(t=this.snap)||void 0===t||t.destroy(),this.snap=null,this.store.clear(),this._map.removeLayer(this._layer),this._listeners.clear()}}function Rt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ht(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Rt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Rt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}class Nt{constructor(t,r){var n;e(this,"_snapEnabled",!1);var{manager:o,remove:a}=(e=>{var t,{mapProvider:r,events:n,eventBus:o,pluginConfig:a={},mapStyle:i=null}=e,{map:l}=r,d=new Mt(l,a);i&&d.setMapStyle(i),r.draw=d,r.drawScale=null!==(t=k[r.mapSize])&&void 0!==t?t:1;var s=()=>o.emit(n.MAP_DATA_CHANGE),c=e=>{var t;r.drawScale=null!==(t=k[e])&&void 0!==t?t:1,Gt({manager:d,mapProvider:r}).then(s)};o.on(n.MAP_SET_SIZE,c);var u=e=>{d.setMapStyle(e),Gt({manager:d,mapProvider:r}).then(s)};return o.on(n.MAP_SET_STYLE,u),{manager:d,remove(){o.off(n.MAP_SET_SIZE,c),o.off(n.MAP_SET_STYLE,u),d.remove(),r.draw=null}}})({mapProvider:t,events:r.events,eventBus:r.eventBus,pluginConfig:null!==(n=r.pluginConfig)&&void 0!==n?n:{snapLayers:r.snapLayers},mapStyle:r.mapStyle});this._cleanupOLDraw=a,this._manager=o,this._mapProvider=t}changeMode(e){var t=Ht(Ht({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),{},{mapProvider:this._mapProvider});return"draw_polygon"===e&&(t.geometryType="Polygon"),"draw_line"===e&&(t.geometryType="LineString"),this._manager.changeMode(e,t)}getMode(){return this._manager.getMode()}setInterfaceType(e){this._manager.setInterfaceType(e)}done(){this._manager.undoStack.clear(),this._manager.done()}cancel(){this._manager.undoStack.clear(),this._manager.cancel()}undo(){this._manager.undo()}deleteVertex(){this._manager.deleteVertex()}nudgeSelectedVertex(e,t,r){this._manager.nudgeSelectedVertex(e,t,r)}setGeometryValid(e){this._manager._geometryValid=e}set _geometryValidator(e){this._manager._geometryValidator=e}get _geometryValidator(){return this._manager._geometryValidator}setInvalid(e){this._manager.setInvalid(e)}get(e){return this._manager.get(e)}add(e){var t,r=this._manager.add(e);return"Point"===(null===(t=e.geometry)||void 0===t?void 0:t.type)&&Ot(e.properties)&&Dt({manager:this._manager,mapProvider:this._mapProvider,olFeature:r}),r}setStyle(e,t){var r,n=this._manager.store.getOL(e);n&&(n.setProperties(t),"Point"===(null===(r=n.getGeometry())||void 0===r?void 0:r.getType())&&Ot(n.getProperties())&&Dt({manager:this._manager,mapProvider:this._mapProvider,olFeature:n}))}delete(e){return this._manager.delete(e)}deleteAll(){return this._manager.deleteAll()}setSnapEnabled(e){var t;this._snapEnabled=e,null===(t=this._manager.snap)||void 0===t||t.setActive(e)}setSnapLayers(e){var t,r=null==e?void 0:e.map(e=>"stroke-inactive.cold"===e?this._manager._layer:e);null===(t=this._manager.snap)||void 0===t||t.setSnapLayers(r)}isSnapEnabled(){return this._snapEnabled}setFeatureProperty(){}setDrawingPreviewProperty(e,t){this._manager.setDrawingPreviewProperty(e,t)}on(e,t){this._manager.on(e,t)}off(e,t){this._manager.off(e,t)}remove(){this._cleanupOLDraw()}}export{Nt as OLDrawAdapter};
1
+ import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"ol/layer/Vector.js";import n from"ol/source/Vector.js";import o from"ol/format/GeoJSON.js";import{s as a,c as i,a as l,b as d,d as s,h as c,e as u,i as p,f as v,g,r as y}from"./im-draw-ml-adapter.js";import m from"ol/style/Style.js";import h from"ol/style/Fill.js";import x from"ol/style/Stroke.js";import f from"ol/style/Circle.js";import S from"ol/style/Icon.js";import I from"ol/geom/MultiPoint.js";import{S as T,s as w,t as P,T as V,A as C,M as b,a as _,z as E,K as L,v as k,w as F}from"./im-draw-plugin.js";import{transform as O}from"ol/proj.js";import G from"ol/layer/VectorTile.js";import D from"ol/Feature.js";import A from"ol/geom/Point.js";import{Style as M}from"ol/style.js";import j from"ol/interaction/Interaction.js";import R from"ol/interaction/Draw.js";import{noModifierKeys as H}from"ol/events/condition.js";import N from"ol/interaction/Modify.js";import U from"ol/Collection.js";import B from"@babel/runtime/helpers/objectWithoutProperties";import z from"ol/interaction/Pointer.js";import"preact/compat";import"preact/jsx-runtime";var Y="EPSG:27700",q=new o({dataProjection:Y,featureProjection:Y}),K=()=>{var e=new n;return{source:e,getOL(t){var r;return null!==(r=e.getFeatureById(String(t)))&&void 0!==r?r:null},add(t){var r=this.getOL(t.id);r&&e.removeFeature(r);var n=q.readFeature(t);return e.addFeature(n),n},get(e){var t=this.getOL(e);return t?q.writeFeatureObject(t):null},remove(t){var r=Array.isArray(t)?t:[t];for(var n of r){var o=this.getOL(n);o&&e.removeFeature(o)}},clear(){e.clear()},toGeoJSON:e=>q.writeFeatureObject(e),fromGeoJSON:e=>q.readFeature(e)}},X={Polygon:2,LineString:1},J=e=>{var t,r=e.getType();return("Polygon"===r?null!==(t=e.getCoordinates()[0])&&void 0!==t?t:[]:e.getCoordinates()).slice(0,-X[r])},W=e=>{var t;return null!==(t=J(e).at(-1))&&void 0!==t?t:null},Z=new Map,Q={outer:T.vertexHaloRadius+3,mid:T.vertexHaloRadius,inner:T.vertexRadius},$={outer:T.midpointHaloRadius+3,mid:T.midpointHaloRadius,inner:T.midpointRadius},ee=(e,t,r,n,o)=>{e.beginPath(),e.arc(t,r,n,0,2*Math.PI),e.fillStyle=o,e.fill()},te=(e,t,r)=>{var{outer:n,mid:o,inner:a}=e;return(e,i)=>{var l=i.context,d=i.pixelRatio,[s,c]=e;l.save(),ee(l,s,c,n*d,t.editActive),ee(l,s,c,o*d,t.editHalo),ee(l,s,c,a*d,t[r]),l.restore()}},re=e=>e.charAt(0).toUpperCase()+e.slice(1),ne=e=>{var t=(e=>new m({image:new f({radius:T.vertexRadius+3,fill:new h({color:e.shapeFill}),stroke:new x({color:e.shapeStroke,width:2})})}))(e),r=new Map,n=function(e){var t=e[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"symbolImageId"],n=t&&(e=>Z.get(e))(t);if(!n)return null;var o=w.getSymbolDef(e),[a,i]=P(e,o),l=e.symbolPixelRatio||1,d="".concat(t,"|").concat(a,"|").concat(i,"|").concat(l),s=r.get(d);return s||(s=new m({image:new S({img:n,anchor:[a,i],scale:1/l})}),r.set(d,s)),s};return{pointStyleFor:e=>{var r;return null!==(r=n(e.getProperties()))&&void 0!==r?r:t},selectedPointStyleFor:e=>{var r,o,a=e.getProperties();return null!==(r=null!==(o=n(a,"symbolSelectedImageId"))&&void 0!==o?o:n(a))&&void 0!==r?r:t}}},oe=e=>{var{vertexImage:t,vertexStyle:r,selectedVertexStyle:n}=(e=>{var t=new f({radius:T.vertexRadius,fill:new h({color:e.editVertex})});return{vertexImage:t,vertexStyle:new m({image:t}),selectedVertexStyle:new m({renderer:te(Q,e,"editVertex")})}})(e),{midpointStyle:o,selectedMidpointStyle:a}=(e=>({midpointStyle:new m({image:new f({radius:T.midpointRadius,fill:new h({color:e.editMidpoint})})}),selectedMidpointStyle:new m({renderer:te($,e,"editMidpoint")})}))(e),i=new m({stroke:new x({color:e.editStroke,width:2}),fill:new h({color:e.editFill})}),l=new m({stroke:new x({color:e.invalidStroke,width:2,lineDash:[2,4]})}),d=(e=>({valid:new m({stroke:new x({color:e.editStroke,width:2}),fill:new h({color:e.editFill})}),invalid:new m({stroke:new x({color:e.invalidStroke,width:2,lineDash:[2,4]})}),splitValid:new m({stroke:new x({color:e.splitValid,width:2})}),splitInvalid:new m({stroke:new x({color:e.splitInvalid,width:2,lineDash:[2,4]})})}))(e),s=new I([]),c=new m({image:t,geometry:e=>{var t=J(e.getGeometry());return t.length?(s.setCoordinates(t),s):null}}),{pointStyleFor:u,selectedPointStyleFor:p}=ne(e);return{vertexStyle:r,selectedVertexStyle:n,midpointStyle:o,selectedMidpointStyle:a,editFeatureStyle:i,editFeatureStyleInvalid:l,selectedPointStyleFor:p,createSketchStyle:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r=>{var n=r.getGeometry().getType();if("Point"===n)return[];var o=r.get("splitter"),a=t?d.invalid:d.valid;return"valid"===o&&(a=d.splitValid),"invalid"===o&&(a=d.splitInvalid),n===e?[a,c]:[a]}},createFeatureStyle:()=>t=>{if("Point"===t.getGeometry().getType())return[u(t)];var r=t.getProperties(),n=e.mapStyleId,o=n&&r["stroke".concat(re(n))]||r.stroke||e.shapeStroke,a=n&&r["fill".concat(re(n))]||r.fill||e.shapeFill,i=r.strokeWidth||e.strokeWidth;return[new m({stroke:new x({color:o,width:i}),fill:new h({color:a})})]}}},ae=(e,t)=>{var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n},ie=(e,t,r)=>{var n=r[0]-t[0],o=r[1]-t[1],a=n*n+o*o;if(0===a)return[t[0],t[1]];var i=Math.max(0,Math.min(1,((e[0]-t[0])*n+(e[1]-t[1])*o)/a));return[t[0]+i*n,t[1]+i*o]},le=(e,t)=>de(e,t)?t:e,de=(e,t)=>e?!!t&&("edge"===e.type&&"vertex"===t.type||("vertex"!==e.type||"edge"!==t.type)&&t.distSq<e.distSq):!!t,se=(e,t,r,n)=>{for(var o=null,a=n&&e.length>1?e.length-1:e.length,i=n?a:a-1,l=0;l<a;l++){var d=e[l],s=ae(t,d);s<=r&&(o=le(o,{type:"vertex",coord:[d[0],d[1]],distSq:s}))}for(var c=0;c<i;c++){var u=e[c],p=e[(c+1)%a],v=ie(t,u,p),g=ae(t,v);g<=r&&(o=le(o,{type:"edge",coord:v,distSq:g}))}return o},ce=(e,t,r,n,o,a)=>{for(var i=null,l=0;l<n;l++){var d=t+2*l,s=t+(l+1)%r*2,c=[e[d],e[d+1]],u=[e[s],e[s+1]],p=ie(o,c,u),v=ae(o,p);v<=a&&(i=le(i,{type:"edge",coord:p,distSq:v,seg:[c,u]}))}return i},ue=(e,t,r)=>[e>0||r?e>0?e-1:t-1:null,e<t-1||r?e<t-1?e+1:0:null],pe=(e,t,r,n,o,a)=>{for(var i=n===r,l=r=>null===r?null:[e[t+2*r],e[t+2*r+1]],d=null,s=0;s<r;s++){var c=l(s),u=ae(o,c);if(u<=a){var[p,v]=ue(s,r,i),g=[l(p),l(v)];d=le(d,{type:"vertex",coord:c,distSq:u,adjacent:g})}}return d},ve=(e,t,r,n,o,a)=>{var i=(r-t)/2,l=a?i:i-1;return{vertex:pe(e,t,i,l,n,o),edge:ce(e,t,i,l,n,o)}},ge={point:(e,t,r)=>{var n=e.getCoordinates(),o=ae(t,n);return o<=r?{type:"vertex",coord:[n[0],n[1]],distSq:o}:null},lineString:(e,t,r)=>se(e.getCoordinates(),t,r,!1),linearRing:(e,t,r)=>se(e.getCoordinates(),t,r,!0),polygon:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())n=le(n,se(o,t,r,!0));return n},multiLineString:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())n=le(n,se(o,t,r,!1));return n},multiPolygon:(e,t,r)=>{var n=null;for(var o of e.getCoordinates())for(var a of o)n=le(n,se(a,t,r,!0));return n}},ye=(e,t,r)=>{var n=e.getGeometry();if(!n)return null;var o=n.getType(),a=ge[o[0].toLowerCase()+o.slice(1)];return a?a(n,t,r):null};function me(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 he(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?me(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):me(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var xe=(e,t,r)=>{if(!t||!r)return!1;var[n,o,a,i]=e.extent,l=(t,r,n)=>Math.min(Math.abs(t-r),Math.abs(t-n))<=e.band,d=Math.abs(t[0]-r[0])<=e.eps&&l(t[0],n,a),s=Math.abs(t[1]-r[1])<=e.eps&&l(t[1],o,i);return d||s},fe=(e,t)=>{var r,n=((e,t)=>{if(!e)return null;var{tileGrid:r,viewProj:n,sourceProj:o,zoom:a}=e,i=e=>e?O(e,n,o):null,l=i(t),d=r.getTileCoordForCoordAndZ(l,a),s=r.getTileCoordExtent(d),c=s[2]-s[0];return{toSource:i,anchor:l,extent:s,band:.0625*c,eps:c/4096*2}})(e,t.coord);if(!n)return!1;if("edge"===t.type){var[o,a]=t.seg;return xe(n,n.toSource(o),n.toSource(a))}var[i,l]=null!==(r=t.adjacent)&&void 0!==r?r:[];return xe(n,n.anchor,n.toSource(i))||xe(n,n.anchor,n.toSource(l))},Se=()=>!0===globalThis.DEBUG_SNAP_VISIBILITY,Ie=(e,t)=>{Se()&&console.log("[snap-candidate-found]",{type:e.type,layerId:null==t?void 0:t.id,layerType:null==t?void 0:t.type,coord:[e.coord[0].toFixed(2),e.coord[1].toFixed(2)],distSq:e.distSq.toFixed(2)})},Te=e=>{var{candidate:t,cursorCoord:r,mapboxLayer:n,boundaryState:o,map:a,vtLayers:i,resolution:l}=e;return fe(o,t)?(Se()&&console.log("[snap-filtered] tile clip artefact",t.type),!0):!("edge"!==t.type||"fill"!==(null==n?void 0:n.type)||!((e,t,r,n,o,a)=>{var i=e[0]-t[0],l=e[1]-t[1],d=i*i+l*l;if(d<1)return!1;var s=Math.sqrt(d),c=4*a,u=[e[0]+i/s*c,e[1]+l/s*c],p=n.getPixelFromCoordinate(u);return!!p&&!!n.forEachFeatureAtPixel(p,e=>{var t;return(null===(t=e.get("mapbox-layer"))||void 0===t?void 0:t.id)===r},{hitTolerance:2,layerFilter:e=>o.includes(e)})})(t.coord,r,n.id,a,i,l))&&(Se()&&console.log("[snap-filtered] invisible fill boundary"),!0)},we=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=new Set,o=[],a=e=>{for(var t of(n=new Set,o=[],null!=e?e:[]))"string"==typeof t?n.add(t):t instanceof r&&o.push(t)};a(t);return{query:(t,r)=>{Se()&&console.log("[snap-query]",{coord:[t[0].toFixed(2),t[1].toFixed(2)],radiusPx:r,vtLayerCount:n.size,olLayerCount:o.length});var a=e.getView().getResolution();if(!a)return null;var i=r*a,l=i*i,d=[t[0]-i,t[1]-i,t[0]+i,t[1]+i],s=null;for(var c of o){var u=c.getSource();if(u)for(var p of u.getFeaturesInExtent(d))s=le(s,ye(p,t,l))}if(n.size>0){var v=(e=>{var t=[];return e.getLayers().forEach(e=>{e instanceof G&&t.push(e)}),t})(e),g=v.length>0?e.getPixelFromCoordinate(t):null;if(g){var y=new Map;e.forEachFeatureAtPixel(g,(r,o)=>{var i=r.get("mapbox-layer");if(n.has(null==i?void 0:i.id)){var d=((e,t,r)=>{var n=e.getType(),o=e.getFlatCoordinates(),a=null,i=null;if("Point"===n){var l=ae(t,o);l<=r&&(a={type:"vertex",coord:[o[0],o[1]],distSq:l})}else if("LineString"===n)({vertex:a,edge:i}=ve(o,0,o.length,t,r,!1));else if("Polygon"===n||"MultiLineString"===n){var d=e.getEnds(),s=0,c="Polygon"===n;for(var u of d){var p=ve(o,s,u,t,r,c);a=le(a,p.vertex),i=le(i,p.edge),s=u}}return[a,i].filter(Boolean)})(r,t,l);if(d.length){y.has(o)||y.set(o,((e,t)=>{var r,n=e.getSource(),o=null==n?void 0:n.getTileGrid();if(!o)return null;var a=t.getView().getProjection(),i=null!==(r=n.getProjection())&&void 0!==r?r:a,l=o.getZForResolution(t.getView().getResolution(),0);return{tileGrid:o,viewProj:a,sourceProj:i,zoom:l}})(o,e));var c=y.get(o);s=((e,t,r)=>{var n=e;for(var o of t)Ie(o,r.mapboxLayer),Te(he({candidate:o},r))||(n=le(n,o));return n})(s,d,{cursorCoord:t,mapboxLayer:i,boundaryState:c,map:e,vtLayers:v,resolution:a})}}},{hitTolerance:r,layerFilter:e=>v.includes(e)})}}return s?{type:s.type,coord:s.coord}:null},setLayers:a}},Pe=e=>(t,r)=>{var n=r.context,[o,a]=t;n.beginPath(),n.arc(o,a,10*r.pixelRatio,0,2*Math.PI),n.fillStyle=e,n.fill()},Ve=e=>({vertex:new M({renderer:Pe(e.snapVertex)}),edge:new M({renderer:Pe(e.snapEdge)})}),Ce=new Set(["pointermove","pointerdrag","pointerdown","pointerup","singleclick","click"]),be=new Set(["pointermove","pointerdrag"]),_e=(e,t,r,n)=>{var o=new j({handleEvent:a=>(o.getActive()&&((e,t,r,n,o)=>{var{type:a}=e;if("pointerout"!==a&&"pointerleave"!==a){if(Ce.has(a)){var i=t.query(e.coordinate,n);i&&(e.coordinate=i.coord.slice()),be.has(a)&&o()&&(i?r.show(i.coord,i.type):r.hide())}}else r.hide()})(a,e,t,r,n),!0)});return o},Ee=(e,t,o,a)=>{if(null==t||!t.length)return null;var i=we(e,t),l=((e,t)=>{var o=Ve(t),a=new n,i=new r({source:a,style:e=>{var t;return null!==(t=o[e.get("snapType")])&&void 0!==t?t:null},zIndex:99,updateWhileAnimating:!0,updateWhileInteracting:!0});e.addLayer(i);var l=new D,d=!1;return{show(e,t){l.setGeometry(new A(e)),l.set("snapType",t,!0),d?a.changed():(a.addFeature(l),d=!0)},hide(){d&&(a.clear(),d=!1)},updateColors(e){o=Ve(e),d&&a.changed()},remove(){a.clear(),e.removeLayer(i)}}})(e,o),d=!1,s=_e(i,l,a,()=>d);e.addInteraction(s),s.setActive(!1);var c=!1;return{snapRadius:a,apply(e){if(!c)return e;var t=i.query(e,a);return t?(l.show(t.coord,t.type),t.coord):(l.hide(),e)},hideIndicator(){l.hide()},setIndicatorActive(e){d=e,e||l.hide()},setActive(e){c=e,s.setActive(e),e||l.hide()},setSnapLayers(e){i.setLayers(null==e?t:e)},reattach(){e.removeInteraction(s),e.addInteraction(s)},updateColors(e){l.updateColors(e)},destroy(){e.removeInteraction(s),l.remove()}}},Le=(e,t)=>{var r=e.getPixelFromCoordinate(t);return r?{x:r[0],y:r[1]}:null},ke=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y),Fe=(e,t,r,n)=>{var o=e.getPixelFromCoordinate(t);return o?e.getCoordinateFromPixel([o[0]+r,o[1]+n]):t},Oe=4,Ge=e=>{var{drawInteraction:t,canFinish:r,geom:n,sketchCoords:o,coord:a,lastPlacedCoord:i}=e;if(i&&i[0]===a[0]&&i[1]===a[1])return null!=r&&r()&&t.finishDrawing(),{handled:!0,lastPlacedCoord:null};var l=t.getMap();if(((e,t,r,n)=>{if("Polygon"!==n||r.length<Oe)return!1;var o=Le(e,t),a=Le(e,r[0]);return!(!o||!a)&&ke(o,a)<12})(l,a,o,n.getType()))return t.finishDrawing(),{handled:!0,lastPlacedCoord:i};var d=W(n);if(d){var s=l.getPixelFromCoordinate(d),c=l.getPixelFromCoordinate(a);if(s&&c){var u=s[0]-c[0],p=s[1]-c[1];if(u*u+p*p<4)return{handled:!0,lastPlacedCoord:a}}}return{handled:!1,lastPlacedCoord:i}},De=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),Ae=(e,t)=>{e&&(["touch","keyboard"].includes(t)?e.fixAtCenter():e.hide())},Me=e=>{var{container:t,addVertexButtonId:r,olView:n,onUndo:o,getInterfaceType:i,setInterfaceType:l,clearLastCoord:d,updateRubberbanding:s,placeVertex:c}=e,u=()=>{("mouse"!==i()||null!=n&&n.getAnimating())&&s()};null==n||n.on("change:center",u);var p=e=>{t.contains(document.activeElement)&&(De.has(e.key)?l("keyboard"):("Enter"===e.key&&(e.preventDefault(),l("keyboard"),c()),"z"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),null==o||o())))},v=e=>{r&&e.target.closest("#".concat(r))&&c()},g=e=>{"touch"!==e.pointerType&&(l("mouse"),d())},y=()=>{l("touch")},m=()=>{"mouse"!==i()&&s()};return globalThis.addEventListener("keydown",p),globalThis.addEventListener("click",v),t.addEventListener("pointerdown",g),t.addEventListener("touchstart",y,{passive:!0}),t.addEventListener("pointermove",m),globalThis.addEventListener("keyup",a,{capture:!0}),{destroy(){null==n||n.un("change:center",u),globalThis.removeEventListener("keydown",p),globalThis.removeEventListener("click",v),t.removeEventListener("pointerdown",g),t.removeEventListener("touchstart",y),t.removeEventListener("pointermove",m),globalThis.removeEventListener("keyup",a,{capture:!0})}}},je=e=>{var t,{drawInteraction:r,options:n}=e,{container:o,addVertexButtonId:a,mapProvider:i,snap:l,onUndo:d,canFinish:s,canPlace:c,crossHair:u}=n,p=null!==(t=n.interfaceType)&&void 0!==t?t:"mouse",v=()=>p,g=(e=>{var{drawInteraction:t,mapProvider:r,snap:n,canFinish:o,canPlace:a}=e,i=null,l=null,d=function(){i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,l=null};t.on("drawstart",e=>d(e.feature)),t.on("drawend",()=>d()),t.on("drawabort",()=>d());var s=()=>{var e=r.getCenter();return n?n.apply(e):e};return{placeVertex:()=>{var e=s();if(null==n||n.hideIndicator(),i){var r=i.getGeometry(),d=r.getCoordinates(),c="Polygon"===r.getType()?d[0]||[]:d,u=Ge({drawInteraction:t,canFinish:o,geom:r,sketchCoords:c,coord:e,lastPlacedCoord:l});if(l=u.lastPlacedCoord,u.handled)return}a&&!a(e)||(t.appendCoordinates([e]),l=e)},updateRubberbanding:()=>{if(i){var e=i.getGeometry();e.getCoordinates().length&&((e,t)=>{if("LineString"===e.getType()){var r=[...e.getCoordinates()];r[r.length-1]=t,e.setCoordinates(r)}else if("Polygon"===e.getType()){var n=e.getCoordinates().map((e,r)=>{if(0!==r)return e;var n=[...e];return n[n.length-1]=t,n});e.setCoordinates(n)}})(e,s())}else n&&n.apply(r.getCenter())},clearLastCoord(){l=null}}})({drawInteraction:r,mapProvider:i,snap:l,canFinish:s,canPlace:c}),y=r.getMap(),m=null==y?void 0:y.getView(),h=Me({container:o,addVertexButtonId:a,olView:m,onUndo:d,getInterfaceType:v,setInterfaceType:e=>{p=e,Ae(u,e)},clearLastCoord:g.clearLastCoord,updateRubberbanding:g.updateRubberbanding,placeVertex:g.placeVertex});Ae(u,p),u&&(u.activate=g.placeVertex);var x=()=>{null!=m&&m.getAnimating()&&g.updateRubberbanding()};return null==y||y.on("postrender",x),{getInterfaceType:v,setInterfaceType(e){p=e,Ae(u,e),"mouse"!==e&&g.updateRubberbanding()},destroy(){(null==u?void 0:u.activate)===g.placeVertex&&(u.activate=null),h.destroy(),null==y||y.un("postrender",x)}}},Re="styleschanged",He=(e,t)=>!!t&&J(t.getGeometry()).length>=b[e],Ne=(e,t,r,n)=>o=>{if(!H(o))return!1;var a=r();if(!n(o.coordinate))return!1;if(!a||He(t,a))return!0;var i=W(a.getGeometry());if(!i)return!0;var l=e.getPixelFromCoordinate(i);if(!l)return!0;var d=o.pixel[0]-l[0],s=o.pixel[1]-l[1];return d*d+s*s>4},Ue={Polygon:2,LineString:1},Be=(e,t)=>{var{manager:r,featureId:n,properties:o,onStart:a,onSketchChange:i}=t;e.on("drawstart",e=>{a(e.feature),e.feature.getGeometry().on("change",i)}),e.on("drawend",e=>((e,t,r,n)=>{t.setId(String(r)),t.setProperties(n),e.store.source.addFeature(t),e.emit(C.CREATE,e.store.toGeoJSON(t))})(r,e.feature,n,o)),e.on("drawabort",()=>{r.emit(C.CANCEL)})},ze=e=>{var{map:t,manager:r,options:n}=e,{geometryType:o,featureId:a,properties:d={}}=n,s=null,c=!1,u=r.styles.createSketchStyle(o),{updateVertexCount:p,resetCount:v,emitUndoValidation:g}=((e,t)=>{var r=0,n=(r,n)=>{setTimeout(()=>{var o,a,i,l,d,s,c=t();c&&e.emit(C.GEOMETRY_CHANGE,{feature:(o=e.store,a=c,i=o.toGeoJSON(a),l=i.geometry.type,d=Ue[l],s=("Polygon"===l?i.geometry.coordinates[0]:i.geometry.coordinates).slice(0,-d),{type:"Feature",geometry:"Polygon"===l?{type:"Polygon",coordinates:[s]}:{type:"LineString",coordinates:s},properties:i.properties}),phase:r,vertexIndex:n})},0)};return{resetCount:()=>{r=0},updateVertexCount:()=>{var o=t();if(o){var a=J(o.getGeometry()).length;e.emit(C.VERTEX_CHANGE,{numVertices:a}),a>r&&n("commit-add",a-1),r=a}},emitUndoValidation:()=>{var e=t();e&&n("commit-delete",J(e.getGeometry()).length)}}})(r,()=>s),y=(e=>{var{manager:t,geometryType:r,getSketch:n}=e;return e=>{var o=n(),a=_({placed:o?J(o.getGeometry()):[],point:e,geometryType:r,onGeometryChange:t._geometryValidator});return a.valid||t.emit(C.PLACEMENT_BLOCKED,a.blocked),a.valid}})({manager:r,geometryType:o,getSketch:()=>s}),m=new R({type:o,style:e=>u(e),stopClick:!0,snapTolerance:V.snapRadius,condition:Ne(t,o,()=>s,y),finishCondition:()=>!1!==r._geometryValid});t.addInteraction(m);var h=i({onChange:e=>{c=e,u=r.styles.createSketchStyle(o,c),m.overlay_.changed()}}),x=l({onStrokeChange:(e,t)=>h.set(e,t),onPlaceChange:(e,t)=>r.emit(C.CAN_PLACE_CHANGE,{canPlace:!e,reason:t})}),f=E[o],S=()=>{if(s){var{feature:e,numVertices:t}=((e,t)=>{var r,n=t.getGeometry(),o=n.getCoordinates(),a="Polygon"===e?null!==(r=o[0])&&void 0!==r?r:[]:o;return{feature:{type:"Feature",geometry:"Polygon"===e?{type:"Polygon",coordinates:[a]}:{type:"LineString",coordinates:a}},numVertices:J(n).length}})(o,s);x.update({feature:e,context:{mode:f},numVertices:t,onGeometryChange:r._geometryValidator})}},I=()=>{u=r.styles.createSketchStyle(o,c),m.overlay_.changed()};r.on(Re,I),m.overlay_.updateWhileAnimating_=!0,Be(m,{manager:r,featureId:a,properties:d,onStart:e=>{s=e,v()},onSketchChange:()=>{p(),S()}});var T=(e=>{var{drawInteraction:t,options:r,geometryType:n,getSketch:o,updateVertexCount:a,emitUndoValidation:i,canPlaceVertex:l}=e;return je({drawInteraction:t,options:{container:r.container,interfaceType:r.interfaceType,addVertexButtonId:r.addVertexButtonId,mapProvider:r.mapProvider,snap:r.snap,crossHair:r.crossHair,onUndo:()=>{t.removeLastPoint(),a(),i()},canFinish:()=>He(n,o()),canPlace:l}})})({drawInteraction:m,options:n,geometryType:o,getSketch:()=>s,updateVertexCount:p,emitUndoValidation:g,canPlaceVertex:y});return(e=>{var{map:t,manager:r,drawInteraction:n,input:o,geometryType:a,getSketch:i,updateVertexCount:l,emitUndoValidation:d,onStylesChanged:s,clearSketch:c,setInvalid:u,liveStroke:p,liveDrawChecks:v}=e;return{done(){He(a,i())&&n.finishDrawing()},cancel(){n.abortDrawing()},undo(){n.removeLastPoint(),l(),d()},setInvalid:u,setInterfaceType(e){o.setInterfaceType(e)},setDrawingPreviewProperty(e,t){var r=i();r&&(r.set(e,t),n.overlay_.changed())},destroy(){p.destroy(),v.destroy(),r.off(Re,s),r.emit(C.INTERFACE_TYPE_CHANGE,{interfaceType:o.getInterfaceType()}),o.destroy(),t.removeInteraction(n),c()}}})({map:t,manager:r,drawInteraction:m,input:T,geometryType:o,getSketch:()=>s,updateVertexCount:p,emitUndoValidation:g,onStylesChanged:I,clearSketch:()=>{s=null},setInvalid:e=>h.set(e),liveStroke:h,liveDrawChecks:x})},Ye=e=>{if(null==e||!e.coordinates)return[];switch(e.type){case"LineString":return e.coordinates;case"Polygon":return e.coordinates.flatMap(e=>e.slice(0,-1));case"MultiLineString":return e.coordinates.flat(1);case"MultiPolygon":return e.coordinates.flatMap(e=>e.flatMap(e=>e.slice(0,-1)));default:return[]}},qe=e=>{if(null==e||!e.coordinates)return[];var t=[],r=0;switch(e.type){case"LineString":t.push({start:0,length:e.coordinates.length,path:[],closed:!1});break;case"Polygon":e.coordinates.forEach((e,n)=>{var o=e.length-1;t.push({start:r,length:o,path:[n],closed:!0}),r+=o});break;case"MultiLineString":e.coordinates.forEach((e,n)=>{t.push({start:r,length:e.length,path:[n],closed:!1}),r+=e.length});break;case"MultiPolygon":e.coordinates.forEach((e,n)=>{e.forEach((e,o)=>{var a=e.length-1;t.push({start:r,length:a,path:[n,o],closed:!0}),r+=a})})}return t},Ke=(e,t)=>{for(var r of e)if(t>=r.start&&t<r.start+r.length)return{segment:r,localIdx:t-r.start};return null},Xe=(e,t)=>{var r=e.coordinates;for(var n of t)r=r[n];return r},Je=e=>{var t=Ye(e),r=qe(e);if(!t.length||!r.length)return[];var n=[];for(var o of r)for(var a=o.closed?o.length:o.length-1,i=0;i<a;i++){var l=o.start+i,d=o.start+(i+1)%o.length,[s,c]=t[l],[u,p]=t[d];n.push([(s+u)/2,(c+p)/2])}return n},We=(e,t)=>{var o=new n,a=new r({source:o,zIndex:103});e.addLayer(a);return{update(e){if(o.clear(),!(e.selectedVertexIndex<0)){var{coord:r,style:n}=(e=>{var{selectedVertexIndex:r,selectedVertexType:n,vertices:o,midpoints:a}=e,i=t();return"vertex"===n?{coord:o[r],style:i.selectedVertexStyle}:"midpoint"===n?{coord:a[r-o.length],style:i.selectedMidpointStyle}:{coord:null,style:null}})(e);if(r){var a=new D({geometry:new A(r)});a.setStyle(n),o.addFeature(a)}}},remove(){o.clear(),e.removeLayer(a)}}},Ze=e=>{var{map:t,manager:r,store:n,olFeature:o,interfaceType:a,layers:i}=e,{vertexLayer:l,midpointLayer:d,activeLayer:s}=i,c={olFeature:o,selectedVertexIndex:-1,selectedVertexType:null,vertices:[],midpoints:[],interfaceType:null!=a?a:"mouse"},u={onDeselect:null,onUpdate:null},p=()=>{var e=o.getGeometry();return{type:e.getType(),coordinates:e.getCoordinates()}},v=()=>((e,t)=>{var r,{vertexLayer:n,midpointLayer:o,activeLayer:a,manager:i,hooks:l}=t;n.setSelected("vertex"===e.selectedVertexType?e.selectedVertexIndex:-1),o.setSelected("midpoint"===e.selectedVertexType?e.selectedVertexIndex-e.vertices.length:-1),e.selectedVertexIndex<0&&(null===(r=l.onDeselect)||void 0===r||r.call(l)),a.update(e),i.emit(C.VERTEX_SELECTION,{index:"vertex"===e.selectedVertexType?e.selectedVertexIndex:-1,numVertices:e.vertices.length})})(c,{vertexLayer:l,midpointLayer:d,activeLayer:s,manager:r,hooks:u}),g=()=>{var e=p();c.vertices=Ye(e),c.midpoints=Je(e),d.update(e),l.update(e),s.update(c)},y=((e,t,r)=>(n,o)=>{n&&setTimeout(()=>{e.emit(C.GEOMETRY_CHANGE,{feature:t.toGeoJSON(r),phase:n,vertexIndex:o})},0)})(r,n,o),m=()=>g();return o.getGeometry().on("change",m),{state:c,getState:()=>c,setState:e=>{var r,n;Object.assign(c,e),void 0!==e.selectedVertexIndex&&v(),void 0!==e.vertices&&(n=p(),d.update(n),l.update(n),c.midpoints=d.getCoords(),s.update(c),null===(r=u.onUpdate)||void 0===r||r.call(u),t.render())},syncGeom:()=>{g(),r.emit(C.VERTEX_CHANGE,{numVertices:c.vertices.length}),r.emit(C.UPDATE,n.toGeoJSON(o))},emitGeometryValidation:y,updateLayersFromGeom:g,setHooks:e=>{var{onDeselect:t,onUpdate:r}=e;return Object.assign(u,{onDeselect:t,onUpdate:r})},destroy(){o.getGeometry().un("change",m)}}},Qe=function(e,t,r,n){var o,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:12;return null!==(o=function(e,t,r){var n=-1,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:12;return t.forEach((t,a)=>{var i=Le(e,t);if(i){var l=ke(i,r);l<o&&(o=l,n=a)}}),n>=0?{index:n,type:"vertex"}:null}(e,t,n,a))&&void 0!==o?o:function(e,t,r,n){var o=-1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:12;return t.forEach((t,n)=>{var i=Le(e,t);if(i){var l=ke(i,r);l<a&&(a=l,o=n)}}),o>=0?{index:n+o,type:"midpoint"}:null}(e,r,n,t.length,a)},$e=(e,t)=>{if(t.length>e.length){var r=t.findIndex((t,r)=>{var n;return t[0]!==(null===(n=e[r])||void 0===n?void 0:n[0])});return{type:"insert_vertex",vertexIndex:Math.max(0,r)}}if(t.length===e.length){var n=t.findIndex((t,r)=>t[0]!==e[r][0]||t[1]!==e[r][1]);if(n>=0)return{type:"move_vertex",vertexIndex:n,previousCoord:e[n]}}return null},et=e=>{var{map:t,olFeature:r,getState:n,onModifyEnd:o,condition:a}=e,i=null!=a?a:(e=>{var{map:t,getState:r}=e;return e=>{var{interfaceType:n,vertices:o,midpoints:a}=r();if("touch"===n)return!1;var i=t.getEventPixel(e.originalEvent);return null!==Qe(t,o,a,{x:i[0],y:i[1]})}})({map:t,getState:n}),l=new N({features:new U([r]),style:()=>[],pixelTolerance:12,condition:i});t.addInteraction(l);var d=null;return l.on("modifystart",()=>{"touch"!==n().interfaceType&&(d=n().vertices.map(e=>[...e]))}),l.on("modifyend",()=>{if("touch"!==n().interfaceType){var e=d;d=null,o(e)}}),{destroy(){t.removeInteraction(l)}}},tt=(e,t,r,n)=>{var o=r-n,a=t[o];if(!a)return null;var i=e.getGeometry(),l={type:i.getType(),coordinates:i.getCoordinates()},d=qe(l),s=0;for(var c of d){var u=c.closed?c.length:c.length-1;if(o<s+u){var p=o-s+1,v=c.start+p;return Xe(l,c.path).splice(p,0,[...a]),i.setCoordinates(l.coordinates),{insertedIndex:v}}s+=u}return null},rt=(e,t,r)=>{var n=e.getGeometry(),o={type:n.getType(),coordinates:n.getCoordinates()},a=qe(o),i=Ke(a,t);if(i){var l=Xe(o,i.segment.path);l[i.localIdx]=[...r],i.segment.closed&&0===i.localIdx&&(l[l.length-1]=[...r]),n.setCoordinates(o.coordinates)}};function nt(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 ot(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?nt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):nt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var at=(e,t)=>{var{getState:r,onVertexMoved:n,drag:o,updateTargetPosition:a}=t;if(null==o.dragStartIndex)return((e,t)=>{var{map:r,getState:n,onTap:o,drag:a}=t;if(a.tapStart&&!a.tapStart.onTarget&&0!==e.changedTouches.length){var i=e.changedTouches[0],l=Date.now()-a.tapStart.time;if(Math.hypot(i.clientX-a.tapStart.x,i.clientY-a.tapStart.y)<10&&l<400){var d=r.getEventPixel({clientX:i.clientX,clientY:i.clientY}),s=n();null==o||o(Qe(r,s.vertices,s.midpoints,{x:d[0],y:d[1]},24)),e.preventDefault()}}})(e,t),void(o.tapStart=null);o.tapStart=null;var{vertices:i}=r();i[o.dragStartIndex]&&o.dragStartCoord&&n({vertexIndex:o.dragStartIndex,previousCoord:o.dragStartCoord}),o.dragStartCoord=null,o.dragStartIndex=null,o.vertexTouchDelta=null,o.targetTouchDelta=null,a(),e.preventDefault()},it=e=>{var{container:t}=e,r={dragStartCoord:null,dragStartIndex:null,vertexTouchDelta:null,targetTouchDelta:null,tapStart:null},n=ot(ot({},e),{},{drag:r}),o=e=>((e,t)=>{var{map:r,targetEl:n,cssToOl:o,getState:a,drag:i}=t,l=e.touches[0],d=p(e.target);if(i.tapStart={x:l.clientX,y:l.clientY,time:Date.now(),onTarget:d},d){var{selectedVertexIndex:s,vertices:c}=a(),u=c[s];if(u){var v=r.getEventPixel({clientX:l.clientX,clientY:l.clientY}),g=Le(r,u),y=getComputedStyle(n),m=o({x:Number.parseFloat(y.left),y:Number.parseFloat(y.top)});i.dragStartCoord=[...u],i.dragStartIndex=s,i.vertexTouchDelta={x:v[0]-g.x,y:v[1]-g.y},i.targetTouchDelta={x:v[0]-m.x,y:v[1]-m.y},e.preventDefault()}}})(e,n),a=e=>((e,t)=>{var{map:r,targetEl:n,olToCSS:o,getState:a,setState:i,snap:l,drag:d,moveCoord:s}=t;if(p(e.target)&&null!=d.dragStartIndex){e.preventDefault();var c=r.getEventPixel({clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}),v=((e,t)=>e.getCoordinateFromPixel([t.x,t.y]))(r,{x:c[0]-d.vertexTouchDelta.x,y:c[1]-d.vertexTouchDelta.y}),g=l?l.apply(v):v,{olFeature:y,vertices:m}=a();y&&(s(y,d.dragStartIndex,g),i({vertices:m.map((e,t)=>t===d.dragStartIndex?g:e)}),u(n,o({x:c[0]-d.targetTouchDelta.x,y:c[1]-d.targetTouchDelta.y})))}})(e,n),i=e=>at(e,n);return t.addEventListener("touchstart",o,{passive:!1}),t.addEventListener("touchmove",a,{passive:!1}),t.addEventListener("touchend",i,{passive:!1}),t.addEventListener("touchcancel",i,{passive:!1}),{isDragging:()=>null!=r.dragStartIndex,destroy(){t.removeEventListener("touchstart",o),t.removeEventListener("touchmove",a),t.removeEventListener("touchend",i),t.removeEventListener("touchcancel",i)}}},lt=e=>{var{map:t,container:r,getState:n,setState:o,onVertexMoved:a,onTap:i,colors:l,snap:p,moveCoord:v=rt}=e,g=d(r);s(g,l);var y={scale:1,ox:0,oy:0},m=e=>({x:e.x*y.scale+y.ox,y:e.y*y.scale+y.oy}),h=()=>{var e=t.getViewport(),n=e.getBoundingClientRect(),o=r.getBoundingClientRect(),a=e.offsetWidth>0?n.width/e.offsetWidth:1,i=r.offsetWidth>0?o.width/r.offsetWidth:1;Object.assign(y,{scale:a/i,ox:(n.left-o.left)/i,oy:(n.top-o.top)/i})},x=()=>{var{selectedVertexIndex:e,vertices:r,interfaceType:o}=n();if(e<0||!r[e]||"touch"!==o)c(g);else{var a=Le(t,r[e]);a?u(g,m(a)):c(g)}},f=it({container:r,map:t,targetEl:g,olToCSS:m,cssToOl:e=>({x:(e.x-y.ox)/y.scale,y:(e.y-y.oy)/y.scale}),getState:n,setState:o,onVertexMoved:a,onTap:i,snap:p,moveCoord:v,updateTargetPosition:x}),S=()=>{var{selectedVertexIndex:e,interfaceType:t}=n();e>=0&&!f.isDragging()&&"touch"===t&&x()};t.on("postrender",S);var I=()=>{h(),t.once("postrender",x)};return t.on("change:size",I),h(),{updateTargetPosition:x,updateColors(e){s(g,e)},hide(){c(g)},destroy(){t.un("change:size",I),t.un("postrender",S),f.destroy(),c(g)}}},dt=e=>{var{map:t,snap:r,getState:n,setState:o,onInserted:a,onVertexMoved:i,moveCoord:l=rt}=e,d={start:null,index:null},s=(e,a)=>{var{selectedVertexIndex:i,vertices:d,olFeature:s}=n();if(!s||i<0||!d[i])return null;var c=d[i],u=Fe(t,c,e,a),p=r?r.apply(u):u,v=((e,t,r,n,o,a,i)=>{if(!e)return o;var l=[n[0]-r[0],n[1]-r[1]],d=[o[0]-r[0],o[1]-r[1]],s=l[0]**2+l[1]**2;if(s>0&&(d[0]*l[0]+d[1]*l[1])/s<.5){var c=e.snapRadius+1;return Fe(t,r,0===a?0:Math.sign(a)*c,0===i?0:Math.sign(i)*c)}return o})(r,t,c,u,p,e,a);return r&&v!==p&&r.hideIndicator(),l(s,i,v),o({vertices:d.map((e,t)=>t===i?v:e)}),{previousCoord:c,vertexIndex:i}};return{nudge:e=>{var{selectedVertexIndex:i,selectedVertexType:l,vertices:c,midpoints:u,olFeature:p}=n();if(p){var v=e.shiftKey?L.nudgeAmount:L.stepAmount,g={ArrowUp:[0,-v],ArrowDown:[0,v],ArrowLeft:[-v,0],ArrowRight:[v,0]},[y,m]=g[e.key];"midpoint"!==l?i<0||!c[i]||(d.start||(d.start=[...c[i]],d.index=i),s(y,m)):((e,i,l,s,c,u)=>{var p=tt(e,i,l,s.length);if(p){a({insertedIndex:p.insertedIndex});var v=n().vertices,g=v[p.insertedIndex];if(g){d.start=[...g],d.index=p.insertedIndex;var y=Fe(t,g,c,u),m=r?r.apply(y):y;rt(e,p.insertedIndex,m),o({selectedVertexIndex:p.insertedIndex,selectedVertexType:"vertex",vertices:v.map((e,t)=>t===p.insertedIndex?m:e)})}}})(p,u,i,c,y,m)}},keyMove:d,nudgeByDelta:(e,t,r)=>{var n=r?L.stepAmount:L.nudgeAmount,o=s(e*n,t*n);o&&i({vertexIndex:o.vertexIndex,previousCoord:o.previousCoord})}}},st=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),ct=new Set(["INPUT","TEXTAREA","BUTTON","SELECT","A"]),ut=e=>{var{map:t,getState:r,setState:n,nudge:o,keyMove:a,onUndo:i,onKeyboardActive:l,isFocused:d}=e,s=e=>{e.altKey?(e.preventDefault(),e.stopPropagation(),((e,t,r,n)=>{var{selectedVertexIndex:o,vertices:a,midpoints:i}=r();if(a.length){var l,d=[...a,...i].map(e=>Le(t,e)).filter(Boolean).map(e=>[e.x,e.y]),s=o>=0?d[o]:(l=Le(t,t.getView().getCenter()))?[l.x,l.y]:null;if(s){var c=v(s,d,e);n({selectedVertexIndex:c,selectedVertexType:c<a.length?"vertex":"midpoint"})}}})(e.key,t,r,n)):r().selectedVertexIndex>=0&&(e.preventDefault(),e.stopPropagation(),o(e))},c=e=>{if(null==l||l()," "===e.key)e.preventDefault(),r().selectedVertexIndex<0&&((e,t,r)=>{var{vertices:n,midpoints:o}=t();if(n.length){var a=Le(e,e.getView().getCenter());if(a){var i=[...n.map(t=>Le(e,t)),...o.map(t=>Le(e,t))].filter(Boolean).map(e=>[e.x,e.y]),l=v([a.x,a.y],i,void 0);r({selectedVertexIndex:l,selectedVertexType:l<n.length?"vertex":"midpoint"})}}})(t,r,n);else if(st.has(e.key))s(e);else if("z"===e.key&&(e.metaKey||e.ctrlKey)){var o,a=null===(o=document.activeElement)||void 0===o?void 0:o.tagName;ct.has(a)||(e.preventDefault(),e.stopPropagation(),i())}};return e=>{d()||("Escape"===e.key&&r().selectedVertexIndex>=0?(e.preventDefault(),a.start=null,a.index=null,n({selectedVertexIndex:-1,selectedVertexType:null})):c(e))}},pt=e=>{var t,{map:r,snap:n,getState:o,setState:i,onVertexMoved:l,onInserted:d,onDeleted:s,onUndo:c,onKeyboardActive:u,moveCoord:p}=e,{nudge:v,keyMove:g,nudgeByDelta:y}=dt({map:r,snap:n,getState:o,setState:i,onInserted:d,onVertexMoved:l,moveCoord:p}),m=null!==(t=r.getViewport().closest('[role="application"]'))&&void 0!==t?t:r.getViewport(),h=()=>(e=>{var t=document.activeElement;return!(!t||t===document.body)&&!e.contains(t)&&(ct.has(t.tagName)||t.isContentEditable||t.hasAttribute("tabindex"))})(m),x=ut({map:r,getState:o,setState:i,nudge:v,keyMove:g,onUndo:c,onKeyboardActive:u,isFocused:h}),f=(e=>{var{getState:t,keyMove:r,onVertexMoved:n,onDeleted:o,isFocused:i}=e;return e=>{i()||(t().selectedVertexIndex>=0&&a(e),st.has(e.key)&&r.start&&null!=r.index&&(n({vertexIndex:r.index,previousCoord:r.start}),r.start=null,r.index=null),"Delete"===e.key&&o())}})({getState:o,keyMove:g,onVertexMoved:l,onDeleted:s,isFocused:h});return globalThis.addEventListener("keydown",x,{capture:!0}),globalThis.addEventListener("keyup",f,{capture:!0}),{nudgeByDelta:y,destroy(){globalThis.removeEventListener("keydown",x,{capture:!0}),globalThis.removeEventListener("keyup",f,{capture:!0})}}},vt=(e,t)=>{switch(t.type){case"move_vertex":return((e,t)=>{var{vertexIndex:r,previousCoord:n}=t,o=e.getGeometry(),a={type:o.getType(),coordinates:o.getCoordinates()},i=qe(a),l=Ke(i,r);if(!l)return-1;var d=Xe(a,l.segment.path);return d[l.localIdx]=[...n],l.segment.closed&&0===l.localIdx&&(d[d.length-1]=[...n]),o.setCoordinates(a.coordinates),r})(e,t);case"insert_vertex":return((e,t)=>{var{vertexIndex:r}=t,n=e.getGeometry(),o={type:n.getType(),coordinates:n.getCoordinates()},a=qe(o),i=Ke(a,r);if(i){var l=Xe(o,i.segment.path);l.splice(i.localIdx,1),i.segment.closed&&(l[l.length-1]=[...l[0]]),n.setCoordinates(o.coordinates)}return-1})(e,t);case"delete_vertex":return((e,t)=>{var{vertexIndex:r,deletedCoord:n}=t,o=e.getGeometry(),a={type:o.getType(),coordinates:o.getCoordinates()},i=qe(a),l=Ke(i,r);if(!l)for(var d of i)if(r===d.start+d.length){l={segment:d,localIdx:d.length};break}if(!l)return-1;var s=Xe(a,l.segment.path);return s.splice(l.localIdx,0,[...n]),l.segment.closed&&(s[s.length-1]=[...s[0]]),o.setCoordinates(a.coordinates),r})(e,t);default:return-1}},gt="touch",yt="vertex",mt="commit-move",ht="commit-insert",xt="commit-delete",ft={move_vertex:mt,insert_vertex:ht,delete_vertex:xt},St={move_vertex:mt,insert_vertex:xt,delete_vertex:ht},It=e=>{var{olFeature:t,undoStack:r,selection:n,getTouchHandler:o}=e,{state:a,setState:i,syncGeom:l,emitGeometryValidation:d}=n;return{doDeleteVertex:()=>{if(!(a.selectedVertexType!==yt||a.selectedVertexIndex<0)){var e=((e,t)=>{var r=e.getGeometry(),n={type:r.getType(),coordinates:r.getCoordinates()},o=Ye(n),a=qe(n),i=Ke(a,t);if(!i)return null;var{segment:l}=i,d=l.closed?b.Polygon:b.LineString;if(l.length<=d)return null;var s=[...o[t]],c=Xe(n,l.path);return c.splice(i.localIdx,1),l.closed&&(c[c.length-1]=[...c[0]]),r.setCoordinates(n.coordinates),{deletedIndex:t,deletedCoord:s}})(t,a.selectedVertexIndex);e&&(r.push({type:"delete_vertex",vertexIndex:e.deletedIndex,deletedCoord:e.deletedCoord}),l(),d(xt,e.deletedIndex),i({selectedVertexIndex:-1,selectedVertexType:null}))}},doUndo:()=>{var e=r.pop();if(e){var n=a.selectedVertexIndex,s=vt(t,e);l(),d(St[e.type],s);var c=n>=0?s:-1;i({selectedVertexIndex:c,selectedVertexType:c>=0?yt:null}),n>=0&&c>=0&&a.interfaceType===gt&&o().updateTargetPosition()}}}},Tt=e=>{var{map:t,manager:o,options:a}=e,{featureId:l,container:d,interfaceType:s,deleteVertexButtonId:c,snap:u}=a,{store:p,undoStack:v}=o,g=p.getOL(l);if(!g)return null;var y=g.getStyle(),m=((e,t)=>{var o=t,a=-1,i=new n,l=new r({source:i,style:e=>e.get("midpointIndex")===a?null:[o],zIndex:101});return e.addLayer(l),{update(e){i.clear();var t=Je(e).map((e,t)=>{var r=new D({geometry:new A(e)});return r.set("midpointIndex",t),r});i.addFeatures(t)},setSelected(e){a=e,i.changed()},updateStyle(e){o=e,i.changed()},getCoords:()=>i.getFeatures().sort((e,t)=>e.get("midpointIndex")-t.get("midpointIndex")).map(e=>e.getGeometry().getCoordinates()),remove(){i.clear(),e.removeLayer(l)}}})(t,o.styles.midpointStyle),h=((e,t)=>{var o=t,a=-1,i=new n,l=new r({source:i,style:e=>e.get("vertexIndex")===a?null:[o],zIndex:102});return e.addLayer(l),{update(e){i.clear(),Ye(e).forEach((e,t)=>{var r=new D({geometry:new A(e)});r.set("vertexIndex",t),i.addFeature(r)})},setSelected(e){a=e,i.changed()},updateStyle(e){o=e,i.changed()},remove(){i.clear(),e.removeLayer(l)}}})(t,o.styles.vertexStyle),x=We(t,()=>o.styles),f=Ze({map:t,manager:o,store:p,olFeature:g,interfaceType:s,layers:{vertexLayer:h,midpointLayer:m,activeLayer:x}}),{state:S,getState:I,setState:T,syncGeom:w,emitGeometryValidation:P}=f,V=et({map:t,olFeature:g,getState:I,onModifyEnd(e){w();var t=e&&$e(e,S.vertices);t&&(v.push(t),P(ft[t.type],t.vertexIndex),T({selectedVertexIndex:t.vertexIndex,selectedVertexType:yt}))}});w();var b={vertexLayer:h,midpointLayer:m,activeLayer:x},_=(e=>{var{map:t,manager:r,olFeature:n}=e,o=!1;n.setStyle(()=>o?r.styles.editFeatureStyleInvalid:r.styles.editFeatureStyle);var a=i({onChange:(e,n)=>{o=e,t.render(),r.emit(C.VALIDITY_CHANGE,{valid:!e,reason:n})}}),l=()=>{var e,t,o=n.getGeometry(),i=o.getType(),l=o.getCoordinates(),d="Polygon"===i?Math.max(0,(null!==(e=null===(t=l[0])||void 0===t?void 0:t.length)&&void 0!==e?e:1)-1):l.length;a.update({feature:{type:"Feature",geometry:{type:i,coordinates:l}},context:{mode:"edit_vertex"},numVertices:d,onGeometryChange:r._geometryValidator})};return n.getGeometry().on("change",l),{liveStroke:a,destroy(){n.getGeometry().un("change",l),a.destroy()}}})({map:t,manager:o,olFeature:g}),E=(e=>{var{map:t,container:r,manager:n,snap:o,olFeature:a,undoStack:i,selection:l}=e,{state:d,getState:s,setState:c,syncGeom:u,emitGeometryValidation:p}=l,v=e=>c({selectedVertexIndex:e,selectedVertexType:yt}),g=lt({map:t,container:r,getState:s,setState:c,colors:n.colors,snap:o,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;i.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),u(),p(mt,t),v(t),g.updateTargetPosition()},onTap(e){if(e){if(e.type===yt)return v(e.index),void g.updateTargetPosition();var t=tt(a,d.midpoints,e.index,d.vertices.length);t&&(i.push({type:"insert_vertex",vertexIndex:t.insertedIndex}),u(),p(ht,t.insertedIndex),v(t.insertedIndex),g.updateTargetPosition())}else c({selectedVertexIndex:-1,selectedVertexType:null})}});return l.setHooks({onDeselect:()=>g.hide(),onUpdate(){d.interfaceType===gt&&g.updateTargetPosition()}}),g})({map:t,container:d,manager:o,snap:u,olFeature:g,undoStack:v,selection:f}),L=It({olFeature:g,undoStack:v,selection:f,getTouchHandler:()=>E}),k=(e=>{var{map:t,container:r,snap:n,undoStack:o,selection:a,touchHandler:i,actions:l}=e,{state:d,getState:s,setState:c,syncGeom:u,emitGeometryValidation:p}=a;return pt({map:t,getState:s,setState:c,snap:n,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;o.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),u(),p(mt,t),c({selectedVertexIndex:t,selectedVertexType:yt})},onInserted(e){var{insertedIndex:t}=e;o.push({type:"insert_vertex",vertexIndex:t}),u(),p(ht,t)},onDeleted:l.doDeleteVertex,onUndo:l.doUndo,onKeyboardActive(){"keyboard"!==d.interfaceType&&(d.interfaceType="keyboard",i.hide(),r.focus({preventScroll:!0}))}})})({map:t,container:d,snap:u,undoStack:v,selection:f,touchHandler:E,actions:L}),F=(e=>{var{map:t,container:r,getState:n,setState:o,touchHandler:a,deleteVertexButtonId:i,onDeleteVertex:l}=e,d=e=>{var{vertices:r,midpoints:o}=n(),a=t.getEventPixel(e);return Qe(t,r,o,{x:a[0],y:a[1]})},s=e=>{var t=n();if("touch"===e.pointerType)return t.interfaceType="touch",void a.updateTargetPosition();t.interfaceType="mouse";var r=d(e);"vertex"===(null==r?void 0:r.type)&&o({selectedVertexIndex:r.index,selectedVertexType:"vertex"})},c=e=>{if("touch"!==n().interfaceType){var t=d(e);"vertex"===(null==t?void 0:t.type)?o({selectedVertexIndex:t.index,selectedVertexType:"vertex"}):"midpoint"===(null==t?void 0:t.type)||o({selectedVertexIndex:-1,selectedVertexType:null})}},u=e=>{var t=n();"mouse"===e.pointerType&&"mouse"!==t.interfaceType&&(t.interfaceType="mouse",a.hide())},p=e=>{i&&e.target.closest("#".concat(i))&&l()};return r.addEventListener("pointerdown",s),r.addEventListener("pointerenter",u),r.addEventListener("pointermove",u),r.addEventListener("click",c),globalThis.addEventListener("click",p),{destroy(){r.removeEventListener("pointerdown",s),r.removeEventListener("pointerenter",u),r.removeEventListener("pointermove",u),r.removeEventListener("click",c),globalThis.removeEventListener("click",p)}}})({map:t,container:d,getState:I,setState:T,touchHandler:E,deleteVertexButtonId:c,onDeleteVertex:L.doDeleteVertex}),O=(e=>{var{map:t,manager:r,layers:n,selection:o,touchHandler:a,live:i}=e,{state:l}=o,d=e=>{i.liveStroke.refresh(),n.vertexLayer.updateStyle(e.vertexStyle),n.midpointLayer.updateStyle(e.midpointStyle),n.activeLayer.update(l),a.updateColors(r.colors)};r.on(Re,d);var s=()=>{l.interfaceType!==gt||l.selectedVertexIndex<0||t.once("postrender",()=>a.updateTargetPosition())};return t.on("change:size",s),{destroy(){r.off(Re,d),t.un("change:size",s)}}})({map:t,manager:o,layers:b,selection:f,touchHandler:E,live:_});return(e=>{var{manager:t,store:r,olFeature:n,originalFeatureStyle:o,selection:a,actions:i,parts:l,undoStack:d}=e,{state:s,setState:c,syncGeom:u,emitGeometryValidation:p}=a,{touchHandler:v}=l;return{setInterfaceType(e){e!==s.interfaceType&&(s.interfaceType=e,e===gt?v.updateTargetPosition():v.hide())},done(){t.emit(C.EDIT_FINISH,r.toGeoJSON(n))},setInvalid(e){l.live.liveStroke.set(e)},cancel(){},undo:i.doUndo,deleteVertex:i.doDeleteVertex,nudgeSelectedVertex:l.keyboardHandler.nudgeByDelta,getVertexItems:()=>({vertices:s.vertices,midpoints:s.midpoints}),selectVertex(e){c({selectedVertexIndex:e,selectedVertexType:e<s.vertices.length?yt:"midpoint"}),v.updateTargetPosition()},insertVertexAtMidpoint(e){var t=tt(n,s.midpoints,e,s.vertices.length);t&&(d.push({type:"insert_vertex",vertexIndex:t.insertedIndex}),u(),p(ht,t.insertedIndex),c({selectedVertexIndex:t.insertedIndex,selectedVertexType:yt}),v.updateTargetPosition())},destroy(){l.live.destroy(),n.setStyle(o),a.destroy(),l.mapSync.destroy(),l.pointerHandlers.destroy(),l.modify.destroy(),l.layers.activeLayer.remove(),l.layers.midpointLayer.remove(),l.layers.vertexLayer.remove(),v.destroy(),l.keyboardHandler.destroy()}}})({manager:o,store:p,olFeature:g,originalFeatureStyle:y,selection:f,actions:L,undoStack:v,parts:{touchHandler:E,keyboardHandler:k,pointerHandlers:F,modify:V,mapSync:O,layers:b,live:_}})},wt=["selectedVertexIndex","selectedVertexType"],Pt=e=>{var{manager:t,store:r,olFeature:n,interfaceType:o}=e,a={olFeature:n,selectedVertexIndex:0,selectedVertexType:"vertex",vertices:[],midpoints:[],interfaceType:null!=o?o:"mouse"},i={onUpdate:null},l=()=>{a.vertices=[n.getGeometry().getCoordinates()]},d=((e,t,r)=>(n,o)=>{n&&setTimeout(()=>{e.emit(C.GEOMETRY_CHANGE,{feature:t.toGeoJSON(r),phase:n,vertexIndex:o})},0)})(t,r,n),s=()=>l();return n.getGeometry().on("change",s),l(),t.emit(C.VERTEX_SELECTION,{index:0,numVertices:1}),{state:a,getState:()=>a,setState:e=>{var t,{selectedVertexIndex:r,selectedVertexType:n}=e,o=B(e,wt);(Object.assign(a,o),void 0!==e.vertices)&&(null===(t=i.onUpdate)||void 0===t||t.call(i))},syncGeom:()=>{l(),t.emit(C.UPDATE,r.toGeoJSON(n))},emitGeometryValidation:d,setHooks:e=>{var{onUpdate:t}=e;i.onUpdate=t},destroy(){n.getGeometry().un("change",s)}}},Vt=(e,t,r)=>{e.getGeometry().setCoordinates([...r])},Ct="touch",bt="commit-move",_t=e=>{var{map:t,olFeature:r}=e;return e=>{var n=t.getEventPixel(e.originalEvent);return!!t.forEachFeatureAtPixel(n,e=>e===r,{hitTolerance:12})}},Et=e=>{var{map:t,manager:r,options:n}=e,{featureId:o,container:a,interfaceType:l,snap:d}=n,{store:s,undoStack:c}=r,u=s.getOL(o);if(!u)return null;null==a||a.focus({preventScroll:!0});var p=u.getStyle();u.setStyle(()=>r.styles.selectedPointStyleFor(u));var v=Pt({manager:r,store:s,olFeature:u,interfaceType:l}),{getState:g,setState:y}=v,m=(e=>{var{map:t,olFeature:r,getState:n,condition:o,snap:a,onModifyEnd:i}=e,l=null,d=null,s=e=>t.getCoordinateFromPixel(e.pixel),c=new z({handleDownEvent:e=>{if("touch"===n().interfaceType||!o(e))return!1;var t=r.getGeometry().getCoordinates(),a=s(e);return l=[t[0]-a[0],t[1]-a[1]],d=[...t],!0},handleDragEvent:e=>{if(l){var t=s(e),n=[t[0]+l[0],t[1]+l[1]],o=a?a.apply(n):n;r.getGeometry().setCoordinates(o)}},handleUpEvent:()=>(l=null,d&&i([d]),d=null,!1)});return t.addInteraction(c),{destroy(){t.removeInteraction(c)}}})({map:t,olFeature:u,getState:g,condition:_t({map:t,olFeature:u}),snap:d,onModifyEnd(e){v.syncGeom();var t=e&&$e(e,g().vertices);t&&(c.push(t),v.emitGeometryValidation(bt,t.vertexIndex))}}),h=(e=>{var{olFeature:t,undoStack:r,selection:n}=e;return()=>{var e=r.pop();e&&(((e,t)=>{"move_vertex"===t.type&&((e,t)=>{var{previousCoord:r}=t;e.getGeometry().setCoordinates([...r])})(e,t)})(t,e),n.syncGeom(),n.emitGeometryValidation(bt,0))}})({olFeature:u,undoStack:c,selection:v}),x=(e=>{var{manager:t,olFeature:r}=e,n=i({onChange:(e,r)=>{t.emit(C.VALIDITY_CHANGE,{valid:!e,reason:r})}}),o=()=>{var e=r.getGeometry().getCoordinates();n.update({feature:{type:"Feature",geometry:{type:"Point",coordinates:e}},context:{mode:"edit_point"},numVertices:1,onGeometryChange:t._geometryValidator})};return r.getGeometry().on("change",o),{liveStroke:n,destroy(){r.getGeometry().un("change",o),n.destroy()}}})({manager:r,olFeature:u}),f=(e=>{var{map:t,container:r,manager:n,snap:o,undoStack:a,selection:i}=e,{getState:l,setState:d,syncGeom:s,emitGeometryValidation:c}=i,u=lt({map:t,container:r,getState:l,setState:d,colors:n.colors,snap:o,moveCoord:Vt,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;a.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),s(),c(bt,t)},onTap(){}});return i.setHooks({onUpdate(){l().interfaceType===Ct&&u.updateTargetPosition()}}),u})({map:t,container:a,manager:r,snap:d,undoStack:c,selection:v}),S=(e=>{var{map:t,container:r,snap:n,undoStack:o,selection:a,touchHandler:i,doUndo:l}=e,{getState:d,setState:s,syncGeom:c,emitGeometryValidation:u}=a;return pt({map:t,getState:d,setState:s,snap:n,moveCoord:Vt,onVertexMoved(e){var{vertexIndex:t,previousCoord:r}=e;o.push({type:"move_vertex",vertexIndex:t,previousCoord:r}),c(),u(bt,t)},onInserted(){},onDeleted(){},onUndo:l,onKeyboardActive(){"keyboard"!==d().interfaceType&&(d().interfaceType="keyboard",i.hide(),r.focus({preventScroll:!0}))}})})({map:t,container:a,snap:d,undoStack:c,selection:v,touchHandler:f,doUndo:h}),I=(e=>{var{map:t,manager:r,selection:n,touchHandler:o,live:a}=e,{state:i}=n,l=()=>{a.liveStroke.refresh(),o.updateColors(r.colors)};r.on(Re,l);var d=()=>{i.interfaceType===Ct&&t.once("postrender",()=>o.updateTargetPosition())};return t.on("change:size",d),{destroy(){r.off(Re,l),t.un("change:size",d)}}})({map:t,manager:r,selection:v,touchHandler:f,live:x});return{setInterfaceType(e){e!==g().interfaceType&&(y({interfaceType:e}),e===Ct?f.updateTargetPosition():f.hide())},done(){r.emit(C.EDIT_FINISH,s.toGeoJSON(u))},setInvalid(e){x.liveStroke.set(e)},cancel(){},undo:h,deleteVertex(){},nudgeSelectedVertex:S.nudgeByDelta,destroy(){x.destroy(),u.setStyle(p),v.destroy(),I.destroy(),m.destroy(),f.destroy(),S.destroy()}}},Lt="draw_point",kt=e=>{var{map:t,manager:r,options:n}=e,{featureId:o,properties:a={}}=n,i=(e=>t=>{var r={type:"Feature",geometry:{type:"Point",coordinates:t},properties:{}},{valid:n,reason:o}=k(r,{mode:Lt,vertexIndex:0},{onGeometryChange:e._geometryValidator});return n||e.emit(C.PLACEMENT_BLOCKED,{feature:r,reason:null!=o?o:null,phase:"place",mode:Lt,vertexIndex:0}),n})(r),l=new R({type:"Point",style:()=>[],snapTolerance:V.snapRadius,condition:e=>H(e)&&i(e.coordinate)});t.addInteraction(l),l.on("drawend",e=>((e,t,r,n,o)=>{r.setId(String(n)),r.setProperties(o),e.store.source.addFeature(r),e.emit(C.CREATE,e.store.toGeoJSON(r)),null==t||t(r)})(r,n.resolvePointSymbol,e.feature,o,a)),l.on("drawabort",()=>{r.emit(C.CANCEL)});var d=(e=>{var t,r,{drawInteraction:n,options:o,canPlace:a}=e,{container:i,addVertexButtonId:l,mapProvider:d,snap:s,crossHair:c}=o,u=null!==(t=o.interfaceType)&&void 0!==t?t:"mouse",p=()=>u,v=()=>{var e=d.getCenter(),t=s?s.apply(e):e;null==s||s.hideIndicator(),a(t)&&(n.appendCoordinates([t]),n.finishDrawing())},g=()=>{s&&s.apply(d.getCenter())},y=e=>{u=e,Ae(c,e),"mouse"!==e&&g()},m=Me({container:i,addVertexButtonId:l,olView:null===(r=n.getMap())||void 0===r?void 0:r.getView(),onUndo:null,getInterfaceType:p,setInterfaceType:y,clearLastCoord:()=>{},updateRubberbanding:g,placeVertex:v});return Ae(c,u),c&&(c.activate=v),{getInterfaceType:p,setInterfaceType:y,destroy(){(null==c?void 0:c.activate)===v&&(c.activate=null),m.destroy()}}})({drawInteraction:l,options:n,canPlace:i});return{done(){},cancel(){l.abortDrawing()},undo(){},setInterfaceType(e){d.setInterfaceType(e)},destroy(){r.emit(C.INTERFACE_TYPE_CHANGE,{interfaceType:d.getInterfaceType()}),d.destroy(),t.removeInteraction(l)}}},Ft=["normal","active","selected"],Ot={normal:"symbolImageId",active:"symbolActiveImageId",selected:"symbolSelectedImageId"},Gt=e=>!!(null!=e&&e.symbol||null!=e&&e.symbolSvgContent),Dt=function(){var e=t(function*(e){var{manager:t,mapProvider:r,olFeature:n}=e,o=n.getProperties();if(Gt(o)){var a=(e=>{var t;return(globalThis.devicePixelRatio||1)*(null!==(t=null==e?void 0:e.drawScale)&&void 0!==t?t:1)})(r);try{var i=yield Promise.all(Ft.map(e=>w.rasteriseSymbolImage(o,t.mapStyle,e,a)));if(!i[0])return;if(!t.store.source.hasFeature(n))return;Ft.forEach((e,t)=>{var r=i[t];r&&(((e,t)=>{var r=Z.get(e);if(r)return r;var n=document.createElement("canvas");n.width=t.width,n.height=t.height,n.getContext("2d").putImageData(t,0,0),Z.set(e,n)})(r.imageId,r.imageData),n.set(Ot[e],r.imageId))}),n.set("symbolPixelRatio",a)}catch(e){console.error("[draw] failed to resolve point symbol",n.getId(),e)}}});return function(t){return e.apply(this,arguments)}}(),At=e=>{var{manager:t,mapProvider:r}=e,n=t.store.source.getFeatures().filter(e=>{var t;return"Point"===(null===(t=e.getGeometry())||void 0===t?void 0:t.getType())&&Gt(e.getProperties())});return Promise.all(n.map(e=>Dt({manager:t,mapProvider:r,olFeature:e})))};function Mt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function jt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Mt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Mt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}class Rt{constructor(e){var t,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._map=e,this._pluginConfig=o,this._mode="disabled",this._modeInstance=null,this._listeners=new Map,this.store=K(),this.undoStack=g(e=>this.emit(C.UNDO_CHANGE,e)),this.mapStyle=null,this.colors=y(null,o),this.styles=oe(this.colors),this.snap=Ee(e,null!==(t=o.snapLayers)&&void 0!==t?t:null,this.colors,null!==(n=o.snapRadius)&&void 0!==n?n:V.snapRadius),this._layer=new r({source:this.store.source,style:this.styles.createFeatureStyle(),zIndex:100}),this._layer.set("layerId","draw"),e.addLayer(this._layer)}setMapStyle(e){var t;this.mapStyle=e,this.colors=y(e,this._pluginConfig),this.styles=oe(this.colors),this._layer.setStyle(this.styles.createFeatureStyle()),this.store.source.changed(),null===(t=this.snap)||void 0===t||t.updateColors(this.colors),this.emit(Re,this.styles)}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){var r;null===(r=this._listeners.get(e))||void 0===r||r.delete(t)}emit(e,t){var r=this._listeners.get(e);r&&Array.from(r).forEach(e=>e(t))}changeMode(e){var r=arguments,n=this;return t(function*(){var t,o,a,i=r.length>1&&void 0!==r[1]?r[1]:{};null===(t=n._modeInstance)||void 0===t||t.destroy(),n._modeInstance=null,n._mode=e;var l="draw_polygon"===e||"draw_line"===e||"draw_point"===e||"edit_vertex"===e||"edit_point"===e;null===(o=n.snap)||void 0===o||o.setIndicatorActive(l);var d=jt(jt({},i),{},{snap:n.snap});if("draw_polygon"===e||"draw_line"===e)n._modeInstance=ze({map:n._map,manager:n,options:d});else if("draw_point"===e){var s=jt(jt({},d),{},{resolvePointSymbol:e=>Dt({manager:n,mapProvider:i.mapProvider,olFeature:e})});n._modeInstance=kt({map:n._map,manager:n,options:s})}else"edit_vertex"===e?n._modeInstance=Tt({map:n._map,manager:n,options:d}):"edit_point"===e&&(n._modeInstance=Et({map:n._map,manager:n,options:d}));null===(a=n.snap)||void 0===a||a.reattach()})()}getMode(){return this._mode}done(){var e;null===(e=this._modeInstance)||void 0===e||e.done()}cancel(){var e;null===(e=this._modeInstance)||void 0===e||e.cancel(),this.changeMode("disabled")}undo(){var e;null===(e=this._modeInstance)||void 0===e||e.undo()}deleteVertex(){var e;null===(e=this._modeInstance)||void 0===e||e.deleteVertex()}nudgeSelectedVertex(e,t,r){var n,o;null===(n=this._modeInstance)||void 0===n||null===(o=n.nudgeSelectedVertex)||void 0===o||o.call(n,e,t,r)}getVertexItems(){var e,t,r;return null!==(e=null===(t=this._modeInstance)||void 0===t||null===(r=t.getVertexItems)||void 0===r?void 0:r.call(t))&&void 0!==e?e:{vertices:[],midpoints:[]}}selectVertex(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.selectVertex)||void 0===r||r.call(t,e)}insertVertexAtMidpoint(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.insertVertexAtMidpoint)||void 0===r||r.call(t,e)}setInvalid(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.setInvalid)||void 0===r||r.call(t,e)}setDrawingPreviewProperty(e,t){var r,n;null===(r=this._modeInstance)||void 0===r||null===(n=r.setDrawingPreviewProperty)||void 0===n||n.call(r,e,t)}setInterfaceType(e){var t,r;null===(t=this._modeInstance)||void 0===t||null===(r=t.setInterfaceType)||void 0===r||r.call(t,e),this.emit(C.INTERFACE_TYPE_CHANGE,{interfaceType:e})}get(e){return this.store.get(e)}add(e){return this.store.add(e)}delete(e){return this.store.remove(e)}deleteAll(){return this.store.clear()}remove(){var e,t;null===(e=this._modeInstance)||void 0===e||e.destroy(),this._modeInstance=null,null===(t=this.snap)||void 0===t||t.destroy(),this.snap=null,this.store.clear(),this._map.removeLayer(this._layer),this._listeners.clear()}}function Ht(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Nt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Ht(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ht(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}class Ut{constructor(t,r){var n;e(this,"_snapEnabled",!1);var{manager:o,remove:a}=(e=>{var t,{mapProvider:r,events:n,eventBus:o,pluginConfig:a={},mapStyle:i=null}=e,{map:l}=r,d=new Rt(l,a);i&&d.setMapStyle(i),r.draw=d,r.drawScale=null!==(t=F[r.mapSize])&&void 0!==t?t:1;var s=()=>o.emit(n.MAP_DATA_CHANGE),c=e=>{var t;r.drawScale=null!==(t=F[e])&&void 0!==t?t:1,At({manager:d,mapProvider:r}).then(s)};o.on(n.MAP_SET_SIZE,c);var u=e=>{d.setMapStyle(e),At({manager:d,mapProvider:r}).then(s)};return o.on(n.MAP_SET_STYLE,u),{manager:d,remove(){o.off(n.MAP_SET_SIZE,c),o.off(n.MAP_SET_STYLE,u),d.remove(),r.draw=null}}})({mapProvider:t,events:r.events,eventBus:r.eventBus,pluginConfig:null!==(n=r.pluginConfig)&&void 0!==n?n:{snapLayers:r.snapLayers},mapStyle:r.mapStyle});this._cleanupOLDraw=a,this._manager=o,this._mapProvider=t}changeMode(e){var t=Nt(Nt({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),{},{mapProvider:this._mapProvider});return"draw_polygon"===e&&(t.geometryType="Polygon"),"draw_line"===e&&(t.geometryType="LineString"),this._manager.changeMode(e,t)}getMode(){return this._manager.getMode()}setInterfaceType(e){this._manager.setInterfaceType(e)}done(){this._manager.undoStack.clear(),this._manager.done()}cancel(){this._manager.undoStack.clear(),this._manager.cancel()}undo(){this._manager.undo()}deleteVertex(){this._manager.deleteVertex()}nudgeSelectedVertex(e,t,r){this._manager.nudgeSelectedVertex(e,t,r)}getVertexItems(){return this._manager.getVertexItems()}selectVertex(e){this._manager.selectVertex(e)}insertVertexAtMidpoint(e){this._manager.insertVertexAtMidpoint(e)}setGeometryValid(e){this._manager._geometryValid=e}set _geometryValidator(e){this._manager._geometryValidator=e}get _geometryValidator(){return this._manager._geometryValidator}setInvalid(e){this._manager.setInvalid(e)}get(e){return this._manager.get(e)}add(e){var t,r=this._manager.add(e);return"Point"===(null===(t=e.geometry)||void 0===t?void 0:t.type)&&Gt(e.properties)&&Dt({manager:this._manager,mapProvider:this._mapProvider,olFeature:r}),r}setStyle(e,t){var r,n=this._manager.store.getOL(e);n&&(n.setProperties(t),"Point"===(null===(r=n.getGeometry())||void 0===r?void 0:r.getType())&&Gt(n.getProperties())&&Dt({manager:this._manager,mapProvider:this._mapProvider,olFeature:n}))}delete(e){return this._manager.delete(e)}deleteAll(){return this._manager.deleteAll()}setSnapEnabled(e){var t;this._snapEnabled=e,null===(t=this._manager.snap)||void 0===t||t.setActive(e)}setSnapLayers(e){var t,r=null==e?void 0:e.map(e=>"stroke-inactive.cold"===e?this._manager._layer:e);null===(t=this._manager.snap)||void 0===t||t.setSnapLayers(r)}isSnapEnabled(){return this._snapEnabled}setFeatureProperty(){}setDrawingPreviewProperty(e,t){this._manager.setDrawingPreviewProperty(e,t)}on(e,t){this._manager.on(e,t)}off(e,t){this._manager.off(e,t)}remove(){this._cleanupOLDraw()}}export{Ut as OLDrawAdapter};