@watergis/maplibre-gl-terradraw 0.0.1
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/LICENSE +21 -0
- package/README.md +60 -0
- package/package/maplibre-gl-terradraw.css +1 -0
- package/package/maplibre-gl-terradraw.es.js +2872 -0
- package/package/maplibre-gl-terradraw.es.js.map +1 -0
- package/package/maplibre-gl-terradraw.umd.js +2 -0
- package/package/maplibre-gl-terradraw.umd.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maplibre-gl-terradraw.es.js","sources":["../node_modules/.pnpm/terra-draw@1.0.0-beta.1/node_modules/terra-draw/dist/terra-draw.modern.js","../src/lib/constants/defaultControlOptions.ts","../src/lib/helpers/getTerraDrawModes.ts","../src/lib/MaplibreTerradrawControl.ts"],"sourcesContent":["function t(){return t=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(t[o]=i[o])}return t},t.apply(this,arguments)}function e(t,e=9){const i=Math.pow(10,e);return Math.round(t*i)/i}const i=(t,e)=>{const{x:i,y:o}=t,{x:s,y:r}=e,n=s-i,a=r-o;return Math.sqrt(a*a+n*n)};class o{constructor({name:t,callback:e,unregister:i,register:o}){this.name=void 0,this.callback=void 0,this.registered=!1,this.register=void 0,this.unregister=void 0,this.name=t,this.register=()=>{this.registered||(this.registered=!0,o(e))},this.unregister=()=>{this.register&&(this.registered=!1,i(e))},this.callback=e}}class s{constructor(t){this._minPixelDragDistance=void 0,this._minPixelDragDistanceDrawing=void 0,this._minPixelDragDistanceSelecting=void 0,this._lastDrawEvent=void 0,this._coordinatePrecision=void 0,this._heldKeys=new Set,this._listeners=[],this._dragState=\"not-dragging\",this._currentModeCallbacks=void 0,this._minPixelDragDistance=\"number\"==typeof t.minPixelDragDistance?t.minPixelDragDistance:1,this._minPixelDragDistanceSelecting=\"number\"==typeof t.minPixelDragDistanceSelecting?t.minPixelDragDistanceSelecting:1,this._minPixelDragDistanceDrawing=\"number\"==typeof t.minPixelDragDistanceDrawing?t.minPixelDragDistanceDrawing:8,this._coordinatePrecision=\"number\"==typeof t.coordinatePrecision?t.coordinatePrecision:9}getButton(t){return-1===t.button?\"neither\":0===t.button?\"left\":1===t.button?\"middle\":2===t.button?\"right\":\"neither\"}getMapElementXYPosition(t){const e=this.getMapEventElement(),{left:i,top:o}=e.getBoundingClientRect();return{containerX:t.clientX-i,containerY:t.clientY-o}}getDrawEventFromEvent(t){const i=this.getLngLatFromEvent(t);if(!i)return null;const{lng:o,lat:s}=i,{containerX:r,containerY:n}=this.getMapElementXYPosition(t),a=this.getButton(t),l=Array.from(this._heldKeys);return{lng:e(o,this._coordinatePrecision),lat:e(s,this._coordinatePrecision),containerX:r,containerY:n,button:a,heldKeys:l}}register(t){this._currentModeCallbacks=t,this._listeners=this.getAdapterListeners(),this._listeners.forEach(t=>{t.register()})}getCoordinatePrecision(){return this._coordinatePrecision}getAdapterListeners(){return[new o({name:\"pointerdown\",callback:t=>{if(!this._currentModeCallbacks)return;if(!t.isPrimary)return;const e=this.getDrawEventFromEvent(t);e&&(this._dragState=\"pre-dragging\",this._lastDrawEvent=e)},register:t=>{this.getMapEventElement().addEventListener(\"pointerdown\",t)},unregister:t=>{this.getMapEventElement().removeEventListener(\"pointerdown\",t)}}),new o({name:\"pointermove\",callback:t=>{if(!this._currentModeCallbacks)return;if(!t.isPrimary)return;t.preventDefault();const e=this.getDrawEventFromEvent(t);if(e)if(\"not-dragging\"===this._dragState)this._currentModeCallbacks.onMouseMove(e),this._lastDrawEvent=e;else if(\"pre-dragging\"===this._dragState){if(!this._lastDrawEvent)return;const t={x:this._lastDrawEvent.containerX,y:this._lastDrawEvent.containerY},o={x:e.containerX,y:e.containerY},s=this._currentModeCallbacks.getState(),r=i(t,o);let n=!1;if(n=\"drawing\"===s?r<this._minPixelDragDistanceDrawing:\"selecting\"===s?r<this._minPixelDragDistanceSelecting:r<this._minPixelDragDistance,n)return;this._dragState=\"dragging\",this._currentModeCallbacks.onDragStart(e,t=>{this.setDraggability.bind(this)(t)})}else\"dragging\"===this._dragState&&this._currentModeCallbacks.onDrag(e,t=>{this.setDraggability.bind(this)(t)})},register:t=>{this.getMapEventElement().addEventListener(\"pointermove\",t)},unregister:t=>{this.getMapEventElement().removeEventListener(\"pointermove\",t)}}),new o({name:\"contextmenu\",callback:t=>{this._currentModeCallbacks&&t.preventDefault()},register:t=>{this.getMapEventElement().addEventListener(\"contextmenu\",t)},unregister:t=>{this.getMapEventElement().removeEventListener(\"contextmenu\",t)}}),new o({name:\"pointerup\",callback:t=>{if(!this._currentModeCallbacks)return;if(t.target!==this.getMapEventElement())return;if(!t.isPrimary)return;const e=this.getDrawEventFromEvent(t);e&&(\"dragging\"===this._dragState?this._currentModeCallbacks.onDragEnd(e,t=>{this.setDraggability.bind(this)(t)}):\"not-dragging\"!==this._dragState&&\"pre-dragging\"!==this._dragState||this._currentModeCallbacks.onClick(e),this._dragState=\"not-dragging\",this.setDraggability(!0))},register:t=>{this.getMapEventElement().addEventListener(\"pointerup\",t)},unregister:t=>{this.getMapEventElement().removeEventListener(\"pointerup\",t)}}),new o({name:\"keyup\",callback:t=>{this._currentModeCallbacks&&(this._heldKeys.delete(t.key),this._currentModeCallbacks.onKeyUp({key:t.key,heldKeys:Array.from(this._heldKeys),preventDefault:()=>t.preventDefault()}))},register:t=>{this.getMapEventElement().addEventListener(\"keyup\",t)},unregister:t=>{this.getMapEventElement().removeEventListener(\"keyup\",t)}}),new o({name:\"keydown\",callback:t=>{this._currentModeCallbacks&&(this._heldKeys.add(t.key),this._currentModeCallbacks.onKeyDown({key:t.key,heldKeys:Array.from(this._heldKeys),preventDefault:()=>t.preventDefault()}))},register:t=>{this.getMapEventElement().addEventListener(\"keydown\",t)},unregister:t=>{this.getMapEventElement().removeEventListener(\"keydown\",t)}})]}unregister(){this._listeners.forEach(t=>{t.unregister()}),this.clear()}}class r extends s{constructor(t){if(super(t),this._cursor=void 0,this._cursorStyleSheet=void 0,this._lib=void 0,this._map=void 0,this._overlay=void 0,this._clickEventListener=void 0,this._mouseMoveEventListener=void 0,this.renderedFeatureIds=new Set,this._lib=t.lib,this._map=t.map,!this._map.getDiv().id)throw new Error(\"Google Map container div requires and id to be set\");this._coordinatePrecision=\"number\"==typeof t.coordinatePrecision?t.coordinatePrecision:9}get _layers(){var t;return Boolean((null==(t=this.renderedFeatureIds)?void 0:t.size)>0)}circlePath(t,e,i){const o=2*i;return`M ${t} ${e} m -${i}, 0 a ${i},${i} 0 1,0 ${o},0 a ${i},${i} 0 1,0 -${o},0`}register(t){super.register(t),this._overlay=new this._lib.OverlayView,this._overlay.draw=function(){},this._overlay.onAdd=()=>{this._currentModeCallbacks&&this._currentModeCallbacks.onReady&&this._currentModeCallbacks.onReady()},this._overlay.setMap(this._map),this._clickEventListener=this._map.data.addListener(\"click\",t=>{const e=this._listeners.find(({name:t})=>\"click\"===t);e&&e.callback(t)}),this._mouseMoveEventListener=this._map.data.addListener(\"mousemove\",t=>{const e=this._listeners.find(({name:t})=>\"mousemove\"===t);e&&e.callback(t)})}unregister(){var t,e,i;super.unregister(),null==(t=this._clickEventListener)||t.remove(),null==(e=this._mouseMoveEventListener)||e.remove(),null==(i=this._overlay)||i.setMap(null),this._overlay=void 0}getLngLatFromEvent(t){if(!this._overlay)throw new Error(\"cannot get overlay\");const e=this._map.getBounds();if(!e)return null;const i=e.getNorthEast(),o=e.getSouthWest(),s=new this._lib.LatLngBounds(o,i),r=this._map.getDiv(),n=t.clientX-r.getBoundingClientRect().left,a=t.clientY-r.getBoundingClientRect().top,l=new this._lib.Point(n,a),h=this._overlay.getProjection();if(!h)return null;const c=h.fromContainerPixelToLatLng(l);return c&&s.contains(c)?{lng:c.lng(),lat:c.lat()}:null}getMapEventElement(){return this._map.getDiv().querySelector('div[style*=\"z-index: 3;\"]')}project(t,e){if(!this._overlay)throw new Error(\"cannot get overlay\");if(void 0===this._map.getBounds())throw new Error(\"cannot get bounds\");const i=this._overlay.getProjection();if(void 0===i)throw new Error(\"cannot get projection\");const o=i.fromLatLngToContainerPixel(new this._lib.LatLng(e,t));if(null===o)throw new Error(\"cannot project coordinates\");return{x:o.x,y:o.y}}unproject(t,e){if(!this._overlay)throw new Error(\"cannot get overlay\");const i=this._overlay.getProjection();if(void 0===i)throw new Error(\"cannot get projection\");const o=i.fromContainerPixelToLatLng(new this._lib.Point(t,e));if(null===o)throw new Error(\"cannot unproject coordinates\");return{lng:o.lng(),lat:o.lat()}}setCursor(t){if(t!==this._cursor){if(this._cursorStyleSheet&&(this._cursorStyleSheet.remove(),this._cursorStyleSheet=void 0),\"unset\"!==t){const e=this._map.getDiv(),i=document.querySelector(`#${e.id} .gm-style > div`);if(i){i.classList.add(\"terra-draw-google-maps\");const e=document.createElement(\"style\");e.innerHTML=`.terra-draw-google-maps { cursor: ${t} !important; }`,document.getElementsByTagName(\"head\")[0].appendChild(e),this._cursorStyleSheet=e}}this._cursor=t}}setDoubleClickToZoom(t){this._map.setOptions(t?{disableDoubleClickZoom:!1}:{disableDoubleClickZoom:!0})}setDraggability(t){this._map.setOptions({draggable:t})}render(t,e){this._layers&&(t.deletedIds.forEach(t=>{const e=this._map.data.getFeatureById(t);e&&(this._map.data.remove(e),this.renderedFeatureIds.delete(t))}),t.updated.forEach(t=>{if(!t||!t.id)throw new Error(\"Feature is not valid\");const e=this._map.data.getFeatureById(t.id);if(!e)throw new Error(\"Feature could not be found by Google Maps API\");switch(e.forEachProperty((t,i)=>{e.setProperty(i,void 0)}),Object.keys(t.properties).forEach(i=>{e.setProperty(i,t.properties[i])}),t.geometry.type){case\"Point\":{const i=t.geometry.coordinates;e.setGeometry(new this._lib.Data.Point(new this._lib.LatLng(i[1],i[0])))}break;case\"LineString\":{const i=t.geometry.coordinates,o=[];for(let t=0;t<i.length;t++){const e=i[t],s=new this._lib.LatLng(e[1],e[0]);o.push(s)}e.setGeometry(new this._lib.Data.LineString(o))}break;case\"Polygon\":{const i=t.geometry.coordinates,o=[];for(let t=0;t<i.length;t++){const e=[];for(let o=0;o<i[t].length;o++){const s=new this._lib.LatLng(i[t][o][1],i[t][o][0]);e.push(s)}o.push(e)}e.setGeometry(new this._lib.Data.Polygon(o))}}}),t.created.forEach(t=>{this.renderedFeatureIds.add(t.id),this._map.data.addGeoJson(t)})),t.created.forEach(t=>{this.renderedFeatureIds.add(t.id)});const i={type:\"FeatureCollection\",features:[...t.created]};this._map.data.addGeoJson(i),this._map.data.setStyle(t=>{const i=t.getProperty(\"mode\"),o=t.getGeometry();if(!o)throw new Error(\"Google Maps geometry not found\");const s=o.getType(),r={};t.forEachProperty((t,e)=>{r[e]=t});const n=e[i]({type:\"Feature\",geometry:{type:s,coordinates:[]},properties:r});switch(s){case\"Point\":return{clickable:!1,icon:{path:this.circlePath(0,0,n.pointWidth),fillColor:n.pointColor,fillOpacity:1,strokeColor:n.pointOutlineColor,strokeWeight:n.pointOutlineWidth,rotation:0,scale:1}};case\"LineString\":return{strokeColor:n.lineStringColor,strokeWeight:n.lineStringWidth};case\"Polygon\":return{strokeColor:n.polygonOutlineColor,strokeWeight:n.polygonOutlineWidth,fillOpacity:n.polygonFillOpacity,fillColor:n.polygonFillColor}}throw Error(\"Unknown feature type\")})}clearLayers(){this._layers&&(this._map.data.forEach(t=>{const e=t.getId();this.renderedFeatureIds.has(e)&&this._map.data.remove(t)}),this.renderedFeatureIds=new Set)}clear(){this._currentModeCallbacks&&(this._currentModeCallbacks.onClear(),this.clearLayers())}getCoordinatePrecision(){return super.getCoordinatePrecision()}}class n extends s{constructor(t){super(t),this._lib=void 0,this._map=void 0,this._panes={},this._container=void 0,this._layers={},this._lib=t.lib,this._map=t.map,this._container=this._map.getContainer()}createPaneStyleSheet(t,e){const i=document.createElement(\"style\");return i.innerHTML=`.leaflet-${t}-pane {z-index: ${e+600};}`,document.getElementsByTagName(\"head\")[0].appendChild(i),this._map.createPane(t),i}clearPanes(){Object.values(this._panes).forEach(t=>{t&&t.remove()}),this._panes={}}clearLayers(){Object.values(this._layers).forEach(t=>{this._map.removeLayer(t)}),this._layers={}}styleGeoJSONLayer(t){return{pointToLayer:(e,i)=>{if(!e.properties)throw new Error(\"Feature has no properties\");if(\"string\"!=typeof e.properties.mode)throw new Error(\"Feature mode is not a string\");const o=(0,t[e.properties.mode])(e),s=String(o.zIndex);return this._panes[s]||(this._panes[s]=this.createPaneStyleSheet(s,o.zIndex)),this._lib.circleMarker(i,{radius:o.pointWidth,stroke:o.pointOutlineWidth||!1,color:o.pointOutlineColor,weight:o.pointOutlineWidth,fillOpacity:.8,fillColor:o.pointColor,pane:s,interactive:!1})},style:e=>{if(!e||!e.properties)return{};const i=e,o=(0,t[i.properties.mode])(i),s=String(o.zIndex);return this._panes[s]||(this._panes[s]=this.createPaneStyleSheet(s,o.zIndex)),\"LineString\"===i.geometry.type?{interactive:!1,color:o.lineStringColor,weight:o.lineStringWidth,pane:s}:\"Polygon\"===i.geometry.type?{interactive:!1,fillOpacity:o.polygonFillOpacity,fillColor:o.polygonFillColor,weight:o.polygonOutlineWidth,stroke:!0,color:o.polygonFillColor,pane:s}:{}}}}getLngLatFromEvent(t){const{containerX:e,containerY:i}=this.getMapElementXYPosition(t),o={x:e,y:i};if(null===o.x||isNaN(o.x)||null===o.y||isNaN(o.y))return null;const s=this._map.containerPointToLatLng(o);return null===s.lng||isNaN(s.lng)||null===s.lat||isNaN(s.lat)?null:{lng:s.lng,lat:s.lat}}getMapEventElement(){return this._container}setDraggability(t){t?this._map.dragging.enable():this._map.dragging.disable()}project(t,e){const{x:i,y:o}=this._map.latLngToContainerPoint({lng:t,lat:e});return{x:i,y:o}}unproject(t,e){const{lng:i,lat:o}=this._map.containerPointToLatLng({x:t,y:e});return{lng:i,lat:o}}setCursor(t){\"unset\"===t?this.getMapEventElement().style.removeProperty(\"cursor\"):this.getMapEventElement().style.cursor=t}setDoubleClickToZoom(t){t?this._map.doubleClickZoom.enable():this._map.doubleClickZoom.disable()}render(t,e){t.created.forEach(t=>{this._layers[t.id]=this._lib.geoJSON(t,this.styleGeoJSONLayer(e)),this._map.addLayer(this._layers[t.id])}),t.deletedIds.forEach(t=>{this._map.removeLayer(this._layers[t])}),t.updated.forEach(t=>{this._map.removeLayer(this._layers[t.id]),this._layers[t.id]=this._lib.geoJSON(t,this.styleGeoJSONLayer(e)),this._map.addLayer(this._layers[t.id])})}clear(){this._currentModeCallbacks&&(this._currentModeCallbacks.onClear(),this.clearLayers(),this.clearPanes())}register(t){super.register(t),this._currentModeCallbacks&&this._currentModeCallbacks.onReady&&this._currentModeCallbacks.onReady()}getCoordinatePrecision(){return super.getCoordinatePrecision()}unregister(){return super.unregister()}}class a extends s{constructor(t){super(t),this._nextRender=void 0,this._map=void 0,this._container=void 0,this._rendered=!1,this.changedIds={deletion:!1,points:!1,linestrings:!1,polygons:!1,styling:!1},this._map=t.map,this._container=this._map.getContainer()}clearLayers(){this._rendered&&([\"point\",\"linestring\",\"polygon\"].forEach(t=>{const e=`td-${t.toLowerCase()}`;this._map.removeLayer(e),\"polygon\"===t&&this._map.removeLayer(e+\"-outline\"),this._map.removeSource(e)}),this._rendered=!1,this._nextRender&&(cancelAnimationFrame(this._nextRender),this._nextRender=void 0))}_addGeoJSONSource(t,e){this._map.addSource(t,{type:\"geojson\",data:{type:\"FeatureCollection\",features:e},tolerance:0})}_addFillLayer(t){return this._map.addLayer({id:t,source:t,type:\"fill\",paint:{\"fill-color\":[\"get\",\"polygonFillColor\"],\"fill-opacity\":[\"get\",\"polygonFillOpacity\"]}})}_addFillOutlineLayer(t,e){const i=this._map.addLayer({id:t+\"-outline\",source:t,type:\"line\",paint:{\"line-width\":[\"get\",\"polygonOutlineWidth\"],\"line-color\":[\"get\",\"polygonOutlineColor\"]}});return e&&this._map.moveLayer(t,e),i}_addLineLayer(t,e){const i=this._map.addLayer({id:t,source:t,type:\"line\",paint:{\"line-width\":[\"get\",\"lineStringWidth\"],\"line-color\":[\"get\",\"lineStringColor\"]}});return e&&this._map.moveLayer(t,e),i}_addPointLayer(t,e){const i=this._map.addLayer({id:t,source:t,type:\"circle\",paint:{\"circle-stroke-color\":[\"get\",\"pointOutlineColor\"],\"circle-stroke-width\":[\"get\",\"pointOutlineWidth\"],\"circle-radius\":[\"get\",\"pointWidth\"],\"circle-color\":[\"get\",\"pointColor\"]}});return e&&this._map.moveLayer(t,e),i}_addLayer(t,e,i){\"Point\"===e&&this._addPointLayer(t,i),\"LineString\"===e&&this._addLineLayer(t,i),\"Polygon\"===e&&(this._addFillLayer(t),this._addFillOutlineLayer(t,i))}_addGeoJSONLayer(t,e){const i=`td-${t.toLowerCase()}`;return this._addGeoJSONSource(i,e),this._addLayer(i,t),i}_setGeoJSONLayerData(t,e){const i=`td-${t.toLowerCase()}`;return this._map.getSource(i).setData({type:\"FeatureCollection\",features:e}),i}getEmptyGeometries(){return{points:[],linestrings:[],polygons:[]}}updateChangedIds(t){[...t.updated,...t.created].forEach(t=>{\"Point\"===t.geometry.type?this.changedIds.points=!0:\"LineString\"===t.geometry.type?this.changedIds.linestrings=!0:\"Polygon\"===t.geometry.type&&(this.changedIds.polygons=!0)}),t.deletedIds.length>0&&(this.changedIds.deletion=!0),0===t.created.length&&0===t.updated.length&&0===t.deletedIds.length&&(this.changedIds.styling=!0)}getLngLatFromEvent(t){const{left:e,top:i}=this._container.getBoundingClientRect();return this.unproject(t.clientX-e,t.clientY-i)}getMapEventElement(){return this._map.getCanvas()}setDraggability(t){t?(this._map.dragRotate.enable(),this._map.dragPan.enable()):(this._map.dragRotate.disable(),this._map.dragPan.disable())}project(t,e){const{x:i,y:o}=this._map.project({lng:t,lat:e});return{x:i,y:o}}unproject(t,e){const{lng:i,lat:o}=this._map.unproject({x:t,y:e});return{lng:i,lat:o}}setCursor(t){const e=this._map.getCanvas();\"unset\"===t?e.style.removeProperty(\"cursor\"):e.style.cursor=t}setDoubleClickToZoom(t){t?this._map.doubleClickZoom.enable():this._map.doubleClickZoom.disable()}render(t,e){this.updateChangedIds(t),this._nextRender&&cancelAnimationFrame(this._nextRender),this._nextRender=requestAnimationFrame(()=>{const i=[...t.created,...t.updated,...t.unchanged],o=this.getEmptyGeometries();for(let t=0;t<i.length;t++){const s=i[t];Object.keys(e).forEach(t=>{const{properties:i}=s;if(i.mode!==t)return;const r=e[t](s);\"Point\"===s.geometry.type?(i.pointColor=r.pointColor,i.pointOutlineColor=r.pointOutlineColor,i.pointOutlineWidth=r.pointOutlineWidth,i.pointWidth=r.pointWidth,o.points.push(s)):\"LineString\"===s.geometry.type?(i.lineStringColor=r.lineStringColor,i.lineStringWidth=r.lineStringWidth,o.linestrings.push(s)):\"Polygon\"===s.geometry.type&&(i.polygonFillColor=r.polygonFillColor,i.polygonFillOpacity=r.polygonFillOpacity,i.polygonOutlineColor=r.polygonOutlineColor,i.polygonOutlineWidth=r.polygonOutlineWidth,o.polygons.push(s))})}const{points:s,linestrings:r,polygons:n}=o;if(this._rendered){const t=this.changedIds.deletion||this.changedIds.styling,e=t||this.changedIds.linestrings,i=t||this.changedIds.polygons;let o;(t||this.changedIds.points)&&(o=this._setGeoJSONLayerData(\"Point\",s)),e&&this._setGeoJSONLayerData(\"LineString\",r),i&&this._setGeoJSONLayerData(\"Polygon\",n),o&&this._map.moveLayer(o)}else{const t=this._addGeoJSONLayer(\"Point\",s);this._addGeoJSONLayer(\"LineString\",r),this._addGeoJSONLayer(\"Polygon\",n),this._rendered=!0,t&&this._map.moveLayer(t)}this.changedIds={points:!1,linestrings:!1,polygons:!1,deletion:!1,styling:!1}})}clear(){this._currentModeCallbacks&&(this._currentModeCallbacks.onClear(),this.clearLayers())}getCoordinatePrecision(){return super.getCoordinatePrecision()}unregister(){return super.unregister()}register(t){super.register(t),this._currentModeCallbacks&&this._currentModeCallbacks.onReady&&this._currentModeCallbacks.onReady()}}class l extends s{constructor(t){super(t),this.mapboxglAdapter=void 0,this.mapboxglAdapter=new a(t)}register(t){this.mapboxglAdapter.register(t)}unregister(){this.mapboxglAdapter.unregister()}getCoordinatePrecision(){return this.mapboxglAdapter.getCoordinatePrecision()}getLngLatFromEvent(t){return this.mapboxglAdapter.getLngLatFromEvent(t)}getMapEventElement(){return this.mapboxglAdapter.getMapEventElement()}setDraggability(t){this.mapboxglAdapter.setDraggability(t)}project(t,e){return this.mapboxglAdapter.project(t,e)}unproject(t,e){return this.mapboxglAdapter.unproject(t,e)}setCursor(t){this.mapboxglAdapter.setCursor(t)}setDoubleClickToZoom(t){this.mapboxglAdapter.setDoubleClickToZoom(t)}render(t,e){this.mapboxglAdapter.render(t,e)}clear(){this.mapboxglAdapter.clear()}}function h(){throw new Error(\"Unimplemented abstract method.\")}let c=0;function d(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}class u{constructor(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=d(t.scale),this.displacement_=t.displacement,this.declutterMode_=t.declutterMode}clone(){const t=this.getScale();return new u({opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getOpacity(){return this.opacity_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getDisplacement(){return this.displacement_}getDeclutterMode(){return this.declutterMode_}getAnchor(){return h()}getImage(t){return h()}getHitDetectionImage(){return h()}getPixelRatio(t){return 1}getImageState(){return h()}getImageSize(){return h()}getOrigin(){return h()}getSize(){return h()}setDisplacement(t){this.displacement_=t}setOpacity(t){this.opacity_=t}setRotateWithView(t){this.rotateWithView_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=d(t)}listenImageChange(t){h()}load(){h()}unlistenImageChange(t){h()}ready(){return Promise.resolve()}}var g=u,p={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]},y={name:\"xyz\",min:[0,0,0],channel:[\"X\",\"Y\",\"Z\"],alias:[\"XYZ\",\"ciexyz\",\"cie1931\"],whitepoint:{2:{A:[109.85,100,35.585],C:[98.074,100,118.232],D50:[96.422,100,82.521],D55:[95.682,100,92.149],D65:[95.045592705167,100,108.9057750759878],D75:[94.972,100,122.638],F2:[99.187,100,67.395],F7:[95.044,100,108.755],F11:[100.966,100,64.37],E:[100,100,100]},10:{A:[111.144,100,35.2],C:[97.285,100,116.145],D50:[96.72,100,81.427],D55:[95.799,100,90.926],D65:[94.811,100,107.304],D75:[94.416,100,120.641],F2:[103.28,100,69.026],F7:[95.792,100,107.687],F11:[103.866,100,65.627],E:[100,100,100]}}};y.max=y.whitepoint[2].D65,y.rgb=function(t,e){var i,o,s,r=t[0]/(e=e||y.whitepoint[2].E)[0],n=t[1]/e[1],a=t[2]/e[2];return o=-.96924363628087*r+1.87596750150772*n+.041555057407175*a,s=.055630079696993*r+-.20397695888897*n+1.056971514242878*a,i=(i=3.240969941904521*r+-1.537383177570093*n+-.498610760293*a)>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*=12.92,s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:s*=12.92,[255*(i=Math.min(Math.max(0,i),1)),255*(o=Math.min(Math.max(0,o),1)),255*(s=Math.min(Math.max(0,s),1))]},p.xyz=function(t,e){var i=t[0]/255,o=t[1]/255,s=t[2]/255;return[(.41239079926595*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.35758433938387*(o=o>.04045?Math.pow((o+.055)/1.055,2.4):o/12.92)+.18048078840183*(s=s>.04045?Math.pow((s+.055)/1.055,2.4):s/12.92))*(e=e||y.whitepoint[2].E)[0],(.21263900587151*i+.71516867876775*o+.072192315360733*s)*e[1],(.019330818715591*i+.11919477979462*o+.95053215224966*s)*e[2]]};var m={name:\"luv\",min:[0,-134,-140],max:[100,224,122],channel:[\"lightness\",\"u\",\"v\"],alias:[\"LUV\",\"cieluv\",\"cie1976\"],xyz:function(t,e,i){var o,s,r,n,a,l,h;return 0===(r=t[0])?[0,0,0]:(o=t[1]/(13*r)+4*(a=y.whitepoint[i=i||2][e=e||\"D65\"][0])/(a+15*(l=y.whitepoint[i][e][1])+3*(h=y.whitepoint[i][e][2]))||0,s=t[2]/(13*r)+9*l/(a+15*l+3*h)||0,[9*(n=r>8?l*Math.pow((r+16)/116,3):l*r*.0011070564598794539)*o/(4*s)||0,n,n*(12-3*o-20*s)/(4*s)||0])}};y.luv=function(t,e,i){var o,s,r,n,a,l,h,c,d,u,g;u=4*(h=y.whitepoint[i=i||2][e=e||\"D65\"][0])/(h+15*(c=y.whitepoint[i][e][1])+3*(d=y.whitepoint[i][e][2])),g=9*c/(h+15*c+3*d),o=4*(n=t[0])/(n+15*(a=t[1])+3*(l=t[2]))||0,s=9*a/(n+15*a+3*l)||0;var p=a/c;return[r=p<=.008856451679035631?903.2962962962961*p:116*Math.pow(p,1/3)-16,13*r*(o-u),13*r*(s-g)]},m.lchuv=function(t){var e=t[0],i=t[1],o=t[2],s=Math.sqrt(i*i+o*o),r=360*Math.atan2(o,i)/2/Math.PI;return r<0&&(r+=360),[e,s,r]},y.lchuv=function(t){return m.lchuv(y.luv(t))};var f={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},v={red:0,orange:60,yellow:120,green:180,blue:240,purple:300},_={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(t){var e,i,o,s,r,n=t[0]/360,a=t[1]/100,l=t[2]/100,h=0;if(0===a)return[r=255*l,r,r];for(e=2*l-(i=l<.5?l*(1+a):l+a-l*a),s=[0,0,0];h<3;)(o=n+1/3*-(h-1))<0?o++:o>1&&o--,s[h++]=255*(r=6*o<1?e+6*(i-e)*o:2*o<1?i:3*o<2?e+(i-e)*(2/3-o)*6:e);return s}};function C(t,e,i){return Math.min(Math.max(t,e),i)}p.hsl=function(t){var e,i,o=t[0]/255,s=t[1]/255,r=t[2]/255,n=Math.min(o,s,r),a=Math.max(o,s,r),l=a-n;return a===n?e=0:o===a?e=(s-r)/l:s===a?e=2+(r-o)/l:r===a&&(e=4+(o-s)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(n+a)/2,[e,100*(a===n?0:i<=.5?l/(a+n):l/(2-a-n)),100*i]};const P=1024,x={};let M=0;function w(t){return Array.isArray(t)?t:function(t){if(x.hasOwnProperty(t))return x[t];if(M>=P){let t=0;for(const e in x)3&t++||(delete x[e],--M)}const e=function(t){var e;Array.isArray(t)&&t.raw&&(t=String.raw(...arguments)),t instanceof Number&&(t=+t);var i=function(t){var e,i,o=[],s=1;if(\"number\"==typeof t)return{space:\"rgb\",values:[t>>>16,(65280&t)>>>8,255&t],alpha:1};if(\"number\"==typeof t)return{space:\"rgb\",values:[t>>>16,(65280&t)>>>8,255&t],alpha:1};if(t=String(t).toLowerCase(),f[t])o=f[t].slice(),i=\"rgb\";else if(\"transparent\"===t)s=0,i=\"rgb\",o=[0,0,0];else if(\"#\"===t[0]){var r=t.slice(1),n=r.length;s=1,n<=4?(o=[parseInt(r[0]+r[0],16),parseInt(r[1]+r[1],16),parseInt(r[2]+r[2],16)],4===n&&(s=parseInt(r[3]+r[3],16)/255)):(o=[parseInt(r[0]+r[1],16),parseInt(r[2]+r[3],16),parseInt(r[4]+r[5],16)],8===n&&(s=parseInt(r[6]+r[7],16)/255)),o[0]||(o[0]=0),o[1]||(o[1]=0),o[2]||(o[2]=0),i=\"rgb\"}else if(e=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\\s*\\(([^\\)]*)\\)/.exec(t)){var a=\"cmyk\"===(i=e[1].replace(/a$/,\"\"))?4:\"gray\"===i?1:3;o=e[2].trim().split(/\\s*[,\\/]\\s*|\\s+/),\"color\"===i&&(i=o.shift()),s=(o=o.map(function(t,e){if(\"%\"===t[t.length-1])return t=parseFloat(t)/100,3===e?t:\"rgb\"===i?255*t:\"h\"===i[0]?100*t:\"l\"!==i[0]||e?\"lab\"===i?125*t:\"lch\"===i?e<2?150*t:360*t:\"o\"!==i[0]||e?\"oklab\"===i?.4*t:\"oklch\"===i?e<2?.4*t:360*t:t:t:100*t;if(\"h\"===i[e]||2===e&&\"h\"===i[i.length-1]){if(void 0!==v[t])return v[t];if(t.endsWith(\"deg\"))return parseFloat(t);if(t.endsWith(\"turn\"))return 360*parseFloat(t);if(t.endsWith(\"grad\"))return 360*parseFloat(t)/400;if(t.endsWith(\"rad\"))return 180*parseFloat(t)/Math.PI}return\"none\"===t?0:parseFloat(t)})).length>a?o.pop():1}else/[0-9](?:\\s|\\/|,)/.test(t)&&(o=t.match(/([0-9]+)/g).map(function(t){return parseFloat(t)}),i=t.match(/([a-z])/gi)?.join(\"\")?.toLowerCase()||\"rgb\");return{space:i,values:o,alpha:s}}(t);if(!i.space)return[];const o=\"h\"===i.space[0]?_.min:p.min,s=\"h\"===i.space[0]?_.max:p.max;return(e=Array(3))[0]=Math.min(Math.max(i.values[0],o[0]),s[0]),e[1]=Math.min(Math.max(i.values[1],o[1]),s[1]),e[2]=Math.min(Math.max(i.values[2],o[2]),s[2]),\"h\"===i.space[0]&&(e=_.rgb(e)),e.push(Math.min(Math.max(i.alpha,0),1)),e}(t);if(4!==e.length)throw new Error('failed to parse \"'+t+'\" as color');for(const i of e)if(isNaN(i))throw new Error('failed to parse \"'+t+'\" as color');return function(t){t[0]=C(t[0]+.5|0,0,255),t[1]=C(t[1]+.5|0,0,255),t[2]=C(t[2]+.5|0,0,255),t[3]=C(t[3],0,1)}(e),x[t]=e,++M,e}(t)}function S(t){let e=t[0];e!=(0|e)&&(e=e+.5|0);let i=t[1];i!=(0|i)&&(i=i+.5|0);let o=t[2];return o!=(0|o)&&(o=o+.5|0),\"rgba(\"+e+\",\"+i+\",\"+o+\",\"+(void 0===t[3]?1:Math.round(1e3*t[3])/1e3)+\")\"}const b=\"undefined\"!=typeof navigator&&void 0!==navigator.userAgent?navigator.userAgent.toLowerCase():\"\";b.includes(\"firefox\"),b.includes(\"safari\")&&!b.includes(\"chrom\")&&(b.includes(\"version/15.4\")||/cpu (os|iphone os) 15_4 like mac os x/.test(b)),b.includes(\"webkit\")&&b.includes(\"edge\"),b.includes(\"macintosh\");const E=\"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof OffscreenCanvas&&self instanceof WorkerGlobalScope,I=\"undefined\"!=typeof Image&&Image.prototype.decode;function D(t,e,i,o){let s;return s=i&&i.length?i.shift():E?new OffscreenCanvas(t||300,e||300):document.createElement(\"canvas\"),t&&(s.width=t),e&&(s.height=e),s.getContext(\"2d\",o)}let k;function F(){return k||(k=D(1,1)),k}!function(){let t=!1;try{const e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"_\",null,e),window.removeEventListener(\"_\",null,e)}catch(t){}}();var O=class{constructor(){this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposeInternal())}disposeInternal(){}},L=class{constructor(t){this.type=t,this.target=null}preventDefault(){this.defaultPrevented=!0}stopPropagation(){this.propagationStopped=!0}};function W(){}function j(t){for(const e in t)delete t[e]}var B=class extends O{constructor(t){super(),this.eventTarget_=t,this.pendingRemovals_=null,this.dispatching_=null,this.listeners_=null}addEventListener(t,e){if(!t||!e)return;const i=this.listeners_||(this.listeners_={}),o=i[t]||(i[t]=[]);o.includes(e)||o.push(e)}dispatchEvent(t){const e=\"string\"==typeof t,i=e?t:t.type,o=this.listeners_&&this.listeners_[i];if(!o)return;const s=e?new L(t):t;s.target||(s.target=this.eventTarget_||this);const r=this.dispatching_||(this.dispatching_={}),n=this.pendingRemovals_||(this.pendingRemovals_={});let a;i in r||(r[i]=0,n[i]=0),++r[i];for(let t=0,e=o.length;t<e;++t)if(a=\"handleEvent\"in o[t]?o[t].handleEvent(s):o[t].call(this,s),!1===a||s.propagationStopped){a=!1;break}if(0==--r[i]){let t=n[i];for(delete n[i];t--;)this.removeEventListener(i,W);delete r[i]}return a}disposeInternal(){this.listeners_&&j(this.listeners_)}getListeners(t){return this.listeners_&&this.listeners_[t]||void 0}hasListener(t){return!!this.listeners_&&(t?t in this.listeners_:Object.keys(this.listeners_).length>0)}removeEventListener(t,e){if(!this.listeners_)return;const i=this.listeners_[t];if(!i)return;const o=i.indexOf(e);-1!==o&&(this.pendingRemovals_&&t in this.pendingRemovals_?(i[o]=W,++this.pendingRemovals_[t]):(i.splice(o,1),0===i.length&&delete this.listeners_[t]))}},G=\"change\";function N(t,e,i,o,s){if(s){const s=i;i=function(){t.removeEventListener(e,i),s.apply(o??this,arguments)}}else o&&o!==t&&(i=i.bind(o));const r={target:t,type:e,listener:i};return t.addEventListener(e,i),r}function A(t,e,i,o){return N(t,e,i,o,!0)}function R(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),j(t))}function V(t,e,i){return e+\":\"+t+\":\"+(i?w(i):\"null\")}const z=new class{constructor(){this.cache_={},this.patternCache_={},this.cacheSize_=0,this.maxCacheSize_=32}clear(){this.cache_={},this.patternCache_={},this.cacheSize_=0}canExpireCache(){return this.cacheSize_>this.maxCacheSize_}expire(){if(this.canExpireCache()){let t=0;for(const e in this.cache_)3&t++||this.cache_[e].hasListener()||(delete this.cache_[e],delete this.patternCache_[e],--this.cacheSize_)}}get(t,e,i){const o=V(t,e,i);return o in this.cache_?this.cache_[o]:null}getPattern(t,e,i){const o=V(t,e,i);return o in this.patternCache_?this.patternCache_[o]:null}set(t,e,i,o,s){const r=V(t,e,i),n=r in this.cache_;this.cache_[r]=o,s&&(0===o.getImageState()&&o.load(),1===o.getImageState()?o.ready().then(()=>{this.patternCache_[r]=F().createPattern(o.getImage(1),\"repeat\")}):this.patternCache_[r]=F().createPattern(o.getImage(1),\"repeat\")),n||++this.cacheSize_}setSize(t){this.maxCacheSize_=t,this.expire()}};let T=null;class X extends B{constructor(t,e,i,o,s){super(),this.hitDetectionImage_=null,this.image_=t,this.crossOrigin_=i,this.canvas_={},this.color_=s,this.imageState_=void 0===o?0:o,this.size_=t&&t.width&&t.height?[t.width,t.height]:null,this.src_=e,this.ready_=null}initializeImage_(){this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)}isTainted_(){if(void 0===this.tainted_&&2===this.imageState_){T||(T=D(1,1,void 0,{willReadFrequently:!0})),T.drawImage(this.image_,0,0);try{T.getImageData(0,0,1,1),this.tainted_=!1}catch(t){T=null,this.tainted_=!0}}return!0===this.tainted_}dispatchChangeEvent_(){this.dispatchEvent(G)}handleImageError_(){this.imageState_=3,this.dispatchChangeEvent_()}handleImageLoad_(){this.imageState_=2,this.size_=[this.image_.width,this.image_.height],this.dispatchChangeEvent_()}getImage(t){return this.image_||this.initializeImage_(),this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_}getPixelRatio(t){return this.replaceColor_(t),this.canvas_[t]?t:1}getImageState(){return this.imageState_}getHitDetectionImage(){if(this.image_||this.initializeImage_(),!this.hitDetectionImage_)if(this.isTainted_()){const t=this.size_[0],e=this.size_[1],i=D(t,e);i.fillRect(0,0,t,e),this.hitDetectionImage_=i.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_}getSize(){return this.size_}getSrc(){return this.src_}load(){if(0===this.imageState_){this.image_||this.initializeImage_(),this.imageState_=1;try{void 0!==this.src_&&(this.image_.src=this.src_)}catch(t){this.handleImageError_()}this.image_ instanceof HTMLImageElement&&(t=this.image_,e=this.src_,e&&(t.src=e),t.src&&I?new Promise((e,i)=>t.decode().then(()=>e(t)).catch(o=>t.complete&&t.width?e(t):i(o))):function(t,e){return new Promise((e,i)=>{function o(){r(),e(t)}function s(){r(),i(new Error(\"Image load error\"))}function r(){t.removeEventListener(\"load\",o),t.removeEventListener(\"error\",s)}t.addEventListener(\"load\",o),t.addEventListener(\"error\",s)})}(t)).then(t=>{this.image_=t,this.handleImageLoad_()}).catch(this.handleImageError_.bind(this))}var t,e}replaceColor_(t){if(!this.color_||this.canvas_[t]||2!==this.imageState_)return;const e=this.image_,i=document.createElement(\"canvas\");i.width=Math.ceil(e.width*t),i.height=Math.ceil(e.height*t);const o=i.getContext(\"2d\");var s;o.scale(t,t),o.drawImage(e,0,0),o.globalCompositeOperation=\"multiply\",o.fillStyle=\"string\"==typeof(s=this.color_)?s:S(s),o.fillRect(0,0,i.width/t,i.height/t),o.globalCompositeOperation=\"destination-in\",o.drawImage(e,0,0),this.canvas_[t]=i}ready(){return this.ready_||(this.ready_=new Promise(t=>{if(2===this.imageState_||3===this.imageState_)t();else{const e=()=>{2!==this.imageState_&&3!==this.imageState_||(this.removeEventListener(G,e),t())};this.addEventListener(G,e)}})),this.ready_}}function U(t,e,i,o,s,r){let n=void 0===e?void 0:z.get(e,i,s);return n||(n=new X(t,t&&\"src\"in t?t.src||void 0:e,i,o,s),z.set(e,i,s,n,r)),r&&n&&!z.getPattern(e,i,s)&&z.set(e,i,s,n,r),n}function Y(t){return t?Array.isArray(t)?S(t):\"object\"==typeof t&&\"src\"in t?function(t){if(!t.offset||!t.size)return z.getPattern(t.src,\"anonymous\",t.color);const e=t.src+\":\"+t.offset,i=z.getPattern(e,void 0,t.color);if(i)return i;const o=z.get(t.src,\"anonymous\",null);if(2!==o.getImageState())return null;const s=D(t.size[0],t.size[1]);return s.drawImage(o.getImage(1),t.offset[0],t.offset[1],t.size[0],t.size[1],0,0,t.size[0],t.size[1]),U(s.canvas,e,void 0,2,t.color,!0),z.getPattern(e,void 0,t.color)}(t):t:null}var H=class extends B{constructor(){super(),this.on=this.onInternal,this.once=this.onceInternal,this.un=this.unInternal,this.revision_=0}changed(){++this.revision_,this.dispatchEvent(G)}getRevision(){return this.revision_}onInternal(t,e){if(Array.isArray(t)){const i=t.length,o=new Array(i);for(let s=0;s<i;++s)o[s]=N(this,t[s],e);return o}return N(this,t,e)}onceInternal(t,e){let i;if(Array.isArray(t)){const o=t.length;i=new Array(o);for(let s=0;s<o;++s)i[s]=A(this,t[s],e)}else i=A(this,t,e);return e.ol_key=i,i}unInternal(t,e){const i=e.ol_key;if(i)!function(t){if(Array.isArray(t))for(let e=0,i=t.length;e<i;++e)R(t[e]);else R(t)}(i);else if(Array.isArray(t))for(let i=0,o=t.length;i<o;++i)this.removeEventListener(t[i],e);else this.removeEventListener(t,e)}};class K extends L{constructor(t,e,i){super(t),this.key=e,this.oldValue=i}}const J=\"#000\",$=\"round\",q=\"round\";new class extends H{constructor(t){super(),this.ol_uid||(this.ol_uid=String(++c)),this.values_=null,void 0!==t&&this.setProperties(t)}get(t){let e;return this.values_&&this.values_.hasOwnProperty(t)&&(e=this.values_[t]),e}getKeys(){return this.values_&&Object.keys(this.values_)||[]}getProperties(){return this.values_&&Object.assign({},this.values_)||{}}getPropertiesInternal(){return this.values_}hasProperties(){return!!this.values_}notify(t,e){let i;i=`change:${t}`,this.hasListener(i)&&this.dispatchEvent(new K(i,t,e)),i=\"propertychange\",this.hasListener(i)&&this.dispatchEvent(new K(i,t,e))}addChangeListener(t,e){this.addEventListener(`change:${t}`,e)}removeChangeListener(t,e){this.removeEventListener(`change:${t}`,e)}set(t,e,i){const o=this.values_||(this.values_={});if(i)o[t]=e;else{const i=o[t];o[t]=e,i!==e&&this.notify(t,i)}}setProperties(t,e){for(const i in t)this.set(i,t[i],e)}applyProperties(t){t.values_&&Object.assign(this.values_||(this.values_={}),t.values_)}unset(t,e){if(this.values_&&t in this.values_){const i=this.values_[t];delete this.values_[t],function(t){let e;for(e in t)return!1;return!e}(this.values_)&&(this.values_=null),e||this.notify(t,i)}}};class Z extends g{constructor(t){super({opacity:1,rotateWithView:void 0!==t.rotateWithView&&t.rotateWithView,rotation:void 0!==t.rotation?t.rotation:0,scale:void 0!==t.scale?t.scale:1,displacement:void 0!==t.displacement?t.displacement:[0,0],declutterMode:t.declutterMode}),this.hitDetectionCanvas_=null,this.fill_=void 0!==t.fill?t.fill:null,this.origin_=[0,0],this.points_=t.points,this.radius=t.radius,this.radius2_=t.radius2,this.angle_=void 0!==t.angle?t.angle:0,this.stroke_=void 0!==t.stroke?t.stroke:null,this.imageState_=this.fill_&&this.fill_.loading()?1:2,1===this.imageState_&&this.ready().then(()=>this.imageState_=2),this.render()}clone(){const t=this.getScale(),e=new Z({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return e.setOpacity(this.getOpacity()),e}getAnchor(){const t=this.size_,e=this.getDisplacement(),i=this.getScaleArray();return[t[0]/2-e[0]/i[0],t[1]/2+e[1]/i[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(t){this.fill_=t,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||(this.hitDetectionCanvas_=this.createHitDetectionCanvas_(this.renderOptions_)),this.hitDetectionCanvas_}getImage(t){let e=this.canvases_[t];if(!e){const i=this.renderOptions_,o=D(i.size*t,i.size*t);this.draw_(i,o,t),e=o.canvas,this.canvases_[t]=e}return e}getPixelRatio(t){return t}getImageSize(){return this.size_}getImageState(){return this.imageState_}getOrigin(){return this.origin_}getPoints(){return this.points_}getRadius(){return this.radius}getRadius2(){return this.radius2_}getSize(){return this.size_}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t,this.render()}listenImageChange(t){}load(){}unlistenImageChange(t){}calculateLineJoinSize_(t,e,i){if(0===e||Infinity===this.points_||\"bevel\"!==t&&\"miter\"!==t)return e;let o=this.radius,s=void 0===this.radius2_?o:this.radius2_;if(o<s){const t=o;o=s,s=t}const r=2*Math.PI/(void 0===this.radius2_?this.points_:2*this.points_),n=s*Math.sin(r),a=o-Math.sqrt(s*s-n*n),l=Math.sqrt(n*n+a*a),h=l/n;if(\"miter\"===t&&h<=i)return h*e;const c=e/2/h,d=e/2*(a/l),u=Math.sqrt((o+c)*(o+c)+d*d)-o;if(void 0===this.radius2_||\"bevel\"===t)return 2*u;const g=o*Math.sin(r),p=s-Math.sqrt(o*o-g*g),y=Math.sqrt(g*g+p*p)/g;return y<=i?2*Math.max(u,y*e/2-s-o):2*u}createRenderOptions(){let t,e=$,i=q,o=0,s=null,r=0,n=0;this.stroke_&&(t=Y(this.stroke_.getColor()??\"#000\"),n=this.stroke_.getWidth()??1,s=this.stroke_.getLineDash(),r=this.stroke_.getLineDashOffset()??0,i=this.stroke_.getLineJoin()??q,e=this.stroke_.getLineCap()??$,o=this.stroke_.getMiterLimit()??10);const a=this.calculateLineJoinSize_(i,n,o),l=Math.max(this.radius,this.radius2_||0);return{strokeStyle:t,strokeWidth:n,size:Math.ceil(2*l+a),lineCap:e,lineDash:s,lineDashOffset:r,lineJoin:i,miterLimit:o}}render(){this.renderOptions_=this.createRenderOptions();const t=this.renderOptions_.size;this.canvases_={},this.hitDetectionCanvas_=null,this.size_=[t,t]}draw_(t,e,i){if(e.scale(i,i),e.translate(t.size/2,t.size/2),this.createPath_(e),this.fill_){let t=this.fill_.getColor();null===t&&(t=J),e.fillStyle=Y(t),e.fill()}t.strokeStyle&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke())}createHitDetectionCanvas_(t){let e;if(this.fill_){let i=this.fill_.getColor(),o=0;\"string\"==typeof i&&(i=w(i)),null===i?o=1:Array.isArray(i)&&(o=4===i.length?i[3]:1),0===o&&(e=D(t.size,t.size),this.drawHitDetectionCanvas_(t,e))}return e?e.canvas:this.getImage(1)}createPath_(t){let e=this.points_;const i=this.radius;if(Infinity===e)t.arc(0,0,i,0,2*Math.PI);else{const o=void 0===this.radius2_?i:this.radius2_;void 0!==this.radius2_&&(e*=2);const s=this.angle_-Math.PI/2,r=2*Math.PI/e;for(let n=0;n<e;n++){const e=s+n*r,a=n%2==0?i:o;t.lineTo(a*Math.cos(e),a*Math.sin(e))}t.closePath()}}drawHitDetectionCanvas_(t,e){e.translate(t.size/2,t.size/2),this.createPath_(e),e.fillStyle=J,e.fill(),t.strokeStyle&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke())}ready(){return this.fill_?this.fill_.ready():Promise.resolve()}}var Q=Z;class tt extends Q{constructor(t){super({points:Infinity,fill:(t=t||{radius:5}).fill,radius:t.radius,stroke:t.stroke,scale:void 0!==t.scale?t.scale:1,rotation:void 0!==t.rotation?t.rotation:0,rotateWithView:void 0!==t.rotateWithView&&t.rotateWithView,displacement:void 0!==t.displacement?t.displacement:[0,0],declutterMode:t.declutterMode})}clone(){const t=this.getScale(),e=new tt({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return e.setOpacity(this.getOpacity()),e}setRadius(t){this.radius=t,this.render()}}var et=tt;class it{constructor(t){t=t||{},this.patternImage_=null,this.color_=null,void 0!==t.color&&this.setColor(t.color)}clone(){const t=this.getColor();return new it({color:Array.isArray(t)?t.slice():t||void 0})}getColor(){return this.color_}setColor(t){if(null!==t&&\"object\"==typeof t&&\"src\"in t){const e=U(null,t.src,\"anonymous\",void 0,t.offset?null:t.color?t.color:null,!(t.offset&&t.size));e.ready().then(()=>{this.patternImage_=null}),0===e.getImageState()&&e.load(),1===e.getImageState()&&(this.patternImage_=e)}this.color_=t}loading(){return!!this.patternImage_}ready(){return this.patternImage_?this.patternImage_.ready():Promise.resolve()}}var ot=it;class st{constructor(t){this.color_=void 0!==(t=t||{}).color?t.color:null,this.lineCap_=t.lineCap,this.lineDash_=void 0!==t.lineDash?t.lineDash:null,this.lineDashOffset_=t.lineDashOffset,this.lineJoin_=t.lineJoin,this.miterLimit_=t.miterLimit,this.width_=t.width}clone(){const t=this.getColor();return new st({color:Array.isArray(t)?t.slice():t||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})}getColor(){return this.color_}getLineCap(){return this.lineCap_}getLineDash(){return this.lineDash_}getLineDashOffset(){return this.lineDashOffset_}getLineJoin(){return this.lineJoin_}getMiterLimit(){return this.miterLimit_}getWidth(){return this.width_}setColor(t){this.color_=t}setLineCap(t){this.lineCap_=t}setLineDash(t){this.lineDash_=t}setLineDashOffset(t){this.lineDashOffset_=t}setLineJoin(t){this.lineJoin_=t}setMiterLimit(t){this.miterLimit_=t}setWidth(t){this.width_=t}}var rt=st;class nt{constructor(t){t=t||{},this.geometry_=null,this.geometryFunction_=at,void 0!==t.geometry&&this.setGeometry(t.geometry),this.fill_=void 0!==t.fill?t.fill:null,this.image_=void 0!==t.image?t.image:null,this.renderer_=void 0!==t.renderer?t.renderer:null,this.hitDetectionRenderer_=void 0!==t.hitDetectionRenderer?t.hitDetectionRenderer:null,this.stroke_=void 0!==t.stroke?t.stroke:null,this.text_=void 0!==t.text?t.text:null,this.zIndex_=t.zIndex}clone(){let t=this.getGeometry();return t&&\"object\"==typeof t&&(t=t.clone()),new nt({geometry:t??void 0,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer()??void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(t){this.renderer_=t}setHitDetectionRenderer(t){this.hitDetectionRenderer_=t}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(t){this.fill_=t}getImage(){return this.image_}setImage(t){this.image_=t}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t}getText(){return this.text_}setText(t){this.text_=t}getZIndex(){return this.zIndex_}setGeometry(t){\"function\"==typeof t?this.geometryFunction_=t:\"string\"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=at,this.geometry_=t}setZIndex(t){this.zIndex_=t}}function at(t){return t.getGeometry()}var lt=nt;const ht={radians:6370997/(2*Math.PI),degrees:2*Math.PI*6370997/360,ft:.3048,m:1,\"us-ft\":1200/3937};var ct=class{constructor(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:\"enu\",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}canWrapX(){return this.canWrapX_}getCode(){return this.code_}getExtent(){return this.extent_}getUnits(){return this.units_}getMetersPerUnit(){return this.metersPerUnit_||ht[this.units_]}getWorldExtent(){return this.worldExtent_}getAxisOrientation(){return this.axisOrientation_}isGlobal(){return this.global_}setGlobal(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)}getDefaultTileGrid(){return this.defaultTileGrid_}setDefaultTileGrid(t){this.defaultTileGrid_=t}setExtent(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)}setWorldExtent(t){this.worldExtent_=t}setGetPointResolution(t){this.getPointResolutionFunc_=t}getPointResolutionFunc(){return this.getPointResolutionFunc_}};const dt=6378137,ut=Math.PI*dt,gt=[-ut,-ut,ut,ut],pt=[-180,-85,180,85],yt=dt*Math.log(Math.tan(Math.PI/2));class mt extends ct{constructor(t){super({code:t,units:\"m\",extent:gt,global:!0,worldExtent:pt,getPointResolution:function(t,e){return t/Math.cosh(e[1]/dt)}})}}const ft=[new mt(\"EPSG:3857\"),new mt(\"EPSG:102100\"),new mt(\"EPSG:102113\"),new mt(\"EPSG:900913\"),new mt(\"http://www.opengis.net/def/crs/EPSG/0/3857\"),new mt(\"http://www.opengis.net/gml/srs/epsg.xml#3857\")],vt=[-180,-90,180,90],_t=6378137*Math.PI/180;class Ct extends ct{constructor(t,e){super({code:t,units:\"degrees\",extent:vt,axisOrientation:e,global:!0,metersPerUnit:_t,worldExtent:vt})}}const Pt=[new Ct(\"CRS:84\"),new Ct(\"EPSG:4326\",\"neu\"),new Ct(\"urn:ogc:def:crs:OGC:1.3:CRS84\"),new Ct(\"urn:ogc:def:crs:OGC:2:84\"),new Ct(\"http://www.opengis.net/def/crs/OGC/1.3/CRS84\"),new Ct(\"http://www.opengis.net/gml/srs/epsg.xml#4326\",\"neu\"),new Ct(\"http://www.opengis.net/def/crs/EPSG/0/4326\",\"neu\")];let xt={},Mt={};function wt(t,e,i){const o=t.getCode(),s=e.getCode();o in Mt||(Mt[o]={}),Mt[o][s]=i}function St(t,e){if(void 0!==e)for(let i=0,o=t.length;i<o;++i)e[i]=t[i];else e=t.slice();return e}function bt(t,e){if(void 0!==e&&t!==e){for(let i=0,o=t.length;i<o;++i)e[i]=t[i];t=e}return t}function Et(t){!function(t,e){xt[t]=e}(t.getCode(),t),wt(t,t,St)}function It(t){return\"string\"==typeof t?xt[e=t]||xt[e.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\\w+)$/,\"EPSG:$3\")]||null:t||null;var e}function Dt(t){!function(t){t.forEach(Et)}(t),t.forEach(function(e){t.forEach(function(t){e!==t&&wt(e,t,St)})})}function kt(t,e,i){const o=function(t,e){return function(t,e){let i=function(t,e){let i;return t in Mt&&e in Mt[t]&&(i=Mt[t][e]),i}(t.getCode(),e.getCode());return i||(i=bt),i}(It(t),It(e))}(e,i);return o(t,void 0,t.length)}var Ft,Ot,Lt,Wt;Dt(ft),Dt(Pt),Ft=ft,Ot=function(t,e,i){const o=t.length;i=i>1?i:2,void 0===e&&(e=i>2?t.slice():new Array(o));for(let s=0;s<o;s+=i){e[s]=ut*t[s]/180;let i=dt*Math.log(Math.tan(Math.PI*(+t[s+1]+90)/360));i>yt?i=yt:i<-yt&&(i=-yt),e[s+1]=i}return e},Lt=function(t,e,i){const o=t.length;i=i>1?i:2,void 0===e&&(e=i>2?t.slice():new Array(o));for(let s=0;s<o;s+=i)e[s]=180*t[s]/ut,e[s+1]=360*Math.atan(Math.exp(t[s+1]/dt))/Math.PI-90;return e},Pt.forEach(function(t){Ft.forEach(function(e){wt(t,e,Ot),wt(e,t,Lt)})});class jt extends s{constructor(t){super(t),this.stylingFunction=()=>({}),this._lib=void 0,this._map=void 0,this._container=void 0,this._projection=\"EPSG:3857\",this._vectorSource=void 0,this._geoJSONReader=void 0,this._map=t.map,this._lib=t.lib,this._geoJSONReader=new this._lib.GeoJSON,this._container=this._map.getViewport(),this._container.setAttribute(\"tabindex\",\"0\");const e=new this._lib.VectorSource({features:[]});this._vectorSource=e;const i=new this._lib.VectorLayer({source:e,style:t=>this.getStyles(t,this.stylingFunction())});this._map.addLayer(i)}hexToRGB(t){return{r:parseInt(t.slice(1,3),16),g:parseInt(t.slice(3,5),16),b:parseInt(t.slice(5,7),16)}}getStyles(t,e){const i=t.getGeometry();if(i)return{Point:t=>{const i=t.getProperties(),o=e[i.mode]({type:\"Feature\",geometry:{type:\"Point\",coordinates:[]},properties:i});return new this._lib.Style({image:new et({radius:o.pointWidth,fill:new ot({color:o.pointColor}),stroke:new rt({color:o.pointOutlineColor,width:o.pointOutlineWidth})})})},LineString:t=>{const i=t.getProperties(),o=e[i.mode]({type:\"Feature\",geometry:{type:\"LineString\",coordinates:[]},properties:i});return new this._lib.Style({stroke:new this._lib.Stroke({color:o.lineStringColor,width:o.lineStringWidth})})},Polygon:t=>{const i=t.getProperties(),o=e[i.mode]({type:\"Feature\",geometry:{type:\"LineString\",coordinates:[]},properties:i}),{r:s,g:r,b:n}=this.hexToRGB(o.polygonFillColor);return new lt({stroke:new rt({color:o.polygonOutlineColor,width:o.polygonOutlineWidth}),fill:new ot({color:`rgba(${s},${r},${n},${o.polygonFillOpacity})`})})}}[i.getType()](t)}clearLayers(){this._vectorSource&&this._vectorSource.clear()}addFeature(t){if(!this._vectorSource||!this._geoJSONReader)throw new Error(\"Vector Source not initalised\");{const e=this._geoJSONReader.readFeature(t,{featureProjection:this._projection});this._vectorSource.addFeature(e)}}removeFeature(t){if(!this._vectorSource)throw new Error(\"Vector Source not initalised\");{const e=this._vectorSource.getFeatureById(t);if(!e)return;this._vectorSource.removeFeature(e)}}getLngLatFromEvent(t){const{containerX:e,containerY:i}=this.getMapElementXYPosition(t);try{return this.unproject(e,i)}catch(t){return null}}getMapEventElement(){const t=this._container.querySelectorAll(\"canvas\");if(t.length>1)throw Error(\"Terra Draw currently only supports 1 canvas with OpenLayers\");return t[0]}setDraggability(t){this._map.getInteractions().forEach(e=>{\"DragPan\"===e.constructor.name&&e.setActive(t)})}project(t,e){const[i,o]=this._map.getPixelFromCoordinate(kt([t,e],\"EPSG:4326\",\"EPSG:3857\"));return{x:i,y:o}}unproject(t,e){const[i,o]=function(t,e){const i=kt(t,\"EPSG:3857\",\"EPSG:4326\"),o=i[0];return(o<-180||o>180)&&(i[0]=function(t,e){const i=t%360;return 360*i<0?i+360:i}(o+180)-180),i}(this._map.getCoordinateFromPixel([t,e]));return{lng:i,lat:o}}setCursor(t){\"unset\"===t?this.getMapEventElement().style.removeProperty(\"cursor\"):this.getMapEventElement().style.cursor=t}setDoubleClickToZoom(t){this._map.getInteractions().forEach(function(e){\"DoubleClickZoom\"===e.constructor.name&&e.setActive(t)})}render(t,e){if(this.stylingFunction=()=>e,!this._vectorSource)throw new Error(\"Vector Layer source has disappeared\");t.deletedIds.forEach(t=>{this.removeFeature(t)}),t.updated.forEach(t=>{this.removeFeature(t.id),this.addFeature(t)}),t.created.forEach(t=>{this.addFeature(t)})}clear(){this._currentModeCallbacks&&(this._currentModeCallbacks.onClear(),this.clearLayers())}register(t){super.register(t),this._currentModeCallbacks&&this._currentModeCallbacks.onReady&&this._currentModeCallbacks.onReady()}getCoordinatePrecision(){return super.getCoordinatePrecision()}unregister(){return super.unregister()}}class Bt extends s{constructor(t){super(t),this._lib=void 0,this._mapView=void 0,this._container=void 0,this._featureIdAttributeName=\"__tdId\",this._featureLayerName=\"__terraDrawFeatures\",this._featureLayer=void 0,this._dragEnabled=!0,this._zoomEnabled=!0,this._dragHandler=void 0,this._doubleClickHandler=void 0,this._mapView=t.map,this._lib=t.lib,this._container=this._mapView.container,this._featureLayer=new this._lib.GraphicsLayer({id:this._featureLayerName}),this._mapView.map.add(this._featureLayer)}register(t){super.register(t),this._dragHandler=this._mapView.on(\"drag\",t=>{this._dragEnabled||t.stopPropagation()}),this._doubleClickHandler=this._mapView.on(\"double-click\",t=>{this._zoomEnabled||t.stopPropagation()}),this._currentModeCallbacks&&this._currentModeCallbacks.onReady&&this._currentModeCallbacks.onReady()}unregister(){super.unregister(),this._dragHandler&&this._dragHandler.remove(),this._doubleClickHandler&&this._doubleClickHandler.remove()}getCoordinatePrecision(){return super.getCoordinatePrecision()}getLngLatFromEvent(t){const{containerX:e,containerY:i}=this.getMapElementXYPosition(t);return this.unproject(e,i)}getMapEventElement(){return this._container.querySelector(\".esri-view-surface\")}setDraggability(t){this._dragEnabled=t}project(t,e){const i=new this._lib.Point({longitude:t,latitude:e}),{x:o,y:s}=this._mapView.toScreen(i);return{x:o,y:s}}unproject(t,e){const{latitude:i,longitude:o}=this._mapView.toMap({x:t,y:e});return{lng:o,lat:i}}setCursor(t){\"unset\"===t?this.getMapEventElement().style.removeProperty(\"cursor\"):this.getMapEventElement().style.cursor=t}setDoubleClickToZoom(t){this._zoomEnabled=t}render(t,e){t.created.forEach(t=>{this.addFeature(t,e)}),t.updated.forEach(t=>{this.removeFeatureById(t.id),this.addFeature(t,e)}),t.deletedIds.forEach(t=>{this.removeFeatureById(t)})}clear(){this._featureLayer.graphics.removeAll()}removeFeatureById(t){const e=this._featureLayer.graphics.find(e=>e.attributes[this._featureIdAttributeName]===t);this._featureLayer.remove(e)}addFeature(t,e){const{coordinates:i,type:o}=t.geometry,s=e[t.properties.mode](t);let r,n;switch(o){case\"Point\":n=new this._lib.Point({latitude:i[1],longitude:i[0]}),r=new this._lib.SimpleMarkerSymbol({color:this.getColorFromHex(s.pointColor),size:2*s.pointWidth+\"px\",outline:{color:this.getColorFromHex(s.pointOutlineColor),width:s.pointOutlineWidth+\"px\"}});break;case\"LineString\":n=new this._lib.Polyline({paths:[i]}),r=new this._lib.SimpleLineSymbol({color:this.getColorFromHex(s.lineStringColor),width:s.lineStringWidth+\"px\"});break;case\"Polygon\":n=new this._lib.Polygon({rings:i}),r=new this._lib.SimpleFillSymbol({color:this.getColorFromHex(s.polygonFillColor,s.polygonFillOpacity),outline:{color:this.getColorFromHex(s.polygonOutlineColor),width:s.polygonOutlineWidth+\"px\"}})}const a=new this._lib.Graphic({geometry:n,symbol:r,attributes:{[this._featureIdAttributeName]:t.id}});\"Point\"===o?this._featureLayer.graphics.add(a):this._featureLayer.graphics.add(a,0)}getColorFromHex(t,e){const i=this._lib.Color.fromHex(t);return e&&(i.a=e),i}}!function(t){t.Commit=\"commit\",t.Provisional=\"provisional\",t.Finish=\"finish\"}(Wt||(Wt={}));const Gt=\"selected\",Nt=\"midPoint\",At=\"closingPoint\";function Rt(t){return Boolean(t&&\"object\"==typeof t&&null!==t&&!Array.isArray(t))}function Vt(t){if(!function(t){return\"number\"==typeof t&&!isNaN(new Date(t).valueOf())}(t))throw new Error(\"updatedAt and createdAt are not valid timestamps\");return!0}var zt;!function(t){t.Drawing=\"drawing\",t.Select=\"select\",t.Static=\"static\",t.Render=\"render\"}(zt||(zt={}));class Tt{get state(){return this._state}set state(t){throw new Error(\"Please use the modes lifecycle methods\")}get styles(){return this._styles}set styles(t){if(\"object\"!=typeof t)throw new Error(\"Styling must be an object\");this.onStyleChange([],\"styling\"),this._styles=t}registerBehaviors(t){}constructor(e){this._state=void 0,this._styles=void 0,this.behaviors=[],this.validate=void 0,this.pointerDistance=void 0,this.coordinatePrecision=void 0,this.onStyleChange=void 0,this.store=void 0,this.setDoubleClickToZoom=void 0,this.unproject=void 0,this.project=void 0,this.setCursor=void 0,this.projection=void 0,this.type=zt.Drawing,this.mode=\"base\",this._state=\"unregistered\",this._styles=e&&e.styles?t({},e.styles):{},this.pointerDistance=e&&e.pointerDistance||40,this.validate=e&&e.validation,this.projection=e&&e.projection||\"web-mercator\"}setDrawing(){if(\"started\"!==this._state)throw new Error(\"Mode must be unregistered or stopped to start\");this._state=\"drawing\"}setStarted(){if(\"stopped\"!==this._state&&\"registered\"!==this._state&&\"drawing\"!==this._state&&\"selecting\"!==this._state)throw new Error(\"Mode must be unregistered or stopped to start\");this._state=\"started\",this.setDoubleClickToZoom(!1)}setStopped(){if(\"started\"!==this._state)throw new Error(\"Mode must be started to be stopped\");this._state=\"stopped\",this.setDoubleClickToZoom(!0)}register(t){if(\"unregistered\"!==this._state)throw new Error(\"Can not register unless mode is unregistered\");this._state=\"registered\",this.store=t.store,this.store.registerOnChange(t.onChange),this.setDoubleClickToZoom=t.setDoubleClickToZoom,this.project=t.project,this.unproject=t.unproject,this.onSelect=t.onSelect,this.onDeselect=t.onDeselect,this.setCursor=t.setCursor,this.onStyleChange=t.onChange,this.onFinish=t.onFinish,this.coordinatePrecision=t.coordinatePrecision,this.registerBehaviors({mode:t.mode,store:this.store,project:this.project,unproject:this.unproject,pointerDistance:this.pointerDistance,coordinatePrecision:t.coordinatePrecision,projection:this.projection})}validateFeature(t){if(\"unregistered\"===this._state)throw new Error(\"Mode must be registered\");const e=function(t,e){let i;if(Rt(t))if(null==t.id)i=\"Feature has no id\";else if(\"string\"!=typeof t.id&&\"number\"!=typeof t.id)i=\"Feature must be string or number as per GeoJSON spec\";else if(e(t.id))if(Rt(t.geometry))if(Rt(t.properties))if(\"string\"==typeof t.geometry.type&&[\"Polygon\",\"LineString\",\"Point\"].includes(t.geometry.type))if(Array.isArray(t.geometry.coordinates)){if(!t.properties.mode||\"string\"!=typeof t.properties.mode)throw new Error(\"Feature does not have a valid mode property\")}else i=\"Feature coordinates is not an array\";else i=\"Feature is not Point, LineString or Polygon\";else i=\"Feature has no properties\";else i=\"Feature has no geometry\";else i=\"Feature must match the id strategy (default is UUID4)\";else i=\"Feature is not object\";if(i)throw new Error(i);return!0}(t,this.store.idStrategy.isValidId);return this.validate?this.validate(t,{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:Wt.Provisional}):e}onFinish(t,e){}onDeselect(t){}onSelect(t){}onKeyDown(t){}onKeyUp(t){}onMouseMove(t){}onClick(t){}onDragStart(t,e){}onDrag(t,e){}onDragEnd(t,e){}getHexColorStylingValue(t,e,i){return this.getStylingValue(t,e,i)}getNumericStylingValue(t,e,i){return this.getStylingValue(t,e,i)}getStylingValue(t,e,i){return void 0===t?e:\"function\"==typeof t?t(i):t}}class Xt extends Tt{constructor(...t){super(...t),this.type=zt.Select}}function Ut(t,e){const i=t=>t*Math.PI/180,o=i(t[1]),s=i(t[0]),r=i(e[1]),n=r-o,a=i(e[0])-s,l=Math.sin(n/2)*Math.sin(n/2)+Math.cos(o)*Math.cos(r)*Math.sin(a/2)*Math.sin(a/2);return 2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))*6371e3/1e3}const Yt=6371008.8;function Ht(t){return t%360*Math.PI/180}function Kt(t){return t/(Yt/1e3)}function Jt(t){return t%(2*Math.PI)*180/Math.PI}const $t=57.29577951308232,qt=.017453292519943295,Zt=6378137,Qt=(t,e)=>({x:0===t?0:t*qt*Zt,y:0===e?0:Math.log(Math.tan(Math.PI/4+e*qt/2))*Zt}),te=(t,e)=>({lng:0===t?0:$t*(t/Zt),lat:0===e?0:(2*Math.atan(Math.exp(e/Zt))-Math.PI/2)*$t});function ee(t,e,i){const o=Ht(t[0]),s=Ht(t[1]),r=Ht(i),n=Kt(e),a=Math.asin(Math.sin(s)*Math.cos(n)+Math.cos(s)*Math.sin(n)*Math.cos(r));return[Jt(o+Math.atan2(Math.sin(r)*Math.sin(n)*Math.cos(s),Math.cos(n)-Math.sin(s)*Math.sin(a))),Jt(a)]}function ie(t){const{center:i,radiusKilometers:o,coordinatePrecision:s}=t,r=t.steps?t.steps:64,n=[];for(let t=0;t<r;t++){const a=ee(i,o,-360*t/r);n.push([e(a[0],s),e(a[1],s)])}return n.push(n[0]),{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:[n]},properties:{}}}function oe(t){const e={epsilon:0};let i;if(\"Polygon\"===t.geometry.type)i=t.geometry.coordinates;else{if(\"LineString\"!==t.geometry.type)throw new Error(\"Self intersects only accepts Polygons and LineStrings\");i=[t.geometry.coordinates]}const o=[];for(let t=0;t<i.length;t++)for(let e=0;e<i[t].length-1;e++)for(let o=0;o<i.length;o++)for(let s=0;s<i[o].length-1;s++)r(t,e,o,s);return o.length>0;function s(t){return t<0-e.epsilon||t>1+e.epsilon}function r(t,e,r,n){const a=i[t][e],l=i[t][e+1],h=i[r][n],c=i[r][n+1],d=function(t,e,i,o){if(se(t,i)||se(t,o)||se(e,i)||se(o,i))return null;const s=t[0],r=t[1],n=e[0],a=e[1],l=i[0],h=i[1],c=o[0],d=o[1],u=(s-n)*(h-d)-(r-a)*(l-c);return 0===u?null:[((s*a-r*n)*(l-c)-(s-n)*(l*d-h*c))/u,((s*a-r*n)*(h-d)-(r-a)*(l*d-h*c))/u]}(a,l,h,c);if(null===d)return;let u,g;u=l[0]!==a[0]?(d[0]-a[0])/(l[0]-a[0]):(d[1]-a[1])/(l[1]-a[1]),g=c[0]!==h[0]?(d[0]-h[0])/(c[0]-h[0]):(d[1]-h[1])/(c[1]-h[1]),s(u)||s(g)||(d.toString(),o.push(d))}}function se(t,e){return t[0]===e[0]&&t[1]===e[1]}function re(t,e){return 2===t.length&&\"number\"==typeof t[0]&&\"number\"==typeof t[1]&&Infinity!==t[0]&&Infinity!==t[1]&&(o=t[0])>=-180&&o<=180&&(i=t[1])>=-90&&i<=90&&ne(t[0])<=e&&ne(t[1])<=e;var i,o}function ne(t){let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function ae(t,e){return\"Polygon\"===t.geometry.type&&1===t.geometry.coordinates.length&&t.geometry.coordinates[0].length>=4&&t.geometry.coordinates[0].every(t=>re(t,e))&&(i=t.geometry.coordinates[0][0])[0]===(o=t.geometry.coordinates[0][t.geometry.coordinates[0].length-1])[0]&&i[1]===o[1];var i,o}function le(t,e){return ae(t,e)&&!oe(t)}class he extends Tt{constructor(e){var i;super(e),this.mode=\"circle\",this.center=void 0,this.clickCount=0,this.currentCircleId=void 0,this.keyEvents=void 0,this.cursors=void 0,this.startingRadiusKilometers=1e-5;const o={start:\"crosshair\"};if(this.cursors=e&&e.cursors?t({},o,e.cursors):o,null===(null==e?void 0:e.keyEvents))this.keyEvents={cancel:null,finish:null};else{const i={cancel:\"Escape\",finish:\"Enter\"};this.keyEvents=e&&e.keyEvents?t({},i,e.keyEvents):i}this.startingRadiusKilometers=null!=(i=null==e?void 0:e.startingRadiusKilometers)?i:1e-5,this.validate=null==e?void 0:e.validation}close(){if(void 0===this.currentCircleId)return;const t=this.currentCircleId;if(this.validate&&t){const e=this.store.getGeometryCopy(t);if(!this.validate({type:\"Feature\",id:t,geometry:e,properties:{}},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:Wt.Finish}))return}this.center=void 0,this.currentCircleId=void 0,this.clickCount=0,\"drawing\"===this.state&&this.setStarted(),this.onFinish(t,{mode:this.mode,action:\"draw\"})}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onClick(t){if(0===this.clickCount){this.center=[t.lng,t.lat];const e=ie({center:this.center,radiusKilometers:this.startingRadiusKilometers,coordinatePrecision:this.coordinatePrecision}),[i]=this.store.create([{geometry:e.geometry,properties:{mode:this.mode,radiusKilometers:this.startingRadiusKilometers}}]);this.currentCircleId=i,this.clickCount++,this.setDrawing()}else 1===this.clickCount&&this.center&&void 0!==this.currentCircleId&&this.updateCircle(t),this.close()}onMouseMove(t){this.updateCircle(t)}onKeyDown(){}onKeyUp(t){t.key===this.keyEvents.cancel?this.cleanUp():t.key===this.keyEvents.finish&&this.close()}onDragStart(){}onDrag(){}onDragEnd(){}cleanUp(){const t=this.currentCircleId;this.center=void 0,this.currentCircleId=void 0,this.clickCount=0,\"drawing\"===this.state&&this.setStarted();try{void 0!==t&&this.store.delete([t])}catch(t){}}styleFeature(e){const i=t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0});return\"Feature\"===e.type&&\"Polygon\"===e.geometry.type&&e.properties.mode===this.mode?(i.polygonFillColor=this.getHexColorStylingValue(this.styles.fillColor,i.polygonFillColor,e),i.polygonOutlineColor=this.getHexColorStylingValue(this.styles.outlineColor,i.polygonOutlineColor,e),i.polygonOutlineWidth=this.getNumericStylingValue(this.styles.outlineWidth,i.polygonOutlineWidth,e),i.polygonFillOpacity=this.getNumericStylingValue(this.styles.fillOpacity,i.polygonFillOpacity,e),i.zIndex=10,i):i}validateFeature(t){return!!super.validateFeature(t)&&t.properties.mode===this.mode&&le(t,this.coordinatePrecision)}updateCircle(t){if(1===this.clickCount&&this.center&&this.currentCircleId){const i=Ut(this.center,[t.lng,t.lat]);let o;if(\"web-mercator\"===this.projection){const s=function(t,e){const i=1e3*Ut(t,e);if(0===i)return 1;const{x:o,y:s}=Qt(t[0],t[1]),{x:r,y:n}=Qt(e[0],e[1]);return Math.sqrt(Math.pow(r-o,2)+Math.pow(n-s,2))/i}(this.center,[t.lng,t.lat]);o=function(t){const{center:i,radiusKilometers:o,coordinatePrecision:s}=t,r=t.steps?t.steps:64,n=1e3*o,[a,l]=i,{x:h,y:c}=Qt(a,l),d=[];for(let t=0;t<r;t++){const i=360*t/r*Math.PI/180,o=n*Math.cos(i),a=n*Math.sin(i),[l,u]=[h+o,c+a],{lng:g,lat:p}=te(l,u);d.push([e(g,s),e(p,s)])}return d.push(d[0]),{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:[d]},properties:{}}}({center:this.center,radiusKilometers:i*s,coordinatePrecision:this.coordinatePrecision})}else{if(\"globe\"!==this.projection)throw new Error(\"Invalid projection\");o=ie({center:this.center,radiusKilometers:i,coordinatePrecision:this.coordinatePrecision})}if(this.validate&&!this.validate({type:\"Feature\",id:this.currentCircleId,geometry:o.geometry,properties:{radiusKilometers:i}},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:Wt.Provisional}))return;this.store.updateGeometry([{id:this.currentCircleId,geometry:o.geometry}]),this.store.updateProperty([{id:this.currentCircleId,property:\"radiusKilometers\",value:i}])}}}class ce extends Tt{constructor(e){super(e),this.mode=\"freehand\",this.startingClick=!1,this.currentId=void 0,this.closingPointId=void 0,this.minDistance=void 0,this.keyEvents=void 0,this.cursors=void 0,this.preventPointsNearClose=void 0;const i={start:\"crosshair\",close:\"pointer\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,this.preventPointsNearClose=e&&e.preventPointsNearClose||!0,this.minDistance=e&&e.minDistance||20,null===(null==e?void 0:e.keyEvents))this.keyEvents={cancel:null,finish:null};else{const i={cancel:\"Escape\",finish:\"Enter\"};this.keyEvents=e&&e.keyEvents?t({},i,e.keyEvents):i}this.validate=null==e?void 0:e.validation}close(){if(void 0===this.currentId)return;const t=this.currentId;if(this.validate&&t){const e=this.store.getGeometryCopy(t);if(!this.validate({type:\"Feature\",id:t,geometry:e,properties:{}},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:Wt.Finish}))return}this.closingPointId&&this.store.delete([this.closingPointId]),this.startingClick=!1,this.currentId=void 0,this.closingPointId=void 0,\"drawing\"===this.state&&this.setStarted(),this.onFinish(t,{mode:this.mode,action:\"draw\"})}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onMouseMove(t){if(void 0===this.currentId||!1===this.startingClick)return;const e=this.store.getGeometryCopy(this.currentId),o=e.coordinates[0].length-2,[s,r]=e.coordinates[0][o],{x:n,y:a}=this.project(s,r),l=i({x:n,y:a},{x:t.containerX,y:t.containerY}),[h,c]=e.coordinates[0][0],{x:d,y:u}=this.project(h,c);if(i({x:d,y:u},{x:t.containerX,y:t.containerY})<this.pointerDistance){if(this.setCursor(this.cursors.close),this.preventPointsNearClose)return}else this.setCursor(this.cursors.start);if(l<this.minDistance)return;e.coordinates[0].pop();const g={type:\"Polygon\",coordinates:[[...e.coordinates[0],[t.lng,t.lat],e.coordinates[0][0]]]};this.validate&&!this.validate({type:\"Feature\",id:this.currentId,geometry:g,properties:{}},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:Wt.Provisional})||this.store.updateGeometry([{id:this.currentId,geometry:g}])}onClick(t){if(!1===this.startingClick){const[e,i]=this.store.create([{geometry:{type:\"Polygon\",coordinates:[[[t.lng,t.lat],[t.lng,t.lat],[t.lng,t.lat],[t.lng,t.lat]]]},properties:{mode:this.mode}},{geometry:{type:\"Point\",coordinates:[t.lng,t.lat]},properties:{mode:this.mode}}]);return this.currentId=e,this.closingPointId=i,this.startingClick=!0,void this.setDrawing()}this.close()}onKeyDown(){}onKeyUp(t){t.key===this.keyEvents.cancel?this.cleanUp():t.key===this.keyEvents.finish&&this.close()}onDragStart(){}onDrag(){}onDragEnd(){}cleanUp(){const t=this.currentId,e=this.closingPointId;this.closingPointId=void 0,this.currentId=void 0,this.startingClick=!1,\"drawing\"===this.state&&this.setStarted();try{void 0!==t&&this.store.delete([t]),void 0!==e&&this.store.delete([e])}catch(t){}}styleFeature(e){const i=t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0});return\"Feature\"===e.type&&\"Polygon\"===e.geometry.type&&e.properties.mode===this.mode?(i.polygonFillColor=this.getHexColorStylingValue(this.styles.fillColor,i.polygonFillColor,e),i.polygonOutlineColor=this.getHexColorStylingValue(this.styles.outlineColor,i.polygonOutlineColor,e),i.polygonOutlineWidth=this.getNumericStylingValue(this.styles.outlineWidth,i.polygonOutlineWidth,e),i.polygonFillOpacity=this.getNumericStylingValue(this.styles.fillOpacity,i.polygonFillOpacity,e),i.zIndex=10,i):\"Feature\"===e.type&&\"Point\"===e.geometry.type&&e.properties.mode===this.mode?(i.pointWidth=this.getNumericStylingValue(this.styles.closingPointWidth,i.pointWidth,e),i.pointColor=this.getHexColorStylingValue(this.styles.closingPointColor,i.pointColor,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.closingPointOutlineColor,i.pointOutlineColor,e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.closingPointOutlineWidth,2,e),i.zIndex=40,i):i}validateFeature(t){return!!super.validateFeature(t)&&t.properties.mode===this.mode&&ae(t,this.coordinatePrecision)}}class de{constructor({store:t,mode:e,project:i,unproject:o,pointerDistance:s,coordinatePrecision:r,projection:n}){this.store=void 0,this.mode=void 0,this.project=void 0,this.unproject=void 0,this.pointerDistance=void 0,this.coordinatePrecision=void 0,this.projection=void 0,this.store=t,this.mode=e,this.project=i,this.unproject=o,this.pointerDistance=s,this.coordinatePrecision=r,this.projection=n}}function ue({unproject:t,point:e,pointerDistance:i}){const o=i/2,{x:s,y:r}=e;return{type:\"Feature\",properties:{},geometry:{type:\"Polygon\",coordinates:[[t(s-o,r-o),t(s+o,r-o),t(s+o,r+o),t(s-o,r+o),t(s-o,r-o)].map(t=>[t.lng,t.lat])]}}}class ge extends de{constructor(t){super(t)}create(t){const{containerX:e,containerY:i}=t;return ue({unproject:this.unproject,point:{x:e,y:i},pointerDistance:this.pointerDistance})}}class pe extends de{constructor(t){super(t)}measure(t,e){const{x:o,y:s}=this.project(e[0],e[1]);return i({x:o,y:s},{x:t.containerX,y:t.containerY})}}class ye extends de{constructor(t,e,i){super(t),this.config=void 0,this.pixelDistance=void 0,this.clickBoundingBox=void 0,this.getSnappableCoordinateFirstClick=t=>this.getSnappable(t,t=>Boolean(t.properties&&t.properties.mode===this.mode)),this.getSnappableCoordinate=(t,e)=>this.getSnappable(t,t=>Boolean(t.properties&&t.properties.mode===this.mode&&t.id!==e)),this.config=t,this.pixelDistance=e,this.clickBoundingBox=i}getSnappable(t,e){const i=this.clickBoundingBox.create(t),o=this.store.search(i,e),s={coord:void 0,minDist:Infinity};return o.forEach(e=>{let i;if(\"Polygon\"===e.geometry.type)i=e.geometry.coordinates[0];else{if(\"LineString\"!==e.geometry.type)return;i=e.geometry.coordinates}i.forEach(e=>{const i=this.pixelDistance.measure(t,e);i<s.minDist&&i<this.pointerDistance&&(s.coord=e,s.minDist=i)})}),s.coord}}function me(t,e,i){const o=Ht(t[0]),s=Ht(t[1]),r=Ht(i),n=Kt(e),a=Math.asin(Math.sin(s)*Math.cos(n)+Math.cos(s)*Math.sin(n)*Math.cos(r));return[Jt(o+Math.atan2(Math.sin(r)*Math.sin(n)*Math.cos(s),Math.cos(n)-Math.sin(s)*Math.sin(a))),Jt(a)]}function fe({x:t,y:e},i,o){const s=Ht(o);return{x:t+i*Math.cos(s),y:e+i*Math.sin(s)}}function ve(t,e){const i=Ht(t[0]),o=Ht(e[0]),s=Ht(t[1]),r=Ht(e[1]),n=Math.sin(o-i)*Math.cos(r),a=Math.cos(s)*Math.sin(r)-Math.sin(s)*Math.cos(r)*Math.cos(o-i);return Jt(Math.atan2(n,a))}function _e({x:t,y:e},{x:i,y:o}){let s=Math.atan2(o-e,i-t);return s*=180/Math.PI,s>180?s-=360:s<-180&&(s+=360),s}function Ce(t,e,i){const o=[],s=t.length;let r,n,a,l=0;for(let s=0;s<t.length&&!(e>=l&&s===t.length-1);s++){if(l>e&&0===o.length){if(r=e-l,!r)return o.push(t[s]),o;n=ve(t[s],t[s-1])-180,a=me(t[s],r,n),o.push(a)}if(l>=i)return r=i-l,r?(n=ve(t[s],t[s-1])-180,a=me(t[s],r,n),o.push(a),o):(o.push(t[s]),o);if(l>=e&&o.push(t[s]),s===t.length-1)return o;l+=Ut(t[s],t[s+1])}if(l<e&&t.length===s)throw new Error(\"Start position is beyond line\");const h=t[t.length-1];return[h,h]}function Pe(t){return t*(Math.PI/180)}function xe(t){return t*(180/Math.PI)}class Me extends de{constructor(t){super(t),this.config=void 0,this.config=t}generateInsertionCoordinates(t,e,i){const o=[t,e];let s=0;for(let t=0;t<o.length-1;t++)s+=Ut(o[0],o[1]);if(s<=i)return o;let r=s/i-1;Number.isInteger(r)||(r=Math.floor(r)+1);const n=[];for(let t=0;t<r;t++){const e=Ce(o,i*t,i*(t+1));n.push(e)}const a=[];for(let t=0;t<n.length;t++)a.push(n[t][1]);return this.limitCoordinates(a)}generateInsertionGeodesicCoordinates(t,e,i){const o=Ut(t,e),s=function(t,e,i){const o=[],s=Pe(t[1]),r=Pe(t[0]),n=Pe(e[1]),a=Pe(e[0]);i+=1;const l=2*Math.asin(Math.sqrt(Math.sin((n-s)/2)**2+Math.cos(s)*Math.cos(n)*Math.sin((a-r)/2)**2));if(0===l||isNaN(l))return o;for(let t=0;t<=i;t++){const e=t/i,h=Math.sin((1-e)*l)/Math.sin(l),c=Math.sin(e*l)/Math.sin(l),d=h*Math.cos(s)*Math.cos(r)+c*Math.cos(n)*Math.cos(a),u=h*Math.cos(s)*Math.sin(r)+c*Math.cos(n)*Math.sin(a),g=h*Math.sin(s)+c*Math.sin(n);if(isNaN(d)||isNaN(u)||isNaN(g))continue;const p=Math.atan2(g,Math.sqrt(d**2+u**2)),y=Math.atan2(u,d);isNaN(p)||isNaN(y)||o.push([xe(y),xe(p)])}return o.slice(1,-1)}(t,e,Math.floor(o/i));return this.limitCoordinates(s)}limitCoordinates(t){return t.map(t=>[e(t[0],this.config.coordinatePrecision),e(t[1],this.config.coordinatePrecision)])}}function we(t,e){return t[0]===e[0]&&t[1]===e[1]}class Se extends Tt{constructor(e){super(e),this.mode=\"linestring\",this.currentCoordinate=0,this.currentId=void 0,this.closingPointId=void 0,this.keyEvents=void 0,this.snappingEnabled=void 0,this.cursors=void 0,this.mouseMove=!1,this.insertCoordinates=void 0,this.lastCommitedCoordinates=void 0,this.snapping=void 0,this.insertPoint=void 0;const i={start:\"crosshair\",close:\"pointer\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,this.snappingEnabled=!(!e||void 0===e.snapping)&&e.snapping,null===(null==e?void 0:e.keyEvents))this.keyEvents={cancel:null,finish:null};else{const i={cancel:\"Escape\",finish:\"Enter\"};this.keyEvents=e&&e.keyEvents?t({},i,e.keyEvents):i}this.validate=null==e?void 0:e.validation,this.insertCoordinates=null==e?void 0:e.insertCoordinates}close(){if(void 0===this.currentId)return;const t=this.store.getGeometryCopy(this.currentId);t.coordinates.pop(),this.updateGeometries([...t.coordinates],void 0,Wt.Commit);const e=this.currentId;this.closingPointId&&this.store.delete([this.closingPointId]),this.currentCoordinate=0,this.currentId=void 0,this.closingPointId=void 0,this.lastCommitedCoordinates=void 0,\"drawing\"===this.state&&this.setStarted(),this.onFinish(e,{mode:this.mode,action:\"draw\"})}updateGeometries(t,e,i){if(!this.currentId)return;const o={type:\"LineString\",coordinates:t};if(this.validate&&!this.validate({type:\"Feature\",geometry:o},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:i}))return;const s=[{id:this.currentId,geometry:o}];this.closingPointId&&e&&s.push({id:this.closingPointId,geometry:{type:\"Point\",coordinates:e}}),\"commit\"===i&&(this.lastCommitedCoordinates=o.coordinates),this.store.updateGeometry(s)}generateInsertCoordinates(t,e){if(!this.insertCoordinates||!this.lastCommitedCoordinates)throw new Error(\"Not able to insert coordinates\");if(\"amount\"!==this.insertCoordinates.strategy)throw new Error(\"Strategy does not exist\");const i=Ut(t,e)/(this.insertCoordinates.value+1);let o=[];return\"globe\"===this.projection?o=this.insertPoint.generateInsertionGeodesicCoordinates(t,e,i):\"web-mercator\"===this.projection&&(o=this.insertPoint.generateInsertionCoordinates(t,e,i)),o}createLine(t){const[e]=this.store.create([{geometry:{type:\"LineString\",coordinates:[t,t]},properties:{mode:this.mode}}]);this.lastCommitedCoordinates=[t,t],this.currentId=e,this.currentCoordinate++,this.setDrawing()}firstUpdateToLine(t){if(!this.currentId)return;const e=this.store.getGeometryCopy(this.currentId).coordinates,[i]=this.store.create([{geometry:{type:\"Point\",coordinates:[...t]},properties:{mode:this.mode}}]);this.closingPointId=i,this.setCursor(this.cursors.close);const o=[...e,t];this.updateGeometries(o,void 0,Wt.Commit),this.currentCoordinate++}updateToLine(t,e){if(!this.currentId)return;const o=this.store.getGeometryCopy(this.currentId).coordinates,[s,r]=this.lastCommitedCoordinates?this.lastCommitedCoordinates[this.lastCommitedCoordinates.length-1]:o[o.length-2],{x:n,y:a}=this.project(s,r);if(i({x:n,y:a},{x:e.x,y:e.y})<this.pointerDistance)return void this.close();this.setCursor(this.cursors.close);const l=[...o,t];this.updateGeometries(l,o[o.length-1],Wt.Commit),this.currentCoordinate++}registerBehaviors(t){this.snapping=new ye(t,new pe(t),new ge(t)),this.insertPoint=new Me(t)}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onMouseMove(t){if(this.mouseMove=!0,this.setCursor(this.cursors.start),void 0===this.currentId||0===this.currentCoordinate)return;const e=this.store.getGeometryCopy(this.currentId).coordinates;e.pop();const o=this.snappingEnabled&&this.snapping.getSnappableCoordinate(t,this.currentId)||[t.lng,t.lat];if(this.closingPointId){const[o,s]=e[e.length-1],{x:r,y:n}=this.project(o,s);i({x:r,y:n},{x:t.containerX,y:t.containerY})<this.pointerDistance&&this.setCursor(this.cursors.close)}let s=[...e,o];if(this.insertCoordinates&&this.currentId&&this.lastCommitedCoordinates){const t=this.lastCommitedCoordinates[this.lastCommitedCoordinates.length-1],e=o;if(!we(t,e)){const i=this.generateInsertCoordinates(t,e);s=[...this.lastCommitedCoordinates.slice(0,-1),...i,o]}}this.updateGeometries(s,void 0,Wt.Provisional)}onClick(t){this.currentCoordinate>0&&!this.mouseMove&&this.onMouseMove(t),this.mouseMove=!1;const e=this.currentId&&this.snappingEnabled&&this.snapping.getSnappableCoordinate(t,this.currentId)||[t.lng,t.lat];0===this.currentCoordinate?this.createLine(e):1===this.currentCoordinate&&this.currentId?this.firstUpdateToLine(e):this.currentId&&this.updateToLine(e,{x:t.containerX,y:t.containerY})}onKeyDown(){}onKeyUp(t){t.key===this.keyEvents.cancel&&this.cleanUp(),t.key===this.keyEvents.finish&&this.close()}onDragStart(){}onDrag(){}onDragEnd(){}cleanUp(){const t=this.currentId;this.closingPointId=void 0,this.currentId=void 0,this.currentCoordinate=0,\"drawing\"===this.state&&this.setStarted();try{void 0!==t&&this.store.delete([t]),void 0!==this.closingPointId&&this.store.delete([this.closingPointId])}catch(t){}}styleFeature(e){const i=t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0});return\"Feature\"===e.type&&\"LineString\"===e.geometry.type&&e.properties.mode===this.mode?(i.lineStringColor=this.getHexColorStylingValue(this.styles.lineStringColor,i.lineStringColor,e),i.lineStringWidth=this.getNumericStylingValue(this.styles.lineStringWidth,i.lineStringWidth,e),i.zIndex=10,i):\"Feature\"===e.type&&\"Point\"===e.geometry.type&&e.properties.mode===this.mode?(i.pointColor=this.getHexColorStylingValue(this.styles.closingPointColor,i.pointColor,e),i.pointWidth=this.getNumericStylingValue(this.styles.closingPointWidth,i.pointWidth,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.closingPointOutlineColor,\"#ffffff\",e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.closingPointOutlineWidth,2,e),i.zIndex=40,i):i}validateFeature(t){return!!super.validateFeature(t)&&\"LineString\"===t.geometry.type&&t.properties.mode===this.mode&&t.geometry.coordinates.length>=2}}function be(t,e){return\"Point\"===t.geometry.type&&re(t.geometry.coordinates,e)}class Ee extends Tt{constructor(e){super(e),this.mode=\"point\",this.cursors=void 0;const i={create:\"crosshair\"};this.cursors=e&&e.cursors?t({},i,e.cursors):i}start(){this.setStarted(),this.setCursor(this.cursors.create)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onClick(t){if(!this.store)throw new Error(\"Mode must be registered first\");const e={type:\"Point\",coordinates:[t.lng,t.lat]},i={mode:this.mode};if(this.validate&&!this.validate({type:\"Feature\",geometry:e,properties:i},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:Wt.Finish}))return;const[o]=this.store.create([{geometry:e,properties:i}]);this.onFinish(o,{mode:this.mode,action:\"draw\"})}onMouseMove(){}onKeyDown(){}onKeyUp(){}cleanUp(){}onDragStart(){}onDrag(){}onDragEnd(){}styleFeature(e){const i=t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0});return\"Feature\"===e.type&&\"Point\"===e.geometry.type&&e.properties.mode===this.mode&&(i.pointWidth=this.getNumericStylingValue(this.styles.pointWidth,i.pointWidth,e),i.pointColor=this.getHexColorStylingValue(this.styles.pointColor,i.pointColor,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.pointOutlineColor,i.pointOutlineColor,e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.pointOutlineWidth,2,e),i.zIndex=30),i}validateFeature(t){return!!super.validateFeature(t)&&t.properties.mode===this.mode&&be(t,this.coordinatePrecision)}}class Ie extends de{constructor(t,e){super(t),this.config=void 0,this.pixelDistance=void 0,this._startEndPoints=[],this.config=t,this.pixelDistance=e}get ids(){return this._startEndPoints.concat()}set ids(t){}create(t,e){if(this.ids.length)throw new Error(\"Opening and closing points already created\");if(t.length<=3)throw new Error(\"Requires at least 4 coordinates\");this._startEndPoints=this.store.create([{geometry:{type:\"Point\",coordinates:t[0]},properties:{mode:e,[At]:!0}},{geometry:{type:\"Point\",coordinates:t[t.length-2]},properties:{mode:e,[At]:!0}}])}delete(){this.ids.length&&(this.store.delete(this.ids),this._startEndPoints=[])}update(t){if(2!==this.ids.length)throw new Error(\"No closing points to update\");this.store.updateGeometry([{id:this.ids[0],geometry:{type:\"Point\",coordinates:t[0]}},{id:this.ids[1],geometry:{type:\"Point\",coordinates:t[t.length-3]}}])}isClosingPoint(t){const e=this.store.getGeometryCopy(this.ids[0]),i=this.store.getGeometryCopy(this.ids[1]),o=this.pixelDistance.measure(t,e.coordinates),s=this.pixelDistance.measure(t,i.coordinates);return{isClosing:o<this.pointerDistance,isPreviousClosing:s<this.pointerDistance}}}class De extends Tt{constructor(e){super(e),this.mode=\"polygon\",this.currentCoordinate=0,this.currentId=void 0,this.keyEvents=void 0,this.snappingEnabled=void 0,this.snapping=void 0,this.pixelDistance=void 0,this.closingPoints=void 0,this.cursors=void 0,this.mouseMove=!1;const i={start:\"crosshair\",close:\"pointer\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,this.snappingEnabled=!(!e||void 0===e.snapping)&&e.snapping,null===(null==e?void 0:e.keyEvents))this.keyEvents={cancel:null,finish:null};else{const i={cancel:\"Escape\",finish:\"Enter\"};this.keyEvents=e&&e.keyEvents?t({},i,e.keyEvents):i}}close(){if(void 0===this.currentId)return;const t=this.store.getGeometryCopy(this.currentId).coordinates[0];if(t.length<5)return;if(!this.updatePolygonGeometry([...t.slice(0,-2),t[0]],Wt.Finish))return;const e=this.currentId;this.currentCoordinate=0,this.currentId=void 0,this.closingPoints.delete(),\"drawing\"===this.state&&this.setStarted(),this.onFinish(e,{mode:this.mode,action:\"draw\"})}registerBehaviors(t){this.pixelDistance=new pe(t),this.snapping=new ye(t,this.pixelDistance,new ge(t)),this.closingPoints=new Ie(t,this.pixelDistance)}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onMouseMove(t){if(this.mouseMove=!0,this.setCursor(this.cursors.start),void 0===this.currentId||0===this.currentCoordinate)return;const e=this.snappingEnabled?this.snapping.getSnappableCoordinate(t,this.currentId):void 0,i=this.store.getGeometryCopy(this.currentId).coordinates[0];let o;if(e&&(t.lng=e[0],t.lat=e[1]),1===this.currentCoordinate){const e=1/Math.pow(10,this.coordinatePrecision-1),s=Math.max(1e-6,e);o=[i[0],[t.lng,t.lat],[t.lng,t.lat-s],i[0]]}else if(2===this.currentCoordinate)o=[i[0],i[1],[t.lng,t.lat],i[0]];else{const{isClosing:e,isPreviousClosing:s}=this.closingPoints.isClosingPoint(t);s||e?(this.setCursor(this.cursors.close),o=[...i.slice(0,-2),i[0],i[0]]):o=[...i.slice(0,-2),[t.lng,t.lat],i[0]]}this.updatePolygonGeometry(o,Wt.Provisional)}updatePolygonGeometry(t,e){if(!this.currentId)return!1;const i={type:\"Polygon\",coordinates:[t]};return!(this.validate&&!this.validate({type:\"Feature\",geometry:i},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e})||(this.store.updateGeometry([{id:this.currentId,geometry:i}]),0))}onClick(t){if(this.currentCoordinate>0&&!this.mouseMove&&this.onMouseMove(t),this.mouseMove=!1,0===this.currentCoordinate){const e=this.snappingEnabled?this.snapping.getSnappableCoordinateFirstClick(t):void 0;e&&(t.lng=e[0],t.lat=e[1]);const[i]=this.store.create([{geometry:{type:\"Polygon\",coordinates:[[[t.lng,t.lat],[t.lng,t.lat],[t.lng,t.lat],[t.lng,t.lat]]]},properties:{mode:this.mode}}]);this.currentId=i,this.currentCoordinate++,this.setDrawing()}else if(1===this.currentCoordinate&&this.currentId){const e=this.snappingEnabled?this.snapping.getSnappableCoordinate(t,this.currentId):void 0;e&&(t.lng=e[0],t.lat=e[1]);const i=this.store.getGeometryCopy(this.currentId);if(we([t.lng,t.lat],i.coordinates[0][0]))return;if(!this.updatePolygonGeometry([i.coordinates[0][0],[t.lng,t.lat],[t.lng,t.lat],i.coordinates[0][0]],Wt.Commit))return;this.currentCoordinate++}else if(2===this.currentCoordinate&&this.currentId){const e=this.snappingEnabled?this.snapping.getSnappableCoordinate(t,this.currentId):void 0;e&&(t.lng=e[0],t.lat=e[1]);const i=this.store.getGeometryCopy(this.currentId).coordinates[0];if(we([t.lng,t.lat],i[1]))return;if(!this.updatePolygonGeometry([i[0],i[1],[t.lng,t.lat],[t.lng,t.lat],i[0]],Wt.Commit))return;2===this.currentCoordinate&&this.closingPoints.create(i,\"polygon\"),this.currentCoordinate++}else if(this.currentId){const e=this.snappingEnabled?this.snapping.getSnappableCoordinate(t,this.currentId):void 0,i=this.store.getGeometryCopy(this.currentId).coordinates[0],{isClosing:o,isPreviousClosing:s}=this.closingPoints.isClosingPoint(t);if(s||o)this.close();else{if(e&&(t.lng=e[0],t.lat=e[1]),we([t.lng,t.lat],i[this.currentCoordinate-1]))return;const o=function(t=[[[0,0],[0,1],[1,1],[1,0],[0,0]]]){return{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:t},properties:{}}}([[...i.slice(0,-1),[t.lng,t.lat],i[0]]]);if(!this.updatePolygonGeometry(o.geometry.coordinates[0],Wt.Commit))return;this.currentCoordinate++,this.closingPoints.ids.length&&this.closingPoints.update(o.geometry.coordinates[0])}}}onKeyUp(t){t.key===this.keyEvents.cancel?this.cleanUp():t.key===this.keyEvents.finish&&this.close()}onKeyDown(){}onDragStart(){this.setCursor(\"unset\")}onDrag(){}onDragEnd(){this.setCursor(this.cursors.start)}cleanUp(){const t=this.currentId;this.currentId=void 0,this.currentCoordinate=0,\"drawing\"===this.state&&this.setStarted();try{void 0!==t&&this.store.delete([t]),this.closingPoints.ids.length&&this.closingPoints.delete()}catch(t){}}styleFeature(e){const i=t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0});if(e.properties.mode===this.mode){if(\"Polygon\"===e.geometry.type)return i.polygonFillColor=this.getHexColorStylingValue(this.styles.fillColor,i.polygonFillColor,e),i.polygonOutlineColor=this.getHexColorStylingValue(this.styles.outlineColor,i.polygonOutlineColor,e),i.polygonOutlineWidth=this.getNumericStylingValue(this.styles.outlineWidth,i.polygonOutlineWidth,e),i.polygonFillOpacity=this.getNumericStylingValue(this.styles.fillOpacity,i.polygonFillOpacity,e),i.zIndex=10,i;if(\"Point\"===e.geometry.type)return i.pointWidth=this.getNumericStylingValue(this.styles.closingPointWidth,i.pointWidth,e),i.pointColor=this.getHexColorStylingValue(this.styles.closingPointColor,i.pointColor,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.closingPointOutlineColor,i.pointOutlineColor,e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.closingPointOutlineWidth,2,e),i.zIndex=30,i}return i}validateFeature(t){return!!super.validateFeature(t)&&t.properties.mode===this.mode&&ae(t,this.coordinatePrecision)}}class ke extends Tt{constructor(e){super(e),this.mode=\"rectangle\",this.center=void 0,this.clickCount=0,this.currentRectangleId=void 0,this.keyEvents=void 0,this.cursors=void 0;const i={start:\"crosshair\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,null===(null==e?void 0:e.keyEvents))this.keyEvents={cancel:null,finish:null};else{const i={cancel:\"Escape\",finish:\"Enter\"};this.keyEvents=e&&e.keyEvents?t({},i,e.keyEvents):i}}updateRectangle(t,e){if(1===this.clickCount&&this.center&&this.currentRectangleId){const i=this.store.getGeometryCopy(this.currentRectangleId).coordinates[0][0],o={type:\"Polygon\",coordinates:[[i,[t.lng,i[1]],[t.lng,t.lat],[i[0],t.lat],i]]};if(this.validate&&!this.validate({id:this.currentRectangleId,geometry:o},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e}))return;this.store.updateGeometry([{id:this.currentRectangleId,geometry:o}])}}close(){const t=this.currentRectangleId;this.center=void 0,this.currentRectangleId=void 0,this.clickCount=0,\"drawing\"===this.state&&this.setStarted(),t&&this.onFinish(t,{mode:this.mode,action:\"draw\"})}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onClick(t){if(0===this.clickCount){this.center=[t.lng,t.lat];const[e]=this.store.create([{geometry:{type:\"Polygon\",coordinates:[[[t.lng,t.lat],[t.lng,t.lat],[t.lng,t.lat],[t.lng,t.lat]]]},properties:{mode:this.mode}}]);this.currentRectangleId=e,this.clickCount++,this.setDrawing()}else this.updateRectangle(t,Wt.Finish),this.close()}onMouseMove(t){this.updateRectangle(t,Wt.Provisional)}onKeyDown(){}onKeyUp(t){t.key===this.keyEvents.cancel?this.cleanUp():t.key===this.keyEvents.finish&&this.close()}onDragStart(){}onDrag(){}onDragEnd(){}cleanUp(){const t=this.currentRectangleId;this.center=void 0,this.currentRectangleId=void 0,this.clickCount=0,\"drawing\"===this.state&&this.setStarted(),void 0!==t&&this.store.delete([t])}styleFeature(e){const i=t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0});return\"Feature\"===e.type&&\"Polygon\"===e.geometry.type&&e.properties.mode===this.mode?(i.polygonFillColor=this.getHexColorStylingValue(this.styles.fillColor,i.polygonFillColor,e),i.polygonOutlineColor=this.getHexColorStylingValue(this.styles.outlineColor,i.polygonOutlineColor,e),i.polygonOutlineWidth=this.getNumericStylingValue(this.styles.outlineWidth,i.polygonOutlineWidth,e),i.polygonFillOpacity=this.getNumericStylingValue(this.styles.fillOpacity,i.polygonFillOpacity,e),i.zIndex=10,i):i}validateFeature(t){return!!super.validateFeature(t)&&t.properties.mode===this.mode&&le(t,this.coordinatePrecision)}}class Fe extends Tt{constructor(t){super({styles:t.styles}),this.type=zt.Render,this.mode=\"render\",this.mode=t.modeName}registerBehaviors(t){this.mode=t.mode}start(){this.setStarted()}stop(){this.setStopped()}onKeyUp(){}onKeyDown(){}onClick(){}onDragStart(){}onDrag(){}onDragEnd(){}onMouseMove(){}cleanUp(){}styleFeature(t){return{pointColor:this.getHexColorStylingValue(this.styles.pointColor,\"#3f97e0\",t),pointWidth:this.getNumericStylingValue(this.styles.pointWidth,6,t),pointOutlineColor:this.getHexColorStylingValue(this.styles.pointOutlineColor,\"#ffffff\",t),pointOutlineWidth:this.getNumericStylingValue(this.styles.pointOutlineWidth,0,t),polygonFillColor:this.getHexColorStylingValue(this.styles.polygonFillColor,\"#3f97e0\",t),polygonFillOpacity:this.getNumericStylingValue(this.styles.polygonFillOpacity,.3,t),polygonOutlineColor:this.getHexColorStylingValue(this.styles.polygonOutlineColor,\"#3f97e0\",t),polygonOutlineWidth:this.getNumericStylingValue(this.styles.polygonOutlineWidth,4,t),lineStringWidth:this.getNumericStylingValue(this.styles.lineStringWidth,4,t),lineStringColor:this.getHexColorStylingValue(this.styles.lineStringColor,\"#3f97e0\",t),zIndex:this.getNumericStylingValue(this.styles.zIndex,0,t)}}validateFeature(t){return super.validateFeature(t)&&(be(t,this.coordinatePrecision)||ae(t,this.coordinatePrecision)||function(t,e){return\"LineString\"===t.geometry.type&&t.geometry.coordinates.length>=2&&t.geometry.coordinates.every(t=>re(t,e))}(t,this.coordinatePrecision))}}function Oe(t,e){const i=t,o=e,s=Ht(i[1]),r=Ht(o[1]);let n=Ht(o[0]-i[0]);n>Math.PI&&(n-=2*Math.PI),n<-Math.PI&&(n+=2*Math.PI);const a=Math.log(Math.tan(r/2+Math.PI/4)/Math.tan(s/2+Math.PI/4)),l=(Jt(Math.atan2(n,a))+360)%360;return l>180?-(360-l):l}function Le(t,e,i){let o=e;e<0&&(o=-Math.abs(o));const s=o/Yt,r=t[0]*Math.PI/180,n=Ht(t[1]),a=Ht(i),l=s*Math.cos(a);let h=n+l;Math.abs(h)>Math.PI/2&&(h=h>0?Math.PI-h:-Math.PI-h);const c=Math.log(Math.tan(h/2+Math.PI/4)/Math.tan(n/2+Math.PI/4)),d=Math.abs(c)>1e-11?l/c:Math.cos(n),u=[(180*(r+s*Math.sin(a)/d)/Math.PI+540)%360-180,180*h/Math.PI];return u[0]+=u[0]-t[0]>180?-360:t[0]-u[0]>180?360:0,u}function We(t,i,o,s,r){const n=s(t[0],t[1]),a=s(i[0],i[1]),{lng:l,lat:h}=r((n.x+a.x)/2,(n.y+a.y)/2);return[e(l,o),e(h,o)]}function je(t,i,o){const s=Le(t,1e3*Ut(t,i)/2,Oe(t,i));return[e(s[0],o),e(s[1],o)]}function Be({featureCoords:t,precision:e,unproject:i,project:o,projection:s}){const r=[];for(let n=0;n<t.length-1;n++){let a;if(\"web-mercator\"===s)a=We(t[n],t[n+1],e,o,i);else{if(\"globe\"!==s)throw new Error(\"Invalid projection\");a=je(t[n],t[n+1],e)}r.push(a)}return r}class Ge extends de{constructor(t,e){super(t),this.config=void 0,this.selectionPointBehavior=void 0,this._midPoints=[],this.config=t,this.selectionPointBehavior=e}get ids(){return this._midPoints.concat()}set ids(t){}insert(t,e){const i=this.store.getGeometryCopy(t),{midPointFeatureId:o,midPointSegment:s}=this.store.getPropertiesCopy(t),r=this.store.getGeometryCopy(o),n=\"Polygon\"===r.type?r.coordinates[0]:r.coordinates;n.splice(s+1,0,i.coordinates),r.coordinates=\"Polygon\"===r.type?[n]:n,this.store.updateGeometry([{id:o,geometry:r}]),this.store.delete([...this._midPoints,...this.selectionPointBehavior.ids]),this.create(n,o,e),this.selectionPointBehavior.create(n,r.type,o)}create(t,e,i){if(!this.store.has(e))throw new Error(\"Store does not have feature with this id\");this._midPoints=this.store.create(function(t,e,i,o,s,r){return Be({featureCoords:t,precision:i,project:o,unproject:s,projection:r}).map((t,i)=>({geometry:{type:\"Point\",coordinates:t},properties:e(i)}))}(t,t=>({mode:this.mode,[Nt]:!0,midPointSegment:t,midPointFeatureId:e}),i,this.config.project,this.config.unproject,this.projection))}delete(){this._midPoints.length&&(this.store.delete(this._midPoints),this._midPoints=[])}getUpdated(t){if(0!==this._midPoints.length)return Be({featureCoords:t,precision:this.coordinatePrecision,project:this.config.project,unproject:this.config.unproject,projection:this.config.projection}).map((t,e)=>({id:this._midPoints[e],geometry:{type:\"Point\",coordinates:t}}))}}class Ne extends de{constructor(t){super(t),this._selectionPoints=[]}get ids(){return this._selectionPoints.concat()}set ids(t){}create(t,e,i){this._selectionPoints=this.store.create(function(t,e,i){const o=[],s=\"Polygon\"===e?t.length-1:t.length;for(let e=0;e<s;e++)o.push({geometry:{type:\"Point\",coordinates:t[e]},properties:i(e)});return o}(t,e,t=>({mode:this.mode,selectionPoint:!0,selectionPointFeatureId:i,index:t})))}delete(){this.ids.length&&(this.store.delete(this.ids),this._selectionPoints=[])}getUpdated(t){if(0!==this._selectionPoints.length)return this._selectionPoints.map((e,i)=>({id:e,geometry:{type:\"Point\",coordinates:t[i]}}))}getOneUpdated(t,e){if(void 0!==this._selectionPoints[t])return{id:this._selectionPoints[t],geometry:{type:\"Point\",coordinates:e}}}}function Ae(t,e){let i=!1;for(let n=0,a=e.length;n<a;n++){const a=e[n];for(let e=0,n=a.length,l=n-1;e<n;l=e++)(s=a[e])[1]>(o=t)[1]!=(r=a[l])[1]>o[1]&&o[0]<(r[0]-s[0])*(o[1]-s[1])/(r[1]-s[1])+s[0]&&(i=!i)}var o,s,r;return i}const Re=(t,e,i)=>{const o=t=>t*t,s=(t,e)=>o(t.x-e.x)+o(t.y-e.y);return Math.sqrt(((t,e,i)=>{const o=s(e,i);if(0===o)return s(t,e);let r=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/o;return r=Math.max(0,Math.min(1,r)),s(t,{x:e.x+r*(i.x-e.x),y:e.y+r*(i.y-e.y)})})(t,e,i))};class Ve extends de{constructor(t,e,i){super(t),this.config=void 0,this.createClickBoundingBox=void 0,this.pixelDistance=void 0,this.config=t,this.createClickBoundingBox=e,this.pixelDistance=i}find(t,e){let i,o,s=Infinity,r=Infinity;const n=this.createClickBoundingBox.create(t),a=this.store.search(n);for(let n=0;n<a.length;n++){const l=a[n],h=l.geometry;if(\"Point\"===h.type){if(l.properties.selectionPoint||!e&&l.properties[Nt])continue;const n=this.pixelDistance.measure(t,h.coordinates);l.properties[Nt]&&n<this.pointerDistance&&n<r?(r=n,o=l):!l.properties[Nt]&&n<this.pointerDistance&&n<s&&(s=n,i=l)}else if(\"LineString\"===h.type)for(let e=0;e<h.coordinates.length-1;e++){const o=h.coordinates[e],r=h.coordinates[e+1],n=Re({x:t.containerX,y:t.containerY},this.project(o[0],o[1]),this.project(r[0],r[1]));n<this.pointerDistance&&n<s&&(s=n,i=l)}else\"Polygon\"===h.type&&Ae([t.lng,t.lat],h.coordinates)&&(s=0,i=l)}return{clickedFeature:i,clickedMidPoint:o}}}class ze extends de{constructor(t,e,i,o){super(t),this.config=void 0,this.featuresAtMouseEvent=void 0,this.selectionPoints=void 0,this.midPoints=void 0,this.draggedFeatureId=null,this.dragPosition=void 0,this.config=t,this.featuresAtMouseEvent=e,this.selectionPoints=i,this.midPoints=o}startDragging(t,e){this.draggedFeatureId=e,this.dragPosition=[t.lng,t.lat]}stopDragging(){this.draggedFeatureId=null,this.dragPosition=void 0}isDragging(){return null!==this.draggedFeatureId}canDrag(t,e){const{clickedFeature:i}=this.featuresAtMouseEvent.find(t,!0);return!(!i||i.id!==e)}drag(t,i){if(!this.draggedFeatureId)return;const o=this.store.getGeometryCopy(this.draggedFeatureId),s=[t.lng,t.lat];if(\"Polygon\"===o.type||\"LineString\"===o.type){let r,n;if(\"Polygon\"===o.type?(r=o.coordinates[0],n=r.length-1):(r=o.coordinates,n=r.length),!this.dragPosition)return!1;for(let t=0;t<n;t++){const i=r[t],o=[this.dragPosition[0]-s[0],this.dragPosition[1]-s[1]],n=e(i[0]-o[0],this.config.coordinatePrecision),a=e(i[1]-o[1],this.config.coordinatePrecision);if(n>180||n<-180||a>90||a<-90)return!1;r[t]=[n,a]}\"Polygon\"===o.type&&(r[r.length-1]=[r[0][0],r[0][1]]);const a=this.selectionPoints.getUpdated(r)||[],l=this.midPoints.getUpdated(r)||[];if(i&&!i({type:\"Feature\",id:this.draggedFeatureId,geometry:o,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:Wt.Provisional}))return!1;this.store.updateGeometry([{id:this.draggedFeatureId,geometry:o},...a,...l]),this.dragPosition=[t.lng,t.lat]}else\"Point\"===o.type&&(this.store.updateGeometry([{id:this.draggedFeatureId,geometry:{type:\"Point\",coordinates:s}}]),this.dragPosition=[t.lng,t.lat])}}class Te extends de{constructor(t,e,i,o){super(t),this.config=void 0,this.pixelDistance=void 0,this.selectionPoints=void 0,this.midPoints=void 0,this.draggedCoordinate={id:null,index:-1},this.config=t,this.pixelDistance=e,this.selectionPoints=i,this.midPoints=o}getClosestCoordinate(t,e){const i={dist:Infinity,index:-1,isFirstOrLastPolygonCoord:!1};let o;if(\"LineString\"===e.type)o=e.coordinates;else{if(\"Polygon\"!==e.type)return i;o=e.coordinates[0]}for(let s=0;s<o.length;s++){const r=this.pixelDistance.measure(t,o[s]);if(r<this.pointerDistance&&r<i.dist){const t=\"Polygon\"===e.type&&(s===o.length-1||0===s);i.dist=r,i.index=t?0:s,i.isFirstOrLastPolygonCoord=t}}return i}getDraggableIndex(t,e){const i=this.store.getGeometryCopy(e),o=this.getClosestCoordinate(t,i);return-1===o.index?-1:o.index}drag(t,e,i){if(!this.draggedCoordinate.id)return!1;const o=this.draggedCoordinate.index,s=this.store.getGeometryCopy(this.draggedCoordinate.id),r=\"LineString\"===s.type?s.coordinates:s.coordinates[0],n=[t.lng,t.lat];if(t.lng>180||t.lng<-180||t.lat>90||t.lat<-90)return!1;if(\"Polygon\"!==s.type||o!==r.length-1&&0!==o)r[o]=n;else{const t=r.length-1;r[0]=n,r[t]=n}const a=this.selectionPoints.getOneUpdated(o,n),l=a?[a]:[],h=this.midPoints.getUpdated(r)||[];return!(\"Point\"!==s.type&&!e&&oe({type:\"Feature\",geometry:s,properties:{}})||i&&!i({type:\"Feature\",id:this.draggedCoordinate.id,geometry:s,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:Wt.Provisional})||(this.store.updateGeometry([{id:this.draggedCoordinate.id,geometry:s},...l,...h]),0))}isDragging(){return null!==this.draggedCoordinate.id}startDragging(t,e){this.draggedCoordinate={id:t,index:e}}stopDragging(){this.draggedCoordinate={id:null,index:-1}}}function Xe(t){let e=0,i=0,o=0;return(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0].slice(0,-1):t.geometry.coordinates).forEach(t=>{e+=t[0],i+=t[1],o++},!0),[e/o,i/o]}function Ue(t,e){t[0]+=t[0]-e[0]>180?-360:e[0]-t[0]>180?360:0;const i=Yt,o=e[1]*Math.PI/180,s=t[1]*Math.PI/180,r=s-o;let n=Math.abs(t[0]-e[0])*Math.PI/180;n>Math.PI&&(n-=2*Math.PI);const a=Math.log(Math.tan(s/2+Math.PI/4)/Math.tan(o/2+Math.PI/4)),l=Math.abs(a)>1e-11?r/a:Math.cos(o);return Math.sqrt(r*r+l*l*n*n)*i}function Ye(t){const e=(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).map(t=>{const{x:e,y:i}=Qt(t[0],t[1]);return[e,i]});return\"Polygon\"===t.geometry.type?function(t){let e=0,i=0,o=0;const s=t.length;for(let r=0;r<s-1;r++){const[s,n]=t[r],[a,l]=t[r+1],h=s*l-a*n;e+=h,i+=(s+a)*h,o+=(n+l)*h}return e/=2,i/=6*e,o/=6*e,{x:i,y:o}}(e):function(t){const e=t.length;let i=0,o=0;for(let s=0;s<e;s++){const[e,r]=t[s];i+=e,o+=r}return{x:i/e,y:o/e}}(e)}class He extends de{constructor(t,e,i){super(t),this.config=void 0,this.selectionPoints=void 0,this.midPoints=void 0,this.lastBearing=void 0,this.config=t,this.selectionPoints=e,this.midPoints=i}reset(){this.lastBearing=void 0}rotate(t,i,o){const s=this.store.getGeometryCopy(i);if(\"Polygon\"!==s.type&&\"LineString\"!==s.type)return;const r=[t.lng,t.lat];let n;const a={type:\"Feature\",geometry:s,properties:{}};if(\"web-mercator\"===this.config.projection){if(n=_e(Ye(a),Qt(t.lng,t.lat)),!this.lastBearing)return void(this.lastBearing=n);((t,e)=>{if(0===e||360===e||-360===e)return t;const i=.017453292519943295*e,o=(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).map(([t,e])=>Qt(t,e)),s=o.reduce((t,e)=>({x:t.x+e.x,y:t.y+e.y}),{x:0,y:0});s.x/=o.length,s.y/=o.length;const r=o.map(t=>({x:s.x+(t.x-s.x)*Math.cos(i)-(t.y-s.y)*Math.sin(i),y:s.y+(t.x-s.x)*Math.sin(i)+(t.y-s.y)*Math.cos(i)})).map(({x:t,y:e})=>[te(t,e).lng,te(t,e).lat]);\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]=r:(console.log(\"rotatedCoordinates linestring\",r),t.geometry.coordinates=r)})(a,-(this.lastBearing-n))}else{if(\"globe\"!==this.config.projection)throw new Error(\"Unsupported projection\");if(n=Oe(Xe({type:\"Feature\",geometry:s,properties:{}}),r),!this.lastBearing)return void(this.lastBearing=n+180);!function(t,e){if(0===e||360===e||-360===e)return t;const i=Xe(t);(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).forEach(t=>{const o=Oe(i,t)+e,s=Ue(i,t),r=Le(i,s,o);t[0]=r[0],t[1]=r[1]})}(a,-(this.lastBearing-(n+180)))}const l=\"Polygon\"===s.type?s.coordinates[0]:s.coordinates;l.forEach(t=>{t[0]=e(t[0],this.coordinatePrecision),t[1]=e(t[1],this.coordinatePrecision)});const h=this.midPoints.getUpdated(l)||[],c=this.selectionPoints.getUpdated(l)||[];if(o&&!o({id:i,type:\"Feature\",geometry:s,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:Wt.Provisional}))return!1;this.store.updateGeometry([{id:i,geometry:s},...c,...h]),\"web-mercator\"===this.projection?this.lastBearing=n:\"globe\"===this.projection&&(this.lastBearing=n+180)}}class Ke extends de{constructor(t,e,i){super(t),this.config=void 0,this.selectionPoints=void 0,this.midPoints=void 0,this.lastDistance=void 0,this.config=t,this.selectionPoints=e,this.midPoints=i}reset(){this.lastDistance=void 0}scale(t,o,s){const r=this.store.getGeometryCopy(o);if(\"Polygon\"!==r.type&&\"LineString\"!==r.type)return;const n=[t.lng,t.lat],a={type:\"Feature\",geometry:r,properties:{}};let l;const h=Ye(a);if(\"web-mercator\"===this.config.projection){const e=Qt(t.lng,t.lat);l=i(h,e)}else{if(\"globe\"!==this.config.projection)throw new Error(\"Invalid projection\");l=Ut(Xe({type:\"Feature\",geometry:r,properties:{}}),n)}if(!this.lastDistance)return void(this.lastDistance=l);const c=1-(this.lastDistance-l)/l;if(\"web-mercator\"===this.config.projection){const{lng:t,lat:e}=te(h.x,h.y);!function(t,e,i){if(1===e)return t;const o=(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).map(([t,e])=>Qt(t,e)),s=Qt(i[0],i[1]),r=o.map(t=>({x:s.x+(t.x-s.x)*e,y:s.y+(t.y-s.y)*e})).map(({x:t,y:e})=>[te(t,e).lng,te(t,e).lat]);\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]=r:t.geometry.coordinates=r}(a,c,[t,e])}else\"globe\"===this.config.projection&&function(t,e,i,o=\"xy\"){1===e||(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).forEach(t=>{const s=Ue(i,t),r=Oe(i,t),n=Le(i,s*e,r);\"x\"!==o&&\"xy\"!==o||(t[0]=n[0]),\"y\"!==o&&\"xy\"!==o||(t[1]=n[1])})}(a,c,Xe(a));const d=\"Polygon\"===r.type?r.coordinates[0]:r.coordinates;d.forEach(t=>{t[0]=e(t[0],this.coordinatePrecision),t[1]=e(t[1],this.coordinatePrecision)});const u=this.midPoints.getUpdated(d)||[],g=this.selectionPoints.getUpdated(d)||[];if(s&&!s({id:o,type:\"Feature\",geometry:r,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:Wt.Provisional}))return!1;this.store.updateGeometry([{id:o,geometry:r},...g,...u]),this.lastDistance=l}}class Je extends de{constructor(t,e,i,o){super(t),this.config=void 0,this.pixelDistance=void 0,this.selectionPoints=void 0,this.midPoints=void 0,this.minimumScale=1e-4,this.draggedCoordinate={id:null,index:-1},this.boundingBoxMaps={opposite:{0:4,1:5,2:6,3:7,4:0,5:1,6:2,7:3}},this.config=t,this.pixelDistance=e,this.selectionPoints=i,this.midPoints=o}getClosestCoordinate(t,e){const i={dist:Infinity,index:-1,isFirstOrLastPolygonCoord:!1};let o;if(\"LineString\"===e.type)o=e.coordinates;else{if(\"Polygon\"!==e.type)return i;o=e.coordinates[0]}for(let s=0;s<o.length;s++){const r=this.pixelDistance.measure(t,o[s]);if(r<this.pointerDistance&&r<i.dist){const t=\"Polygon\"===e.type&&(s===o.length-1||0===s);i.dist=r,i.index=t?0:s,i.isFirstOrLastPolygonCoord=t}}return i}isValidDragWebMercator(t,e,i){switch(t){case 0:if(e<=0||i>=0)return!1;break;case 1:if(i>=0)return!1;break;case 2:if(e>=0||i>=0)return!1;break;case 3:if(e>=0)return!1;break;case 4:if(e>=0||i<=0)return!1;break;case 5:if(i<=0)return!1;break;case 6:if(e<=0||i<=0)return!1;break;case 7:if(e<=0)return!1}return!0}getSelectedFeatureDataWebMercator(){if(!this.draggedCoordinate.id||-1===this.draggedCoordinate.index)return null;const t=this.getFeature(this.draggedCoordinate.id);if(!t)return null;const e=this.getNormalisedCoordinates(t.geometry);return{boundingBox:this.getBBoxWebMercator(e),feature:t,updatedCoords:e,selectedCoordinate:e[this.draggedCoordinate.index]}}centerWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{feature:i,boundingBox:o,updatedCoords:s,selectedCoordinate:r}=e,n=Ye(i);if(!n)return null;const a=Qt(r[0],r[1]),{closestBBoxIndex:l}=this.getIndexesWebMercator(o,a),h=Qt(t.lng,t.lat);return this.scaleWebMercator({closestBBoxIndex:l,updatedCoords:s,webMercatorCursor:h,webMercatorSelected:a,webMercatorOrigin:n}),s}centerFixedWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{feature:i,boundingBox:o,updatedCoords:s,selectedCoordinate:r}=e,n=Ye(i);if(!n)return null;const a=Qt(r[0],r[1]),{closestBBoxIndex:l}=this.getIndexesWebMercator(o,a),h=Qt(t.lng,t.lat);return this.scaleFixedWebMercator({closestBBoxIndex:l,updatedCoords:s,webMercatorCursor:h,webMercatorSelected:a,webMercatorOrigin:n}),s}scaleFixedWebMercator({closestBBoxIndex:t,webMercatorOrigin:e,webMercatorSelected:o,webMercatorCursor:s,updatedCoords:r}){if(!this.isValidDragWebMercator(t,e.x-s.x,e.y-s.y))return null;let n=i(e,s)/i(e,o);return n<0&&(n=this.minimumScale),this.performWebMercatorScale(r,e.x,e.y,n,n),r}oppositeFixedWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{boundingBox:i,updatedCoords:o,selectedCoordinate:s}=e,r=Qt(s[0],s[1]),{oppositeBboxIndex:n,closestBBoxIndex:a}=this.getIndexesWebMercator(i,r),l={x:i[n][0],y:i[n][1]},h=Qt(t.lng,t.lat);return this.scaleFixedWebMercator({closestBBoxIndex:a,updatedCoords:o,webMercatorCursor:h,webMercatorSelected:r,webMercatorOrigin:l}),o}oppositeWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{boundingBox:i,updatedCoords:o,selectedCoordinate:s}=e,r=Qt(s[0],s[1]),{oppositeBboxIndex:n,closestBBoxIndex:a}=this.getIndexesWebMercator(i,r),l={x:i[n][0],y:i[n][1]},h=Qt(t.lng,t.lat);return this.scaleWebMercator({closestBBoxIndex:a,updatedCoords:o,webMercatorCursor:h,webMercatorSelected:r,webMercatorOrigin:l}),o}scaleWebMercator({closestBBoxIndex:t,webMercatorOrigin:e,webMercatorSelected:i,webMercatorCursor:o,updatedCoords:s}){const r=e.x-o.x,n=e.y-o.y;if(!this.isValidDragWebMercator(t,r,n))return null;let a=1;0!==r&&1!==t&&5!==t&&(a=1-(e.x-i.x-r)/r);let l=1;return 0!==n&&3!==t&&7!==t&&(l=1-(e.y-i.y-n)/n),this.validateScale(a,l)?(a<0&&(a=this.minimumScale),l<0&&(l=this.minimumScale),this.performWebMercatorScale(s,e.x,e.y,a,l),s):null}getFeature(t){if(null===this.draggedCoordinate.id)return null;const e=this.store.getGeometryCopy(t);return\"Polygon\"!==e.type&&\"LineString\"!==e.type?null:{type:\"Feature\",geometry:e,properties:{}}}getNormalisedCoordinates(t){return\"Polygon\"===t.type?t.coordinates[0]:t.coordinates}validateScale(t,e){const i=!isNaN(t)&&e<Number.MAX_SAFE_INTEGER,o=!isNaN(e)&&e<Number.MAX_SAFE_INTEGER;return i&&o}performWebMercatorScale(t,e,i,o,s){t.forEach(t=>{const{x:r,y:n}=Qt(t[0],t[1]),a=e+(r-e)*o,l=i+(n-i)*s,{lng:h,lat:c}=te(a,l);t[0]=h,t[1]=c})}getBBoxWebMercator(t){const e=[Infinity,Infinity,-Infinity,-Infinity];(t=t.map(t=>{const{x:e,y:i}=Qt(t[0],t[1]);return[e,i]})).forEach(([t,i])=>{t<e[0]&&(e[0]=t),i<e[1]&&(e[1]=i),t>e[2]&&(e[2]=t),i>e[3]&&(e[3]=i)});const[i,o,s,r]=e;return[[i,r],[(i+s)/2,r],[s,r],[s,r+(o-r)/2],[s,o],[(i+s)/2,o],[i,o],[i,r+(o-r)/2]]}getIndexesWebMercator(t,e){let o,s=Infinity;for(let r=0;r<t.length;r++){const n=i({x:e.x,y:e.y},{x:t[r][0],y:t[r][1]});n<s&&(o=r,s=n)}if(void 0===o)throw new Error(\"No closest coordinate found\");return{oppositeBboxIndex:this.boundingBoxMaps.opposite[o],closestBBoxIndex:o}}isDragging(){return null!==this.draggedCoordinate.id}startDragging(t,e){this.draggedCoordinate={id:t,index:e}}stopDragging(){this.draggedCoordinate={id:null,index:-1}}getDraggableIndex(t,e){const i=this.store.getGeometryCopy(e),o=this.getClosestCoordinate(t,i);return-1===o.index?-1:o.index}drag(t,i,o){if(!this.draggedCoordinate.id)return!1;const s=this.getFeature(this.draggedCoordinate.id);if(!s)return!1;let r=null;if(\"center\"===i?r=this.centerWebMercatorDrag(t):\"opposite\"===i?r=this.oppositeWebMercatorDrag(t):\"center-fixed\"===i?r=this.centerFixedWebMercatorDrag(t):\"opposite-fixed\"===i&&(r=this.oppositeFixedWebMercatorDrag(t)),!r)return!1;for(let t=0;t<r.length;t++){const i=r[t];if(i[0]=e(i[0],this.coordinatePrecision),i[1]=e(i[1],this.coordinatePrecision),!re(i,this.coordinatePrecision))return!1}const n=this.midPoints.getUpdated(r)||[],a=this.selectionPoints.getUpdated(r)||[],l={type:s.geometry.type,coordinates:\"Polygon\"===s.geometry.type?[r]:r};return!(o&&!o({id:this.draggedCoordinate.id,type:\"Feature\",geometry:l,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:Wt.Provisional})||(this.store.updateGeometry([{id:this.draggedCoordinate.id,geometry:l},...a,...n]),0))}}class $e extends Xt{constructor(e){var i;super(e),this.mode=\"select\",this.allowManualDeselection=!0,this.dragEventThrottle=5,this.dragEventCount=0,this.selected=[],this.flags=void 0,this.keyEvents=void 0,this.selectionPoints=void 0,this.midPoints=void 0,this.featuresAtMouseEvent=void 0,this.pixelDistance=void 0,this.clickBoundingBox=void 0,this.dragFeature=void 0,this.dragCoordinate=void 0,this.rotateFeature=void 0,this.scaleFeature=void 0,this.dragCoordinateResizeFeature=void 0,this.cursors=void 0,this.validations={},this.flags=e&&e.flags?e.flags:{};const o={pointerOver:\"move\",dragStart:\"move\",dragEnd:\"move\",insertMidpoint:\"crosshair\"};if(this.cursors=e&&e.cursors?t({},o,e.cursors):o,null===(null==e?void 0:e.keyEvents))this.keyEvents={deselect:null,delete:null,rotate:null,scale:null};else{const i={deselect:\"Escape\",delete:\"Delete\",rotate:[\"Control\",\"r\"],scale:[\"Control\",\"s\"]};this.keyEvents=e&&e.keyEvents?t({},i,e.keyEvents):i}if(this.dragEventThrottle=e&&void 0!==e.dragEventThrottle&&e.dragEventThrottle||5,this.allowManualDeselection=null==(i=null==e?void 0:e.allowManualDeselection)||i,e&&e.flags&&e.flags)for(const t in e.flags){const i=e.flags[t].feature;i&&i.validation&&(this.validations[t]=i.validation)}}selectFeature(t){this.select(t,!1)}setSelecting(){if(\"started\"!==this._state)throw new Error(\"Mode must be started to move to selecting state\");this._state=\"selecting\"}registerBehaviors(t){this.pixelDistance=new pe(t),this.clickBoundingBox=new ge(t),this.featuresAtMouseEvent=new Ve(t,this.clickBoundingBox,this.pixelDistance),this.selectionPoints=new Ne(t),this.midPoints=new Ge(t,this.selectionPoints),this.rotateFeature=new He(t,this.selectionPoints,this.midPoints),this.scaleFeature=new Ke(t,this.selectionPoints,this.midPoints),this.dragFeature=new ze(t,this.featuresAtMouseEvent,this.selectionPoints,this.midPoints),this.dragCoordinate=new Te(t,this.pixelDistance,this.selectionPoints,this.midPoints),this.dragCoordinateResizeFeature=new Je(t,this.pixelDistance,this.selectionPoints,this.midPoints)}deselectFeature(){this.deselect()}deselect(){const t=this.selected.filter(t=>this.store.has(t)).map(t=>({id:t,property:Gt,value:!1}));this.store.updateProperty(t),this.onDeselect(this.selected[0]),this.selected=[],this.selectionPoints.delete(),this.midPoints.delete()}deleteSelected(){this.store.delete(this.selected),this.selected=[]}onRightClick(t){if(!this.selectionPoints.ids.length)return;let e,i=Infinity;if(this.selectionPoints.ids.forEach(o=>{const s=this.store.getGeometryCopy(o),r=this.pixelDistance.measure(t,s.coordinates);r<this.pointerDistance&&r<i&&(i=r,e=this.store.getPropertiesCopy(o))}),!e)return;const o=e.selectionPointFeatureId,s=e.index,r=this.store.getPropertiesCopy(o),n=this.flags[r.mode],a=this.validations[r.mode];if(!(n&&n.feature&&n.feature.coordinates&&n.feature.coordinates.deletable))return;const l=this.store.getGeometryCopy(o);let h;if(\"Polygon\"===l.type){if(h=l.coordinates[0],h.length<=4)return}else if(\"LineString\"===l.type&&(h=l.coordinates,h.length<=3))return;if(h){if(\"Polygon\"===l.type&&0===s||s===h.length-1?(h.shift(),h.pop(),h.push([h[0][0],h[0][1]])):h.splice(s,1),a&&!a({id:o,type:\"Feature\",geometry:l,properties:r},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:Wt.Commit}))return;this.store.delete([...this.midPoints.ids,...this.selectionPoints.ids]),this.store.updateGeometry([{id:o,geometry:l}]),this.selectionPoints.create(h,l.type,o),n&&n.feature&&n.feature.coordinates&&n.feature.coordinates.midpoints&&this.midPoints.create(h,o,this.coordinatePrecision)}}select(t,e=!0){if(this.selected[0]===t)return;const{mode:i}=this.store.getPropertiesCopy(t),o=this.flags[i];if(!o||!o.feature)return;const s=this.selected[0];if(s){if(s===t)return;this.deselect()}e&&this.setCursor(this.cursors.pointerOver),this.selected=[t],this.store.updateProperty([{id:t,property:\"selected\",value:!0}]),this.onSelect(t);const{type:r,coordinates:n}=this.store.getGeometryCopy(t);if(\"LineString\"!==r&&\"Polygon\"!==r)return;const a=\"LineString\"===r?n:n[0];a&&o&&o.feature.coordinates&&(this.selectionPoints.create(a,r,t),o.feature.coordinates.midpoints&&this.midPoints.create(a,t,this.coordinatePrecision))}onLeftClick(t){const{clickedFeature:e,clickedMidPoint:i}=this.featuresAtMouseEvent.find(t,this.selected.length>0);if(this.selected.length&&i)this.midPoints.insert(i.id,this.coordinatePrecision);else if(e&&e.id)this.select(e.id,!0);else if(this.selected.length&&this.allowManualDeselection)return void this.deselect()}start(){this.setStarted(),this.setSelecting()}stop(){this.cleanUp(),this.setStarted(),this.setStopped()}onClick(t){\"right\"!==t.button?\"left\"===t.button&&this.onLeftClick(t):this.onRightClick(t)}canScale(t){return this.keyEvents.scale&&this.keyEvents.scale.every(e=>t.heldKeys.includes(e))}canRotate(t){return this.keyEvents.rotate&&this.keyEvents.rotate.every(e=>t.heldKeys.includes(e))}preventDefaultKeyEvent(t){const e=this.canRotate(t),i=this.canScale(t);(e||i)&&t.preventDefault()}onKeyDown(t){this.preventDefaultKeyEvent(t)}onKeyUp(t){if(this.preventDefaultKeyEvent(t),this.keyEvents.delete&&t.key===this.keyEvents.delete){if(!this.selected.length)return;this.onDeselect(this.selected[0]),this.deleteSelected(),this.selectionPoints.delete(),this.midPoints.delete()}else this.keyEvents.deselect&&t.key===this.keyEvents.deselect&&this.cleanUp()}cleanUp(){this.selected.length&&this.deselect()}onDragStart(t,e){if(!this.selected.length)return;const i=this.store.getPropertiesCopy(this.selected[0]),o=this.flags[i.mode];if(!(o&&o.feature&&(o.feature.draggable||o.feature.coordinates&&o.feature.coordinates.draggable||o.feature.coordinates&&o.feature.coordinates.resizable)))return;this.dragEventCount=0;const s=this.selected[0],r=this.dragCoordinate.getDraggableIndex(t,s);return o&&o.feature&&o.feature.coordinates&&(o.feature.coordinates.draggable||o.feature.coordinates.resizable)&&-1!==r?(this.setCursor(this.cursors.dragStart),o.feature.coordinates.resizable?this.dragCoordinateResizeFeature.startDragging(s,r):this.dragCoordinate.startDragging(s,r),void e(!1)):o&&o.feature&&o.feature.draggable&&this.dragFeature.canDrag(t,s)?(this.setCursor(this.cursors.dragStart),this.dragFeature.startDragging(t,s),void e(!1)):void 0}onDrag(t,e){const i=this.selected[0];if(!i)return;const o=this.store.getPropertiesCopy(i),s=this.flags[o.mode],r=!0===(s&&s.feature&&s.feature.selfIntersectable);if(this.dragEventCount++,this.dragEventCount%this.dragEventThrottle==0)return;const n=this.validations[o.mode];if(s&&s.feature&&s.feature.rotateable&&this.canRotate(t))return e(!1),void this.rotateFeature.rotate(t,i,n);if(s&&s.feature&&s.feature.scaleable&&this.canScale(t))return e(!1),void this.scaleFeature.scale(t,i,n);if(this.dragCoordinateResizeFeature.isDragging()&&s.feature&&s.feature.coordinates&&s.feature.coordinates.resizable){if(\"globe\"===this.projection)throw new Error(\"Globe is currently unsupported projection for resizable\");return e(!1),void this.dragCoordinateResizeFeature.drag(t,s.feature.coordinates.resizable,n)}this.dragCoordinate.isDragging()?this.dragCoordinate.drag(t,r,n):this.dragFeature.isDragging()?this.dragFeature.drag(t,n):e(!0)}onDragEnd(t,e){this.setCursor(this.cursors.dragEnd),this.dragCoordinate.isDragging()?this.onFinish(this.selected[0],{mode:this.mode,action:\"dragCoordinate\"}):this.dragFeature.isDragging()?this.onFinish(this.selected[0],{mode:this.mode,action:\"dragFeature\"}):this.dragCoordinateResizeFeature.isDragging()&&this.onFinish(this.selected[0],{mode:this.mode,action:\"dragCoordinateResize\"}),this.dragCoordinate.stopDragging(),this.dragFeature.stopDragging(),this.dragCoordinateResizeFeature.stopDragging(),this.rotateFeature.reset(),this.scaleFeature.reset(),e(!0)}onMouseMove(t){if(!this.selected.length)return void this.setCursor(\"unset\");if(this.dragFeature.isDragging())return;let e=!1;this.midPoints.ids.forEach(i=>{if(e)return;const o=this.store.getGeometryCopy(i);this.pixelDistance.measure(t,o.coordinates)<this.pointerDistance&&(e=!0)});let i=!1;if(this.selectionPoints.ids.forEach(o=>{const s=this.store.getGeometryCopy(o);this.pixelDistance.measure(t,s.coordinates)<this.pointerDistance&&(e=!1,i=!0)}),e)return void this.setCursor(this.cursors.insertMidpoint);const{clickedFeature:o}=this.featuresAtMouseEvent.find(t,!0);this.setCursor(this.selected.length>0&&(o&&o.id===this.selected[0]||i)?this.cursors.pointerOver:\"unset\")}styleFeature(e){const i=t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0});if(e.properties.mode===this.mode&&\"Point\"===e.geometry.type){if(e.properties.selectionPoint)return i.pointColor=this.getHexColorStylingValue(this.styles.selectionPointColor,i.pointColor,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.selectionPointOutlineColor,i.pointOutlineColor,e),i.pointWidth=this.getNumericStylingValue(this.styles.selectionPointWidth,i.pointWidth,e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.selectionPointOutlineWidth,2,e),i.zIndex=30,i;if(e.properties.midPoint)return i.pointColor=this.getHexColorStylingValue(this.styles.midPointColor,i.pointColor,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.midPointOutlineColor,i.pointOutlineColor,e),i.pointWidth=this.getNumericStylingValue(this.styles.midPointWidth,4,e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.midPointOutlineWidth,2,e),i.zIndex=40,i}else if(e.properties[Gt]){if(\"Polygon\"===e.geometry.type)return i.polygonFillColor=this.getHexColorStylingValue(this.styles.selectedPolygonColor,i.polygonFillColor,e),i.polygonOutlineWidth=this.getNumericStylingValue(this.styles.selectedPolygonOutlineWidth,i.polygonOutlineWidth,e),i.polygonOutlineColor=this.getHexColorStylingValue(this.styles.selectedPolygonOutlineColor,i.polygonOutlineColor,e),i.polygonFillOpacity=this.getNumericStylingValue(this.styles.selectedPolygonFillOpacity,i.polygonFillOpacity,e),i.zIndex=10,i;if(\"LineString\"===e.geometry.type)return i.lineStringColor=this.getHexColorStylingValue(this.styles.selectedLineStringColor,i.lineStringColor,e),i.lineStringWidth=this.getNumericStylingValue(this.styles.selectedLineStringWidth,i.lineStringWidth,e),i.zIndex=10,i;if(\"Point\"===e.geometry.type)return i.pointWidth=this.getNumericStylingValue(this.styles.selectedPointWidth,i.pointWidth,e),i.pointColor=this.getHexColorStylingValue(this.styles.selectedPointColor,i.pointColor,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.selectedPointOutlineColor,i.pointOutlineColor,e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.selectedPointOutlineWidth,i.pointOutlineWidth,e),i.zIndex=10,i}return i}}class qe extends Tt{constructor(...t){super(...t),this.type=zt.Static,this.mode=\"static\"}start(){}stop(){}onKeyUp(){}onKeyDown(){}onClick(){}onDragStart(){}onDrag(){}onDragEnd(){}onMouseMove(){}cleanUp(){}styleFeature(){return t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0})}}function Ze(t,e,i,o,s){for(;o>i;){if(o-i>600){const r=o-i+1,n=e-i+1,a=Math.log(r),l=.5*Math.exp(2*a/3),h=.5*Math.sqrt(a*l*(r-l)/r)*(n-r/2<0?-1:1);Ze(t,e,Math.max(i,Math.floor(e-n*l/r+h)),Math.min(o,Math.floor(e+(r-n)*l/r+h)),s)}const r=t[e];let n=i,a=o;for(Qe(t,i,e),s(t[o],r)>0&&Qe(t,i,o);n<a;){for(Qe(t,n,a),n++,a--;s(t[n],r)<0;)n++;for(;s(t[a],r)>0;)a--}0===s(t[i],r)?Qe(t,i,a):(a++,Qe(t,a,o)),a<=e&&(i=a+1),e<=a&&(o=a-1)}}function Qe(t,e,i){const o=t[e];t[e]=t[i],t[i]=o}function ti(t,e){ei(t,0,t.children.length,e,t)}function ei(t,e,i,o,s){s||(s=ci([])),s.minX=Infinity,s.minY=Infinity,s.maxX=-Infinity,s.maxY=-Infinity;for(let r=e;r<i;r++){const e=t.children[r];ii(s,t.leaf?o(e):e)}return s}function ii(t,e){return t.minX=Math.min(t.minX,e.minX),t.minY=Math.min(t.minY,e.minY),t.maxX=Math.max(t.maxX,e.maxX),t.maxY=Math.max(t.maxY,e.maxY),t}function oi(t,e){return t.minX-e.minX}function si(t,e){return t.minY-e.minY}function ri(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function ni(t){return t.maxX-t.minX+(t.maxY-t.minY)}function ai(t,e){const i=Math.max(t.minX,e.minX),o=Math.max(t.minY,e.minY),s=Math.min(t.maxX,e.maxX),r=Math.min(t.maxY,e.maxY);return Math.max(0,s-i)*Math.max(0,r-o)}function li(t,e){return t.minX<=e.minX&&t.minY<=e.minY&&e.maxX<=t.maxX&&e.maxY<=t.maxY}function hi(t,e){return e.minX<=t.maxX&&e.minY<=t.maxY&&e.maxX>=t.minX&&e.maxY>=t.minY}function ci(t){return{children:t,height:1,leaf:!0,minX:Infinity,minY:Infinity,maxX:-Infinity,maxY:-Infinity}}function di(t,e,i,o,s){const r=[e,i];for(;r.length;){if((i=r.pop())-(e=r.pop())<=o)continue;const n=e+Math.ceil((i-e)/o/2)*o;Ze(t,n,e,i,s),r.push(e,n,n,i)}}class ui{constructor(t){this._maxEntries=void 0,this._minEntries=void 0,this.data=void 0,this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}search(t){let e=this.data;const i=[];if(!hi(t,e))return i;const o=this.toBBox,s=[];for(;e;){for(let r=0;r<e.children.length;r++){const n=e.children[r],a=e.leaf?o(n):n;hi(t,a)&&(e.leaf?i.push(n):li(t,a)?this._all(n,i):s.push(n))}e=s.pop()}return i}collides(t){let e=this.data;if(hi(t,e)){const i=[];for(;e;){for(let o=0;o<e.children.length;o++){const s=e.children[o],r=e.leaf?this.toBBox(s):s;if(hi(t,r)){if(e.leaf||li(t,r))return!0;i.push(s)}}e=i.pop()}}return!1}load(t){if(t.length<this._minEntries){for(let e=0;e<t.length;e++)this.insert(t[e]);return}let e=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===e.height)this._splitRoot(this.data,e);else{if(this.data.height<e.height){const t=this.data;this.data=e,e=t}this._insert(e,this.data.height-e.height-1,!0)}else this.data=e}insert(t){this._insert(t,this.data.height-1)}clear(){this.data=ci([])}remove(t){let e=this.data;const i=this.toBBox(t),o=[],s=[];let r,n,a=!1;for(;e||o.length;){if(e||(e=o.pop(),n=o[o.length-1],r=s.pop(),a=!0),e.leaf){const i=e.children.indexOf(t);-1!==i&&(e.children.splice(i,1),o.push(e),this._condense(o))}a||e.leaf||!li(e,i)?n?(r++,e=n.children[r],a=!1):e=null:(o.push(e),s.push(r),r=0,n=e,e=e.children[0])}}toBBox(t){return t}compareMinX(t,e){return t.minX-e.minX}compareMinY(t,e){return t.minY-e.minY}_all(t,e){const i=[];for(;t;)t.leaf?e.push(...t.children):i.push(...t.children),t=i.pop();return e}_build(t,e,i,o){const s=i-e+1;let r,n=this._maxEntries;if(s<=n)return r=ci(t.slice(e,i+1)),ti(r,this.toBBox),r;o||(o=Math.ceil(Math.log(s)/Math.log(n)),n=Math.ceil(s/Math.pow(n,o-1))),r=ci([]),r.leaf=!1,r.height=o;const a=Math.ceil(s/n),l=a*Math.ceil(Math.sqrt(n));di(t,e,i,l,this.compareMinX);for(let s=e;s<=i;s+=l){const e=Math.min(s+l-1,i);di(t,s,e,a,this.compareMinY);for(let i=s;i<=e;i+=a){const s=Math.min(i+a-1,e);r.children.push(this._build(t,i,s,o-1))}}return ti(r,this.toBBox),r}_chooseSubtree(t,e,i,o){for(;o.push(e),!e.leaf&&o.length-1!==i;){let i,o=Infinity,n=Infinity;for(let a=0;a<e.children.length;a++){const l=e.children[a],h=ri(l),c=(s=t,r=l,(Math.max(r.maxX,s.maxX)-Math.min(r.minX,s.minX))*(Math.max(r.maxY,s.maxY)-Math.min(r.minY,s.minY))-h);c<n?(n=c,o=h<o?h:o,i=l):c===n&&h<o&&(o=h,i=l)}e=i||e.children[0]}var s,r;return e}_insert(t,e,i){const o=i?t:this.toBBox(t),s=[],r=this._chooseSubtree(o,this.data,e,s);for(r.children.push(t),ii(r,o);e>=0&&s[e].children.length>this._maxEntries;)this._split(s,e),e--;this._adjustParentBBoxes(o,s,e)}_split(t,e){const i=t[e],o=i.children.length,s=this._minEntries;this._chooseSplitAxis(i,s,o);const r=this._chooseSplitIndex(i,s,o),n=ci(i.children.splice(r,i.children.length-r));n.height=i.height,n.leaf=i.leaf,ti(i,this.toBBox),ti(n,this.toBBox),e?t[e-1].children.push(n):this._splitRoot(i,n)}_splitRoot(t,e){this.data=ci([t,e]),this.data.height=t.height+1,this.data.leaf=!1,ti(this.data,this.toBBox)}_chooseSplitIndex(t,e,i){let o,s=Infinity,r=Infinity;for(let n=e;n<=i-e;n++){const e=ei(t,0,n,this.toBBox),a=ei(t,n,i,this.toBBox),l=ai(e,a),h=ri(e)+ri(a);l<s?(s=l,o=n,r=h<r?h:r):l===s&&h<r&&(r=h,o=n)}return o||i-e}_chooseSplitAxis(t,e,i){const o=t.leaf?this.compareMinX:oi,s=t.leaf?this.compareMinY:si;this._allDistMargin(t,e,i,o)<this._allDistMargin(t,e,i,s)&&t.children.sort(o)}_allDistMargin(t,e,i,o){t.children.sort(o);const s=this.toBBox,r=ei(t,0,e,s),n=ei(t,i-e,i,s);let a=ni(r)+ni(n);for(let o=e;o<i-e;o++){const e=t.children[o];ii(r,t.leaf?s(e):e),a+=ni(r)}for(let o=i-e-1;o>=e;o--){const e=t.children[o];ii(n,t.leaf?s(e):e),a+=ni(n)}return a}_adjustParentBBoxes(t,e,i){for(let o=i;o>=0;o--)ii(e[o],t)}_condense(t){for(let e,i=t.length-1;i>=0;i--)0===t[i].children.length?i>0?(e=t[i-1].children,e.splice(e.indexOf(t[i]),1)):this.clear():ti(t[i],this.toBBox)}}class gi{constructor(t){this.tree=void 0,this.idToNode=void 0,this.nodeToId=void 0,this.tree=new ui(t&&t.maxEntries?t.maxEntries:9),this.idToNode=new Map,this.nodeToId=new Map}setMaps(t,e){this.idToNode.set(t.id,e),this.nodeToId.set(e,t.id)}toBBox(t){const e=[],i=[];let o;if(\"Polygon\"===t.geometry.type)o=t.geometry.coordinates[0];else if(\"LineString\"===t.geometry.type)o=t.geometry.coordinates;else{if(\"Point\"!==t.geometry.type)throw new Error(\"Not a valid feature to turn into a bounding box\");o=[t.geometry.coordinates]}for(let t=0;t<o.length;t++)i.push(o[t][1]),e.push(o[t][0]);const s=Math.min(...i),r=Math.max(...i);return{minX:Math.min(...e),minY:s,maxX:Math.max(...e),maxY:r}}insert(t){if(this.idToNode.get(String(t.id)))throw new Error(\"Feature already exists\");const e=this.toBBox(t);this.setMaps(t,e),this.tree.insert(e)}load(t){const e=[],i=new Set;t.forEach(t=>{const o=this.toBBox(t);if(this.setMaps(t,o),i.has(String(t.id)))throw new Error(`Duplicate feature ID found ${t.id}`);i.add(String(t.id)),e.push(o)}),this.tree.load(e)}update(t){this.remove(t.id);const e=this.toBBox(t);this.setMaps(t,e),this.tree.insert(e)}remove(t){const e=this.idToNode.get(t);if(!e)throw new Error(`${t} not inserted into the spatial index`);this.tree.remove(e)}clear(){this.tree.clear()}search(t){return this.tree.search(this.toBBox(t)).map(t=>this.nodeToId.get(t))}collides(t){return this.tree.collides(this.toBBox(t))}}const pi={getId:()=>\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(t){const e=16*Math.random()|0;return(\"x\"==t?e:3&e|8).toString(16)}),isValidId:t=>\"string\"==typeof t&&36===t.length};class yi{constructor(t){this.idStrategy=void 0,this.tracked=void 0,this.spatialIndex=void 0,this.store=void 0,this._onChange=()=>{},this.store={},this.spatialIndex=new gi,this.tracked=!t||!1!==t.tracked,this.idStrategy=t&&t.idStrategy?t.idStrategy:pi}clone(t){return JSON.parse(JSON.stringify(t))}getId(){return this.idStrategy.getId()}has(t){return Boolean(this.store[t])}load(t,e){if(0===t.length)return;const i=this.clone(t);i.forEach(t=>{null==t.id&&(t.id=this.idStrategy.getId()),this.tracked&&(t.properties.createdAt?Vt(t.properties.createdAt):t.properties.createdAt=+new Date,t.properties.updatedAt?Vt(t.properties.updatedAt):t.properties.updatedAt=+new Date)});const o=[];i.forEach(t=>{const i=t.id;if(e&&!e(t))throw new Error(`Feature is not ${i} valid: ${JSON.stringify(t)}`);if(this.has(i))throw new Error(`Feature already exists with this id: ${i}`);this.store[i]=t,o.push(i)}),this.spatialIndex.load(i),this._onChange(o,\"create\")}search(t,e){const i=this.spatialIndex.search(t).map(t=>this.store[t]);return this.clone(e?i.filter(e):i)}registerOnChange(t){this._onChange=(e,i)=>{t(e,i)}}getGeometryCopy(t){const e=this.store[t];if(!e)throw new Error(`No feature with this id (${t}), can not get geometry copy`);return this.clone(e.geometry)}getPropertiesCopy(t){const e=this.store[t];if(!e)throw new Error(`No feature with this id (${t}), can not get properties copy`);return this.clone(e.properties)}updateProperty(t){const e=[];t.forEach(({id:t,property:i,value:o})=>{const s=this.store[t];if(!s)throw new Error(`No feature with this (${t}), can not update geometry`);e.push(t),s.properties[i]=o,this.tracked&&(s.properties.updatedAt=+new Date)}),this._onChange&&this._onChange(e,\"update\")}updateGeometry(t){const e=[];t.forEach(({id:t,geometry:i})=>{e.push(t);const o=this.store[t];if(!o)throw new Error(`No feature with this (${t}), can not update geometry`);o.geometry=this.clone(i),this.spatialIndex.update(o),this.tracked&&(o.properties.updatedAt=+new Date)}),this._onChange&&this._onChange(e,\"update\")}create(e){const i=[];return e.forEach(({geometry:e,properties:o})=>{let s,r=t({},o);this.tracked&&(s=+new Date,o?(r.createdAt=\"number\"==typeof o.createdAt?o.createdAt:s,r.updatedAt=\"number\"==typeof o.updatedAt?o.updatedAt:s):r={createdAt:s,updatedAt:s});const n=this.getId(),a={id:n,type:\"Feature\",geometry:e,properties:r};this.store[n]=a,this.spatialIndex.insert(a),i.push(n)}),this._onChange&&this._onChange([...i],\"create\"),i}delete(t){t.forEach(t=>{if(!this.store[t])throw new Error(\"No feature with this id, can not delete\");delete this.store[t],this.spatialIndex.remove(t)}),this._onChange&&this._onChange([...t],\"delete\")}copyAll(){return this.clone(Object.keys(this.store).map(t=>this.store[t]))}clear(){this.store={},this.spatialIndex.clear()}size(){return Object.keys(this.store).length}}function mi(t){const e=t.coordinates;let i=0;if(e&&e.length>0){i+=Math.abs(_i(e[0]));for(let t=1;t<e.length;t++)i-=Math.abs(_i(e[t]))}return i}const fi=Yt*Yt/2,vi=Math.PI/180;function _i(t){const e=t.length;if(e<=2)return 0;let i=0,o=0;for(;o<e;)i+=(t[o+2>=e?(o+2)%e:o+2][0]*vi-t[o][0]*vi)*Math.sin(t[o+1===e?0:o+1][1]*vi),o++;return i*fi}const Ci=(t,e)=>\"Polygon\"===t.geometry.type&&mi(t.geometry)>e,Pi=(t,e)=>\"Polygon\"===t.geometry.type&&mi(t.geometry)<e,xi=t=>(\"Polygon\"===t.geometry.type||\"LineString\"===t.geometry.type)&&!oe(t);function Mi(t,e,i){const o=_e(t,e);let s=_e(e,i)-o;return s<0&&(s+=360),180-Math.abs(s-90-90)}class wi extends Tt{constructor(e){super(e),this.mode=\"angled-rectangle\",this.currentCoordinate=0,this.currentId=void 0,this.keyEvents=void 0,this.pixelDistance=void 0,this.cursors=void 0,this.mouseMove=!1;const i={start:\"crosshair\",close:\"pointer\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,null===(null==e?void 0:e.keyEvents))this.keyEvents={cancel:null,finish:null};else{const i={cancel:\"Escape\",finish:\"Enter\"};this.keyEvents=e&&e.keyEvents?t({},i,e.keyEvents):i}}close(){if(void 0===this.currentId)return;const t=this.currentId;this.currentCoordinate=0,this.currentId=void 0,\"drawing\"===this.state&&this.setStarted(),this.onFinish(t,{mode:this.mode,action:\"draw\"})}registerBehaviors(t){this.pixelDistance=new pe(t)}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onMouseMove(t){if(this.mouseMove=!0,this.setCursor(this.cursors.start),void 0===this.currentId||0===this.currentCoordinate)return;const e=this.store.getGeometryCopy(this.currentId).coordinates[0];let o;if(1===this.currentCoordinate){const i=1/Math.pow(10,this.coordinatePrecision-1),s=Math.max(1e-6,i);o=[e[0],[t.lng,t.lat],[t.lng,t.lat-s],e[0]]}else if(2===this.currentCoordinate){const s=e[0],r=e[1],n=We(s,r,this.coordinatePrecision,this.project,this.unproject),a=Qt(s[0],s[1]),l=Qt(n[0],n[1]),h=Qt(r[0],r[1]),c=Qt(t.lng,t.lat),d=i(c,a)<i(c,h),u=Mi(a,l,c),g=d?90-u:Mi(a,l,c)-90,p=i(l,c),y=Math.cos(Ht(g))*p,m=_e(a,h)+(\"right\"===function(t,e,i){const o=(i.x-e.x)*(t.y-e.y)-(i.y-e.y)*(t.x-e.x);return o>1e-10?\"left\":o<-1e-10?\"right\":\"left\"}(a,h,c)?-90:90),f=fe(a,y,m),v=fe(h,y,m),_=te(f.x,f.y),C=te(v.x,v.y);o=[e[0],e[1],[C.lng,C.lat],[_.lng,_.lat],e[0]]}o&&this.updatePolygonGeometry(this.currentId,o,Wt.Provisional)}updatePolygonGeometry(t,e,i){const o={type:\"Polygon\",coordinates:[e]};return!(this.validate&&!this.validate({type:\"Feature\",geometry:o},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:i})||(this.store.updateGeometry([{id:t,geometry:o}]),0))}onClick(t){if(this.currentCoordinate>0&&!this.mouseMove&&this.onMouseMove(t),this.mouseMove=!1,0===this.currentCoordinate){const[e]=this.store.create([{geometry:{type:\"Polygon\",coordinates:[[[t.lng,t.lat],[t.lng,t.lat],[t.lng,t.lat],[t.lng,t.lat]]]},properties:{mode:this.mode}}]);this.currentId=e,this.currentCoordinate++,this.setDrawing()}else if(1===this.currentCoordinate&&this.currentId){const e=this.store.getGeometryCopy(this.currentId);if(we([t.lng,t.lat],e.coordinates[0][0]))return;if(!this.updatePolygonGeometry(this.currentId,[e.coordinates[0][0],[t.lng,t.lat],[t.lng,t.lat],e.coordinates[0][0]],Wt.Commit))return;this.currentCoordinate++}else 2===this.currentCoordinate&&this.currentId&&this.close()}onKeyUp(t){t.key===this.keyEvents.cancel?this.cleanUp():t.key===this.keyEvents.finish&&this.close()}onKeyDown(){}onDragStart(){}onDrag(){}onDragEnd(){}cleanUp(){try{this.currentId&&this.store.delete([this.currentId])}catch(t){}this.currentId=void 0,this.currentCoordinate=0,\"drawing\"===this.state&&this.setStarted()}styleFeature(e){const i=t({},{polygonFillColor:\"#3f97e0\",polygonOutlineColor:\"#3f97e0\",polygonOutlineWidth:4,polygonFillOpacity:.3,pointColor:\"#3f97e0\",pointOutlineColor:\"#ffffff\",pointOutlineWidth:0,pointWidth:6,lineStringColor:\"#3f97e0\",lineStringWidth:4,zIndex:0});return e.properties.mode===this.mode&&\"Polygon\"===e.geometry.type&&(i.polygonFillColor=this.getHexColorStylingValue(this.styles.fillColor,i.polygonFillColor,e),i.polygonOutlineColor=this.getHexColorStylingValue(this.styles.outlineColor,i.polygonOutlineColor,e),i.polygonOutlineWidth=this.getNumericStylingValue(this.styles.outlineWidth,i.polygonOutlineWidth,e),i.polygonFillOpacity=this.getNumericStylingValue(this.styles.fillOpacity,i.polygonFillOpacity,e),i.zIndex=10),i}validateFeature(t){return!!super.validateFeature(t)&&t.properties.mode===this.mode&&ae(t,this.coordinatePrecision)}}class Si{constructor(e){this._modes=void 0,this._mode=void 0,this._adapter=void 0,this._enabled=!1,this._store=void 0,this._eventListeners=void 0,this._instanceSelectMode=void 0,this._adapter=e.adapter,this._mode=new qe;const i=new Set,o=e.modes.reduce((t,e)=>{if(i.has(e.mode))throw new Error(`There is already a ${e.mode} mode provided`);return i.add(e.mode),t[e.mode]=e,t},{}),s=Object.keys(o);if(0===s.length)throw new Error(\"No modes provided\");s.forEach(t=>{if(o[t].type===zt.Select){if(this._instanceSelectMode)throw new Error(\"only one type of select mode can be provided\");this._instanceSelectMode=t}}),this._modes=t({},o,{static:this._mode}),this._eventListeners={change:[],select:[],deselect:[],finish:[],ready:[]},this._store=new yi({tracked:!!e.tracked,idStrategy:e.idStrategy?e.idStrategy:void 0});const r=t=>{const e=[],i=this._store.copyAll().filter(i=>!t.includes(i.id)||(e.push(i),!1));return{changed:e,unchanged:i}},n=(t,e)=>{this._enabled&&this._eventListeners.finish.forEach(i=>{i(t,e)})},a=(t,e)=>{if(!this._enabled)return;this._eventListeners.change.forEach(i=>{i(t,e)});const{changed:i,unchanged:o}=r(t);\"create\"===e?this._adapter.render({created:i,deletedIds:[],unchanged:o,updated:[]},this.getModeStyles()):\"update\"===e?this._adapter.render({created:[],deletedIds:[],unchanged:o,updated:i},this.getModeStyles()):\"delete\"===e?this._adapter.render({created:[],deletedIds:t,unchanged:o,updated:[]},this.getModeStyles()):\"styling\"===e&&this._adapter.render({created:[],deletedIds:[],unchanged:o,updated:[]},this.getModeStyles())},l=t=>{if(!this._enabled)return;this._eventListeners.select.forEach(e=>{e(t)});const{changed:e,unchanged:i}=r([t]);this._adapter.render({created:[],deletedIds:[],unchanged:i,updated:e},this.getModeStyles())},h=t=>{if(!this._enabled)return;this._eventListeners.deselect.forEach(t=>{t()});const{changed:e,unchanged:i}=r([t]);e&&this._adapter.render({created:[],deletedIds:[],unchanged:i,updated:e},this.getModeStyles())};Object.keys(this._modes).forEach(t=>{this._modes[t].register({mode:t,store:this._store,setCursor:this._adapter.setCursor.bind(this._adapter),project:this._adapter.project.bind(this._adapter),unproject:this._adapter.unproject.bind(this._adapter),setDoubleClickToZoom:this._adapter.setDoubleClickToZoom.bind(this._adapter),onChange:a,onSelect:l,onDeselect:h,onFinish:n,coordinatePrecision:this._adapter.getCoordinatePrecision()})})}checkEnabled(){if(!this._enabled)throw new Error(\"Terra Draw is not enabled\")}getModeStyles(){const t={};return Object.keys(this._modes).forEach(e=>{t[e]=t=>this._instanceSelectMode&&t.properties[Gt]?this._modes[this._instanceSelectMode].styleFeature.bind(this._modes[this._instanceSelectMode])(t):this._modes[e].styleFeature.bind(this._modes[e])(t)}),t}featuresAtLocation({lng:t,lat:e},o){const s=o&&void 0!==o.pointerDistance?o.pointerDistance:30,r=!o||void 0===o.ignoreSelectFeatures||o.ignoreSelectFeatures,n=this._adapter.unproject.bind(this._adapter),a=this._adapter.project.bind(this._adapter),l=a(t,e),h=ue({unproject:n,point:l,pointerDistance:s});return this._store.search(h).filter(o=>{if(r&&(o.properties[Nt]||o.properties.selectionPoint))return!1;if(\"Point\"===o.geometry.type){const t=o.geometry.coordinates,e=a(t[0],t[1]);return i(l,e)<s}if(\"LineString\"===o.geometry.type){const t=o.geometry.coordinates;for(let e=0;e<t.length-1;e++){const i=t[e],o=t[e+1];if(Re(l,a(i[0],i[1]),a(o[0],o[1]))<s)return!0}return!1}return!!Ae([t,e],o.geometry.coordinates)||void 0})}getSelectMode(){if(this.checkEnabled(),!this._instanceSelectMode)throw new Error(\"No select mode defined in instance\");return this.getMode()!==this._instanceSelectMode&&this.setMode(this._instanceSelectMode),this._modes[this._instanceSelectMode]}setModeStyles(t,e){if(this.checkEnabled(),!this._modes[t])throw new Error(\"No mode with this name present\");this._modes[t].styles=e}getSnapshot(){return this._store.copyAll()}clear(){this.checkEnabled(),this._adapter.clear()}get enabled(){return this._enabled}set enabled(t){throw new Error(\"Enabled is read only\")}getMode(){return this._mode.mode}setMode(t){if(this.checkEnabled(),!this._modes[t])throw new Error(\"No mode with this name present\");this._mode.stop(),this._mode=this._modes[t],this._mode.start()}removeFeatures(t){this.checkEnabled(),this._store.delete(t)}selectFeature(t){this.getSelectMode().selectFeature(t)}deselectFeature(t){this.getSelectMode().deselectFeature(t)}getFeatureId(){return this._store.getId()}hasFeature(t){return this._store.has(t)}addFeatures(t){this.checkEnabled(),0!==t.length&&this._store.load(t,t=>{if(Boolean(t&&\"object\"==typeof t&&\"properties\"in t&&\"object\"==typeof t.properties&&null!==t.properties&&\"mode\"in t.properties)){const e=this._modes[t.properties.mode];return!!e&&e.validateFeature.bind(e)(t)}return!1})}start(){this._enabled=!0,this._adapter.register({onReady:()=>{this._eventListeners.ready.forEach(t=>{t()})},getState:()=>this._mode.state,onClick:t=>{this._mode.onClick(t)},onMouseMove:t=>{this._mode.onMouseMove(t)},onKeyDown:t=>{this._mode.onKeyDown(t)},onKeyUp:t=>{this._mode.onKeyUp(t)},onDragStart:(t,e)=>{this._mode.onDragStart(t,e)},onDrag:(t,e)=>{this._mode.onDrag(t,e)},onDragEnd:(t,e)=>{this._mode.onDragEnd(t,e)},onClear:()=>{this._mode.cleanUp(),this._store.clear()}})}getFeaturesAtLngLat(t,e){const{lng:i,lat:o}=t;return this.featuresAtLocation({lng:i,lat:o},e)}getFeaturesAtPointerEvent(t,e){const i=this._adapter.getLngLatFromEvent.bind(this._adapter)(t);return null===i?[]:this.featuresAtLocation(i,e)}stop(){this._enabled=!1,this._adapter.unregister()}on(t,e){const i=this._eventListeners[t];i.includes(e)||i.push(e)}off(t,e){const i=this._eventListeners[t];i.includes(e)&&i.splice(i.indexOf(e),1)}}const bi={TerraDrawBaseDrawMode:Tt,TerraDrawBaseAdapter:s};export{Si as TerraDraw,wi as TerraDrawAngledRectangleMode,Bt as TerraDrawArcGISMapsSDKAdapter,he as TerraDrawCircleMode,bi as TerraDrawExtend,ce as TerraDrawFreehandMode,r as TerraDrawGoogleMapsAdapter,n as TerraDrawLeafletAdapter,Se as TerraDrawLineStringMode,l as TerraDrawMapLibreGLAdapter,a as TerraDrawMapboxGLAdapter,jt as TerraDrawOpenLayersAdapter,Ee as TerraDrawPointMode,De as TerraDrawPolygonMode,ke as TerraDrawRectangleMode,Fe as TerraDrawRenderMode,$e as TerraDrawSelectMode,Pi as ValidateMaxAreaSquareMeters,Ci as ValidateMinAreaSquareMeters,xi as ValidateNotSelfIntersecting};\n//# sourceMappingURL=terra-draw.modern.js.map\n","import type { ControlOptions } from '$lib/interfaces/ControlOptions.js';\n\nexport const defaultControlOptions: ControlOptions = {\n\tpoint: true,\n\tline: true,\n\tpolygon: true,\n\trectangle: true,\n\tcircle: true,\n\tfreehand: true,\n\tangledRectangle: true,\n\tselect: true\n};\n","import type { ControlOptions } from '$lib/interfaces/ControlOptions.js';\nimport type { MapGeoJSONFeature } from 'maplibre-gl';\nimport {\n\tTerraDrawAngledRectangleMode,\n\tTerraDrawCircleMode,\n\tTerraDrawFreehandMode,\n\tTerraDrawLineStringMode,\n\tTerraDrawPointMode,\n\tTerraDrawPolygonMode,\n\tTerraDrawRectangleMode,\n\tTerraDrawSelectMode,\n\tValidateNotSelfIntersecting\n} from 'terra-draw';\n\n/**\n * This function returns an array of enabled terradraw mode objects from control option\n * @param options Terradraw control options\n * @returns return an array of enabled terradraw mode objects\n */\nexport const getTerraDrawModes = (options: ControlOptions) => {\n\tconst modes = [];\n\n\tif (options.point === true) {\n\t\tmodes.push(new TerraDrawPointMode());\n\t}\n\tif (options.line === true) {\n\t\tmodes.push(new TerraDrawLineStringMode());\n\t}\n\tif (options.polygon === true) {\n\t\tmodes.push(\n\t\t\tnew TerraDrawPolygonMode({\n\t\t\t\tvalidation: (feature: MapGeoJSONFeature, e: { updateType: string }) => {\n\t\t\t\t\tconst updateType = e.updateType;\n\t\t\t\t\tif (updateType === 'finish' || updateType === 'commit') {\n\t\t\t\t\t\treturn ValidateNotSelfIntersecting(feature);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n\tif (options.rectangle === true) {\n\t\tmodes.push(new TerraDrawRectangleMode());\n\t}\n\tif (options.angledRectangle === true) {\n\t\tmodes.push(new TerraDrawAngledRectangleMode());\n\t}\n\tif (options.circle === true) {\n\t\tmodes.push(new TerraDrawCircleMode());\n\t}\n\tif (options.freehand === true) {\n\t\tmodes.push(new TerraDrawFreehandMode());\n\t}\n\n\tif (options.select === true) {\n\t\tmodes.push(\n\t\t\tnew TerraDrawSelectMode({\n\t\t\t\tflags: {\n\t\t\t\t\tpoint: {\n\t\t\t\t\t\tfeature: {\n\t\t\t\t\t\t\tdraggable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tpolygon: {\n\t\t\t\t\t\tfeature: {\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tlinestring: {\n\t\t\t\t\t\tfeature: {\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tfreehand: {\n\t\t\t\t\t\tfeature: {\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcircle: {\n\t\t\t\t\t\tfeature: {\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\trectangle: {\n\t\t\t\t\t\tfeature: {\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'angled-rectangle': {\n\t\t\t\t\t\tfeature: {\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n\n\treturn modes;\n};\n","import type { ControlPosition, IControl, Map } from 'maplibre-gl';\nimport { TerraDraw, TerraDrawMapLibreGLAdapter } from 'terra-draw';\nimport type { ControlOptions, TerradrawMode } from './interfaces/index.js';\nimport { defaultControlOptions } from './constants/defaultControlOptions.js';\nimport { getTerraDrawModes } from './helpers/index.js';\n\nexport class MaplibreTerradrawControl implements IControl {\n\tprivate controlContainer?: HTMLElement;\n\tprivate map?: Map;\n\tprivate addButton?: HTMLButtonElement;\n\tprivate modeButtons: { [key: string]: HTMLButtonElement } = {};\n\tprivate deleteButton?: HTMLButtonElement;\n\tprivate isExpanded = false;\n\tprivate activeMode: string;\n\n\tprivate terradraw?: TerraDraw;\n\tprivate options: ControlOptions = defaultControlOptions;\n\n\tconstructor(options?: ControlOptions) {\n\t\tthis.modeButtons = {};\n\t\tthis.activeMode = '';\n\n\t\tif (options) {\n\t\t\tthis.options = Object.assign(this.options, options);\n\t\t}\n\t}\n\n\tpublic getDefaultPosition(): ControlPosition {\n\t\tconst defaultPosition = 'top-right';\n\t\treturn defaultPosition;\n\t}\n\n\tpublic onAdd(map: Map): HTMLElement {\n\t\tthis.map = map;\n\n\t\tconst modes = getTerraDrawModes(this.options);\n\t\tif (modes.length === 0) {\n\t\t\tthrow new Error('At least a mode must be enabled.');\n\t\t}\n\t\tthis.terradraw = new TerraDraw({\n\t\t\tadapter: new TerraDrawMapLibreGLAdapter({ map }),\n\t\t\tmodes: modes\n\t\t});\n\n\t\tthis.terradraw.start();\n\n\t\tthis.controlContainer = document.createElement('div');\n\t\tthis.controlContainer.classList.add(`maplibregl-ctrl`);\n\t\tthis.controlContainer.classList.add(`maplibregl-ctrl-group`);\n\n\t\tthis.addButton = document.createElement('button');\n\t\tthis.addButton.classList.add(`maplibregl-terradraw-add-button`);\n\t\tthis.addButton.type = 'button';\n\t\tthis.addButton.addEventListener('click', () => {\n\t\t\tif (!this.terradraw) return;\n\n\t\t\tconst controls = document.getElementsByClassName('maplibregl-terradraw-add-control');\n\t\t\tfor (let i = 0; i < controls.length; i++) {\n\t\t\t\tconst item = controls.item(i);\n\t\t\t\tif (!item) continue;\n\t\t\t\tif (this.isExpanded) {\n\t\t\t\t\titem.classList.add('hidden');\n\t\t\t\t\tthis.addButton?.classList.remove('enabled');\n\t\t\t\t\tthis.resetActiveMode();\n\t\t\t\t} else {\n\t\t\t\t\titem.classList.remove('hidden');\n\t\t\t\t\tthis.addButton?.classList.add('enabled');\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.isExpanded = !this.isExpanded;\n\t\t});\n\n\t\tmodes.forEach((m) => {\n\t\t\tthis.addTerradrawButton(m.mode);\n\t\t});\n\n\t\tthis.deleteButton = document.createElement('button');\n\t\tthis.deleteButton.classList.add('maplibregl-terradraw-add-control');\n\t\tthis.deleteButton.classList.add(`maplibregl-terradraw-delete-button`);\n\t\tthis.deleteButton.classList.add('hidden');\n\t\tthis.deleteButton.type = 'button';\n\t\tthis.deleteButton.addEventListener('click', () => {\n\t\t\tif (!this.terradraw) return;\n\t\t\tif (!this.terradraw.enabled) return;\n\t\t\tthis.terradraw.clear();\n\t\t\tthis.deactivate();\n\t\t});\n\n\t\tthis.controlContainer.appendChild(this.addButton);\n\t\tObject.values(this.modeButtons).forEach((ele) => {\n\t\t\tthis.controlContainer?.appendChild(ele);\n\t\t});\n\t\tthis.controlContainer.appendChild(this.deleteButton);\n\n\t\treturn this.controlContainer;\n\t}\n\n\tpublic onRemove(): void {\n\t\tif (\n\t\t\t!this.controlContainer ||\n\t\t\t!this.controlContainer.parentNode ||\n\t\t\t!this.map ||\n\t\t\t!this.addButton\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tthis.modeButtons = {};\n\t\tthis.terradraw = undefined;\n\t\tthis.map = undefined;\n\t}\n\n\tpublic activate() {\n\t\tif (!this.terradraw) return;\n\t\tif (!this.terradraw.enabled) {\n\t\t\tthis.terradraw.start();\n\t\t}\n\t}\n\n\tpublic deactivate() {\n\t\tif (!this.terradraw) return;\n\t\tif (!this.terradraw.enabled) return;\n\t\tthis.terradraw.stop();\n\t\tthis.deactivate();\n\t\tthis.resetActiveMode();\n\t}\n\n\tpublic getTerraDrawInstance() {\n\t\treturn this.terradraw;\n\t}\n\n\tprivate resetActiveMode() {\n\t\tthis.activeMode = '';\n\n\t\tconst controls = document.getElementsByClassName('maplibregl-terradraw-add-control');\n\t\tfor (let i = 0; i < controls.length; i++) {\n\t\t\tconst item = controls.item(i);\n\t\t\tif (!item) continue;\n\t\t\titem.classList.remove('active');\n\t\t}\n\t}\n\n\tprivate addTerradrawButton(mode: TerradrawMode) {\n\t\tconst btn = document.createElement('button');\n\t\tbtn.classList.add('maplibregl-terradraw-add-control');\n\t\tbtn.classList.add(`maplibregl-terradraw-add-${mode}-button`);\n\t\tbtn.classList.add('hidden');\n\t\tbtn.type = 'button';\n\t\tbtn.addEventListener('click', () => {\n\t\t\tif (!this.terradraw) return;\n\t\t\tthis.activate();\n\t\t\tthis.resetActiveMode();\n\t\t\tthis.terradraw.setMode(mode);\n\t\t\tthis.activeMode = mode;\n\t\t\tbtn.classList.add('active');\n\t\t});\n\t\tthis.modeButtons[mode] = btn;\n\t}\n}\n"],"names":["t","e","i","o","s","r","n","a","l","c","b","O","L","W","j","B","G","N","A","R","H","K","ht","ct","dt","ut","gt","pt","yt","mt","ft","vt","_t","Ct","Pt","Mt","wt","St","Et","Dt","Ft","Ot","Lt","Wt","Gt","Nt","At","Rt","Vt","zt","Tt","Xt","Ut","Yt","Ht","Kt","Jt","$t","qt","Zt","Qt","te","ee","ie","oe","h","d","se","u","g","re","ne","ae","le","he","p","ce","de","ue","ge","pe","ye","me","fe","ve","_e","Ce","Pe","xe","Me","y","we","Se","be","Ee","Ie","De","ke","Oe","Le","We","je","Be","Ae","Re","Ve","ze","Te","Xe","Ue","Ye","He","Ke","Je","$e","qe","Ze","Qe","ti","ei","ci","ii","oi","si","ri","ni","ai","li","hi","di","ui","gi","pi","yi","xi","Mi","wi","m","f","v","_","C","Si","defaultControlOptions","getTerraDrawModes","options","modes","TerraDrawPointMode","TerraDrawLineStringMode","TerraDrawPolygonMode","feature","updateType","ValidateNotSelfIntersecting","TerraDrawRectangleMode","TerraDrawAngledRectangleMode","TerraDrawCircleMode","TerraDrawFreehandMode","TerraDrawSelectMode","MaplibreTerradrawControl","__publicField","map","TerraDraw","TerraDrawMapLibreGLAdapter","_a","_b","controls","item","ele","mode","btn"],"mappings":"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","x_google_ignoreList":[0]}
|