@defra/interactive-map 0.0.47-alpha → 0.0.48-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/interactive-map",
3
- "version": "0.0.47-alpha",
3
+ "version": "0.0.48-alpha",
4
4
  "description": "An accessible map component",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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,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/Feature.js";import D from"ol/geom/Point.js";import{Style as A}from"ol/style.js";import M from"ol/interaction/Interaction.js";import j 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";import"preact/jsx-runtime";var z="EPSG:27700",Y=new o({dataProjection:z,featureProjection:z}),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=Y.readFeature(t);return e.addFeature(n),n},get(e){var t=this.getOL(e);return t?Y.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=>Y.writeFeatureObject(e),fromGeoJSON:e=>Y.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=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}}},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?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 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]:[],r=new Set,n=[],o=e=>{for(var t of(r=new Set,n=[],null!=e?e:[]))"string"==typeof t?r.add(t):"function"==typeof(null==t?void 0:t.getSource)&&n.push(t)};o(t);return{query:(t,o)=>{fe()&&console.log("[snap-query]",{coord:[t[0].toFixed(2),t[1].toFixed(2)],radiusPx:o,vtLayerCount:r.size,olLayerCount:n.length});var a=e.getView().getResolution();if(!a)return null;var i=o*a,l=i*i,d=[t[0]-i,t[1]-i,t[0]+i,t[1]+i],s=null;for(var c of n){var u=c.getSource();if(u)for(var p of u.getFeaturesInExtent(d))s=ie(s,ge(p,t,l))}if(r.size>0){var v=(e=>{var t=[];return e.getLayers().forEach(e=>{"vectorTile"===e.get("layerType")&&t.push(e)}),t})(e),g=v.length>0?e.getPixelFromCoordinate(t):null;if(g){var y=new Map;e.forEachFeatureAtPixel(g,(n,o)=>{var i=n.get("mapbox-layer");if(r.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)})(n,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:o,layerFilter:e=>v.includes(e)})}}return s?{type:s.type,coord:s.coord}:null},setLayers:o}},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)})}),Ve=new Set(["pointermove","pointerdrag","pointerdown","pointerup","singleclick","click"]),Ce=new Set(["pointermove","pointerdrag"]),be=(e,t,r,n)=>{var o=new M({handleEvent:a=>(o.getActive()&&((e,t,r,n,o)=>{var{type:a}=e;if("pointerout"!==a&&"pointerleave"!==a){if(Ve.has(a)){var i=t.query(e.coordinate,n);i&&(e.coordinate=i.coord.slice()),Ce.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 G,d=!1;return{show(e,t){l.setGeometry(new D(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}},Ge=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),De=(e,t)=>{e&&(["touch","keyboard"].includes(t)?e.fixAtCenter():e.hide())},Ae=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)&&(Ge.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})}}},Me=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=Oe({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=Ae({container:o,addVertexButtonId:a,olView:m,onUndo:d,getInterfaceType:v,setInterfaceType:e=>{p=e,De(u,e)},clearLastCoord:g.clearLastCoord,updateRubberbanding:g.updateRubberbanding,placeVertex:g.placeVertex});De(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,De(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)}}},je="styleschanged",Re=(e,t)=>!!t&&X(t.getGeometry()).length>=b[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(C.CREATE,e.store.toGeoJSON(t))})(r,e.feature,n,o)),e.on("drawabort",()=>{r.emit(C.CANCEL)})},Be=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=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(C.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=_({placed:o?X(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 j({type:o,style:e=>u(e),stopClick:!0,snapTolerance:V.snapRadius,condition:He(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: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(je,I),m.overlay_.updateWhileAnimating_=!0,Ue(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 Me({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(je,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})},ze=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[]}},Ye=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=ze(e),r=Ye(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 G({geometry:new D(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(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=ze(e),c.midpoints=Xe(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)}}},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=Ye(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=Ye(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=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=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: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=>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:p,moveCoord:v=tt}=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=Ee(t,r[e]);a?u(g,m(a)):c(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: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)}}},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?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=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?L.stepAmount:L.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=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=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=v([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:i,onVertexMoved:l,onInserted:d,onDeleted:s,onUndo:c,onKeyboardActive:u,moveCoord:p}=e,{nudge:v,keyMove:g,nudgeByDelta:y}=lt({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)&&(st.has(t.tagName)||t.isContentEditable||t.hasAttribute("tabindex"))})(m),x=ct({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),dt.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})}}},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=Ye(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=Ye(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=Ye(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=ze(n),a=Ye(n),i=qe(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=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: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=Xe(e).map((e,t)=>{var r=new G({geometry:new D(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(),ze(e).forEach((e,t)=>{var r=new G({geometry:new D(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:P}=f,V=$e({map:t,olFeature:g,getState:I,onModifyEnd(e){w();var t=e&&Qe(e,S.vertices);t&&(v.push(t),P(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=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: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(je,d);var s=()=>{l.interfaceType!==vt||l.selectedVertexIndex<0||t.once("postrender",()=>a.updateTargetPosition())};return t.on("change:size",s),{destroy(){r.off(je,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===vt?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?gt:"midpoint"}),v.updateTargetPosition()},insertVertexAtMidpoint(e){var t=et(n,s.midpoints,e,s.vertices.length);t&&(d.push({type:"insert_vertex",vertexIndex:t.insertedIndex}),u(),p(mt,t.insertedIndex),c({selectedVertexIndex:t.insertedIndex,selectedVertexType:gt}),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:_}})},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(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=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(C.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])},Vt="touch",Ct="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: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=wt({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 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(Ct,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(Ct,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=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(Ct,t)},onTap(){}});return i.setHooks({onUpdate(){l().interfaceType===Vt&&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(Ct,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(je,l);var d=()=>{i.interfaceType===Vt&&t.once("postrender",()=>o.updateTargetPosition())};return t.on("change:size",d),{destroy(){r.off(je,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===Vt?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()}}},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}=k(r,{mode:Et,vertexIndex:0},{onGeometryChange:e._geometryValidator});return n||e.emit(C.PLACEMENT_BLOCKED,{feature:r,reason:null!=o?o:null,phase:"place",mode:Et,vertexIndex:0}),n})(r),l=new j({type:"Point",style:()=>[],snapTolerance:V.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(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,De(c,e),"mouse"!==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 De(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)}}},kt=["normal","active","selected"],Ft={normal:"symbolImageId",active:"symbolActiveImageId",selected:"symbolSelectedImageId"},Ot=e=>!!(null!=e&&e.symbol||null!=e&&e.symbolSvgContent),Gt=function(){var e=t(function*(e){var{manager:t,mapProvider:r,olFeature:n}=e,o=n.getProperties();if(Ot(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(kt.map(e=>w.rasteriseSymbolImage(o,t.mapStyle,e,a)));if(!i[0])return;if(!t.store.source.hasFeature(n))return;kt.forEach((e,t)=>{var r=i[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",a)}catch(e){console.error("[draw] failed to resolve point symbol",n.getId(),e)}}});return function(t){return e.apply(this,arguments)}}(),Dt=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=>Gt({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 Mt(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 jt{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(C.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:V.snapRadius),this._layer=new r({source:this.store.source,style:this.styles.createFeatureStyle(),zIndex:100}),this._layer.set("layerId","draw"),this._layer.set("layerType","vector"),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(je,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=Mt(Mt({},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=Mt(Mt({},d),{},{resolvePointSymbol:e=>Gt({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)}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 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 jt(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,Dt({manager:d,mapProvider:r}).then(s)};o.on(n.MAP_SET_SIZE,c);var u=e=>{d.setMapStyle(e),Dt({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)}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)&&Ot(e.properties)&&Gt({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())&&Gt({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/Feature.js";import D from"ol/geom/Point.js";import{Style as A}from"ol/style.js";import M from"ol/interaction/Interaction.js";import j 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";import"preact/jsx-runtime";var z="EPSG:27700",Y=new o({dataProjection:z,featureProjection:z}),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=Y.readFeature(t);return e.addFeature(n),n},get(e){var t=this.getOL(e);return t?Y.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=>Y.writeFeatureObject(e),fromGeoJSON:e=>Y.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=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}}},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=>"string"==typeof e?e:e.getCode(),l=e=>e?i(o)===i(n)?e:O(e,n,o):null,d=l(t),s=r.getTileCoordForCoordAndZ(d,a),c=r.getTileCoordExtent(s),u=c[2]-c[0];return{toSource:l,anchor:d,extent:c,band:.0625*u,eps:u/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]:[],r=new Set,n=[],o=e=>{for(var t of(r=new Set,n=[],null!=e?e:[]))"string"==typeof t?r.add(t):"function"==typeof(null==t?void 0:t.getSource)&&n.push(t)};o(t);return{query:(t,o)=>{fe()&&console.log("[snap-query]",{coord:[t[0].toFixed(2),t[1].toFixed(2)],radiusPx:o,vtLayerCount:r.size,olLayerCount:n.length});var a=e.getView().getResolution();if(!a)return null;var i=o*a,l=i*i,d=[t[0]-i,t[1]-i,t[0]+i,t[1]+i],s=null;for(var c of n){var u=c.getSource();if(u)for(var p of u.getFeaturesInExtent(d))s=ie(s,ge(p,t,l))}if(r.size>0){var v=(e=>{var t=[];return e.getLayers().forEach(e=>{"vectorTile"===e.get("layerType")&&t.push(e)}),t})(e),g=v.length>0?e.getPixelFromCoordinate(t):null;if(g){var y=new Map;e.forEachFeatureAtPixel(g,(n,o)=>{var i=n.get("mapbox-layer");if(r.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)})(n,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:o,layerFilter:e=>v.includes(e)})}}return s?{type:s.type,coord:s.coord}:null},setLayers:o}},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)})}),Ve=new Set(["pointermove","pointerdrag","pointerdown","pointerup","singleclick","click"]),Ce=new Set(["pointermove","pointerdrag"]),be=(e,t,r,n)=>{var o=new M({handleEvent:a=>(o.getActive()&&((e,t,r,n,o)=>{var{type:a}=e;if("pointerout"!==a&&"pointerleave"!==a){if(Ve.has(a)){var i=t.query(e.coordinate,n);i&&(e.coordinate=i.coord.slice()),Ce.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 G,d=!1;return{show(e,t){l.setGeometry(new D(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}},Ge=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"]),De=(e,t)=>{e&&(["touch","keyboard"].includes(t)?e.fixAtCenter():e.hide())},Ae=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)&&(Ge.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})}}},Me=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=Oe({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=Ae({container:o,addVertexButtonId:a,olView:m,onUndo:d,getInterfaceType:v,setInterfaceType:e=>{p=e,De(u,e)},clearLastCoord:g.clearLastCoord,updateRubberbanding:g.updateRubberbanding,placeVertex:g.placeVertex});De(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,De(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)}}},je="styleschanged",Re=(e,t)=>!!t&&X(t.getGeometry()).length>=b[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(C.CREATE,e.store.toGeoJSON(t))})(r,e.feature,n,o)),e.on("drawabort",()=>{r.emit(C.CANCEL)})},Be=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=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(C.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=_({placed:o?X(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 j({type:o,style:e=>u(e),stopClick:!0,snapTolerance:V.snapRadius,condition:He(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: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(je,I),m.overlay_.updateWhileAnimating_=!0,Ue(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 Me({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(je,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})},ze=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[]}},Ye=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=ze(e),r=Ye(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 G({geometry:new D(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(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=ze(e),c.midpoints=Xe(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)}}},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=Ye(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=Ye(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=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=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: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=>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:p,moveCoord:v=tt}=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=Ee(t,r[e]);a?u(g,m(a)):c(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: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)}}},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?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=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?L.stepAmount:L.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=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=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=v([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:i,onVertexMoved:l,onInserted:d,onDeleted:s,onUndo:c,onKeyboardActive:u,moveCoord:p}=e,{nudge:v,keyMove:g,nudgeByDelta:y}=lt({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)&&(st.has(t.tagName)||t.isContentEditable||t.hasAttribute("tabindex"))})(m),x=ct({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),dt.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})}}},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=Ye(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=Ye(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=Ye(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=ze(n),a=Ye(n),i=qe(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=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: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=Xe(e).map((e,t)=>{var r=new G({geometry:new D(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(),ze(e).forEach((e,t)=>{var r=new G({geometry:new D(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:P}=f,V=$e({map:t,olFeature:g,getState:I,onModifyEnd(e){w();var t=e&&Qe(e,S.vertices);t&&(v.push(t),P(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=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: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(je,d);var s=()=>{l.interfaceType!==vt||l.selectedVertexIndex<0||t.once("postrender",()=>a.updateTargetPosition())};return t.on("change:size",s),{destroy(){r.off(je,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===vt?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?gt:"midpoint"}),v.updateTargetPosition()},insertVertexAtMidpoint(e){var t=et(n,s.midpoints,e,s.vertices.length);t&&(d.push({type:"insert_vertex",vertexIndex:t.insertedIndex}),u(),p(mt,t.insertedIndex),c({selectedVertexIndex:t.insertedIndex,selectedVertexType:gt}),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:_}})},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(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=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(C.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])},Vt="touch",Ct="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: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=wt({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 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(Ct,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(Ct,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=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(Ct,t)},onTap(){}});return i.setHooks({onUpdate(){l().interfaceType===Vt&&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(Ct,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(je,l);var d=()=>{i.interfaceType===Vt&&t.once("postrender",()=>o.updateTargetPosition())};return t.on("change:size",d),{destroy(){r.off(je,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===Vt?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()}}},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}=k(r,{mode:Et,vertexIndex:0},{onGeometryChange:e._geometryValidator});return n||e.emit(C.PLACEMENT_BLOCKED,{feature:r,reason:null!=o?o:null,phase:"place",mode:Et,vertexIndex:0}),n})(r),l=new j({type:"Point",style:()=>[],snapTolerance:V.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(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,De(c,e),"mouse"!==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 De(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)}}},kt=["normal","active","selected"],Ft={normal:"symbolImageId",active:"symbolActiveImageId",selected:"symbolSelectedImageId"},Ot=e=>!!(null!=e&&e.symbol||null!=e&&e.symbolSvgContent),Gt=function(){var e=t(function*(e){var{manager:t,mapProvider:r,olFeature:n}=e,o=n.getProperties();if(Ot(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(kt.map(e=>w.rasteriseSymbolImage(o,t.mapStyle,e,a)));if(!i[0])return;if(!t.store.source.hasFeature(n))return;kt.forEach((e,t)=>{var r=i[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",a)}catch(e){console.error("[draw] failed to resolve point symbol",n.getId(),e)}}});return function(t){return e.apply(this,arguments)}}(),Dt=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=>Gt({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 Mt(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 jt{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(C.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:V.snapRadius),this._layer=new r({source:this.store.source,style:this.styles.createFeatureStyle(),zIndex:100}),this._layer.set("layerId","draw"),this._layer.set("layerType","vector"),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(je,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=Mt(Mt({},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=Mt(Mt({},d),{},{resolvePointSymbol:e=>Gt({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)}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 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 jt(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,Dt({manager:d,mapProvider:r}).then(s)};o.on(n.MAP_SET_SIZE,c);var u=e=>{d.setMapStyle(e),Dt({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)}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)&&Ot(e.properties)&&Gt({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())&&Gt({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};