@watergis/maplibre-gl-terradraw 1.0.0 → 1.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.
Files changed (31) hide show
  1. package/dist/maplibre-gl-terradraw.es.js.map +1 -1
  2. package/dist/maplibre-gl-terradraw.umd.js.map +1 -1
  3. package/dist/types/constants/defaultControlOptions.d.ts +1 -1
  4. package/dist/types/constants/defaultControlOptions.d.ts.map +1 -1
  5. package/dist/types/constants/defaultMeasureControlOptions.d.ts +1 -1
  6. package/dist/types/constants/defaultMeasureControlOptions.d.ts.map +1 -1
  7. package/dist/types/constants/getDefaultModeOptions.d.ts +1 -1
  8. package/dist/types/constants/getDefaultModeOptions.d.ts.map +1 -1
  9. package/dist/types/constants/index.d.ts +5 -5
  10. package/dist/types/constants/index.d.ts.map +1 -1
  11. package/dist/types/controls/MaplibreMeasureControl.d.ts +2 -2
  12. package/dist/types/controls/MaplibreMeasureControl.d.ts.map +1 -1
  13. package/dist/types/controls/MaplibreTerradrawControl.d.ts +1 -1
  14. package/dist/types/controls/MaplibreTerradrawControl.d.ts.map +1 -1
  15. package/dist/types/controls/index.d.ts +2 -2
  16. package/dist/types/controls/index.d.ts.map +1 -1
  17. package/dist/types/index.d.ts +3 -3
  18. package/dist/types/index.d.ts.map +1 -1
  19. package/dist/types/interfaces/MeasureControlMode.d.ts +1 -1
  20. package/dist/types/interfaces/MeasureControlMode.d.ts.map +1 -1
  21. package/dist/types/interfaces/MeasureControlOptions.d.ts +4 -4
  22. package/dist/types/interfaces/MeasureControlOptions.d.ts.map +1 -1
  23. package/dist/types/interfaces/ModeOptions.d.ts +1 -1
  24. package/dist/types/interfaces/ModeOptions.d.ts.map +1 -1
  25. package/dist/types/interfaces/TerradrawControlOptions.d.ts +6 -4
  26. package/dist/types/interfaces/TerradrawControlOptions.d.ts.map +1 -1
  27. package/dist/types/interfaces/TerradrawMode.d.ts +1 -1
  28. package/dist/types/interfaces/TerradrawMode.d.ts.map +1 -1
  29. package/dist/types/interfaces/index.d.ts +9 -9
  30. package/dist/types/interfaces/index.d.ts.map +1 -1
  31. package/package.json +22 -24
@@ -1 +1 @@
1
- {"version":3,"file":"maplibre-gl-terradraw.es.js","sources":["../node_modules/.pnpm/terra-draw@1.0.0/node_modules/terra-draw/dist/terra-draw.modern.js","../node_modules/.pnpm/terra-draw-maplibre-gl-adapter@1.0.0_maplibre-gl@5.0.1_terra-draw@1.0.0/node_modules/terra-draw-maplibre-gl-adapter/dist/terra-draw-maplibre-gl-adapter.modern.js","../src/lib/constants/AvailableModes.ts","../src/lib/constants/AvailableMeasureModes.ts","../src/lib/constants/defaultControlOptions.ts","../src/lib/constants/defaultMeasureControlOptions.ts","../src/lib/constants/getDefaultModeOptions.ts","../src/lib/controls/MaplibreTerradrawControl.ts","../node_modules/.pnpm/@turf+helpers@7.2.0/node_modules/@turf/helpers/dist/esm/index.js","../node_modules/.pnpm/@turf+invariant@7.2.0/node_modules/@turf/invariant/dist/esm/index.js","../node_modules/.pnpm/@turf+distance@7.2.0/node_modules/@turf/distance/dist/esm/index.js","../node_modules/.pnpm/@turf+meta@7.2.0/node_modules/@turf/meta/dist/esm/index.js","../node_modules/.pnpm/@turf+area@7.2.0/node_modules/@turf/area/dist/esm/index.js","../node_modules/.pnpm/@turf+centroid@7.2.0/node_modules/@turf/centroid/dist/esm/index.js","../src/lib/controls/MaplibreMeasureControl.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)({}).hasOwnProperty.call(i,o)&&(t[o]=i[o])}return t},t.apply(null,arguments)}var e;!function(t){t.Commit=\"commit\",t.Provisional=\"provisional\",t.Finish=\"finish\"}(e||(e={}));const i={SELECTED:\"selected\",MID_POINT:\"midPoint\",SELECTION_POINT:\"selectionPoint\"},o=\"closingPoint\",s=\"snappingPoint\";function n(t){return Boolean(t&&\"object\"==typeof t&&null!==t&&!Array.isArray(t))}function r(t){return!!function(t){return\"number\"==typeof t&&!isNaN(new Date(t).valueOf())}(t)}const a=\"Feature is not a Polygon\",l=\"Feature mode property does not match the mode being added to\";var h;!function(t){t.Drawing=\"drawing\",t.Select=\"select\",t.Static=\"static\",t.Render=\"render\"}(h||(h={}));class d{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=h.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){return this.performFeatureValidation(t)}performFeatureValidation(t){if(\"unregistered\"===this._state)throw new Error(\"Mode must be registered\");const i=function(t,e){let i;if(n(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(n(t.geometry))if(n(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)return{valid:!1,reason:\"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\";return i?{valid:!1,reason:i}:{valid:!0}}(t,this.store.idStrategy.isValidId);if(this.validate){const o=this.validate(t,{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Provisional});return{valid:i.valid&&o.valid,reason:o.reason}}return{valid:i.valid,reason:i.reason}}validateModeFeature(t,e){const i=this.performFeatureValidation(t);return i.valid?t.properties.mode!==this.mode?{valid:!1,reason:l}:e(t):{valid:!1,reason:i.reason}}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 c extends d{constructor(...t){super(...t),this.type=h.Select}}function u(t,e){const i=t=>t*Math.PI/180,o=i(t[1]),s=i(t[0]),n=i(e[1]),r=n-o,a=i(e[0])-s,l=Math.sin(r/2)*Math.sin(r/2)+Math.cos(o)*Math.cos(n)*Math.sin(a/2)*Math.sin(a/2);return 2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))*6371e3/1e3}const g=6371008.8;function p(t){return t%360*Math.PI/180}function y(t){return t/6371.0088}function m(t){return t%(2*Math.PI)*180/Math.PI}function f(t,e=9){const i=Math.pow(10,e);return Math.round(t*i)/i}const v=57.29577951308232,C=.017453292519943295,P=6378137,x=(t,e)=>({x:0===t?0:t*C*P,y:0===e?0:Math.log(Math.tan(Math.PI/4+e*C/2))*P}),M=(t,e)=>({lng:0===t?0:v*(t/P),lat:0===e?0:(2*Math.atan(Math.exp(e/P))-Math.PI/2)*v});function I(t,e,i){const o=p(t[0]),s=p(t[1]),n=p(i),r=y(e),a=Math.asin(Math.sin(s)*Math.cos(r)+Math.cos(s)*Math.sin(r)*Math.cos(n));return[m(o+Math.atan2(Math.sin(n)*Math.sin(r)*Math.cos(s),Math.cos(r)-Math.sin(s)*Math.sin(a))),m(a)]}function S(t){const{center:e,radiusKilometers:i,coordinatePrecision:o}=t,s=t.steps?t.steps:64,n=[];for(let t=0;t<s;t++){const r=I(e,i,-360*t/s);n.push([f(r[0],o),f(r[1],o)])}return n.push(n[0]),{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:[n]},properties:{}}}function E(t){let e;if(\"Polygon\"===t.geometry.type)e=t.geometry.coordinates;else{if(\"LineString\"!==t.geometry.type)throw new Error(\"Self intersects only accepts Polygons and LineStrings\");e=[t.geometry.coordinates]}const i=[];for(let t=0;t<e.length;t++)for(let i=0;i<e[t].length-1;i++)for(let o=0;o<e.length;o++)for(let n=0;n<e[o].length-1;n++)s(t,i,o,n);return i.length>0;function o(t){return t<0||t>1}function s(t,s,n,r){const a=e[t][s],l=e[t][s+1],h=e[n][r],d=e[n][r+1],c=function(t,e,i,o){if(D(t,i)||D(t,o)||D(e,i)||D(o,i))return null;const s=t[0],n=t[1],r=e[0],a=e[1],l=i[0],h=i[1],d=o[0],c=o[1],u=(s-r)*(h-c)-(n-a)*(l-d);return 0===u?null:[((s*a-n*r)*(l-d)-(s-r)*(l*c-h*d))/u,((s*a-n*r)*(h-c)-(n-a)*(l*c-h*d))/u]}(a,l,h,d);if(null===c)return;let u,g;u=l[0]!==a[0]?(c[0]-a[0])/(l[0]-a[0]):(c[1]-a[1])/(l[1]-a[1]),g=d[0]!==h[0]?(c[0]-h[0])/(d[0]-h[0]):(c[1]-h[1])/(d[1]-h[1]),o(u)||o(g)||(c.toString(),i.push(c))}}function D(t,e){return t[0]===e[0]&&t[1]===e[1]}function F(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&&w(t[0])<=e&&w(t[1])<=e;var i,o}function w(t){let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}const _=\"Feature has holes\",b=\"Feature has less than 4 coordinates\",k=\"Feature has invalid coordinates\",O=\"Feature coordinates are not closed\";function j(t,e){return\"Polygon\"!==t.geometry.type?{valid:!1,reason:\"Feature is not a Polygon\"}:1!==t.geometry.coordinates.length?{valid:!1,reason:_}:t.geometry.coordinates[0].length<4?{valid:!1,reason:b}:t.geometry.coordinates[0].every(t=>F(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]?{valid:!1,reason:O}:{valid:!0}:{valid:!1,reason:k};var i,o}function W(t,e){const i=j(t,e);return i.valid?E(t)?{valid:!1,reason:\"Feature intersects itself\"}:{valid:!0}:i}class B extends d{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,this.cursorMovedAfterInitialCursorDown=!1;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 i=this.store.getGeometryCopy(t);if(!this.validate({type:\"Feature\",id:t,geometry:i,properties:{}},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Finish}).valid)return}this.cursorMovedAfterInitialCursorDown=!1,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=S({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.cursorMovedAfterInitialCursorDown=!1,this.setDrawing()}else 1===this.clickCount&&this.center&&void 0!==this.currentCircleId&&this.cursorMovedAfterInitialCursorDown&&this.updateCircle(t),this.close()}onMouseMove(t){this.cursorMovedAfterInitialCursorDown=!0,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 this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}updateCircle(t){if(1===this.clickCount&&this.center&&this.currentCircleId){const i=u(this.center,[t.lng,t.lat]);let o;if(\"web-mercator\"===this.projection){const e=function(t,e){const i=1e3*u(t,e);if(0===i)return 1;const{x:o,y:s}=x(t[0],t[1]),{x:n,y:r}=x(e[0],e[1]);return Math.sqrt(Math.pow(n-o,2)+Math.pow(r-s,2))/i}(this.center,[t.lng,t.lat]);o=function(t){const{center:e,radiusKilometers:i,coordinatePrecision:o}=t,s=t.steps?t.steps:64,n=1e3*i,[r,a]=e,{x:l,y:h}=x(r,a),d=[];for(let t=0;t<s;t++){const e=360*t/s*Math.PI/180,i=n*Math.cos(e),r=n*Math.sin(e),[a,c]=[l+i,h+r],{lng:u,lat:g}=M(a,c);d.push([f(u,o),f(g,o)])}return d.push(d[0]),{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:[d]},properties:{}}}({center:this.center,radiusKilometers:i*e,coordinatePrecision:this.coordinatePrecision})}else{if(\"globe\"!==this.projection)throw new Error(\"Invalid projection\");o=S({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:e.Provisional}).valid)return;this.store.updateGeometry([{id:this.currentCircleId,geometry:o.geometry}]),this.store.updateProperty([{id:this.currentCircleId,property:\"radiusKilometers\",value:i}])}}}const N=(t,e)=>{const{x:i,y:o}=t,{x:s,y:n}=e,r=s-i,a=n-o;return Math.sqrt(a*a+r*r)};class V extends d{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,this.autoClose=void 0,this.autoCloseTimeout=500,this.hasLeftStartingPoint=!1,this.preventNewFeature=!1;const i={start:\"crosshair\",close:\"pointer\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,this.preventPointsNearClose=e&&e.preventPointsNearClose||!0,e&&e.autoCloseTimeout&&!e.autoClose)throw new Error(\"autoCloseTimeout is set, but autoClose is not enabled\");if(this.autoClose=e&&e.autoClose||!1,this.autoCloseTimeout=e&&e.autoCloseTimeout||500,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 i=this.store.getGeometryCopy(t);if(!this.validate({type:\"Feature\",id:t,geometry:i,properties:{}},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Finish}).valid)return}this.closingPointId&&this.store.delete([this.closingPointId]),this.startingClick=!1,this.currentId=void 0,this.closingPointId=void 0,this.hasLeftStartingPoint=!1,\"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 i=this.store.getGeometryCopy(this.currentId),o=i.coordinates[0].length-2,[s,n]=i.coordinates[0][o],{x:r,y:a}=this.project(s,n),l=N({x:r,y:a},{x:t.containerX,y:t.containerY}),[h,d]=i.coordinates[0][0],{x:c,y:u}=this.project(h,d);if(N({x:c,y:u},{x:t.containerX,y:t.containerY})<this.pointerDistance){if(this.autoClose&&this.hasLeftStartingPoint&&(this.preventNewFeature=!0,setTimeout(()=>{this.preventNewFeature=!1},this.autoCloseTimeout),this.close()),this.setCursor(this.cursors.close),this.preventPointsNearClose)return}else this.hasLeftStartingPoint=!0,this.setCursor(this.cursors.start);if(l<this.minDistance)return;i.coordinates[0].pop();const g={type:\"Polygon\",coordinates:[[...i.coordinates[0],[t.lng,t.lat],i.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:e.Provisional}).valid||this.store.updateGeometry([{id:this.currentId,geometry:g}])}onClick(t){if(!this.preventNewFeature){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,[o]:!0}}]);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 this.validateModeFeature(t,t=>j(t,this.coordinatePrecision))}}class L{constructor({store:t,mode:e,project:i,unproject:o,pointerDistance:s,coordinatePrecision:n,projection:r}){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=n,this.projection=r}}function G({unproject:t,point:e,pointerDistance:i}){const o=i/2,{x:s,y:n}=e;return{type:\"Feature\",properties:{},geometry:{type:\"Polygon\",coordinates:[[t(s-o,n-o),t(s+o,n-o),t(s+o,n+o),t(s-o,n+o),t(s-o,n-o)].map(t=>[t.lng,t.lat])]}}}class T extends L{constructor(t){super(t)}create(t){const{containerX:e,containerY:i}=t;return G({unproject:this.unproject,point:{x:e,y:i},pointerDistance:this.pointerDistance})}}class U extends L{constructor(t){super(t)}measure(t,e){const{x:i,y:o}=this.project(e[0],e[1]);return N({x:i,y:o},{x:t.containerX,y:t.containerY})}}class A extends L{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 K(t,e,i){const o=p(t[0]),s=p(t[1]),n=p(i),r=y(e),a=Math.asin(Math.sin(s)*Math.cos(r)+Math.cos(s)*Math.sin(r)*Math.cos(n));return[m(o+Math.atan2(Math.sin(n)*Math.sin(r)*Math.cos(s),Math.cos(r)-Math.sin(s)*Math.sin(a))),m(a)]}function X({x:t,y:e},i,o){const s=p(o);return{x:t+i*Math.cos(s),y:e+i*Math.sin(s)}}function z(t,e){const i=p(t[0]),o=p(e[0]),s=p(t[1]),n=p(e[1]),r=Math.sin(o-i)*Math.cos(n),a=Math.cos(s)*Math.sin(n)-Math.sin(s)*Math.cos(n)*Math.cos(o-i);return m(Math.atan2(r,a))}function R({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 Y(t){return(t+360)%360}function H(t,e,i){const o=[],s=t.length;let n,r,a,l=0;for(let s=0;s<t.length&&!(e>=l&&s===t.length-1);s++){if(l>e&&0===o.length){if(n=e-l,!n)return o.push(t[s]),o;r=z(t[s],t[s-1])-180,a=K(t[s],n,r),o.push(a)}if(l>=i)return n=i-l,n?(r=z(t[s],t[s-1])-180,a=K(t[s],n,r),o.push(a),o):(o.push(t[s]),o);if(l>=e&&o.push(t[s]),s===t.length-1)return o;l+=u(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 q(t){return t*(Math.PI/180)}function $(t){return t*(180/Math.PI)}class Z extends L{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+=u(o[0],o[1]);if(s<=i)return o;let n=s/i-1;Number.isInteger(n)||(n=Math.floor(n)+1);const r=[];for(let t=0;t<n;t++){const e=H(o,i*t,i*(t+1));r.push(e)}const a=[];for(let t=0;t<r.length;t++)a.push(r[t][1]);return this.limitCoordinates(a)}generateInsertionGeodesicCoordinates(t,e,i){const o=u(t,e),s=function(t,e,i){const o=[],s=q(t[1]),n=q(t[0]),r=q(e[1]),a=q(e[0]);i+=1;const l=2*Math.asin(Math.sqrt(Math.sin((r-s)/2)**2+Math.cos(s)*Math.cos(r)*Math.sin((a-n)/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),d=Math.sin(e*l)/Math.sin(l),c=h*Math.cos(s)*Math.cos(n)+d*Math.cos(r)*Math.cos(a),u=h*Math.cos(s)*Math.sin(n)+d*Math.cos(r)*Math.sin(a),g=h*Math.sin(s)+d*Math.sin(r);if(isNaN(c)||isNaN(u)||isNaN(g))continue;const p=Math.atan2(g,Math.sqrt(c**2+u**2)),y=Math.atan2(u,c);isNaN(p)||isNaN(y)||o.push([$(y),$(p)])}return o.slice(1,-1)}(t,e,Math.floor(o/i));return this.limitCoordinates(s)}limitCoordinates(t){return t.map(t=>[f(t[0],this.config.coordinatePrecision),f(t[1],this.config.coordinatePrecision)])}}function J(t,e){return t[0]===e[0]&&t[1]===e[1]}function Q(t,e){return\"LineString\"!==t.geometry.type?{valid:!1,reason:\"Feature is not a LineString\"}:t.geometry.coordinates.length<2?{valid:!1,reason:\"Feature has less than 2 coordinates\"}:t.geometry.coordinates.every(t=>F(t,e))?{valid:!0}:{valid:!1,reason:\"Feature has invalid coordinates\"}}class tt extends d{constructor(e){super(e),this.mode=\"linestring\",this.currentCoordinate=0,this.currentId=void 0,this.closingPointId=void 0,this.keyEvents=void 0,this.snapping=void 0,this.cursors=void 0,this.mouseMove=!1,this.insertCoordinates=void 0,this.lastCommitedCoordinates=void 0,this.snappedPointId=void 0,this.coordinateSnapping=void 0,this.insertPoint=void 0;const i={start:\"crosshair\",close:\"pointer\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,this.snapping=e&&e.snapping?e.snapping:void 0,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,e.Commit);const i=this.currentId;this.closingPointId&&this.store.delete([this.closingPointId]),this.snappedPointId&&this.store.delete([this.snappedPointId]),this.currentCoordinate=0,this.currentId=void 0,this.closingPointId=void 0,this.snappedPointId=void 0,this.lastCommitedCoordinates=void 0,\"drawing\"===this.state&&this.setStarted(),this.onFinish(i,{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}).valid)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=u(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 i=this.store.getGeometryCopy(this.currentId).coordinates,[o]=this.store.create([{geometry:{type:\"Point\",coordinates:[...t]},properties:{mode:this.mode}}]);this.closingPointId=o,this.setCursor(this.cursors.close);const s=[...i,t];this.updateGeometries(s,void 0,e.Commit),this.currentCoordinate++}updateToLine(t,i){if(!this.currentId)return;const o=this.store.getGeometryCopy(this.currentId).coordinates,[s,n]=this.lastCommitedCoordinates?this.lastCommitedCoordinates[this.lastCommitedCoordinates.length-1]:o[o.length-2],{x:r,y:a}=this.project(s,n);if(N({x:r,y:a},{x:i.x,y:i.y})<this.pointerDistance)return void this.close();this.setCursor(this.cursors.close);const l=[...o,t];this.updateGeometries(l,o[o.length-1],e.Commit),this.currentCoordinate++}registerBehaviors(t){this.coordinateSnapping=new A(t,new U(t),new T(t)),this.insertPoint=new Z(t)}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onMouseMove(t){this.mouseMove=!0,this.setCursor(this.cursors.start);const i=this.snapCoordinate(t);if(i){if(this.snappedPointId)this.store.updateGeometry([{id:this.snappedPointId,geometry:{type:\"Point\",coordinates:i}}]);else{const[t]=this.store.create([{geometry:{type:\"Point\",coordinates:i},properties:{mode:this.mode,[s]:!0}}]);this.snappedPointId=t}t.lng=i[0],t.lat=i[1]}else this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0);const o=i||[t.lng,t.lat];if(void 0===this.currentId||0===this.currentCoordinate)return;const n=this.store.getGeometryCopy(this.currentId).coordinates;if(n.pop(),this.closingPointId){const[e,i]=n[n.length-1],{x:o,y:s}=this.project(e,i);N({x:o,y:s},{x:t.containerX,y:t.containerY})<this.pointerDistance&&this.setCursor(this.cursors.close)}let r=[...n,o];if(this.insertCoordinates&&this.currentId&&this.lastCommitedCoordinates){const t=this.lastCommitedCoordinates[this.lastCommitedCoordinates.length-1],e=o;if(!J(t,e)){const i=this.generateInsertCoordinates(t,e);r=[...this.lastCommitedCoordinates.slice(0,-1),...i,o]}}this.updateGeometries(r,void 0,e.Provisional)}onClick(t){this.currentCoordinate>0&&!this.mouseMove&&this.onMouseMove(t),this.mouseMove=!1,this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0);const e=this.snapCoordinate(t)||[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,e=this.closingPointId,i=this.snappedPointId;this.closingPointId=void 0,this.snappedPointId=void 0,this.currentId=void 0,this.currentCoordinate=0,\"drawing\"===this.state&&this.setStarted();try{void 0!==t&&this.store.delete([t]),void 0!==i&&this.store.delete([i]),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});if(\"Feature\"===e.type&&\"LineString\"===e.geometry.type&&e.properties.mode===this.mode)return i.lineStringColor=this.getHexColorStylingValue(this.styles.lineStringColor,i.lineStringColor,e),i.lineStringWidth=this.getNumericStylingValue(this.styles.lineStringWidth,i.lineStringWidth,e),i.zIndex=10,i;if(\"Feature\"===e.type&&\"Point\"===e.geometry.type&&e.properties.mode===this.mode){const t=e.properties[o];return i.pointColor=this.getHexColorStylingValue(t?this.styles.closingPointColor:this.styles.snappingPointColor,i.pointColor,e),i.pointWidth=this.getNumericStylingValue(t?this.styles.closingPointWidth:this.styles.snappingPointWidth,i.pointWidth,e),i.pointOutlineColor=this.getHexColorStylingValue(t?this.styles.closingPointOutlineColor:this.styles.snappingPointOutlineColor,\"#ffffff\",e),i.pointOutlineWidth=this.getNumericStylingValue(t?this.styles.closingPointOutlineWidth:this.styles.snappingPointOutlineWidth,2,e),i.zIndex=40,i}return i}validateFeature(t){return this.validateModeFeature(t,t=>Q(t,this.coordinatePrecision))}snapCoordinate(t){var e,i;let o;return null!=(e=this.snapping)&&e.toCoordinate&&(o=this.currentId?this.coordinateSnapping.getSnappableCoordinate(t,this.currentId):this.coordinateSnapping.getSnappableCoordinateFirstClick(t)),null!=(i=this.snapping)&&i.toCustom&&(o=this.snapping.toCustom(t)),o}}const et=\"Feature is not a Point\",it=\"Feature has invalid coordinates\";function ot(t,e){return\"Point\"!==t.geometry.type?{valid:!1,reason:et}:F(t.geometry.coordinates,e)?{valid:!0}:{valid:!1,reason:it}}class st extends d{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 i={type:\"Point\",coordinates:[t.lng,t.lat]},o={mode:this.mode};if(this.validate&&!this.validate({type:\"Feature\",geometry:i,properties:o},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Finish}).valid)return;const[s]=this.store.create([{geometry:i,properties:o}]);this.onFinish(s,{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 this.validateModeFeature(t,t=>ot(t,this.coordinatePrecision))}}class nt extends L{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,[o]:!0}},{geometry:{type:\"Point\",coordinates:t[t.length-2]},properties:{mode:e,[o]:!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}}}function rt(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2))}function at(t,e){const i=function(t,e){const[i,o,s]=t,[n,r,a]=e;return i*n+o*r+s*a}(t,e)/(rt(t)*rt(e));return Math.acos(Math.min(Math.max(i,-1),1))}function lt(t){const e=p(t[1]),i=p(t[0]);return[Math.cos(e)*Math.cos(i),Math.cos(e)*Math.sin(i),Math.sin(e)]}function ht(t){const[e,i,o]=t,s=m(Math.asin(o));return[m(Math.atan2(i,e)),s]}function dt(t,e,i){const o=lt(t),s=lt(e),n=lt(i),[r,a,l]=n,[h,d,c]=function(t,e){const[i,o,s]=t,[n,r,a]=e;return[o*a-s*r,s*n-i*a,i*r-o*n]}(o,s),g=d*l-c*a,p=c*r-h*l,y=h*a-d*r,m=y*d-p*c,f=g*c-y*h,v=p*h-g*d,C=1/Math.sqrt(Math.pow(m,2)+Math.pow(f,2)+Math.pow(v,2)),P=[m*C,f*C,v*C],x=[-1*m*C,-1*f*C,-1*v*C],M=at(o,s),I=at(o,P),S=at(s,P),E=at(o,x),D=at(s,x);let F;return F=I<E&&I<D||S<E&&S<D?P:x,at(o,F)>M||at(s,F)>M?u(ht(F),ht(o))<=u(ht(F),ht(s))?[ht(o),!0,!1]:[ht(s),!1,!0]:[ht(F),!1,!1]}function ct(t,e,i){const o=e.x-t.x,s=e.y-t.y,n=Math.max(0,Math.min(1,((i.x-t.x)*o+(i.y-t.y)*s)/(o*o+s*s)));return{x:t.x+n*o,y:t.y+n*s}}class ut extends L{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,minDistance: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}const o=[];for(let t=0;t<i.length-1;t++)o.push([i[t],i[t+1]]);let n;const r=[t.lng,t.lat];if(\"web-mercator\"===this.config.projection?n=function(t,e){let i=[Infinity,Infinity],o=Infinity;for(let s of e){const e=s[0],n=s[1];let r,a=Infinity;const l=x(e[0],e[1]),h=x(n[0],n[1]),d=x(t[0],t[1]);if(e[0]===t[0]&&e[1]===t[1])r=e;else if(n[0]===t[0]&&n[1]===t[1])r=n;else{const{x:t,y:e}=ct(l,h,d),{lng:i,lat:o}=M(t,e);r=[i,o]}r&&(a=N(d,x(r[0],r[1])),a<o&&(i=r,o=a))}return Infinity===o?void 0:{coordinate:i,distance:o}}(r,o):\"globe\"===this.config.projection&&(n=function(t,e){let i=[Infinity,Infinity],o=Infinity;for(let s of e){const e=s[0],n=s[1];let r,a=Infinity;e[0]===t[0]&&e[1]===t[1]?r=e:n[0]===t[0]&&n[1]===t[1]?r=n:[r]=dt(e,n,t),r&&(a=u(t,r),a<o&&(i=r,o=a))}return Infinity===o?void 0:{coordinate:i,distance:o}}(r,o)),!n)return;const a=this.pixelDistance.measure(t,n.coordinate);a<s.minDistance&&a<this.pointerDistance&&(s.coord=n.coordinate,s.minDistance=a)}),s.coord}}class gt extends d{constructor(e){super(e),this.mode=\"polygon\",this.currentCoordinate=0,this.currentId=void 0,this.keyEvents=void 0,this.snapping=void 0,this.snappedPointId=void 0,this.lineSnapping=void 0,this.coordinateSnapping=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.snapping=e&&e.snapping?e.snapping:void 0,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]],e.Finish))return;const i=this.currentId;this.snappedPointId&&this.store.delete([this.snappedPointId]),this.currentCoordinate=0,this.currentId=void 0,this.snappedPointId=void 0,this.closingPoints.delete(),\"drawing\"===this.state&&this.setStarted(),this.onFinish(i,{mode:this.mode,action:\"draw\"})}registerBehaviors(t){const e=new T(t);this.pixelDistance=new U(t),this.lineSnapping=new ut(t,this.pixelDistance,e),this.coordinateSnapping=new A(t,this.pixelDistance,e),this.closingPoints=new nt(t,this.pixelDistance)}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onMouseMove(t){this.mouseMove=!0,this.setCursor(this.cursors.start);const i=this.snapCoordinate(t);if(i){if(this.snappedPointId)this.store.updateGeometry([{id:this.snappedPointId,geometry:{type:\"Point\",coordinates:i}}]);else{const[t]=this.store.create([{geometry:{type:\"Point\",coordinates:i},properties:{mode:this.mode,[s]:!0}}]);this.snappedPointId=t}t.lng=i[0],t.lat=i[1]}else this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0);if(void 0===this.currentId||0===this.currentCoordinate)return;const o=this.store.getGeometryCopy(this.currentId).coordinates[0];let n;if(1===this.currentCoordinate){const e=1/Math.pow(10,this.coordinatePrecision-1),i=Math.max(1e-6,e);n=[o[0],[t.lng,t.lat],[t.lng,t.lat-i],o[0]]}else if(2===this.currentCoordinate)n=[o[0],o[1],[t.lng,t.lat],o[0]];else{const{isClosing:e,isPreviousClosing:i}=this.closingPoints.isClosingPoint(t);i||e?(this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0),this.setCursor(this.cursors.close),n=[...o.slice(0,-2),o[0],o[0]]):n=[...o.slice(0,-2),[t.lng,t.lat],o[0]]}this.updatePolygonGeometry(n,e.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}).valid||(this.store.updateGeometry([{id:this.currentId,geometry:i}]),0))}snapCoordinate(t){var e,i,o;let s;if(null!=(e=this.snapping)&&e.toLine){let e;e=this.currentId?this.lineSnapping.getSnappableCoordinate(t,this.currentId):this.lineSnapping.getSnappableCoordinateFirstClick(t),e&&(s=e)}if(null!=(i=this.snapping)&&i.toCoordinate){let e;e=this.currentId?this.coordinateSnapping.getSnappableCoordinate(t,this.currentId):this.coordinateSnapping.getSnappableCoordinateFirstClick(t),e&&(s=e)}return null!=(o=this.snapping)&&o.toCustom&&(s=this.snapping.toCustom(t)),s}onClick(t){if(this.currentCoordinate>0&&!this.mouseMove&&this.onMouseMove(t),this.mouseMove=!1,this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0),0===this.currentCoordinate){const e=this.snapCoordinate(t);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 i=this.snapCoordinate(t);i&&(t.lng=i[0],t.lat=i[1]);const o=this.store.getGeometryCopy(this.currentId);if(J([t.lng,t.lat],o.coordinates[0][0]))return;if(!this.updatePolygonGeometry([o.coordinates[0][0],[t.lng,t.lat],[t.lng,t.lat],o.coordinates[0][0]],e.Commit))return;this.currentCoordinate++}else if(2===this.currentCoordinate&&this.currentId){const i=this.snapCoordinate(t);i&&(t.lng=i[0],t.lat=i[1]);const o=this.store.getGeometryCopy(this.currentId).coordinates[0];if(J([t.lng,t.lat],o[1]))return;if(!this.updatePolygonGeometry([o[0],o[1],[t.lng,t.lat],[t.lng,t.lat],o[0]],e.Commit))return;2===this.currentCoordinate&&this.closingPoints.create(o,\"polygon\"),this.currentCoordinate++}else if(this.currentId){const i=this.store.getGeometryCopy(this.currentId).coordinates[0],{isClosing:o,isPreviousClosing:s}=this.closingPoints.isClosingPoint(t);if(s||o)this.close();else{const o=this.snapCoordinate(t);if(o&&(t.lng=o[0],t.lat=o[1]),J([t.lng,t.lat],i[this.currentCoordinate-1]))return;const s=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(s.geometry.coordinates[0],e.Commit))return;this.currentCoordinate++,this.closingPoints.ids.length&&this.closingPoints.update(s.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,e=this.snappedPointId;this.currentId=void 0,this.snappedPointId=void 0,this.currentCoordinate=0,\"drawing\"===this.state&&this.setStarted();try{void 0!==t&&this.store.delete([t]),void 0!==e&&this.store.delete([e]),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){const t=e.properties[o],n=e.properties[s];return i.pointWidth=this.getNumericStylingValue(t?this.styles.closingPointWidth:n?this.styles.snappingPointWidth:i.pointWidth,i.pointWidth,e),i.pointColor=this.getHexColorStylingValue(t?this.styles.closingPointColor:n?this.styles.snappingPointColor:i.pointColor,i.pointColor,e),i.pointOutlineColor=this.getHexColorStylingValue(t?this.styles.closingPointOutlineColor:n?this.styles.snappingPointOutlineColor:i.pointOutlineColor,i.pointOutlineColor,e),i.pointOutlineWidth=this.getNumericStylingValue(t?this.styles.closingPointOutlineWidth:n?this.styles.snappingPointOutlineWidth:2,2,e),i.zIndex=30,i}}return i}validateFeature(t){return this.validateModeFeature(t,t=>j(t,this.coordinatePrecision))}}class pt extends d{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}).valid)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(),void 0!==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,e.Finish),this.close()}onMouseMove(t){this.updateRectangle(t,e.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 this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}}class yt extends d{constructor(t){super({styles:t.styles}),this.type=h.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){const e=super.validateFeature(t);if(e.valid){const e=t,i=ot(e,this.coordinatePrecision).valid||j(e,this.coordinatePrecision).valid||Q(e,this.coordinatePrecision).valid;return i?{valid:!0}:{valid:i,reason:\"Feature is not a valid Point, Polygon or LineString feature\"}}return e}}function mt(t,e){const i=t,o=e,s=p(i[1]),n=p(o[1]);let r=p(o[0]-i[0]);r>Math.PI&&(r-=2*Math.PI),r<-Math.PI&&(r+=2*Math.PI);const a=Math.log(Math.tan(n/2+Math.PI/4)/Math.tan(s/2+Math.PI/4)),l=(m(Math.atan2(r,a))+360)%360;return l>180?-(360-l):l}function ft(t,e,i){let o=e;e<0&&(o=-Math.abs(o));const s=o/g,n=t[0]*Math.PI/180,r=p(t[1]),a=p(i),l=s*Math.cos(a);let h=r+l;Math.abs(h)>Math.PI/2&&(h=h>0?Math.PI-h:-Math.PI-h);const d=Math.log(Math.tan(h/2+Math.PI/4)/Math.tan(r/2+Math.PI/4)),c=Math.abs(d)>1e-11?l/d:Math.cos(r),u=[(180*(n+s*Math.sin(a)/c)/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 vt(t,e,i,o,s){const n=o(t[0],t[1]),r=o(e[0],e[1]),{lng:a,lat:l}=s((n.x+r.x)/2,(n.y+r.y)/2);return[f(a,i),f(l,i)]}function Ct(t,e,i){const o=ft(t,1e3*u(t,e)/2,mt(t,e));return[f(o[0],i),f(o[1],i)]}function Pt({featureCoords:t,precision:e,unproject:i,project:o,projection:s}){const n=[];for(let r=0;r<t.length-1;r++){let a;if(\"web-mercator\"===s)a=vt(t[r],t[r+1],e,o,i);else{if(\"globe\"!==s)throw new Error(\"Invalid projection\");a=Ct(t[r],t[r+1],e)}n.push(a)}return n}class xt extends L{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),n=this.store.getGeometryCopy(o),r=\"Polygon\"===n.type?n.coordinates[0]:n.coordinates;r.splice(s+1,0,i.coordinates),n.coordinates=\"Polygon\"===n.type?[r]:r,this.store.updateGeometry([{id:o,geometry:n}]),this.store.delete([...this._midPoints,...this.selectionPointBehavior.ids]),this.create(r,o,e),this.selectionPointBehavior.create(r,n.type,o)}create(t,e,o){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,n){return Pt({featureCoords:t,precision:i,project:o,unproject:s,projection:n}).map((t,i)=>({geometry:{type:\"Point\",coordinates:t},properties:e(i)}))}(t,t=>({mode:this.mode,[i.MID_POINT]:!0,midPointSegment:t,midPointFeatureId:e}),o,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 Pt({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 Mt extends L{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 It(t,e){let i=!1;for(let r=0,a=e.length;r<a;r++){const a=e[r];for(let e=0,r=a.length,l=r-1;e<r;l=e++)(s=a[e])[1]>(o=t)[1]!=(n=a[l])[1]>o[1]&&o[0]<(n[0]-s[0])*(o[1]-s[1])/(n[1]-s[1])+s[0]&&(i=!i)}var o,s,n;return i}const St=(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 n=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/o;return n=Math.max(0,Math.min(1,n)),s(t,{x:e.x+n*(i.x-e.x),y:e.y+n*(i.y-e.y)})})(t,e,i))};class Et extends L{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 o,s,n,r,a=Infinity,l=Infinity,h=Infinity;const d=this.createClickBoundingBox.create(t),c=this.store.search(d);for(let d=0;d<c.length;d++){const u=c[d],g=u.geometry;if(\"Point\"===g.type){if(u.properties.selectionPoint||!e&&u.properties[i.MID_POINT])continue;const s=this.pixelDistance.measure(t,g.coordinates);u.properties[i.MID_POINT]&&s<this.pointerDistance&&s<h?(h=s,n=u):!u.properties[i.MID_POINT]&&s<this.pointerDistance&&s<a&&(a=s,o=u)}else if(\"LineString\"===g.type){if(o)continue;for(let e=0;e<g.coordinates.length-1;e++){const i=g.coordinates[e],o=g.coordinates[e+1],n=St({x:t.containerX,y:t.containerY},this.project(i[0],i[1]),this.project(o[0],o[1]));n<this.pointerDistance&&n<l&&(l=n,s=u)}}else if(\"Polygon\"===g.type){if(o||s)continue;It([t.lng,t.lat],g.coordinates)&&(r=u)}}return{clickedFeature:o||s||r,clickedMidPoint:n}}}class Dt extends L{constructor(t,e,i,o){super(t),this.config=void 0,this.featuresAtCursorEvent=void 0,this.selectionPoints=void 0,this.midPoints=void 0,this.draggedFeatureId=null,this.dragPosition=void 0,this.config=t,this.featuresAtCursorEvent=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.featuresAtCursorEvent.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 n,r;if(\"Polygon\"===o.type?(n=o.coordinates[0],r=n.length-1):(n=o.coordinates,r=n.length),!this.dragPosition)return!1;for(let t=0;t<r;t++){const e=n[t];let i,o;if(\"web-mercator\"===this.config.projection){const t=x(this.dragPosition[0],this.dragPosition[1]),n=x(s[0],s[1]),r=x(e[0],e[1]),a={x:t.x-n.x,y:t.y-n.y},l=r.x-a.x,h=r.y-a.y,{lng:d,lat:c}=M(l,h);i=d,o=c}else{const t=[this.dragPosition[0]-s[0],this.dragPosition[1]-s[1]];i=e[0]-t[0],o=e[1]-t[1]}if(i=f(i,this.config.coordinatePrecision),o=f(o,this.config.coordinatePrecision),i>180||i<-180||o>90||o<-90)return!1;n[t]=[i,o]}\"Polygon\"===o.type&&(n[n.length-1]=[n[0][0],n[0][1]]);const a=this.selectionPoints.getUpdated(n)||[],l=this.midPoints.getUpdated(n)||[];if(i&&!i({type:\"Feature\",id:this.draggedFeatureId,geometry:o,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:e.Provisional}).valid)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 Ft extends L{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 n=this.pixelDistance.measure(t,o[s]);if(n<this.pointerDistance&&n<i.dist){const t=\"Polygon\"===e.type&&(s===o.length-1||0===s);i.dist=n,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,i,o){if(!this.draggedCoordinate.id)return!1;const s=this.draggedCoordinate.index,n=this.store.getGeometryCopy(this.draggedCoordinate.id),r=\"LineString\"===n.type?n.coordinates:n.coordinates[0],a=[t.lng,t.lat];if(t.lng>180||t.lng<-180||t.lat>90||t.lat<-90)return!1;if(\"Polygon\"!==n.type||s!==r.length-1&&0!==s)r[s]=a;else{const t=r.length-1;r[0]=a,r[t]=a}const l=this.selectionPoints.getOneUpdated(s,a),h=l?[l]:[],d=this.midPoints.getUpdated(r)||[];return!(\"Point\"!==n.type&&!i&&E({type:\"Feature\",geometry:n,properties:{}})||o&&!o({type:\"Feature\",id:this.draggedCoordinate.id,geometry:n,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:e.Provisional}).valid||(this.store.updateGeometry([{id:this.draggedCoordinate.id,geometry:n},...h,...d]),0))}isDragging(){return null!==this.draggedCoordinate.id}startDragging(t,e){this.draggedCoordinate={id:t,index:e}}stopDragging(){this.draggedCoordinate={id:null,index:-1}}}function wt(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 _t(t,e){t[0]+=t[0]-e[0]>180?-360:e[0]-t[0]>180?360:0;const i=g,o=e[1]*Math.PI/180,s=t[1]*Math.PI/180,n=s-o;let r=Math.abs(t[0]-e[0])*Math.PI/180;r>Math.PI&&(r-=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?n/a:Math.cos(o);return Math.sqrt(n*n+l*l*r*r)*i}function bt(t){const e=(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).map(t=>{const{x:e,y:i}=x(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 n=0;n<s-1;n++){const[s,r]=t[n],[a,l]=t[n+1],h=s*l-a*r;e+=h,i+=(s+a)*h,o+=(r+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,n]=t[s];i+=e,o+=n}return{x:i/e,y:o/e}}(e)}class kt extends L{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 n=[t.lng,t.lat];let r;const a={type:\"Feature\",geometry:s,properties:{}};if(\"web-mercator\"===this.config.projection){if(r=R(bt(a),x(t.lng,t.lat)),!this.lastBearing)return void(this.lastBearing=r);((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])=>x(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 n=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})=>[M(t,e).lng,M(t,e).lat]);\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]=n:t.geometry.coordinates=n})(a,-(this.lastBearing-r))}else{if(\"globe\"!==this.config.projection)throw new Error(\"Unsupported projection\");if(r=mt(wt({type:\"Feature\",geometry:s,properties:{}}),n),!this.lastBearing)return void(this.lastBearing=r+180);!function(t,e){if(0===e||360===e||-360===e)return t;const i=wt(t);(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).forEach(t=>{const o=mt(i,t)+e,s=_t(i,t),n=ft(i,s,o);t[0]=n[0],t[1]=n[1]})}(a,-(this.lastBearing-(r+180)))}const l=\"Polygon\"===s.type?s.coordinates[0]:s.coordinates;l.forEach(t=>{t[0]=f(t[0],this.coordinatePrecision),t[1]=f(t[1],this.coordinatePrecision)});const h=this.midPoints.getUpdated(l)||[],d=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:e.Provisional}))return!1;this.store.updateGeometry([{id:i,geometry:s},...d,...h]),\"web-mercator\"===this.projection?this.lastBearing=r:\"globe\"===this.projection&&(this.lastBearing=r+180)}}class Ot extends L{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,i,o){const s=this.store.getGeometryCopy(i);if(\"Polygon\"!==s.type&&\"LineString\"!==s.type)return;const n=[t.lng,t.lat],r={type:\"Feature\",geometry:s,properties:{}};let a;const l=bt(r);if(\"web-mercator\"===this.config.projection){const e=x(t.lng,t.lat);a=N(l,e)}else{if(\"globe\"!==this.config.projection)throw new Error(\"Invalid projection\");a=u(wt({type:\"Feature\",geometry:s,properties:{}}),n)}if(!this.lastDistance)return void(this.lastDistance=a);const h=1-(this.lastDistance-a)/a;if(\"web-mercator\"===this.config.projection){const{lng:t,lat:e}=M(l.x,l.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])=>x(t,e)),s=x(i[0],i[1]),n=o.map(t=>({x:s.x+(t.x-s.x)*e,y:s.y+(t.y-s.y)*e})).map(({x:t,y:e})=>[M(t,e).lng,M(t,e).lat]);\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]=n:t.geometry.coordinates=n}(r,h,[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=_t(i,t),n=mt(i,t),r=ft(i,s*e,n);\"x\"!==o&&\"xy\"!==o||(t[0]=r[0]),\"y\"!==o&&\"xy\"!==o||(t[1]=r[1])})}(r,h,wt(r));const d=\"Polygon\"===s.type?s.coordinates[0]:s.coordinates;d.forEach(t=>{t[0]=f(t[0],this.coordinatePrecision),t[1]=f(t[1],this.coordinatePrecision)});const c=this.midPoints.getUpdated(d)||[],g=this.selectionPoints.getUpdated(d)||[];if(o&&!o({id:i,type:\"Feature\",geometry:s,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:e.Provisional}))return!1;this.store.updateGeometry([{id:i,geometry:s},...g,...c]),this.lastDistance=a}}class jt extends L{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 n=this.pixelDistance.measure(t,o[s]);if(n<this.pointerDistance&&n<i.dist){const t=\"Polygon\"===e.type&&(s===o.length-1||0===s);i.dist=n,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:n}=e,r=bt(i);if(!r)return null;const a=x(n[0],n[1]),{closestBBoxIndex:l}=this.getIndexesWebMercator(o,a),h=x(t.lng,t.lat);return this.scaleWebMercator({closestBBoxIndex:l,updatedCoords:s,webMercatorCursor:h,webMercatorSelected:a,webMercatorOrigin:r}),s}centerFixedWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{feature:i,boundingBox:o,updatedCoords:s,selectedCoordinate:n}=e,r=bt(i);if(!r)return null;const a=x(n[0],n[1]),{closestBBoxIndex:l}=this.getIndexesWebMercator(o,a),h=x(t.lng,t.lat);return this.scaleFixedWebMercator({closestBBoxIndex:l,updatedCoords:s,webMercatorCursor:h,webMercatorSelected:a,webMercatorOrigin:r}),s}scaleFixedWebMercator({closestBBoxIndex:t,webMercatorOrigin:e,webMercatorSelected:i,webMercatorCursor:o,updatedCoords:s}){if(!this.isValidDragWebMercator(t,e.x-o.x,e.y-o.y))return null;let n=N(e,o)/N(e,i);return n<0&&(n=this.minimumScale),this.performWebMercatorScale(s,e.x,e.y,n,n),s}oppositeFixedWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{boundingBox:i,updatedCoords:o,selectedCoordinate:s}=e,n=x(s[0],s[1]),{oppositeBboxIndex:r,closestBBoxIndex:a}=this.getIndexesWebMercator(i,n),l={x:i[r][0],y:i[r][1]},h=x(t.lng,t.lat);return this.scaleFixedWebMercator({closestBBoxIndex:a,updatedCoords:o,webMercatorCursor:h,webMercatorSelected:n,webMercatorOrigin:l}),o}oppositeWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{boundingBox:i,updatedCoords:o,selectedCoordinate:s}=e,n=x(s[0],s[1]),{oppositeBboxIndex:r,closestBBoxIndex:a}=this.getIndexesWebMercator(i,n),l={x:i[r][0],y:i[r][1]},h=x(t.lng,t.lat);return this.scaleWebMercator({closestBBoxIndex:a,updatedCoords:o,webMercatorCursor:h,webMercatorSelected:n,webMercatorOrigin:l}),o}scaleWebMercator({closestBBoxIndex:t,webMercatorOrigin:e,webMercatorSelected:i,webMercatorCursor:o,updatedCoords:s}){const n=e.x-o.x,r=e.y-o.y;if(!this.isValidDragWebMercator(t,n,r))return null;let a=1;0!==n&&1!==t&&5!==t&&(a=1-(e.x-i.x-n)/n);let l=1;return 0!==r&&3!==t&&7!==t&&(l=1-(e.y-i.y-r)/r),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:n,y:r}=x(t[0],t[1]),a=e+(n-e)*o,l=i+(r-i)*s,{lng:h,lat:d}=M(a,l);t[0]=h,t[1]=d})}getBBoxWebMercator(t){const e=[Infinity,Infinity,-Infinity,-Infinity];(t=t.map(t=>{const{x:e,y:i}=x(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,n]=e;return[[i,n],[(i+s)/2,n],[s,n],[s,n+(o-n)/2],[s,o],[(i+s)/2,o],[i,o],[i,n+(o-n)/2]]}getIndexesWebMercator(t,e){let i,o=Infinity;for(let s=0;s<t.length;s++){const n=N({x:e.x,y:e.y},{x:t[s][0],y:t[s][1]});n<o&&(i=s,o=n)}if(void 0===i)throw new Error(\"No closest coordinate found\");return{oppositeBboxIndex:this.boundingBoxMaps.opposite[i],closestBBoxIndex:i}}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 n=null;if(\"center\"===i?n=this.centerWebMercatorDrag(t):\"opposite\"===i?n=this.oppositeWebMercatorDrag(t):\"center-fixed\"===i?n=this.centerFixedWebMercatorDrag(t):\"opposite-fixed\"===i&&(n=this.oppositeFixedWebMercatorDrag(t)),!n)return!1;for(let t=0;t<n.length;t++){const e=n[t];if(e[0]=f(e[0],this.coordinatePrecision),e[1]=f(e[1],this.coordinatePrecision),!F(e,this.coordinatePrecision))return!1}const r=this.midPoints.getUpdated(n)||[],a=this.selectionPoints.getUpdated(n)||[],l={type:s.geometry.type,coordinates:\"Polygon\"===s.geometry.type?[n]:n};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:e.Provisional}).valid||(this.store.updateGeometry([{id:this.draggedCoordinate.id,geometry:l},...a,...r]),0))}}class Wt extends c{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 U(t),this.clickBoundingBox=new T(t),this.featuresAtMouseEvent=new Et(t,this.clickBoundingBox,this.pixelDistance),this.selectionPoints=new Mt(t),this.midPoints=new xt(t,this.selectionPoints),this.rotateFeature=new kt(t,this.selectionPoints,this.midPoints),this.scaleFeature=new Ot(t,this.selectionPoints,this.midPoints),this.dragFeature=new Dt(t,this.featuresAtMouseEvent,this.selectionPoints,this.midPoints),this.dragCoordinate=new Ft(t,this.pixelDistance,this.selectionPoints,this.midPoints),this.dragCoordinateResizeFeature=new jt(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:i.SELECTED,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 i,o=Infinity;if(this.selectionPoints.ids.forEach(e=>{const s=this.store.getGeometryCopy(e),n=this.pixelDistance.measure(t,s.coordinates);n<this.pointerDistance&&n<o&&(o=n,i=this.store.getPropertiesCopy(e))}),!i)return;const s=i.selectionPointFeatureId,n=i.index,r=this.store.getPropertiesCopy(s),a=this.flags[r.mode],l=this.validations[r.mode];if(!(a&&a.feature&&a.feature.coordinates&&a.feature.coordinates.deletable))return;const h=this.store.getGeometryCopy(s);let d;if(\"Polygon\"===h.type){if(d=h.coordinates[0],d.length<=4)return}else if(\"LineString\"===h.type&&(d=h.coordinates,d.length<=3))return;if(d){if(\"Polygon\"===h.type&&0===n||n===d.length-1?(d.shift(),d.pop(),d.push([d[0][0],d[0][1]])):d.splice(n,1),l&&!l({id:s,type:\"Feature\",geometry:h,properties:r},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Commit}).valid)return;this.store.delete([...this.midPoints.ids,...this.selectionPoints.ids]),this.store.updateGeometry([{id:s,geometry:h}]),this.selectionPoints.create(d,h.type,s),a&&a.feature&&a.feature.coordinates&&a.feature.coordinates.midpoints&&this.midPoints.create(d,s,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:n,coordinates:r}=this.store.getGeometryCopy(t);if(\"LineString\"!==n&&\"Polygon\"!==n)return;const a=\"LineString\"===n?r:r[0];a&&o&&o.feature.coordinates&&(this.selectionPoints.create(a,n,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],n=this.dragCoordinate.getDraggableIndex(t,s);return o&&o.feature&&o.feature.coordinates&&(o.feature.coordinates.draggable||o.feature.coordinates.resizable)&&-1!==n?(this.setCursor(this.cursors.dragStart),o.feature.coordinates.resizable?this.dragCoordinateResizeFeature.startDragging(s,n):this.dragCoordinate.startDragging(s,n),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],n=!0===(s&&s.feature&&s.feature.selfIntersectable);if(this.dragEventCount++,this.dragEventCount%this.dragEventThrottle==0)return;const r=this.validations[o.mode];if(s&&s.feature&&s.feature.rotateable&&this.canRotate(t))return e(!1),void this.rotateFeature.rotate(t,i,r);if(s&&s.feature&&s.feature.scaleable&&this.canScale(t))return e(!1),void this.scaleFeature.scale(t,i,r);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,r)}this.dragCoordinate.isDragging()?this.dragCoordinate.drag(t,n,r):this.dragFeature.isDragging()?this.dragFeature.drag(t,r):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 o=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 o.pointColor=this.getHexColorStylingValue(this.styles.selectionPointColor,o.pointColor,e),o.pointOutlineColor=this.getHexColorStylingValue(this.styles.selectionPointOutlineColor,o.pointOutlineColor,e),o.pointWidth=this.getNumericStylingValue(this.styles.selectionPointWidth,o.pointWidth,e),o.pointOutlineWidth=this.getNumericStylingValue(this.styles.selectionPointOutlineWidth,2,e),o.zIndex=30,o;if(e.properties.midPoint)return o.pointColor=this.getHexColorStylingValue(this.styles.midPointColor,o.pointColor,e),o.pointOutlineColor=this.getHexColorStylingValue(this.styles.midPointOutlineColor,o.pointOutlineColor,e),o.pointWidth=this.getNumericStylingValue(this.styles.midPointWidth,4,e),o.pointOutlineWidth=this.getNumericStylingValue(this.styles.midPointOutlineWidth,2,e),o.zIndex=40,o}else if(e.properties[i.SELECTED]){if(\"Polygon\"===e.geometry.type)return o.polygonFillColor=this.getHexColorStylingValue(this.styles.selectedPolygonColor,o.polygonFillColor,e),o.polygonOutlineWidth=this.getNumericStylingValue(this.styles.selectedPolygonOutlineWidth,o.polygonOutlineWidth,e),o.polygonOutlineColor=this.getHexColorStylingValue(this.styles.selectedPolygonOutlineColor,o.polygonOutlineColor,e),o.polygonFillOpacity=this.getNumericStylingValue(this.styles.selectedPolygonFillOpacity,o.polygonFillOpacity,e),o.zIndex=10,o;if(\"LineString\"===e.geometry.type)return o.lineStringColor=this.getHexColorStylingValue(this.styles.selectedLineStringColor,o.lineStringColor,e),o.lineStringWidth=this.getNumericStylingValue(this.styles.selectedLineStringWidth,o.lineStringWidth,e),o.zIndex=10,o;if(\"Point\"===e.geometry.type)return o.pointWidth=this.getNumericStylingValue(this.styles.selectedPointWidth,o.pointWidth,e),o.pointColor=this.getHexColorStylingValue(this.styles.selectedPointColor,o.pointColor,e),o.pointOutlineColor=this.getHexColorStylingValue(this.styles.selectedPointOutlineColor,o.pointOutlineColor,e),o.pointOutlineWidth=this.getNumericStylingValue(this.styles.selectedPointOutlineWidth,o.pointOutlineWidth,e),o.zIndex=10,o}return o}}class Bt extends d{constructor(...t){super(...t),this.type=h.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 Nt(t,e,i,o,s){for(;o>i;){if(o-i>600){const n=o-i+1,r=e-i+1,a=Math.log(n),l=.5*Math.exp(2*a/3),h=.5*Math.sqrt(a*l*(n-l)/n)*(r-n/2<0?-1:1);Nt(t,e,Math.max(i,Math.floor(e-r*l/n+h)),Math.min(o,Math.floor(e+(n-r)*l/n+h)),s)}const n=t[e];let r=i,a=o;for(Vt(t,i,e),s(t[o],n)>0&&Vt(t,i,o);r<a;){for(Vt(t,r,a),r++,a--;s(t[r],n)<0;)r++;for(;s(t[a],n)>0;)a--}0===s(t[i],n)?Vt(t,i,a):(a++,Vt(t,a,o)),a<=e&&(i=a+1),e<=a&&(o=a-1)}}function Vt(t,e,i){const o=t[e];t[e]=t[i],t[i]=o}function Lt(t,e){Gt(t,0,t.children.length,e,t)}function Gt(t,e,i,o,s){s||(s=Ht([])),s.minX=Infinity,s.minY=Infinity,s.maxX=-Infinity,s.maxY=-Infinity;for(let n=e;n<i;n++){const e=t.children[n];Tt(s,t.leaf?o(e):e)}return s}function Tt(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 Ut(t,e){return t.minX-e.minX}function At(t,e){return t.minY-e.minY}function Kt(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function Xt(t){return t.maxX-t.minX+(t.maxY-t.minY)}function zt(t,e){const i=Math.max(t.minX,e.minX),o=Math.max(t.minY,e.minY),s=Math.min(t.maxX,e.maxX),n=Math.min(t.maxY,e.maxY);return Math.max(0,s-i)*Math.max(0,n-o)}function Rt(t,e){return t.minX<=e.minX&&t.minY<=e.minY&&e.maxX<=t.maxX&&e.maxY<=t.maxY}function Yt(t,e){return e.minX<=t.maxX&&e.minY<=t.maxY&&e.maxX>=t.minX&&e.maxY>=t.minY}function Ht(t){return{children:t,height:1,leaf:!0,minX:Infinity,minY:Infinity,maxX:-Infinity,maxY:-Infinity}}function qt(t,e,i,o,s){const n=[e,i];for(;n.length;){if((i=n.pop())-(e=n.pop())<=o)continue;const r=e+Math.ceil((i-e)/o/2)*o;Nt(t,r,e,i,s),n.push(e,r,r,i)}}class $t{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(!Yt(t,e))return i;const o=this.toBBox,s=[];for(;e;){for(let n=0;n<e.children.length;n++){const r=e.children[n],a=e.leaf?o(r):r;Yt(t,a)&&(e.leaf?i.push(r):Rt(t,a)?this._all(r,i):s.push(r))}e=s.pop()}return i}collides(t){let e=this.data;if(Yt(t,e)){const i=[];for(;e;){for(let o=0;o<e.children.length;o++){const s=e.children[o],n=e.leaf?this.toBBox(s):s;if(Yt(t,n)){if(e.leaf||Rt(t,n))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=Ht([])}remove(t){let e=this.data;const i=this.toBBox(t),o=[],s=[];let n,r,a=!1;for(;e||o.length;){if(e||(e=o.pop(),r=o[o.length-1],n=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||!Rt(e,i)?r?(n++,e=r.children[n],a=!1):e=null:(o.push(e),s.push(n),n=0,r=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 n,r=this._maxEntries;if(s<=r)return n=Ht(t.slice(e,i+1)),Lt(n,this.toBBox),n;o||(o=Math.ceil(Math.log(s)/Math.log(r)),r=Math.ceil(s/Math.pow(r,o-1))),n=Ht([]),n.leaf=!1,n.height=o;const a=Math.ceil(s/r),l=a*Math.ceil(Math.sqrt(r));qt(t,e,i,l,this.compareMinX);for(let s=e;s<=i;s+=l){const e=Math.min(s+l-1,i);qt(t,s,e,a,this.compareMinY);for(let i=s;i<=e;i+=a){const s=Math.min(i+a-1,e);n.children.push(this._build(t,i,s,o-1))}}return Lt(n,this.toBBox),n}_chooseSubtree(t,e,i,o){for(;o.push(e),!e.leaf&&o.length-1!==i;){let i,o=Infinity,r=Infinity;for(let a=0;a<e.children.length;a++){const l=e.children[a],h=Kt(l),d=(s=t,n=l,(Math.max(n.maxX,s.maxX)-Math.min(n.minX,s.minX))*(Math.max(n.maxY,s.maxY)-Math.min(n.minY,s.minY))-h);d<r?(r=d,o=h<o?h:o,i=l):d===r&&h<o&&(o=h,i=l)}e=i||e.children[0]}var s,n;return e}_insert(t,e,i){const o=i?t:this.toBBox(t),s=[],n=this._chooseSubtree(o,this.data,e,s);for(n.children.push(t),Tt(n,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 n=this._chooseSplitIndex(i,s,o),r=Ht(i.children.splice(n,i.children.length-n));r.height=i.height,r.leaf=i.leaf,Lt(i,this.toBBox),Lt(r,this.toBBox),e?t[e-1].children.push(r):this._splitRoot(i,r)}_splitRoot(t,e){this.data=Ht([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Lt(this.data,this.toBBox)}_chooseSplitIndex(t,e,i){let o,s=Infinity,n=Infinity;for(let r=e;r<=i-e;r++){const e=Gt(t,0,r,this.toBBox),a=Gt(t,r,i,this.toBBox),l=zt(e,a),h=Kt(e)+Kt(a);l<s?(s=l,o=r,n=h<n?h:n):l===s&&h<n&&(n=h,o=r)}return o||i-e}_chooseSplitAxis(t,e,i){const o=t.leaf?this.compareMinX:Ut,s=t.leaf?this.compareMinY:At;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,n=Gt(t,0,e,s),r=Gt(t,i-e,i,s);let a=Xt(n)+Xt(r);for(let o=e;o<i-e;o++){const e=t.children[o];Tt(n,t.leaf?s(e):e),a+=Xt(n)}for(let o=i-e-1;o>=e;o--){const e=t.children[o];Tt(r,t.leaf?s(e):e),a+=Xt(r)}return a}_adjustParentBBoxes(t,e,i){for(let o=i;o>=0;o--)Tt(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():Lt(t[i],this.toBBox)}}class Zt{constructor(t){this.tree=void 0,this.idToNode=void 0,this.nodeToId=void 0,this.tree=new $t(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),n=Math.max(...i);return{minX:Math.min(...e),minY:s,maxX:Math.max(...e),maxY:n}}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 Jt={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 Qt{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 Zt,this.tracked=!t||!1!==t.tracked,this.idStrategy=t&&t.idStrategy?t.idStrategy:Jt}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[];let i=this.clone(t);const o=[],s=[];return i=i.filter(t=>{null==t.id&&(t.id=this.idStrategy.getId());const i=t.id;if(e){const o=e(t);if(!o.valid)return s.push({id:i,valid:!1,reason:o.reason}),!1}if(this.tracked){if(t.properties.createdAt){if(!r(t.properties.createdAt))return s.push({id:t.id,valid:!1,reason:\"createdAt is not a valid numeric timestamp\"}),!1}else t.properties.createdAt=+new Date;if(t.properties.updatedAt){if(!r(t.properties.updatedAt))return s.push({id:t.id,valid:!1,reason:\"updatedAt is not a valid numeric timestamp\"}),!1}else t.properties.updatedAt=+new Date}return this.has(i)?(s.push({id:i,valid:!1,reason:`Feature already exists with this id: ${i}`}),!1):(this.store[i]=t,o.push(i),s.push({id:i,valid:!0}),!0)}),this.spatialIndex.load(i),this._onChange(o,\"create\"),s}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,n=t({},o);this.tracked&&(s=+new Date,o?(n.createdAt=\"number\"==typeof o.createdAt?o.createdAt:s,n.updatedAt=\"number\"==typeof o.updatedAt?o.updatedAt:s):n={createdAt:s,updatedAt:s});const r=this.getId(),a={id:r,type:\"Feature\",geometry:e,properties:n};this.store[r]=a,this.spatialIndex.insert(a),i.push(r)}),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 te(t){const e=t.coordinates;let i=0;if(e&&e.length>0){i+=Math.abs(oe(e[0]));for(let t=1;t<e.length;t++)i-=Math.abs(oe(e[t]))}return i}const ee=20294876564838.72,ie=Math.PI/180;function oe(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]*ie-t[o][0]*ie)*Math.sin(t[o+1===e?0:o+1][1]*ie),o++;return i*ee}const se=\"Feature is smaller than the minimum area\",ne=(t,e)=>\"Polygon\"!==t.geometry.type?{valid:!1,reason:a}:te(t.geometry)<e?{valid:!1,reason:se}:{valid:!0},re=(t,e)=>\"Polygon\"!==t.geometry.type?{valid:!1,reason:a}:te(t.geometry)>e?{valid:!1,reason:\"Feature is larger than the maximum area\"}:{valid:!0},ae=\"Feature is not a Polygon or LineString\",le=\"Feature intersects itself\",he=t=>\"Polygon\"!==t.geometry.type&&\"LineString\"!==t.geometry.type?{valid:!1,reason:ae}:E(t)?{valid:!1,reason:le}:{valid:!0};function de(t,e,i){const o=R(t,e);let s=R(e,i)-o;return s<0&&(s+=360),180-Math.abs(s-90-90)}class ce extends d{constructor(e){super(e),this.mode=\"angled-rectangle\",this.currentCoordinate=0,this.currentId=void 0,this.keyEvents=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\"})}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 i=this.store.getGeometryCopy(this.currentId).coordinates[0];let o;if(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){const e=i[0],s=i[1],n=vt(e,s,this.coordinatePrecision,this.project,this.unproject),r=x(e[0],e[1]),a=x(n[0],n[1]),l=x(s[0],s[1]),h=x(t.lng,t.lat),d=N(h,r)<N(h,l),c=de(r,a,h),u=d?90-c:de(r,a,h)-90,g=N(a,h),y=Math.cos(p(u))*g,m=R(r,l)+(\"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\"}(r,l,h)?-90:90),f=X(r,y,m),v=X(l,y,m),C=M(f.x,f.y),P=M(v.x,v.y);o=[i[0],i[1],[P.lng,P.lat],[C.lng,C.lat],i[0]]}o&&this.updatePolygonGeometry(this.currentId,o,e.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}).valid||(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 i=this.store.getGeometryCopy(this.currentId);if(J([t.lng,t.lat],i.coordinates[0][0]))return;if(!this.updatePolygonGeometry(this.currentId,[i.coordinates[0][0],[t.lng,t.lat],[t.lng,t.lat],i.coordinates[0][0]],e.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 this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}}function ue(t,e,i){return(e.x-t.x)*(i.y-t.y)-(e.y-t.y)*(i.x-t.x)<=0}class ge extends d{constructor(e){super(e),this.mode=\"sector\",this.currentCoordinate=0,this.currentId=void 0,this.keyEvents=void 0,this.direction=void 0,this.arcPoints=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}this.arcPoints=(null==e?void 0:e.arcPoints)||64}close(){if(void 0===this.currentId)return;const t=this.currentId;this.currentCoordinate=0,this.currentId=void 0,this.direction=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(this.mouseMove=!0,this.setCursor(this.cursors.start),void 0===this.currentId||0===this.currentCoordinate)return;const i=this.store.getGeometryCopy(this.currentId).coordinates[0];let o;if(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){const e=i[0],s=i[1],n=[t.lng,t.lat],r=x(e[0],e[1]),a=x(s[0],s[1]),l=x(n[0],n[1]);if(void 0===this.direction){const t=ue(r,a,l);this.direction=t?\"clockwise\":\"anticlockwise\"}const h=N(r,a),d=R(r,a),c=R(r,l),u=this.arcPoints,g=[e],p=Y(d),y=Y(c);let m;\"anticlockwise\"===this.direction?(m=y-p,m<0&&(m+=360)):(m=p-y,m<0&&(m+=360));const v=(\"anticlockwise\"===this.direction?1:-1)*m/u;g.push(s);for(let t=0;t<=u;t++){const e=X(r,h,p+t*v),{lng:i,lat:o}=M(e.x,e.y),s=[f(i,this.coordinatePrecision),f(o,this.coordinatePrecision)];s[0]!==g[g.length-1][0]&&s[1]!==g[g.length-1][1]&&g.push(s)}g.push(e),o=[...g]}o&&this.updatePolygonGeometry(this.currentId,o,e.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}).valid||(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 i=this.store.getGeometryCopy(this.currentId);if(J([t.lng,t.lat],i.coordinates[0][0]))return;if(!this.updatePolygonGeometry(this.currentId,[i.coordinates[0][0],[t.lng,t.lat],[t.lng,t.lat],i.coordinates[0][0]],e.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.direction=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 this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}}class pe extends d{constructor(e){super(e),this.mode=\"sensor\",this.currentCoordinate=0,this.currentId=void 0,this.currentInitialArcId=void 0,this.currentStartingPointId=void 0,this.keyEvents=void 0,this.direction=void 0,this.arcPoints=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}this.arcPoints=(null==e?void 0:e.arcPoints)||64}close(){if(void 0===this.currentStartingPointId)return;const t=this.currentStartingPointId,e=this.currentInitialArcId,i=this.currentId;t&&this.store.delete([t]),e&&this.store.delete([e]),this.currentCoordinate=0,this.currentStartingPointId=void 0,this.currentInitialArcId=void 0,this.currentId=void 0,this.direction=void 0,\"drawing\"===this.state&&this.setStarted(),i&&this.onFinish(i,{mode:this.mode,action:\"draw\"})}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.currentInitialArcId&&void 0!==this.currentStartingPointId&&0!==this.currentCoordinate)if(2===this.currentCoordinate){const i=this.store.getGeometryCopy(this.currentInitialArcId).coordinates,o=this.store.getGeometryCopy(this.currentStartingPointId).coordinates,s=i[0],n=[t.lng,t.lat],r=x(s[0],s[1]),a=x(n[0],n[1]),l=x(o[0],o[1]),h=N(l,r);if(void 0===this.direction){const t=ue(l,r,a);this.direction=t?\"clockwise\":\"anticlockwise\"}const d=R(l,r),c=R(l,a),u=this.arcPoints,g=[s],p=Y(d),y=Y(c);let m;\"anticlockwise\"===this.direction?(m=y-p,m<0&&(m+=360)):(m=p-y,m<0&&(m+=360));const v=(\"anticlockwise\"===this.direction?1:-1)*m/u;for(let t=0;t<=u;t++){const e=X(l,h,p+t*v),{lng:i,lat:o}=M(e.x,e.y),s=[f(i,this.coordinatePrecision),f(o,this.coordinatePrecision)];s[0]!==g[g.length-1][0]&&s[1]!==g[g.length-1][1]&&g.push(s)}this.updateLineStringGeometry(this.currentInitialArcId,g,e.Provisional)}else if(3===this.currentCoordinate){const i=this.store.getGeometryCopy(this.currentInitialArcId).coordinates;if(i.length<2)return;if(!this.direction)return;const o=this.store.getGeometryCopy(this.currentStartingPointId).coordinates,s=i[0],n=i[i.length-1],r=x(t.lng,t.lat),a=x(s[0],s[1]),l=x(n[0],n[1]),h=x(o[0],o[1]),d=N(h,a),c=N(h,r)<d?a:r,u=R(h,r),g=R(h,a),p=R(h,l),y=Y(g),m=Y(p),v=Y(u);if(this.notInSector({normalizedCursor:v,normalizedStart:y,normalizedEnd:m,direction:this.direction}))return;const C=this.getDeltaBearing(this.direction,y,m),P=this.arcPoints,I=(\"anticlockwise\"===this.direction?1:-1)*C/P,S=N(h,c),E=[];for(let t=0;t<=P;t++){const e=X(h,S,y+t*I),{lng:o,lat:s}=M(e.x,e.y),n=[f(o,this.coordinatePrecision),f(s,this.coordinatePrecision)];n[0]!==i[i.length-1][0]&&n[1]!==i[i.length-1][1]&&E.unshift(n)}i.push(...E),i.push(i[0]),this.currentId?this.updatePolygonGeometry(this.currentId,i,e.Provisional):[this.currentId]=this.store.create([{geometry:{type:\"Polygon\",coordinates:[i]},properties:{mode:this.mode}}])}}updateLineStringGeometry(t,e,i){const o={type:\"LineString\",coordinates:e};return!(this.validate&&!this.validate({type:\"Feature\",geometry:o},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:i}).valid||(this.store.updateGeometry([{id:t,geometry:o}]),0))}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}).valid||(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:\"Point\",coordinates:[t.lng,t.lat]},properties:{mode:this.mode}}]);this.currentStartingPointId=e,this.currentCoordinate++,this.setDrawing()}else if(1===this.currentCoordinate&&this.currentStartingPointId){const[e]=this.store.create([{geometry:{type:\"LineString\",coordinates:[[t.lng,t.lat],[t.lng,t.lat]]},properties:{mode:this.mode}}]);this.currentInitialArcId=e,this.currentCoordinate++}else 2===this.currentCoordinate&&this.currentStartingPointId?this.currentCoordinate++:3===this.currentCoordinate&&this.currentStartingPointId&&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.currentStartingPointId&&this.store.delete([this.currentStartingPointId]),this.currentInitialArcId&&this.store.delete([this.currentInitialArcId]),this.currentId&&this.store.delete([this.currentId])}catch(t){}this.currentStartingPointId=void 0,this.direction=void 0,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):\"LineString\"===e.geometry.type?(i.lineStringColor=this.getHexColorStylingValue(this.styles.outlineColor,i.polygonOutlineColor,e),i.lineStringWidth=this.getNumericStylingValue(this.styles.outlineWidth,i.polygonOutlineWidth,e),i.zIndex=10):\"Point\"===e.geometry.type&&(i.pointColor=this.getHexColorStylingValue(this.styles.centerPointColor,i.pointColor,e),i.pointWidth=this.getNumericStylingValue(this.styles.centerPointWidth,i.pointWidth,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.centerPointOutlineColor,i.pointOutlineColor,e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.centerPointOutlineWidth,i.pointOutlineWidth,e),i.zIndex=20)),i}validateFeature(t){return this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}getDeltaBearing(t,e,i){let o;return\"anticlockwise\"===t?(o=i-e,o<0&&(o+=360)):(o=e-i,o<0&&(o+=360)),o}notInSector({normalizedCursor:t,normalizedStart:e,normalizedEnd:i,direction:o}){return\"clockwise\"===o?e<=i?t>=e&&t<=i:t>=e||t<=i:e>=i?t<=e&&t>=i:t<=e||t>=i}}class ye{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}}var me={__proto__:null,GeoJSONStore:Qt,TerraDrawBaseDrawMode:d,TerraDrawBaseAdapter:class{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 e=this.getLngLatFromEvent(t);if(!e)return null;const{lng:i,lat:o}=e,{containerX:s,containerY:n}=this.getMapElementXYPosition(t),r=this.getButton(t),a=Array.from(this._heldKeys);return{lng:f(i,this._coordinatePrecision),lat:f(o,this._coordinatePrecision),containerX:s,containerY:n,button:r,heldKeys:a}}register(t){this._currentModeCallbacks=t,this._listeners=this.getAdapterListeners(),this._listeners.forEach(t=>{t.register()})}getCoordinatePrecision(){return this._coordinatePrecision}getAdapterListeners(){return[new ye({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 ye({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},i={x:e.containerX,y:e.containerY},o=this._currentModeCallbacks.getState(),s=N(t,i);let n=!1;if(n=\"drawing\"===o?s<this._minPixelDragDistanceDrawing:\"selecting\"===o?s<this._minPixelDragDistanceSelecting:s<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 ye({name:\"contextmenu\",callback:t=>{this._currentModeCallbacks&&t.preventDefault()},register:t=>{this.getMapEventElement().addEventListener(\"contextmenu\",t)},unregister:t=>{this.getMapEventElement().removeEventListener(\"contextmenu\",t)}}),new ye({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 ye({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 ye({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()}},SELECT_PROPERTIES:i};const fe={ValidationReasonFeatureNotPoint:et,ValidationReasonFeatureInvalidCoordinates:it,ValidationReasonFeatureNotPolygon:a,ValidationReasonFeatureHasHoles:_,ValidationReasonFeatureLessThanFourCoordinates:b,ValidationReasonFeatureHasInvalidCoordinates:k,ValidationReasonFeatureCoordinatesNotClosed:O,ValidationReasonFeatureNotPolygonOrLineString:ae,ValidationReasonFeatureSelfIntersects:le,ValidationReasonFeatureLessThanMinSize:se,ValidationReasonModeMismatch:l};class ve{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 Bt;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===h.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 Qt({tracked:!!e.tracked,idStrategy:e.idStrategy?e.idStrategy:void 0});const n=t=>{const e=[],i=this._store.copyAll().filter(i=>!t.includes(i.id)||(e.push(i),!1));return{changed:e,unchanged:i}},r=(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}=n(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}=n([t]);this._adapter.render({created:[],deletedIds:[],unchanged:i,updated:e},this.getModeStyles())},d=t=>{if(!this._enabled)return;this._eventListeners.deselect.forEach(t=>{t()});const{changed:e,unchanged:i}=n([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:d,onFinish:r,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[i.SELECTED]?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,n=!o||void 0===o.ignoreSelectFeatures||o.ignoreSelectFeatures,r=this._adapter.unproject.bind(this._adapter),a=this._adapter.project.bind(this._adapter),l=a(t,e),h=G({unproject:r,point:l,pointerDistance:s});return this._store.search(h).filter(o=>{if(n&&(o.properties[i.MID_POINT]||o.properties[i.SELECTION_POINT]))return!1;if(\"Point\"===o.geometry.type){const t=o.geometry.coordinates,e=a(t[0],t[1]);return N(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(St(l,a(i[0],i[1]),a(o[0],o[1]))<s)return!0}return!1}return!!It([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){return this.checkEnabled(),0===t.length?[]:this._store.load(t,t=>{if(function(t){return Boolean(t&&\"object\"==typeof t&&\"properties\"in t&&\"object\"==typeof t.properties&&null!==t.properties&&\"mode\"in t.properties)}(t)){const e=t.properties.mode,i=this._modes[e];if(!i)return{id:t.id,valid:!1,reason:`${e} mode is not in the list of instantiated modes`};const o=i.validateFeature.bind(i)(t);return{id:t.id,valid:o.valid,reason:o.reason?o.reason:o.valid?void 0:\"Feature is invalid\"}}return{id:t.id,valid:!1,reason:\"Mode property does not exist\"}})}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 Ce=\"HELLO\";export{Ce as HELLO,ve as TerraDraw,ce as TerraDrawAngledRectangleMode,B as TerraDrawCircleMode,me as TerraDrawExtend,V as TerraDrawFreehandMode,tt as TerraDrawLineStringMode,st as TerraDrawPointMode,gt as TerraDrawPolygonMode,pt as TerraDrawRectangleMode,yt as TerraDrawRenderMode,ge as TerraDrawSectorMode,Wt as TerraDrawSelectMode,pe as TerraDrawSensorMode,re as ValidateMaxAreaSquareMeters,ne as ValidateMinAreaSquareMeters,he as ValidateNotSelfIntersecting,fe as ValidationReasons};\n//# sourceMappingURL=terra-draw.modern.js.map\n","var e,t,i;function n(e,t=9){const i=Math.pow(10,t);return Math.round(e*i)/i}(t=e||(e={})).Commit=\"commit\",t.Provisional=\"provisional\",t.Finish=\"finish\",function(e){e.Drawing=\"drawing\",e.Select=\"select\",e.Static=\"static\",e.Render=\"render\"}(i||(i={}));class r{constructor({name:e,callback:t,unregister:i,register:n}){this.name=void 0,this.callback=void 0,this.registered=!1,this.register=void 0,this.unregister=void 0,this.name=e,this.register=()=>{this.registered||(this.registered=!0,n(t))},this.unregister=()=>{this.register&&(this.registered=!1,i(t))},this.callback=t}}var s=class{constructor(e){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 e.minPixelDragDistance?e.minPixelDragDistance:1,this._minPixelDragDistanceSelecting=\"number\"==typeof e.minPixelDragDistanceSelecting?e.minPixelDragDistanceSelecting:1,this._minPixelDragDistanceDrawing=\"number\"==typeof e.minPixelDragDistanceDrawing?e.minPixelDragDistanceDrawing:8,this._coordinatePrecision=\"number\"==typeof e.coordinatePrecision?e.coordinatePrecision:9}getButton(e){return-1===e.button?\"neither\":0===e.button?\"left\":1===e.button?\"middle\":2===e.button?\"right\":\"neither\"}getMapElementXYPosition(e){const t=this.getMapEventElement(),{left:i,top:n}=t.getBoundingClientRect();return{containerX:e.clientX-i,containerY:e.clientY-n}}getDrawEventFromEvent(e){const t=this.getLngLatFromEvent(e);if(!t)return null;const{lng:i,lat:r}=t,{containerX:s,containerY:a}=this.getMapElementXYPosition(e),o=this.getButton(e),l=Array.from(this._heldKeys);return{lng:n(i,this._coordinatePrecision),lat:n(r,this._coordinatePrecision),containerX:s,containerY:a,button:o,heldKeys:l}}register(e){this._currentModeCallbacks=e,this._listeners=this.getAdapterListeners(),this._listeners.forEach(e=>{e.register()})}getCoordinatePrecision(){return this._coordinatePrecision}getAdapterListeners(){return[new r({name:\"pointerdown\",callback:e=>{if(!this._currentModeCallbacks)return;if(!e.isPrimary)return;const t=this.getDrawEventFromEvent(e);t&&(this._dragState=\"pre-dragging\",this._lastDrawEvent=t)},register:e=>{this.getMapEventElement().addEventListener(\"pointerdown\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"pointerdown\",e)}}),new r({name:\"pointermove\",callback:e=>{if(!this._currentModeCallbacks)return;if(!e.isPrimary)return;e.preventDefault();const t=this.getDrawEventFromEvent(e);if(t)if(\"not-dragging\"===this._dragState)this._currentModeCallbacks.onMouseMove(t),this._lastDrawEvent=t;else if(\"pre-dragging\"===this._dragState){if(!this._lastDrawEvent)return;const e={x:this._lastDrawEvent.containerX,y:this._lastDrawEvent.containerY},i={x:t.containerX,y:t.containerY},n=this._currentModeCallbacks.getState(),r=((e,t)=>{const{x:i,y:n}=e,{x:r,y:s}=t,a=r-i,o=s-n;return Math.sqrt(o*o+a*a)})(e,i);let s=!1;if(s=\"drawing\"===n?r<this._minPixelDragDistanceDrawing:\"selecting\"===n?r<this._minPixelDragDistanceSelecting:r<this._minPixelDragDistance,s)return;this._dragState=\"dragging\",this._currentModeCallbacks.onDragStart(t,e=>{this.setDraggability.bind(this)(e)})}else\"dragging\"===this._dragState&&this._currentModeCallbacks.onDrag(t,e=>{this.setDraggability.bind(this)(e)})},register:e=>{this.getMapEventElement().addEventListener(\"pointermove\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"pointermove\",e)}}),new r({name:\"contextmenu\",callback:e=>{this._currentModeCallbacks&&e.preventDefault()},register:e=>{this.getMapEventElement().addEventListener(\"contextmenu\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"contextmenu\",e)}}),new r({name:\"pointerup\",callback:e=>{if(!this._currentModeCallbacks)return;if(e.target!==this.getMapEventElement())return;if(!e.isPrimary)return;const t=this.getDrawEventFromEvent(e);t&&(\"dragging\"===this._dragState?this._currentModeCallbacks.onDragEnd(t,e=>{this.setDraggability.bind(this)(e)}):\"not-dragging\"!==this._dragState&&\"pre-dragging\"!==this._dragState||this._currentModeCallbacks.onClick(t),this._dragState=\"not-dragging\",this.setDraggability(!0))},register:e=>{this.getMapEventElement().addEventListener(\"pointerup\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"pointerup\",e)}}),new r({name:\"keyup\",callback:e=>{this._currentModeCallbacks&&(this._heldKeys.delete(e.key),this._currentModeCallbacks.onKeyUp({key:e.key,heldKeys:Array.from(this._heldKeys),preventDefault:()=>e.preventDefault()}))},register:e=>{this.getMapEventElement().addEventListener(\"keyup\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"keyup\",e)}}),new r({name:\"keydown\",callback:e=>{this._currentModeCallbacks&&(this._heldKeys.add(e.key),this._currentModeCallbacks.onKeyDown({key:e.key,heldKeys:Array.from(this._heldKeys),preventDefault:()=>e.preventDefault()}))},register:e=>{this.getMapEventElement().addEventListener(\"keydown\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"keydown\",e)}})]}unregister(){this._listeners.forEach(e=>{e.unregister()}),this.clear()}};class a extends s{constructor(e){super(e),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=e.map,this._container=this._map.getContainer()}clearLayers(){this._rendered&&([\"point\",\"linestring\",\"polygon\"].forEach(e=>{const t=`td-${e.toLowerCase()}`;this._map.removeLayer(t),\"polygon\"===e&&this._map.removeLayer(t+\"-outline\"),this._map.removeSource(t)}),this._rendered=!1,this._nextRender&&(cancelAnimationFrame(this._nextRender),this._nextRender=void 0))}_addGeoJSONSource(e,t){this._map.addSource(e,{type:\"geojson\",data:{type:\"FeatureCollection\",features:t},tolerance:0})}_addFillLayer(e){return this._map.addLayer({id:e,source:e,type:\"fill\",paint:{\"fill-color\":[\"get\",\"polygonFillColor\"],\"fill-opacity\":[\"get\",\"polygonFillOpacity\"]}})}_addFillOutlineLayer(e){return this._map.addLayer({id:e+\"-outline\",source:e,type:\"line\",paint:{\"line-width\":[\"get\",\"polygonOutlineWidth\"],\"line-color\":[\"get\",\"polygonOutlineColor\"]}})}_addLineLayer(e){return this._map.addLayer({id:e,source:e,type:\"line\",paint:{\"line-width\":[\"get\",\"lineStringWidth\"],\"line-color\":[\"get\",\"lineStringColor\"]}})}_addPointLayer(e){return this._map.addLayer({id:e,source:e,type:\"circle\",paint:{\"circle-stroke-color\":[\"get\",\"pointOutlineColor\"],\"circle-stroke-width\":[\"get\",\"pointOutlineWidth\"],\"circle-radius\":[\"get\",\"pointWidth\"],\"circle-color\":[\"get\",\"pointColor\"]}})}_addLayer(e,t){\"Point\"===t&&this._addPointLayer(e),\"LineString\"===t&&this._addLineLayer(e),\"Polygon\"===t&&(this._addFillLayer(e),this._addFillOutlineLayer(e))}_addGeoJSONLayer(e,t){const i=`td-${e.toLowerCase()}`;return this._addGeoJSONSource(i,t),this._addLayer(i,e),i}_setGeoJSONLayerData(e,t){const i=`td-${e.toLowerCase()}`;return this._map.getSource(i).setData({type:\"FeatureCollection\",features:t}),i}updateChangedIds(e){[...e.updated,...e.created].forEach(e=>{\"Point\"===e.geometry.type?this.changedIds.points=!0:\"LineString\"===e.geometry.type?this.changedIds.linestrings=!0:\"Polygon\"===e.geometry.type&&(this.changedIds.polygons=!0)}),e.deletedIds.length>0&&(this.changedIds.deletion=!0),0===e.created.length&&0===e.updated.length&&0===e.deletedIds.length&&(this.changedIds.styling=!0)}getLngLatFromEvent(e){const{left:t,top:i}=this._container.getBoundingClientRect();return this.unproject(e.clientX-t,e.clientY-i)}getMapEventElement(){return this._map.getCanvas()}setDraggability(e){e?(this._map.dragRotate.enable(),this._map.dragPan.enable()):(this._map.dragRotate.disable(),this._map.dragPan.disable())}project(e,t){const{x:i,y:n}=this._map.project({lng:e,lat:t});return{x:i,y:n}}unproject(e,t){const{lng:i,lat:n}=this._map.unproject({x:e,y:t});return{lng:i,lat:n}}setCursor(e){const t=this._map.getCanvas();\"unset\"===e?t.style.removeProperty(\"cursor\"):t.style.cursor=e}setDoubleClickToZoom(e){e?this._map.doubleClickZoom.enable():this._map.doubleClickZoom.disable()}render(e,t){this.updateChangedIds(e),this._nextRender&&cancelAnimationFrame(this._nextRender),this._nextRender=requestAnimationFrame(()=>{const i=[...e.created,...e.updated,...e.unchanged],n=[],r=[],s=[];for(let e=0;e<i.length;e++){const a=i[e],{properties:o}=a,l=t[o.mode](a);\"Point\"===a.geometry.type?(o.pointColor=l.pointColor,o.pointOutlineColor=l.pointOutlineColor,o.pointOutlineWidth=l.pointOutlineWidth,o.pointWidth=l.pointWidth,n.push(a)):\"LineString\"===a.geometry.type?(o.lineStringColor=l.lineStringColor,o.lineStringWidth=l.lineStringWidth,r.push(a)):\"Polygon\"===a.geometry.type&&(o.polygonFillColor=l.polygonFillColor,o.polygonFillOpacity=l.polygonFillOpacity,o.polygonOutlineColor=l.polygonOutlineColor,o.polygonOutlineWidth=l.polygonOutlineWidth,s.push(a))}if(this._rendered){const e=this.changedIds.deletion||this.changedIds.styling,t=e||this.changedIds.linestrings,i=e||this.changedIds.polygons;let a;(e||this.changedIds.points)&&(a=this._setGeoJSONLayerData(\"Point\",n)),t&&this._setGeoJSONLayerData(\"LineString\",r),i&&this._setGeoJSONLayerData(\"Polygon\",s),a&&this._map.moveLayer(a)}else{const e=this._addGeoJSONLayer(\"Point\",n);this._addGeoJSONLayer(\"LineString\",r),this._addGeoJSONLayer(\"Polygon\",s),this._rendered=!0,e&&this._map.moveLayer(e)}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(e){var t;super.register(e),null!=(t=this._currentModeCallbacks)&&t.onReady&&this._currentModeCallbacks.onReady()}}export{a as TerraDrawMapLibreGLAdapter};\n//# sourceMappingURL=terra-draw-maplibre-gl-adapter.modern.js.map\n","/**\n * The list of available Terra Draw drawing modes for MaplibreTerraDrawControl\n */\nexport const AvailableModes = [\n\t'render',\n\t'point',\n\t'linestring',\n\t'polygon',\n\t'rectangle',\n\t'circle',\n\t'freehand',\n\t'angled-rectangle',\n\t'sensor',\n\t'sector',\n\t'select',\n\t'delete-selection',\n\t'delete',\n\t'download'\n] as const;\n","/**\n * The list of available Terra Draw drawing modes for MaplibreMeasureControl\n */\nexport const AvailableMeasureModes = [\n\t'render',\n\t'linestring',\n\t'polygon',\n\t'rectangle',\n\t'circle',\n\t'freehand',\n\t'angled-rectangle',\n\t'sensor',\n\t'sector',\n\t'select',\n\t'delete-selection',\n\t'delete',\n\t'download'\n] as const;\n","import type { TerradrawControlOptions } from '../interfaces/TerradrawControlOptions.js';\n\n/**\n * Default control options\n */\nexport const defaultControlOptions: TerradrawControlOptions = {\n\tmodes: [\n\t\t'render',\n\t\t'point',\n\t\t'linestring',\n\t\t'polygon',\n\t\t'rectangle',\n\t\t'angled-rectangle',\n\t\t'sensor',\n\t\t'sector',\n\t\t'circle',\n\t\t'freehand',\n\t\t'select',\n\t\t'delete-selection',\n\t\t'delete',\n\t\t'download'\n\t],\n\topen: false\n};\n","import {\n\tTerraDrawAngledRectangleMode,\n\tTerraDrawCircleMode,\n\tTerraDrawFreehandMode,\n\tTerraDrawLineStringMode,\n\tTerraDrawPolygonMode,\n\tTerraDrawRectangleMode,\n\tTerraDrawSectorMode,\n\tTerraDrawSensorMode\n} from 'terra-draw';\nimport type { MeasureControlOptions } from '../interfaces/MeasureControlOptions.js';\n\n/**\n * Default MeasureControl options\n */\nexport const defaultMeasureControlOptions: MeasureControlOptions = {\n\tmodes: [\n\t\t'render',\n\t\t'linestring',\n\t\t'polygon',\n\t\t'rectangle',\n\t\t'angled-rectangle',\n\t\t'sensor',\n\t\t'sector',\n\t\t'circle',\n\t\t'freehand',\n\t\t'select',\n\t\t'delete-selection',\n\t\t'delete',\n\t\t'download'\n\t],\n\topen: false,\n\t// see styling parameters of Terra Draw at https://github.com/JamesLMilner/terra-draw/blob/main/guides/5.STYLING.md\n\tmodeOptions: {\n\t\tlinestring: new TerraDrawLineStringMode({\n\t\t\tstyles: {\n\t\t\t\tlineStringColor: '#232E3D',\n\t\t\t\tlineStringWidth: 2,\n\t\t\t\tclosingPointColor: '#FFFFFF',\n\t\t\t\tclosingPointWidth: 3,\n\t\t\t\tclosingPointOutlineColor: '#232E3D',\n\t\t\t\tclosingPointOutlineWidth: 1\n\t\t\t}\n\t\t}),\n\t\tpolygon: new TerraDrawPolygonMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2,\n\t\t\t\tclosingPointColor: '#FAFAFA',\n\t\t\t\tclosingPointWidth: 3,\n\t\t\t\tclosingPointOutlineColor: '#232E3D',\n\t\t\t\tclosingPointOutlineWidth: 1\n\t\t\t}\n\t\t}),\n\t\trectangle: new TerraDrawRectangleMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2\n\t\t\t}\n\t\t}),\n\t\t'angled-rectangle': new TerraDrawAngledRectangleMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2\n\t\t\t}\n\t\t}),\n\t\tcircle: new TerraDrawCircleMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2\n\t\t\t}\n\t\t}),\n\t\tfreehand: new TerraDrawFreehandMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2,\n\t\t\t\tclosingPointColor: '#FAFAFA',\n\t\t\t\tclosingPointWidth: 3,\n\t\t\t\tclosingPointOutlineColor: '#232E3D',\n\t\t\t\tclosingPointOutlineWidth: 1\n\t\t\t}\n\t\t}),\n\t\tsensor: new TerraDrawSensorMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2,\n\t\t\t\tcenterPointColor: '#FAFAFA',\n\t\t\t\tcenterPointWidth: 3,\n\t\t\t\tcenterPointOutlineColor: '#232E3D',\n\t\t\t\tcenterPointOutlineWidth: 1\n\t\t\t}\n\t\t}),\n\t\tsector: new TerraDrawSectorMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2\n\t\t\t}\n\t\t})\n\t},\n\tlineLayerLabelSpec: {\n\t\tid: 'terradraw-measure-line-label',\n\t\ttype: 'symbol',\n\t\tsource: 'terradraw-measure-line-source',\n\t\tfilter: ['==', '$type', 'Point'],\n\t\tlayout: {\n\t\t\t'text-field': [\n\t\t\t\t'concat',\n\t\t\t\t['to-string', ['get', 'distance']],\n\t\t\t\t' ',\n\t\t\t\t['get', 'unit'],\n\t\t\t\t[\n\t\t\t\t\t'case',\n\t\t\t\t\t['==', ['get', 'total'], 0],\n\t\t\t\t\t'',\n\t\t\t\t\t['concat', '\\n(', ['to-string', ['get', 'total']], ' ', ['get', 'unit'], ')']\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t'case',\n\t\t\t\t\t['all', ['has', 'elevation'], ['>', ['get', 'elevation'], 0]],\n\t\t\t\t\t['concat', '\\nAlt. ', ['to-string', ['floor', ['get', 'elevation']]], ' m'],\n\t\t\t\t\t''\n\t\t\t\t]\n\t\t\t],\n\t\t\t'symbol-placement': 'point',\n\t\t\t'text-size': [\n\t\t\t\t'interpolate',\n\t\t\t\t['linear'],\n\t\t\t\t['zoom'],\n\t\t\t\t5,\n\t\t\t\t10,\n\t\t\t\t10,\n\t\t\t\t12.0,\n\t\t\t\t13,\n\t\t\t\t14.0,\n\t\t\t\t14,\n\t\t\t\t16.0,\n\t\t\t\t18,\n\t\t\t\t18.0\n\t\t\t],\n\t\t\t'text-overlap': 'always',\n\t\t\t'text-variable-anchor': ['left', 'right', 'top', 'bottom'],\n\t\t\t'text-radial-offset': 0.5,\n\t\t\t'text-justify': 'center',\n\t\t\t'text-letter-spacing': 0.05\n\t\t},\n\t\tpaint: {\n\t\t\t'text-halo-color': '#F7F7F7',\n\t\t\t'text-halo-width': 2,\n\t\t\t'text-color': '#232E3D'\n\t\t}\n\t},\n\tlineLayerNodeSpec: {\n\t\tid: 'terradraw-measure-line-node',\n\t\ttype: 'circle',\n\t\tsource: 'terradraw-measure-line-source',\n\t\tfilter: ['==', '$type', 'Point'],\n\t\tlayout: {},\n\t\tpaint: {\n\t\t\t'circle-radius': 3,\n\t\t\t'circle-color': '#FFFFFF',\n\t\t\t'circle-stroke-color': '#000000',\n\t\t\t'circle-stroke-width': 1\n\t\t}\n\t},\n\tpolygonLayerSpec: {\n\t\tid: 'terradraw-measure-polygon-label',\n\t\ttype: 'symbol',\n\t\tsource: 'terradraw-measure-polygon-source',\n\t\tfilter: ['==', '$type', 'Point'],\n\t\tlayout: {\n\t\t\t'text-field': ['concat', ['to-string', ['get', 'area']], ' ', ['get', 'unit']],\n\t\t\t'symbol-placement': 'point',\n\t\t\t'text-size': [\n\t\t\t\t'interpolate',\n\t\t\t\t['linear'],\n\t\t\t\t['zoom'],\n\t\t\t\t5,\n\t\t\t\t10,\n\t\t\t\t10,\n\t\t\t\t12.0,\n\t\t\t\t13,\n\t\t\t\t14.0,\n\t\t\t\t14,\n\t\t\t\t16.0,\n\t\t\t\t18,\n\t\t\t\t18.0\n\t\t\t],\n\t\t\t'text-overlap': 'always',\n\t\t\t'text-letter-spacing': 0.05\n\t\t},\n\t\tpaint: {\n\t\t\t'text-halo-color': '#F7F7F7',\n\t\t\t'text-halo-width': 2,\n\t\t\t'text-color': '#232E3D'\n\t\t}\n\t},\n\tcomputeElevation: false,\n\tdistanceUnit: 'kilometers',\n\tdistancePrecision: 2,\n\tareaUnit: 'metric',\n\tareaPrecision: 2\n};\n","import type { MapGeoJSONFeature } from 'maplibre-gl';\nimport type { ModeOptions } from '../interfaces/ModeOptions.js';\nimport {\n\tTerraDrawAngledRectangleMode,\n\tTerraDrawCircleMode,\n\tTerraDrawFreehandMode,\n\tTerraDrawLineStringMode,\n\tTerraDrawPointMode,\n\tTerraDrawPolygonMode,\n\tTerraDrawRectangleMode,\n\tTerraDrawRenderMode,\n\tTerraDrawSectorMode,\n\tTerraDrawSelectMode,\n\tTerraDrawSensorMode,\n\tValidateNotSelfIntersecting\n} from 'terra-draw';\n\n/**\n * get default Terra Draw mode instances.\n * @returns default TerraDrawMode objects. Key is TerraDraw mode name, and value is Terra Draw mode object instance\n */\nexport const getDefaultModeOptions = () => {\n\tconst modeOptions: ModeOptions = {\n\t\trender: new TerraDrawRenderMode({\n\t\t\tmodeName: 'render',\n\t\t\tstyles: {}\n\t\t}),\n\t\tpoint: new TerraDrawPointMode(),\n\t\tlinestring: new TerraDrawLineStringMode(),\n\t\tpolygon: new TerraDrawPolygonMode({\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t// @ts-ignore\n\t\t\tvalidation: (feature: MapGeoJSONFeature, e: { updateType: string }) => {\n\t\t\t\tconst updateType = e.updateType;\n\t\t\t\tif (updateType === 'finish' || updateType === 'commit') {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn ValidateNotSelfIntersecting(feature);\n\t\t\t\t}\n\t\t\t\treturn { valid: true };\n\t\t\t}\n\t\t}),\n\t\trectangle: new TerraDrawRectangleMode(),\n\t\t'angled-rectangle': new TerraDrawAngledRectangleMode(),\n\t\tcircle: new TerraDrawCircleMode(),\n\t\tfreehand: new TerraDrawFreehandMode(),\n\t\tsensor: new TerraDrawSensorMode(),\n\t\tsector: new TerraDrawSectorMode(),\n\t\tselect: new TerraDrawSelectMode({\n\t\t\tflags: {\n\t\t\t\tpoint: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tpolygon: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlinestring: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfreehand: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcircle: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trectangle: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'angled-rectangle': {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsensor: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsector: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\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\tdelete: new TerraDrawRenderMode({\n\t\t\tmodeName: 'delete',\n\t\t\tstyles: {}\n\t\t}),\n\t\t'delete-selection': new TerraDrawRenderMode({\n\t\t\tmodeName: 'delete-selection',\n\t\t\tstyles: {}\n\t\t}),\n\t\tdownload: new TerraDrawRenderMode({\n\t\t\tmodeName: 'download',\n\t\t\tstyles: {}\n\t\t})\n\t};\n\treturn modeOptions;\n};\n","import type { ControlPosition, IControl, Map } from 'maplibre-gl';\nimport { type GeoJSONStoreFeatures, TerraDraw, TerraDrawRenderMode } from 'terra-draw';\nimport { TerraDrawMapLibreGLAdapter } from 'terra-draw-maplibre-gl-adapter';\nimport type {\n\tTerradrawControlOptions,\n\tEventType,\n\tTerradrawMode,\n\tTerradrawModeClass\n} from '../interfaces/index.js';\nimport { defaultControlOptions, getDefaultModeOptions } from '../constants/index.js';\n\n/**\n * Maplibre GL Terra Draw Control\n */\nexport class MaplibreTerradrawControl implements IControl {\n\tprotected controlContainer?: HTMLElement;\n\tprotected map?: Map;\n\tprotected modeButtons: { [key: string]: HTMLButtonElement } = {};\n\tprotected isExpanded = false;\n\n\tprotected terradraw?: TerraDraw;\n\tprotected options: TerradrawControlOptions = defaultControlOptions;\n\tprotected events: {\n\t\t[key: string]: [(event?: { feature?: GeoJSONStoreFeatures[]; mode?: TerradrawMode }) => void];\n\t} = {};\n\n\tprotected defaultMode = 'render';\n\n\t/**\n\t * Constructor\n\t * @param options Plugin control options\n\t */\n\tconstructor(options?: TerradrawControlOptions) {\n\t\tthis.modeButtons = {};\n\n\t\tif (options) {\n\t\t\tthis.options = Object.assign(this.options, options);\n\t\t}\n\t}\n\n\t/**\n\t * Get the default control position\n\t * @returns default control position. Default is 'top-right'\n\t */\n\tpublic getDefaultPosition(): ControlPosition {\n\t\tconst defaultPosition = 'top-right';\n\t\treturn defaultPosition;\n\t}\n\n\t/**\n\t * add the plugin control to maplibre\n\t * @param map Maplibre Map object\n\t * @returns HTML Element\n\t */\n\tpublic onAdd(map: Map): HTMLElement {\n\t\tif (this.options && this.options.modes && this.options.modes.length === 0) {\n\t\t\tthrow new Error('At least a mode must be enabled.');\n\t\t}\n\t\tthis.map = map;\n\n\t\tconst defaultOptions = getDefaultModeOptions();\n\t\tconst modes: TerradrawModeClass[] = [];\n\n\t\tthis.options?.modes?.forEach((m) => {\n\t\t\tif (this.options.modeOptions && this.options.modeOptions[m]) {\n\t\t\t\tconst newOption = this.options.modeOptions[m];\n\n\t\t\t\tif (m === 'select') {\n\t\t\t\t\t// overwrite other select mode settings if new option does not contain.\n\t\t\t\t\tconst defaultOption = defaultOptions[m];\n\t\t\t\t\tif (defaultOption) {\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tconst flags = defaultOption.flags;\n\t\t\t\t\t\tObject.keys(flags).forEach((key) => {\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tif (newOption.flags[key]) return;\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tnewOption.flags[key] = flags[key];\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmodes.push(newOption);\n\t\t\t} else if (defaultOptions[m]) {\n\t\t\t\tmodes.push(defaultOptions[m]);\n\t\t\t}\n\t\t});\n\n\t\t// sometimes, an error of 'Can not register unless mode is unregistered' is thrown by terradraw,\n\t\t// thus, force reset mode state as unregistered\n\t\tmodes.forEach((m) => {\n\t\t\tif (m.state !== 'unregistered') {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t// @ts-ignore\n\t\t\t\tm._state = 'unregistered';\n\t\t\t}\n\t\t});\n\n\t\t// if no render button is specified, it add hidden render mode\n\t\tif (!this.options?.modes?.includes('render')) {\n\t\t\tmodes.push(\n\t\t\t\tnew TerraDrawRenderMode({\n\t\t\t\t\tmodeName: 'default',\n\t\t\t\t\tstyles: {}\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis.defaultMode = 'default';\n\t\t}\n\n\t\tthis.isExpanded = this.options.open === true;\n\n\t\tthis.terradraw = new TerraDraw({\n\t\t\tadapter: new TerraDrawMapLibreGLAdapter({ map, ...this.options.adapterOptions }),\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\tmodes.forEach((m: TerradrawModeClass) => {\n\t\t\tif (m.mode === 'default') return;\n\t\t\tthis.addTerradrawButton(m.mode as TerradrawMode);\n\t\t});\n\n\t\tObject.values(this.modeButtons).forEach((ele) => {\n\t\t\tthis.controlContainer?.appendChild(ele);\n\t\t});\n\n\t\tthis.terradraw?.on('change', this.toggleButtonsWhenNoFeature.bind(this));\n\t\tthis.toggleButtonsWhenNoFeature();\n\t\treturn this.controlContainer;\n\t}\n\n\t/**\n\t * Remove the plugin control from maplibre\n\t * @returns void\n\t */\n\tpublic onRemove(): void {\n\t\tif (!this.controlContainer || !this.controlContainer.parentNode || !this.map) {\n\t\t\treturn;\n\t\t}\n\t\tthis.deactivate();\n\t\tthis.modeButtons = {};\n\t\tthis.terradraw = undefined;\n\t\tthis.map = undefined;\n\t\tthis.controlContainer.parentNode.removeChild(this.controlContainer);\n\t}\n\n\t/**\n\t * Register an event for the plugin\n\t * @param event event type\n\t * @param callback\n\t */\n\tpublic on(event: EventType, callback: (event?: { feature?: GeoJSONStoreFeatures[] }) => void) {\n\t\tif (!this.events[event]) {\n\t\t\tthis.events[event] = [callback];\n\t\t} else {\n\t\t\tthis.events[event].push(callback);\n\t\t}\n\t}\n\n\t/**\n\t * Unregister an event for the plugin\n\t * @param event event type\n\t * @param callback\n\t * @returns\n\t */\n\tpublic off(event: EventType, callback: (event?: { feature?: GeoJSONStoreFeatures[] }) => void) {\n\t\tif (!this.events[event]) return;\n\t\tconst index = this.events[event].findIndex((c) => c === callback);\n\t\tif (index !== -1) {\n\t\t\tthis.events[event].splice(index, 1);\n\t\t}\n\t}\n\n\t/**\n\t * Dispatch an event. Pass the current snapshot of features and mode\n\t * @param event event type\n\t */\n\tprotected dispatchEvent(event: EventType) {\n\t\tif (this.events[event]) {\n\t\t\tthis.events[event].forEach((callback) => {\n\t\t\t\tconst snapshot = this.terradraw?.getSnapshot();\n\t\t\t\tconst currentFeature = snapshot?.filter((f) => f.properties.selected === true);\n\t\t\t\tcallback({ feature: currentFeature, mode: this.terradraw?.getMode() as TerradrawMode });\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Activate Terra Draw to start drawing\n\t */\n\tpublic activate() {\n\t\tif (!this.terradraw) return;\n\t\tif (!this.terradraw.enabled) {\n\t\t\tthis.terradraw.start();\n\t\t\tthis.dispatchEvent('mode-changed');\n\t\t}\n\t}\n\n\t/**\n\t * Deactivate Terra Draw to stop drawing\n\t */\n\tpublic deactivate() {\n\t\tif (!this.terradraw) return;\n\t\tif (!this.terradraw.enabled) return;\n\t\tthis.resetActiveMode();\n\t\tthis.dispatchEvent('mode-changed');\n\t\tthis.terradraw.stop();\n\t}\n\n\t/**\n\t * Get the Terra Draw instance.\n\t * For the Terra Draw API, please refer to https://terradraw.io/#/api\n\t * @returns Terra Draw instance\n\t */\n\tpublic getTerraDrawInstance() {\n\t\treturn this.terradraw;\n\t}\n\n\t/**\n\t * Toggle editor control\n\t */\n\tprotected toggleEditor() {\n\t\tif (!this.terradraw) return;\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\tif (this.isExpanded) {\n\t\t\t\titem.classList.add('hidden');\n\t\t\t} else {\n\t\t\t\titem.classList.remove('hidden');\n\t\t\t}\n\t\t}\n\t\tconst addButton = document.getElementsByClassName('maplibregl-terradraw-render-button');\n\t\tif (addButton && addButton.length > 0) {\n\t\t\tif (this.isExpanded) {\n\t\t\t\taddButton.item(0)?.classList.remove('enabled');\n\t\t\t\tthis.resetActiveMode();\n\t\t\t} else {\n\t\t\t\taddButton.item(0)?.classList.add('enabled');\n\t\t\t}\n\t\t}\n\t\tthis.toggleDeleteSelectionButton();\n\t\tthis.toggleButtonsWhenNoFeature();\n\t\tthis.isExpanded = !this.isExpanded;\n\t}\n\n\t/**\n\t * Reset active mode to back to render mode\n\t */\n\tprotected resetActiveMode() {\n\t\tif (!this.terradraw) return;\n\t\tif (!this.terradraw.enabled) {\n\t\t\tthis.terradraw.start();\n\t\t}\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\tthis.terradraw?.setMode(this.defaultMode);\n\t}\n\n\t/**\n\t * Add Terra Draw drawing mode button\n\t * @param mode Terra Draw mode name\n\t */\n\tprotected addTerradrawButton(mode: TerradrawMode) {\n\t\tconst btn = document.createElement('button');\n\t\tbtn.type = 'button';\n\t\tthis.modeButtons[mode] = btn;\n\n\t\tif (mode === 'render') {\n\t\t\tbtn.classList.add(`maplibregl-terradraw-${mode}-button`);\n\n\t\t\tif (this.isExpanded) {\n\t\t\t\tbtn.classList.add('enabled');\n\t\t\t}\n\t\t\tbtn.type = 'button';\n\t\t\tbtn.title = this.capitalize('expand or collapse drawing tool');\n\t\t\tbtn.addEventListener('click', this.toggleEditor.bind(this));\n\t\t} else {\n\t\t\tbtn.classList.add('maplibregl-terradraw-add-control');\n\n\t\t\tif (!this.isExpanded) {\n\t\t\t\tbtn.classList.add('hidden');\n\t\t\t}\n\t\t\tbtn.title = this.capitalize(mode.replace(/-/g, ' '));\n\n\t\t\tif (mode === 'delete') {\n\t\t\t\tbtn.classList.add(`maplibregl-terradraw-${mode}-button`);\n\n\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\tif (!this.terradraw) return;\n\t\t\t\t\tif (!this.terradraw.enabled) return;\n\n\t\t\t\t\tthis.terradraw.clear();\n\t\t\t\t\tthis.deactivate();\n\t\t\t\t\tthis.toggleDeleteSelectionButton();\n\t\t\t\t\tthis.toggleButtonsWhenNoFeature();\n\t\t\t\t\tthis.dispatchEvent('feature-deleted');\n\t\t\t\t});\n\t\t\t} else if (mode === 'delete-selection') {\n\t\t\t\tbtn.classList.add(`maplibregl-terradraw-${mode}-button`);\n\t\t\t\tbtn.classList.add(`hidden-delete-selection`);\n\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\tif (!this.terradraw) return;\n\t\t\t\t\tif (!this.terradraw.enabled) return;\n\n\t\t\t\t\tconst snapshot = this.terradraw?.getSnapshot();\n\t\t\t\t\tconst selected = snapshot.filter((f) => f.properties.selected === true);\n\n\t\t\t\t\tif (selected.length > 0) {\n\t\t\t\t\t\t// if feature is selected, delete only selected feature\n\t\t\t\t\t\tconst currentMode = this.terradraw.getMode();\n\t\t\t\t\t\tthis.terradraw.setMode(this.defaultMode);\n\t\t\t\t\t\tconst ids = selected.map((f) => f.id);\n\t\t\t\t\t\tthis.terradraw.removeFeatures(ids);\n\t\t\t\t\t\tthis.terradraw.setMode(currentMode);\n\t\t\t\t\t\tthis.dispatchEvent('feature-deleted');\n\t\t\t\t\t}\n\t\t\t\t\tthis.toggleDeleteSelectionButton();\n\t\t\t\t\tthis.toggleButtonsWhenNoFeature();\n\t\t\t\t});\n\t\t\t} else if (mode === 'download') {\n\t\t\t\tbtn.classList.add(`maplibregl-terradraw-${mode}-button`);\n\t\t\t\tbtn.addEventListener('click', this.handleDownload.bind(this));\n\t\t\t} else {\n\t\t\t\tbtn.classList.add(`maplibregl-terradraw-add-${mode}-button`);\n\n\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\tif (!this.terradraw) return;\n\n\t\t\t\t\tconst isActive = btn.classList.contains('active');\n\t\t\t\t\tthis.activate();\n\t\t\t\t\tthis.resetActiveMode();\n\n\t\t\t\t\tif (!isActive) {\n\t\t\t\t\t\tthis.terradraw.setMode(mode);\n\t\t\t\t\t\tbtn.classList.add('active');\n\t\t\t\t\t}\n\t\t\t\t\tthis.toggleDeleteSelectionButton();\n\t\t\t\t\tthis.toggleButtonsWhenNoFeature();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * get GeoJSON features\n\t * @param onlySelected If true, returns only selected features. Default is false.\n\t * @returns FeatureCollection in GeoJSON format\n\t */\n\tpublic getFeatures(onlySelected = false) {\n\t\tif (!this.terradraw) return;\n\t\tconst snapshot = this.terradraw?.getSnapshot();\n\t\tconst features = snapshot.filter((f) => f.properties.mode !== 'select');\n\n\t\tconst fc = {\n\t\t\ttype: 'FeatureCollection',\n\t\t\tfeatures: features\n\t\t};\n\t\tif (onlySelected !== true) {\n\t\t\treturn fc;\n\t\t}\n\t\tfc.features = fc.features.filter((f) => f.properties.selected === true);\n\t\treturn fc;\n\t}\n\n\t/**\n\t * Download button click event handler\n\t */\n\tprotected handleDownload() {\n\t\tconst fc = this.getFeatures(false);\n\n\t\tconst dataStr = 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(fc));\n\t\tconst download = document.createElement('a');\n\t\tdownload.setAttribute('href', dataStr);\n\t\tdownload.setAttribute('download', 'data.geojson');\n\t\tdocument.body.appendChild(download);\n\t\tdownload.click();\n\t\tdownload.remove();\n\t}\n\n\t/**\n\t * Toggle the state of buttons when there is no features\n\t */\n\tprotected toggleButtonsWhenNoFeature() {\n\t\tif (!this.controlContainer) return;\n\t\tconst fc = this.getFeatures(false);\n\t\tconst isActive = fc && fc.features.length > 0 ? true : false;\n\n\t\tconst targets = [\n\t\t\t`maplibregl-terradraw-add-select-button`,\n\t\t\t`maplibregl-terradraw-download-button`,\n\t\t\t`maplibregl-terradraw-delete-button`\n\t\t];\n\t\tfor (const className of targets) {\n\t\t\tconst btns = this.controlContainer.getElementsByClassName(className);\n\t\t\tfor (let i = 0; i < btns.length; i++) {\n\t\t\t\tconst btn = btns.item(i) as HTMLButtonElement;\n\t\t\t\tif (!btn) continue;\n\t\t\t\tbtn.disabled = !isActive;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Toggle the state of delete-select button\n\t */\n\tprotected toggleDeleteSelectionButton() {\n\t\tconst enabled = this.terradraw?.enabled || false;\n\t\tconst mode = this.terradraw?.getMode();\n\t\tconst fc = this.getFeatures(false);\n\t\tconst hasFeatures = fc && fc.features.length > 0;\n\t\tconst isActive = hasFeatures && enabled && mode === 'select';\n\t\tconst btns = document.getElementsByClassName(`maplibregl-terradraw-delete-selection-button`);\n\t\tfor (let i = 0; i < btns.length; i++) {\n\t\t\tconst btn = btns.item(i);\n\t\t\tif (!btn) continue;\n\t\t\tif (isActive) {\n\t\t\t\tbtn.classList.remove('hidden-delete-selection');\n\t\t\t} else {\n\t\t\t\tbtn.classList.add('hidden-delete-selection');\n\t\t\t}\n\t\t}\n\n\t\tif (!hasFeatures) {\n\t\t\tconst btns = document.getElementsByClassName(`maplibregl-terradraw-add-select-button`);\n\t\t\tfor (let i = 0; i < btns.length; i++) {\n\t\t\t\tconst btn = btns.item(i);\n\t\t\t\tif (!btn) continue;\n\t\t\t\tbtn.classList.remove('active');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Capitalzie string value\n\t * @param value string value\n\t * @returns string\n\t */\n\tprotected capitalize(value: string) {\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t}\n}\n","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 180) {\n return angle - 360;\n } else if (angle < -180) {\n return angle + 360;\n }\n return angle;\n}\nfunction radiansToDegrees(radians) {\n const normalisedRadians = radians % (2 * Math.PI);\n return normalisedRadians * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const normalisedDegrees = degrees % 360;\n return normalisedDegrees * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { isNumber } from \"@turf/helpers\";\nfunction getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\n return [...coord.geometry.coordinates];\n }\n if (coord.type === \"Point\") {\n return [...coord.coordinates];\n }\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\n return [...coord];\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n } else {\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\n \"coords must be GeoJSON Feature, Geometry Object or an Array\"\n );\n}\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\nfunction geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type\n );\n }\n}\nfunction featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n}\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\n \"Invalid input to \" + name + \", FeatureCollection required\"\n );\n }\n for (const feature of featureCollection.features) {\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n }\n}\nfunction getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\nfunction getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\nexport {\n collectionOf,\n containsNumber,\n featureOf,\n geojsonType,\n getCoord,\n getCoords,\n getGeom,\n getType\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { getCoord } from \"@turf/invariant\";\nimport { radiansToLength, degreesToRadians } from \"@turf/helpers\";\nfunction distance(from, to, options = {}) {\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n var dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) + Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return radiansToLength(\n 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)),\n options.units\n );\n}\nvar turf_distance_default = distance;\nexport {\n turf_distance_default as default,\n distance\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry) return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson) throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null) return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { earthRadius } from \"@turf/helpers\";\nimport { geomReduce } from \"@turf/meta\";\nfunction area(geojson) {\n return geomReduce(\n geojson,\n (value, geom) => {\n return value + calculateArea(geom);\n },\n 0\n );\n}\nfunction calculateArea(geom) {\n let total = 0;\n let i;\n switch (geom.type) {\n case \"Polygon\":\n return polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for (i = 0; i < geom.coordinates.length; i++) {\n total += polygonArea(geom.coordinates[i]);\n }\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction polygonArea(coords) {\n let total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs(ringArea(coords[0]));\n for (let i = 1; i < coords.length; i++) {\n total -= Math.abs(ringArea(coords[i]));\n }\n }\n return total;\n}\nvar FACTOR = earthRadius * earthRadius / 2;\nvar PI_OVER_180 = Math.PI / 180;\nfunction ringArea(coords) {\n const coordsLength = coords.length - 1;\n if (coordsLength <= 2) return 0;\n let total = 0;\n let i = 0;\n while (i < coordsLength) {\n const lower = coords[i];\n const middle = coords[i + 1 === coordsLength ? 0 : i + 1];\n const upper = coords[i + 2 >= coordsLength ? (i + 2) % coordsLength : i + 2];\n const lowerX = lower[0] * PI_OVER_180;\n const middleY = middle[1] * PI_OVER_180;\n const upperX = upper[0] * PI_OVER_180;\n total += (upperX - lowerX) * Math.sin(middleY);\n i++;\n }\n return total * FACTOR;\n}\nvar turf_area_default = area;\nexport {\n area,\n turf_area_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { point } from \"@turf/helpers\";\nimport { coordEach } from \"@turf/meta\";\nfunction centroid(geojson, options = {}) {\n let xSum = 0;\n let ySum = 0;\n let len = 0;\n coordEach(\n geojson,\n function(coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n },\n true\n );\n return point([xSum / len, ySum / len], options.properties);\n}\nvar turf_centroid_default = centroid;\nexport {\n centroid,\n turf_centroid_default as default\n};\n//# sourceMappingURL=index.js.map","import type {\n\tCircleLayerSpecification,\n\tGeoJSONSource,\n\tGeoJSONSourceSpecification,\n\tLngLatLike,\n\tMap,\n\tSymbolLayerSpecification\n} from 'maplibre-gl';\nimport { MaplibreTerradrawControl } from './MaplibreTerradrawControl.js';\nimport { distance } from '@turf/distance';\nimport { area } from '@turf/area';\nimport { centroid } from '@turf/centroid';\nimport { defaultMeasureControlOptions } from '../constants/index.js';\nimport type {\n\tAreaUnit,\n\tDistanceUnit,\n\tMeasureControlOptions,\n\tTerradrawMode\n} from '../interfaces/index.js';\nimport type { GeoJSONStoreFeatures } from 'terra-draw';\n\n/**\n * Maplibre GL Terra Draw Measure Control\n */\nexport class MaplibreMeasureControl extends MaplibreTerradrawControl {\n\tprivate measureOptions: MeasureControlOptions;\n\n\t/**\n\t * The unit of distance can be degrees, radians, miles, or kilometers (default 'kilometers')\n\t * The measuring result will be recalculated once new value is set\n\t */\n\tget distanceUnit() {\n\t\treturn this.measureOptions.distanceUnit ?? 'kilometers';\n\t}\n\tset distanceUnit(value: DistanceUnit) {\n\t\tconst isSame = this.measureOptions.distanceUnit === value;\n\t\tthis.measureOptions.distanceUnit = value;\n\n\t\tif (this.measureOptions.distanceUnit === 'degrees') {\n\t\t\tthis.distancePrecision = 6;\n\t\t} else {\n\t\t\tthis.distancePrecision = 2;\n\t\t}\n\n\t\tif (!isSame) this.recalc();\n\t}\n\n\t/**\n\t * The precision of distance value. It will be set different value dwhen distance unit is changed. Using setter to override the value if you want.\n\t */\n\tget distancePrecision() {\n\t\treturn this.measureOptions.distancePrecision ?? 2;\n\t}\n\tset distancePrecision(value: number) {\n\t\tconst isSame = this.measureOptions.distancePrecision === value;\n\t\tthis.measureOptions.distancePrecision = value;\n\t\tif (!isSame) this.recalc();\n\t}\n\n\t/**\n\t * The unit of area can be metric (m², ha, km²) or imperial (yd², acre, mi²). Default is metric.\n\t * The measuring result will be recalculated once new value is set\n\t */\n\tget areaUnit() {\n\t\treturn this.measureOptions.areaUnit ?? 'metric';\n\t}\n\tset areaUnit(value: AreaUnit) {\n\t\tconst isSame = this.measureOptions.areaUnit === value;\n\t\tthis.measureOptions.areaUnit = value;\n\t\tif (!isSame) this.recalc();\n\t}\n\n\t/**\n\t * The precision of area value. Using setter to override the value if you want.\n\t */\n\tget areaPrecision() {\n\t\treturn this.measureOptions.areaPrecision ?? 2;\n\t}\n\tset areaPrecision(value: number) {\n\t\tconst isSame = this.measureOptions.areaPrecision === value;\n\t\tthis.measureOptions.areaPrecision = value;\n\t\tif (!isSame) this.recalc();\n\t}\n\n\t/**\n\t * Constructor\n\t * @param options Plugin control options\n\t */\n\tconstructor(options?: MeasureControlOptions) {\n\t\tlet measureOptions: MeasureControlOptions = defaultMeasureControlOptions;\n\t\tif (options) {\n\t\t\tmeasureOptions = Object.assign(measureOptions, options);\n\t\t}\n\t\tsuper({\n\t\t\tmodes: measureOptions.modes,\n\t\t\topen: measureOptions.open,\n\t\t\tmodeOptions: measureOptions.modeOptions\n\t\t});\n\t\tthis.measureOptions = measureOptions;\n\t}\n\n\t/**\n\t * add the plugin control to maplibre\n\t * @param map Maplibre Map object\n\t * @returns HTML Element\n\t */\n\tpublic onAdd(map: Map): HTMLElement {\n\t\tthis.controlContainer = super.onAdd(map);\n\t\treturn this.controlContainer;\n\t}\n\n\t/**\n\t * Remove the plugin control from maplibre\n\t * @returns void\n\t */\n\tpublic onRemove(): void {\n\t\tthis.unregisterMesureControl();\n\t\tsuper.onRemove();\n\t}\n\n\t/**\n\t * Activate Terra Draw to start drawing\n\t */\n\tpublic activate() {\n\t\tsuper.activate();\n\t\tthis.registerMesureControl();\n\t}\n\n\t/**\n\t * Recalculate area and distance in TerraDraw snapshot\n\t *\n\t * if you use `addFeatures` to restore GeoJSON features to TerraDraw, this recalc method needs to be called to re-measure again.\n\t *\n\t * For example, the below code is an example usage.\n\t * ```\n\t * drawInstance?.addFeatures(initData);\n\t * map?.once('idle', ()=>{\n\t * drawControl.recalc()\n\t * })\n\t * ```\n\t */\n\tpublic recalc() {\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (drawInstance) {\n\t\t\tthis.registerMesureControl();\n\n\t\t\tconst snapshot = drawInstance.getSnapshot();\n\t\t\tfor (const feature of snapshot) {\n\t\t\t\tconst id: string = feature.id as string;\n\t\t\t\tconst geometryType = feature.geometry.type;\n\t\t\t\tconst mode = feature.properties.mode as TerradrawMode;\n\t\t\t\tif (mode === 'linestring' && geometryType === 'LineString') {\n\t\t\t\t\tthis.measureLine(id);\n\t\t\t\t} else if (\n\t\t\t\t\t!['point', 'linestring', 'select', 'render'].includes(mode) &&\n\t\t\t\t\tgeometryType === 'Polygon'\n\t\t\t\t) {\n\t\t\t\t\tthis.measurePolygon(id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Register measure control related maplibre sources and layers\n\t */\n\tprivate registerMesureControl() {\n\t\tif (!this.map) return;\n\n\t\tconst lineModes = this.options.modes?.filter((m) => ['linestring'].includes(m));\n\n\t\tif (lineModes && lineModes.length > 0) {\n\t\t\t// add GeoJSON source for distance label\n\t\t\tif (\n\t\t\t\t!this.map.getSource(\n\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthis.map.addSource(\n\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'geojson',\n\t\t\t\t\t\tdata: { type: 'FeatureCollection', features: [] }\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// add GeoJSON layer for distance label node appearance\n\t\t\tif (\n\t\t\t\t!this.map.getLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id)\n\t\t\t) {\n\t\t\t\tthis.map.addLayer(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification);\n\t\t\t}\n\n\t\t\t// add GeoJSON layer for distance label appearance\n\t\t\tif (\n\t\t\t\t!this.map.getLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id)\n\t\t\t) {\n\t\t\t\tthis.map.addLayer(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification);\n\t\t\t}\n\t\t}\n\n\t\tconst polygonModes = this.options.modes?.filter((m) =>\n\t\t\t[\n\t\t\t\t'polygon',\n\t\t\t\t'rectangle',\n\t\t\t\t'angled-rectangle',\n\t\t\t\t'circle',\n\t\t\t\t'sector',\n\t\t\t\t'sensor',\n\t\t\t\t'freehand'\n\t\t\t].includes(m)\n\t\t);\n\t\tif (polygonModes && polygonModes.length > 0) {\n\t\t\t// add GeoJSON source for distance label\n\t\t\tif (\n\t\t\t\t!this.map.getSource(\n\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthis.map.addSource(\n\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'geojson',\n\t\t\t\t\t\tdata: { type: 'FeatureCollection', features: [] }\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} // add GeoJSON layer for polygon area label appearance\n\t\t\tif (\n\t\t\t\t!this.map.getLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id)\n\t\t\t) {\n\t\t\t\tthis.map.addLayer(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification);\n\t\t\t}\n\t\t}\n\n\t\tif ((lineModes && lineModes.length > 0) || (polygonModes && polygonModes.length > 0)) {\n\t\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\t\tif (drawInstance) {\n\t\t\t\t// subscribe change event of TerraDraw to calc distance\n\t\t\t\tdrawInstance.on('change', this.handleTerradrawFeatureChanged.bind(this));\n\n\t\t\t\t// subscribe feature-deleted event for the plugin control\n\t\t\t\tthis.on('feature-deleted', this.onFeatureDeleted.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Handle change event of TerraDraw\n\t * @param ids Feature IDs\n\t */\n\tprivate handleTerradrawFeatureChanged(ids: string[]) {\n\t\tif (!this.map) return;\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (!drawInstance) return;\n\t\tconst snapshot = drawInstance.getSnapshot();\n\t\tfor (const id of ids) {\n\t\t\tconst feature = snapshot.find((f) => f.id === id);\n\t\t\tif (feature) {\n\t\t\t\tconst geometryType = feature.geometry.type;\n\t\t\t\tconst mode = feature.properties.mode as TerradrawMode;\n\t\t\t\tif (mode === 'linestring' && geometryType === 'LineString') {\n\t\t\t\t\tthis.measureLine(id);\n\t\t\t\t} else if (\n\t\t\t\t\t!['point', 'linestring', 'select', 'render'].includes(mode) &&\n\t\t\t\t\tgeometryType === 'Polygon'\n\t\t\t\t) {\n\t\t\t\t\tthis.measurePolygon(id);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// if editing ID does not exist, delete all related features from measure layers\n\t\t\t\tthis.clearMeasureFeatures(\n\t\t\t\t\tid,\n\t\t\t\t\t(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).source\n\t\t\t\t);\n\t\t\t\tthis.clearMeasureFeatures(\n\t\t\t\t\tid,\n\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t\t);\n\t\t\t\tthis.clearMeasureFeatures(\n\t\t\t\t\tid,\n\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Unregister measure control related maplibre sources and layers\n\t */\n\tprivate unregisterMesureControl() {\n\t\tthis.off('feature-deleted', this.onFeatureDeleted.bind(this));\n\t\tif (!this.map) return;\n\t\tif (\n\t\t\tthis.map.getLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id)\n\t\t) {\n\t\t\tthis.map.removeLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id);\n\t\t}\n\t\tif (this.map.getLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id)) {\n\t\t\tthis.map.removeLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id);\n\t\t}\n\t\tif (this.map.getLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id)) {\n\t\t\tthis.map.removeLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id);\n\t\t}\n\t\tif (\n\t\t\tthis.map.getSource(\n\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t)\n\t\t) {\n\t\t\tthis.map.removeSource(\n\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tthis.map.getSource((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source)\n\t\t) {\n\t\t\tthis.map.removeSource(\n\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Clear GeoJSON feature related to measure control by TerraDraw feature ID\n\t * @param id feature ID\n\t * @param sourceId source ID to delete\n\t * @returns void\n\t */\n\tprivate clearMeasureFeatures(id: string, sourceId: string) {\n\t\tif (!this.map) return;\n\t\tconst geojsonSource: GeoJSONSourceSpecification = this.map.getStyle().sources[\n\t\t\tsourceId\n\t\t] as GeoJSONSourceSpecification;\n\t\tif (geojsonSource) {\n\t\t\t// delete old nodes\n\t\t\tif (\n\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t) {\n\t\t\t\tgeojsonSource.data.features = geojsonSource.data.features.filter(\n\t\t\t\t\t(f) => f.properties?.originalId !== id\n\t\t\t\t);\n\n\t\t\t\t// update GeoJSON source with new data\n\t\t\t\t(this.map.getSource(sourceId) as GeoJSONSource)?.setData(geojsonSource.data);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calculate area from polygon feature\n\t * @param feature Polygon GeoJSON feature\n\t * @returns The returning feature will contain `area`,`unit` properties.\n\t */\n\tprivate calcArea(feature: GeoJSONStoreFeatures) {\n\t\tif (feature.geometry.type !== 'Polygon') return feature;\n\t\t// caculate area in m2 by using turf/area\n\t\tconst result = area(feature.geometry);\n\n\t\t// convert unit to ha or km2 if value is larger\n\t\tlet outputArea = result;\n\t\tlet outputUnit = 'm²';\n\n\t\tif (this.areaUnit === 'metric') {\n\t\t\tif (result >= 1000000) {\n\t\t\t\t// 1 km² = 1,000,000 m²\n\t\t\t\toutputArea = result / 1000000;\n\t\t\t\toutputUnit = 'km²';\n\t\t\t} else if (result >= 10000) {\n\t\t\t\t// 1 ha = 10,000 m²\n\t\t\t\toutputArea = result / 10000;\n\t\t\t\toutputUnit = 'ha';\n\t\t\t}\n\t\t} else {\n\t\t\tif (result >= 2589988.11) {\n\t\t\t\t// 1 mi² = 2,589,988.11 m²\n\t\t\t\toutputArea = result / 2589988.11;\n\t\t\t\toutputUnit = 'mi²';\n\t\t\t} else if (result >= 4046.856) {\n\t\t\t\t// 1 acre = 4,046.856 m²\n\t\t\t\toutputArea = result / 4046.856;\n\t\t\t\toutputUnit = 'acre';\n\t\t\t} else if (result >= 0.83612736) {\n\t\t\t\t// 1 yd² = 0.83612736 m²\n\t\t\t\toutputArea = result / 0.83612736;\n\t\t\t\toutputUnit = 'yd²';\n\t\t\t}\n\t\t}\n\n\t\toutputArea = parseFloat(outputArea.toFixed(this.areaPrecision));\n\n\t\tfeature.properties.area = outputArea;\n\t\tfeature.properties.unit = outputUnit;\n\n\t\treturn feature;\n\t}\n\n\t/**\n\t * Get the equivalent unit name for displaying\n\t * @param distanceUnit distance unit\n\t * @returns Unit name for displaying\n\t */\n\tprivate getDistanceUnitName(distanceUnit: DistanceUnit) {\n\t\tif (distanceUnit === 'degrees') {\n\t\t\treturn '°';\n\t\t} else if (distanceUnit === 'miles') {\n\t\t\treturn 'mi';\n\t\t} else if (distanceUnit === 'radians') {\n\t\t\treturn 'rad';\n\t\t} else {\n\t\t\treturn 'km';\n\t\t}\n\t}\n\n\t/**\n\t * Caclulate distance for each segment on a given feature\n\t * @param feature LineString GeoJSON feature\n\t * @returns The returning feature will contain `segments`, `distance`, `unit` properties. `segments` will have multiple point features.\n\t */\n\tprivate calcDistance(feature: GeoJSONStoreFeatures) {\n\t\tif (feature.geometry.type !== 'LineString') return feature;\n\t\tconst coordinates: number[][] = (feature as GeoJSONStoreFeatures).geometry\n\t\t\t.coordinates as number[][];\n\n\t\t// calculate distance for each segment of LineString feature\n\t\tlet totalDistance = 0;\n\t\tconst segments: GeoJSONStoreFeatures[] = [];\n\t\tfor (let i = 0; i < coordinates.length - 1; i++) {\n\t\t\tconst start = coordinates[i];\n\t\t\tconst end = coordinates[i + 1];\n\t\t\tconst result = distance(start, end, { units: this.distanceUnit });\n\t\t\ttotalDistance += result;\n\n\t\t\t// segment\n\t\t\tconst segment = JSON.parse(JSON.stringify(feature));\n\t\t\tsegment.id = `${segment.id}-${i}`;\n\t\t\tsegment.geometry.coordinates = [start, end];\n\t\t\tsegment.properties.originalId = feature.id;\n\t\t\tsegment.properties.distance = parseFloat(result.toFixed(this.distancePrecision));\n\t\t\tsegment.properties.total = parseFloat(totalDistance.toFixed(this.distancePrecision));\n\t\t\tsegment.properties.unit = this.getDistanceUnitName(this.distanceUnit);\n\n\t\t\tif (this.measureOptions.computeElevation === true) {\n\t\t\t\tconst elevation_start = this.map?.queryTerrainElevation(start as LngLatLike);\n\t\t\t\tif (elevation_start) {\n\t\t\t\t\tsegment.properties.elevation_start = elevation_start;\n\t\t\t\t}\n\n\t\t\t\tconst elevation_end = this.map?.queryTerrainElevation(end as LngLatLike);\n\t\t\t\tif (elevation_end) {\n\t\t\t\t\tsegment.properties.elevation_end = elevation_end;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegments.push(segment);\n\t\t}\n\n\t\tfeature.properties.distance = segments[segments.length - 1].properties.total;\n\t\tfeature.properties.unit = segments[segments.length - 1].properties.unit;\n\t\tfeature.properties.segments = JSON.parse(JSON.stringify(segments));\n\n\t\treturn feature;\n\t}\n\n\t/**\n\t * measure polygon area for given feature ID\n\t * @param id terradraw feature id\n\t */\n\tprivate measurePolygon(id: string) {\n\t\tif (!this.map) return;\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (!drawInstance) return;\n\n\t\tconst snapshot = drawInstance.getSnapshot();\n\t\tlet feature = snapshot?.find((f) => f.id === id && f.geometry.type === 'Polygon');\n\t\tif (feature) {\n\t\t\tconst geojsonSource: GeoJSONSourceSpecification = this.map.getStyle().sources[\n\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t] as GeoJSONSourceSpecification;\n\t\t\tif (geojsonSource) {\n\t\t\t\t// delete old nodes\n\t\t\t\tif (\n\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t) {\n\t\t\t\t\tgeojsonSource.data.features = geojsonSource.data.features.filter(\n\t\t\t\t\t\t(f) => f.properties?.originalId !== id\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst point = JSON.parse(JSON.stringify(feature));\n\t\t\t\tpoint.id = point.id + '-area-label';\n\t\t\t\tpoint.geometry = centroid(feature.geometry).geometry;\n\t\t\t\tpoint.properties.originalId = feature.id;\n\n\t\t\t\tfeature = this.calcArea(feature);\n\t\t\t\tpoint.properties.area = feature.properties.area;\n\t\t\t\tpoint.properties.unit = feature.properties.unit;\n\n\t\t\t\tif (\n\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t) {\n\t\t\t\t\tgeojsonSource.data.features.push(point);\n\t\t\t\t}\n\t\t\t\t// update GeoJSON source with new data\n\t\t\t\t(\n\t\t\t\t\tthis.map.getSource(\n\t\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t\t) as GeoJSONSource\n\t\t\t\t)?.setData(geojsonSource.data);\n\n\t\t\t\tthis.map.moveLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id);\n\n\t\t\t\tif (\n\t\t\t\t\tthis.map.getLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id)\n\t\t\t\t) {\n\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.map.getLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id)\n\t\t\t\t) {\n\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * measure line distance for given feature ID\n\t * @param id terradraw feature id\n\t */\n\tprivate measureLine(id: string) {\n\t\tif (!this.map) return;\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (!drawInstance) return;\n\n\t\tconst snapshot = drawInstance.getSnapshot();\n\t\tlet feature = snapshot?.find((f) => f.id === id && f.geometry.type === 'LineString');\n\t\tif (feature) {\n\t\t\tconst geojsonSource: GeoJSONSourceSpecification = this.map.getStyle().sources[\n\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t] as GeoJSONSourceSpecification;\n\t\t\tif (geojsonSource) {\n\t\t\t\t// delete old nodes\n\t\t\t\tif (\n\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t) {\n\t\t\t\t\tgeojsonSource.data.features = geojsonSource.data.features.filter(\n\t\t\t\t\t\t(f) => f.properties?.originalId !== id\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfeature = this.calcDistance(feature);\n\t\t\t\tconst segments = feature.properties.segments as unknown as GeoJSONStoreFeatures[];\n\t\t\t\tfor (let i = 0; i < segments.length; i++) {\n\t\t\t\t\tconst segment = segments[i];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t\t) {\n\t\t\t\t\t\tgeojsonSource.data.features.push(segment);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst coordinates: number[][] = segment.geometry.coordinates as number[][];\n\t\t\t\t\tconst start = coordinates[0];\n\t\t\t\t\tconst end = coordinates[1];\n\n\t\t\t\t\t// node\n\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\tconst startNode = JSON.parse(JSON.stringify(segment));\n\t\t\t\t\t\tstartNode.id = `${segment.id}-node-${i}`;\n\t\t\t\t\t\tstartNode.geometry = {\n\t\t\t\t\t\t\ttype: 'Point',\n\t\t\t\t\t\t\tcoordinates: start\n\t\t\t\t\t\t};\n\t\t\t\t\t\tstartNode.properties.distance = 0;\n\t\t\t\t\t\tstartNode.properties.total = 0;\n\n\t\t\t\t\t\tif (segment.properties.elevation_start) {\n\t\t\t\t\t\t\tstartNode.properties.elevation = segment.properties.elevation_start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tgeojsonSource.data.features.push(startNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst endNode = JSON.parse(JSON.stringify(segment));\n\t\t\t\t\tendNode.id = `${segment.id}-node-${i + 1}`;\n\t\t\t\t\tendNode.geometry = {\n\t\t\t\t\t\ttype: 'Point',\n\t\t\t\t\t\tcoordinates: end\n\t\t\t\t\t};\n\n\t\t\t\t\tif (segment.properties.elevation_end) {\n\t\t\t\t\t\tendNode.properties.elevation = segment.properties.elevation_end;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t\t) {\n\t\t\t\t\t\tgeojsonSource.data.features.push(endNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// update GeoJSON source with new data\n\t\t\t\t(\n\t\t\t\t\tthis.map.getSource(\n\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t\t\t) as GeoJSONSource\n\t\t\t\t)?.setData(geojsonSource.data);\n\n\t\t\t\tif (\n\t\t\t\t\tthis.map.getLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id)\n\t\t\t\t) {\n\t\t\t\t\tthis.map.moveLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id);\n\t\t\t\t}\n\n\t\t\t\tthis.map.moveLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id);\n\t\t\t\tthis.map.moveLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Event definition when feature is deleted by terradraw\n\t */\n\tprivate onFeatureDeleted() {\n\t\tif (!this.map) return;\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (drawInstance) {\n\t\t\tconst sourceIds = [\n\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source,\n\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t];\n\t\t\tfor (const src of sourceIds) {\n\t\t\t\tconst geojsonSource: GeoJSONSourceSpecification = this.map.getStyle().sources[\n\t\t\t\t\tsrc\n\t\t\t\t] as GeoJSONSourceSpecification;\n\t\t\t\tif (geojsonSource) {\n\t\t\t\t\t// get IDs in current TerraDraw snapshot\n\t\t\t\t\tconst snapshot = drawInstance.getSnapshot();\n\t\t\t\t\tconst features = snapshot?.filter((feature) =>\n\t\t\t\t\t\t['LineString', 'Polygon'].includes(feature.geometry.type)\n\t\t\t\t\t);\n\t\t\t\t\tconst ids: string[] = features.map((f) => f.id as string);\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Delete label features if originalId does not exist anymore.\n\t\t\t\t\t\tgeojsonSource.data.features = geojsonSource.data.features.filter((f) =>\n\t\t\t\t\t\t\tids.includes(f.properties?.originalId)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (src === (this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source) {\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tthis.map.getSource(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t\t\t\t\t) as GeoJSONSource\n\t\t\t\t\t\t)?.setData(geojsonSource.data);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis.map.getLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis.map.getLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tsrc === (this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t\t) {\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tthis.map.getSource(\n\t\t\t\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t\t\t\t) as GeoJSONSource\n\t\t\t\t\t\t)?.setData(geojsonSource.data);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis.map.getLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id\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\t/**\n\t * Calculate area / distance and update a feature properties\n\t * @param feature GeoJSON feature\n\t * @returns updated GeoJSON feature\n\t */\n\tprivate updateFeatureProperties = (feature: GeoJSONStoreFeatures) => {\n\t\tif (!this.map) return feature;\n\t\tif (!this.map.loaded()) return feature;\n\t\tconst geomType = feature.geometry.type;\n\t\tif (geomType === 'LineString') {\n\t\t\tfeature = this.calcDistance(feature);\n\t\t} else if (geomType === 'Polygon') {\n\t\t\tfeature = this.calcArea(feature);\n\t\t}\n\n\t\treturn feature;\n\t};\n\n\t/**\n\t * get GeoJSON features\n\t * @param onlySelected If true, returns only selected features. Default is false.\n\t * @returns FeatureCollection in GeoJSON format\n\t */\n\tpublic getFeatures(onlySelected = false) {\n\t\tconst fc = super.getFeatures(onlySelected);\n\t\tif (!fc) return fc;\n\t\tif (!this.terradraw) return fc;\n\n\t\tfor (let i = 0; i < fc.features.length; i++) {\n\t\t\tfc.features[i] = this.updateFeatureProperties(fc.features[i]);\n\t\t}\n\t\treturn fc;\n\t}\n}\n"],"names":["t","i","o","e","s","n","r","l","h","d","c","u","g","p","y","m","f","v","C","P","M","I","S","E","a","D","F","w","_","b","k","O","j","W","B","N","V","L","G","T","U","A","K","X","z","R","Y","H","q","$","Z","Q","tt","et","it","ot","st","nt","rt","at","lt","ht","dt","x","ct","ut","gt","pt","yt","mt","ft","vt","Ct","Pt","xt","Mt","It","St","Et","Dt","Ft","wt","_t","bt","kt","Ot","jt","Wt","Bt","Nt","Vt","Lt","Gt","Ht","Tt","Ut","At","Kt","Xt","zt","Rt","Yt","qt","$t","Jt","Qt","ae","le","he","de","ce","ue","ge","pe","ve","AvailableModes","AvailableMeasureModes","defaultControlOptions","defaultMeasureControlOptions","TerraDrawLineStringMode","TerraDrawPolygonMode","TerraDrawRectangleMode","TerraDrawAngledRectangleMode","TerraDrawCircleMode","TerraDrawFreehandMode","TerraDrawSensorMode","TerraDrawSectorMode","getDefaultModeOptions","TerraDrawRenderMode","TerraDrawPointMode","feature","updateType","ValidateNotSelfIntersecting","TerraDrawSelectMode","MaplibreTerradrawControl","options","__publicField","map","_a","_b","_c","_d","_e","defaultOptions","modes","newOption","defaultOption","flags","key","TerraDraw","TerraDrawMapLibreGLAdapter","ele","event","callback","index","snapshot","currentFeature","controls","item","addButton","mode","btn","selected","currentMode","ids","isActive","onlySelected","fc","dataStr","download","targets","className","btns","enabled","hasFeatures","value","earthRadius","factors","geom","properties","feat","point","coordinates","isNumber","radiansToLength","radians","units","factor","degreesToRadians","degrees","num","getCoord","coord","distance","from","to","coordinates1","coordinates2","dLat","dLon","lat1","lat2","coordEach","geojson","excludeWrapCoord","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","type","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","geomEach","featureProperties","featureBBox","featureId","geomReduce","initialValue","previousValue","currentGeometry","area","calculateArea","total","polygonArea","ringArea","FACTOR","PI_OVER_180","coordsLength","lower","middle","upper","lowerX","middleY","upperX","centroid","xSum","ySum","len","MaplibreMeasureControl","measureOptions","isSame","drawInstance","id","geometryType","lineModes","polygonModes","sourceId","geojsonSource","result","outputArea","outputUnit","distanceUnit","totalDistance","segments","start","end","segment","elevation_start","elevation_end","startNode","endNode","sourceIds","src"],"mappings":"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","x_google_ignoreList":[0,1,8,9,10,11,12,13]}
1
+ {"version":3,"file":"maplibre-gl-terradraw.es.js","sources":["../node_modules/.pnpm/terra-draw@1.0.0/node_modules/terra-draw/dist/terra-draw.modern.js","../node_modules/.pnpm/terra-draw-maplibre-gl-adapter@1.0.1_maplibre-gl@5.1.0_terra-draw@1.0.0/node_modules/terra-draw-maplibre-gl-adapter/dist/terra-draw-maplibre-gl-adapter.modern.js","../src/lib/constants/AvailableModes.ts","../src/lib/constants/AvailableMeasureModes.ts","../src/lib/constants/defaultControlOptions.ts","../src/lib/constants/defaultMeasureControlOptions.ts","../src/lib/constants/getDefaultModeOptions.ts","../src/lib/controls/MaplibreTerradrawControl.ts","../node_modules/.pnpm/@turf+helpers@7.2.0/node_modules/@turf/helpers/dist/esm/index.js","../node_modules/.pnpm/@turf+invariant@7.2.0/node_modules/@turf/invariant/dist/esm/index.js","../node_modules/.pnpm/@turf+distance@7.2.0/node_modules/@turf/distance/dist/esm/index.js","../node_modules/.pnpm/@turf+meta@7.2.0/node_modules/@turf/meta/dist/esm/index.js","../node_modules/.pnpm/@turf+area@7.2.0/node_modules/@turf/area/dist/esm/index.js","../node_modules/.pnpm/@turf+centroid@7.2.0/node_modules/@turf/centroid/dist/esm/index.js","../src/lib/controls/MaplibreMeasureControl.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)({}).hasOwnProperty.call(i,o)&&(t[o]=i[o])}return t},t.apply(null,arguments)}var e;!function(t){t.Commit=\"commit\",t.Provisional=\"provisional\",t.Finish=\"finish\"}(e||(e={}));const i={SELECTED:\"selected\",MID_POINT:\"midPoint\",SELECTION_POINT:\"selectionPoint\"},o=\"closingPoint\",s=\"snappingPoint\";function n(t){return Boolean(t&&\"object\"==typeof t&&null!==t&&!Array.isArray(t))}function r(t){return!!function(t){return\"number\"==typeof t&&!isNaN(new Date(t).valueOf())}(t)}const a=\"Feature is not a Polygon\",l=\"Feature mode property does not match the mode being added to\";var h;!function(t){t.Drawing=\"drawing\",t.Select=\"select\",t.Static=\"static\",t.Render=\"render\"}(h||(h={}));class d{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=h.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){return this.performFeatureValidation(t)}performFeatureValidation(t){if(\"unregistered\"===this._state)throw new Error(\"Mode must be registered\");const i=function(t,e){let i;if(n(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(n(t.geometry))if(n(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)return{valid:!1,reason:\"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\";return i?{valid:!1,reason:i}:{valid:!0}}(t,this.store.idStrategy.isValidId);if(this.validate){const o=this.validate(t,{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Provisional});return{valid:i.valid&&o.valid,reason:o.reason}}return{valid:i.valid,reason:i.reason}}validateModeFeature(t,e){const i=this.performFeatureValidation(t);return i.valid?t.properties.mode!==this.mode?{valid:!1,reason:l}:e(t):{valid:!1,reason:i.reason}}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 c extends d{constructor(...t){super(...t),this.type=h.Select}}function u(t,e){const i=t=>t*Math.PI/180,o=i(t[1]),s=i(t[0]),n=i(e[1]),r=n-o,a=i(e[0])-s,l=Math.sin(r/2)*Math.sin(r/2)+Math.cos(o)*Math.cos(n)*Math.sin(a/2)*Math.sin(a/2);return 2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))*6371e3/1e3}const g=6371008.8;function p(t){return t%360*Math.PI/180}function y(t){return t/6371.0088}function m(t){return t%(2*Math.PI)*180/Math.PI}function f(t,e=9){const i=Math.pow(10,e);return Math.round(t*i)/i}const v=57.29577951308232,C=.017453292519943295,P=6378137,x=(t,e)=>({x:0===t?0:t*C*P,y:0===e?0:Math.log(Math.tan(Math.PI/4+e*C/2))*P}),M=(t,e)=>({lng:0===t?0:v*(t/P),lat:0===e?0:(2*Math.atan(Math.exp(e/P))-Math.PI/2)*v});function I(t,e,i){const o=p(t[0]),s=p(t[1]),n=p(i),r=y(e),a=Math.asin(Math.sin(s)*Math.cos(r)+Math.cos(s)*Math.sin(r)*Math.cos(n));return[m(o+Math.atan2(Math.sin(n)*Math.sin(r)*Math.cos(s),Math.cos(r)-Math.sin(s)*Math.sin(a))),m(a)]}function S(t){const{center:e,radiusKilometers:i,coordinatePrecision:o}=t,s=t.steps?t.steps:64,n=[];for(let t=0;t<s;t++){const r=I(e,i,-360*t/s);n.push([f(r[0],o),f(r[1],o)])}return n.push(n[0]),{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:[n]},properties:{}}}function E(t){let e;if(\"Polygon\"===t.geometry.type)e=t.geometry.coordinates;else{if(\"LineString\"!==t.geometry.type)throw new Error(\"Self intersects only accepts Polygons and LineStrings\");e=[t.geometry.coordinates]}const i=[];for(let t=0;t<e.length;t++)for(let i=0;i<e[t].length-1;i++)for(let o=0;o<e.length;o++)for(let n=0;n<e[o].length-1;n++)s(t,i,o,n);return i.length>0;function o(t){return t<0||t>1}function s(t,s,n,r){const a=e[t][s],l=e[t][s+1],h=e[n][r],d=e[n][r+1],c=function(t,e,i,o){if(D(t,i)||D(t,o)||D(e,i)||D(o,i))return null;const s=t[0],n=t[1],r=e[0],a=e[1],l=i[0],h=i[1],d=o[0],c=o[1],u=(s-r)*(h-c)-(n-a)*(l-d);return 0===u?null:[((s*a-n*r)*(l-d)-(s-r)*(l*c-h*d))/u,((s*a-n*r)*(h-c)-(n-a)*(l*c-h*d))/u]}(a,l,h,d);if(null===c)return;let u,g;u=l[0]!==a[0]?(c[0]-a[0])/(l[0]-a[0]):(c[1]-a[1])/(l[1]-a[1]),g=d[0]!==h[0]?(c[0]-h[0])/(d[0]-h[0]):(c[1]-h[1])/(d[1]-h[1]),o(u)||o(g)||(c.toString(),i.push(c))}}function D(t,e){return t[0]===e[0]&&t[1]===e[1]}function F(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&&w(t[0])<=e&&w(t[1])<=e;var i,o}function w(t){let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}const _=\"Feature has holes\",b=\"Feature has less than 4 coordinates\",k=\"Feature has invalid coordinates\",O=\"Feature coordinates are not closed\";function j(t,e){return\"Polygon\"!==t.geometry.type?{valid:!1,reason:\"Feature is not a Polygon\"}:1!==t.geometry.coordinates.length?{valid:!1,reason:_}:t.geometry.coordinates[0].length<4?{valid:!1,reason:b}:t.geometry.coordinates[0].every(t=>F(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]?{valid:!1,reason:O}:{valid:!0}:{valid:!1,reason:k};var i,o}function W(t,e){const i=j(t,e);return i.valid?E(t)?{valid:!1,reason:\"Feature intersects itself\"}:{valid:!0}:i}class B extends d{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,this.cursorMovedAfterInitialCursorDown=!1;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 i=this.store.getGeometryCopy(t);if(!this.validate({type:\"Feature\",id:t,geometry:i,properties:{}},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Finish}).valid)return}this.cursorMovedAfterInitialCursorDown=!1,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=S({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.cursorMovedAfterInitialCursorDown=!1,this.setDrawing()}else 1===this.clickCount&&this.center&&void 0!==this.currentCircleId&&this.cursorMovedAfterInitialCursorDown&&this.updateCircle(t),this.close()}onMouseMove(t){this.cursorMovedAfterInitialCursorDown=!0,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 this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}updateCircle(t){if(1===this.clickCount&&this.center&&this.currentCircleId){const i=u(this.center,[t.lng,t.lat]);let o;if(\"web-mercator\"===this.projection){const e=function(t,e){const i=1e3*u(t,e);if(0===i)return 1;const{x:o,y:s}=x(t[0],t[1]),{x:n,y:r}=x(e[0],e[1]);return Math.sqrt(Math.pow(n-o,2)+Math.pow(r-s,2))/i}(this.center,[t.lng,t.lat]);o=function(t){const{center:e,radiusKilometers:i,coordinatePrecision:o}=t,s=t.steps?t.steps:64,n=1e3*i,[r,a]=e,{x:l,y:h}=x(r,a),d=[];for(let t=0;t<s;t++){const e=360*t/s*Math.PI/180,i=n*Math.cos(e),r=n*Math.sin(e),[a,c]=[l+i,h+r],{lng:u,lat:g}=M(a,c);d.push([f(u,o),f(g,o)])}return d.push(d[0]),{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:[d]},properties:{}}}({center:this.center,radiusKilometers:i*e,coordinatePrecision:this.coordinatePrecision})}else{if(\"globe\"!==this.projection)throw new Error(\"Invalid projection\");o=S({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:e.Provisional}).valid)return;this.store.updateGeometry([{id:this.currentCircleId,geometry:o.geometry}]),this.store.updateProperty([{id:this.currentCircleId,property:\"radiusKilometers\",value:i}])}}}const N=(t,e)=>{const{x:i,y:o}=t,{x:s,y:n}=e,r=s-i,a=n-o;return Math.sqrt(a*a+r*r)};class V extends d{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,this.autoClose=void 0,this.autoCloseTimeout=500,this.hasLeftStartingPoint=!1,this.preventNewFeature=!1;const i={start:\"crosshair\",close:\"pointer\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,this.preventPointsNearClose=e&&e.preventPointsNearClose||!0,e&&e.autoCloseTimeout&&!e.autoClose)throw new Error(\"autoCloseTimeout is set, but autoClose is not enabled\");if(this.autoClose=e&&e.autoClose||!1,this.autoCloseTimeout=e&&e.autoCloseTimeout||500,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 i=this.store.getGeometryCopy(t);if(!this.validate({type:\"Feature\",id:t,geometry:i,properties:{}},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Finish}).valid)return}this.closingPointId&&this.store.delete([this.closingPointId]),this.startingClick=!1,this.currentId=void 0,this.closingPointId=void 0,this.hasLeftStartingPoint=!1,\"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 i=this.store.getGeometryCopy(this.currentId),o=i.coordinates[0].length-2,[s,n]=i.coordinates[0][o],{x:r,y:a}=this.project(s,n),l=N({x:r,y:a},{x:t.containerX,y:t.containerY}),[h,d]=i.coordinates[0][0],{x:c,y:u}=this.project(h,d);if(N({x:c,y:u},{x:t.containerX,y:t.containerY})<this.pointerDistance){if(this.autoClose&&this.hasLeftStartingPoint&&(this.preventNewFeature=!0,setTimeout(()=>{this.preventNewFeature=!1},this.autoCloseTimeout),this.close()),this.setCursor(this.cursors.close),this.preventPointsNearClose)return}else this.hasLeftStartingPoint=!0,this.setCursor(this.cursors.start);if(l<this.minDistance)return;i.coordinates[0].pop();const g={type:\"Polygon\",coordinates:[[...i.coordinates[0],[t.lng,t.lat],i.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:e.Provisional}).valid||this.store.updateGeometry([{id:this.currentId,geometry:g}])}onClick(t){if(!this.preventNewFeature){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,[o]:!0}}]);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 this.validateModeFeature(t,t=>j(t,this.coordinatePrecision))}}class L{constructor({store:t,mode:e,project:i,unproject:o,pointerDistance:s,coordinatePrecision:n,projection:r}){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=n,this.projection=r}}function G({unproject:t,point:e,pointerDistance:i}){const o=i/2,{x:s,y:n}=e;return{type:\"Feature\",properties:{},geometry:{type:\"Polygon\",coordinates:[[t(s-o,n-o),t(s+o,n-o),t(s+o,n+o),t(s-o,n+o),t(s-o,n-o)].map(t=>[t.lng,t.lat])]}}}class T extends L{constructor(t){super(t)}create(t){const{containerX:e,containerY:i}=t;return G({unproject:this.unproject,point:{x:e,y:i},pointerDistance:this.pointerDistance})}}class U extends L{constructor(t){super(t)}measure(t,e){const{x:i,y:o}=this.project(e[0],e[1]);return N({x:i,y:o},{x:t.containerX,y:t.containerY})}}class A extends L{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 K(t,e,i){const o=p(t[0]),s=p(t[1]),n=p(i),r=y(e),a=Math.asin(Math.sin(s)*Math.cos(r)+Math.cos(s)*Math.sin(r)*Math.cos(n));return[m(o+Math.atan2(Math.sin(n)*Math.sin(r)*Math.cos(s),Math.cos(r)-Math.sin(s)*Math.sin(a))),m(a)]}function X({x:t,y:e},i,o){const s=p(o);return{x:t+i*Math.cos(s),y:e+i*Math.sin(s)}}function z(t,e){const i=p(t[0]),o=p(e[0]),s=p(t[1]),n=p(e[1]),r=Math.sin(o-i)*Math.cos(n),a=Math.cos(s)*Math.sin(n)-Math.sin(s)*Math.cos(n)*Math.cos(o-i);return m(Math.atan2(r,a))}function R({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 Y(t){return(t+360)%360}function H(t,e,i){const o=[],s=t.length;let n,r,a,l=0;for(let s=0;s<t.length&&!(e>=l&&s===t.length-1);s++){if(l>e&&0===o.length){if(n=e-l,!n)return o.push(t[s]),o;r=z(t[s],t[s-1])-180,a=K(t[s],n,r),o.push(a)}if(l>=i)return n=i-l,n?(r=z(t[s],t[s-1])-180,a=K(t[s],n,r),o.push(a),o):(o.push(t[s]),o);if(l>=e&&o.push(t[s]),s===t.length-1)return o;l+=u(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 q(t){return t*(Math.PI/180)}function $(t){return t*(180/Math.PI)}class Z extends L{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+=u(o[0],o[1]);if(s<=i)return o;let n=s/i-1;Number.isInteger(n)||(n=Math.floor(n)+1);const r=[];for(let t=0;t<n;t++){const e=H(o,i*t,i*(t+1));r.push(e)}const a=[];for(let t=0;t<r.length;t++)a.push(r[t][1]);return this.limitCoordinates(a)}generateInsertionGeodesicCoordinates(t,e,i){const o=u(t,e),s=function(t,e,i){const o=[],s=q(t[1]),n=q(t[0]),r=q(e[1]),a=q(e[0]);i+=1;const l=2*Math.asin(Math.sqrt(Math.sin((r-s)/2)**2+Math.cos(s)*Math.cos(r)*Math.sin((a-n)/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),d=Math.sin(e*l)/Math.sin(l),c=h*Math.cos(s)*Math.cos(n)+d*Math.cos(r)*Math.cos(a),u=h*Math.cos(s)*Math.sin(n)+d*Math.cos(r)*Math.sin(a),g=h*Math.sin(s)+d*Math.sin(r);if(isNaN(c)||isNaN(u)||isNaN(g))continue;const p=Math.atan2(g,Math.sqrt(c**2+u**2)),y=Math.atan2(u,c);isNaN(p)||isNaN(y)||o.push([$(y),$(p)])}return o.slice(1,-1)}(t,e,Math.floor(o/i));return this.limitCoordinates(s)}limitCoordinates(t){return t.map(t=>[f(t[0],this.config.coordinatePrecision),f(t[1],this.config.coordinatePrecision)])}}function J(t,e){return t[0]===e[0]&&t[1]===e[1]}function Q(t,e){return\"LineString\"!==t.geometry.type?{valid:!1,reason:\"Feature is not a LineString\"}:t.geometry.coordinates.length<2?{valid:!1,reason:\"Feature has less than 2 coordinates\"}:t.geometry.coordinates.every(t=>F(t,e))?{valid:!0}:{valid:!1,reason:\"Feature has invalid coordinates\"}}class tt extends d{constructor(e){super(e),this.mode=\"linestring\",this.currentCoordinate=0,this.currentId=void 0,this.closingPointId=void 0,this.keyEvents=void 0,this.snapping=void 0,this.cursors=void 0,this.mouseMove=!1,this.insertCoordinates=void 0,this.lastCommitedCoordinates=void 0,this.snappedPointId=void 0,this.coordinateSnapping=void 0,this.insertPoint=void 0;const i={start:\"crosshair\",close:\"pointer\"};if(this.cursors=e&&e.cursors?t({},i,e.cursors):i,this.snapping=e&&e.snapping?e.snapping:void 0,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,e.Commit);const i=this.currentId;this.closingPointId&&this.store.delete([this.closingPointId]),this.snappedPointId&&this.store.delete([this.snappedPointId]),this.currentCoordinate=0,this.currentId=void 0,this.closingPointId=void 0,this.snappedPointId=void 0,this.lastCommitedCoordinates=void 0,\"drawing\"===this.state&&this.setStarted(),this.onFinish(i,{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}).valid)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=u(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 i=this.store.getGeometryCopy(this.currentId).coordinates,[o]=this.store.create([{geometry:{type:\"Point\",coordinates:[...t]},properties:{mode:this.mode}}]);this.closingPointId=o,this.setCursor(this.cursors.close);const s=[...i,t];this.updateGeometries(s,void 0,e.Commit),this.currentCoordinate++}updateToLine(t,i){if(!this.currentId)return;const o=this.store.getGeometryCopy(this.currentId).coordinates,[s,n]=this.lastCommitedCoordinates?this.lastCommitedCoordinates[this.lastCommitedCoordinates.length-1]:o[o.length-2],{x:r,y:a}=this.project(s,n);if(N({x:r,y:a},{x:i.x,y:i.y})<this.pointerDistance)return void this.close();this.setCursor(this.cursors.close);const l=[...o,t];this.updateGeometries(l,o[o.length-1],e.Commit),this.currentCoordinate++}registerBehaviors(t){this.coordinateSnapping=new A(t,new U(t),new T(t)),this.insertPoint=new Z(t)}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onMouseMove(t){this.mouseMove=!0,this.setCursor(this.cursors.start);const i=this.snapCoordinate(t);if(i){if(this.snappedPointId)this.store.updateGeometry([{id:this.snappedPointId,geometry:{type:\"Point\",coordinates:i}}]);else{const[t]=this.store.create([{geometry:{type:\"Point\",coordinates:i},properties:{mode:this.mode,[s]:!0}}]);this.snappedPointId=t}t.lng=i[0],t.lat=i[1]}else this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0);const o=i||[t.lng,t.lat];if(void 0===this.currentId||0===this.currentCoordinate)return;const n=this.store.getGeometryCopy(this.currentId).coordinates;if(n.pop(),this.closingPointId){const[e,i]=n[n.length-1],{x:o,y:s}=this.project(e,i);N({x:o,y:s},{x:t.containerX,y:t.containerY})<this.pointerDistance&&this.setCursor(this.cursors.close)}let r=[...n,o];if(this.insertCoordinates&&this.currentId&&this.lastCommitedCoordinates){const t=this.lastCommitedCoordinates[this.lastCommitedCoordinates.length-1],e=o;if(!J(t,e)){const i=this.generateInsertCoordinates(t,e);r=[...this.lastCommitedCoordinates.slice(0,-1),...i,o]}}this.updateGeometries(r,void 0,e.Provisional)}onClick(t){this.currentCoordinate>0&&!this.mouseMove&&this.onMouseMove(t),this.mouseMove=!1,this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0);const e=this.snapCoordinate(t)||[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,e=this.closingPointId,i=this.snappedPointId;this.closingPointId=void 0,this.snappedPointId=void 0,this.currentId=void 0,this.currentCoordinate=0,\"drawing\"===this.state&&this.setStarted();try{void 0!==t&&this.store.delete([t]),void 0!==i&&this.store.delete([i]),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});if(\"Feature\"===e.type&&\"LineString\"===e.geometry.type&&e.properties.mode===this.mode)return i.lineStringColor=this.getHexColorStylingValue(this.styles.lineStringColor,i.lineStringColor,e),i.lineStringWidth=this.getNumericStylingValue(this.styles.lineStringWidth,i.lineStringWidth,e),i.zIndex=10,i;if(\"Feature\"===e.type&&\"Point\"===e.geometry.type&&e.properties.mode===this.mode){const t=e.properties[o];return i.pointColor=this.getHexColorStylingValue(t?this.styles.closingPointColor:this.styles.snappingPointColor,i.pointColor,e),i.pointWidth=this.getNumericStylingValue(t?this.styles.closingPointWidth:this.styles.snappingPointWidth,i.pointWidth,e),i.pointOutlineColor=this.getHexColorStylingValue(t?this.styles.closingPointOutlineColor:this.styles.snappingPointOutlineColor,\"#ffffff\",e),i.pointOutlineWidth=this.getNumericStylingValue(t?this.styles.closingPointOutlineWidth:this.styles.snappingPointOutlineWidth,2,e),i.zIndex=40,i}return i}validateFeature(t){return this.validateModeFeature(t,t=>Q(t,this.coordinatePrecision))}snapCoordinate(t){var e,i;let o;return null!=(e=this.snapping)&&e.toCoordinate&&(o=this.currentId?this.coordinateSnapping.getSnappableCoordinate(t,this.currentId):this.coordinateSnapping.getSnappableCoordinateFirstClick(t)),null!=(i=this.snapping)&&i.toCustom&&(o=this.snapping.toCustom(t)),o}}const et=\"Feature is not a Point\",it=\"Feature has invalid coordinates\";function ot(t,e){return\"Point\"!==t.geometry.type?{valid:!1,reason:et}:F(t.geometry.coordinates,e)?{valid:!0}:{valid:!1,reason:it}}class st extends d{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 i={type:\"Point\",coordinates:[t.lng,t.lat]},o={mode:this.mode};if(this.validate&&!this.validate({type:\"Feature\",geometry:i,properties:o},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Finish}).valid)return;const[s]=this.store.create([{geometry:i,properties:o}]);this.onFinish(s,{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 this.validateModeFeature(t,t=>ot(t,this.coordinatePrecision))}}class nt extends L{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,[o]:!0}},{geometry:{type:\"Point\",coordinates:t[t.length-2]},properties:{mode:e,[o]:!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}}}function rt(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2))}function at(t,e){const i=function(t,e){const[i,o,s]=t,[n,r,a]=e;return i*n+o*r+s*a}(t,e)/(rt(t)*rt(e));return Math.acos(Math.min(Math.max(i,-1),1))}function lt(t){const e=p(t[1]),i=p(t[0]);return[Math.cos(e)*Math.cos(i),Math.cos(e)*Math.sin(i),Math.sin(e)]}function ht(t){const[e,i,o]=t,s=m(Math.asin(o));return[m(Math.atan2(i,e)),s]}function dt(t,e,i){const o=lt(t),s=lt(e),n=lt(i),[r,a,l]=n,[h,d,c]=function(t,e){const[i,o,s]=t,[n,r,a]=e;return[o*a-s*r,s*n-i*a,i*r-o*n]}(o,s),g=d*l-c*a,p=c*r-h*l,y=h*a-d*r,m=y*d-p*c,f=g*c-y*h,v=p*h-g*d,C=1/Math.sqrt(Math.pow(m,2)+Math.pow(f,2)+Math.pow(v,2)),P=[m*C,f*C,v*C],x=[-1*m*C,-1*f*C,-1*v*C],M=at(o,s),I=at(o,P),S=at(s,P),E=at(o,x),D=at(s,x);let F;return F=I<E&&I<D||S<E&&S<D?P:x,at(o,F)>M||at(s,F)>M?u(ht(F),ht(o))<=u(ht(F),ht(s))?[ht(o),!0,!1]:[ht(s),!1,!0]:[ht(F),!1,!1]}function ct(t,e,i){const o=e.x-t.x,s=e.y-t.y,n=Math.max(0,Math.min(1,((i.x-t.x)*o+(i.y-t.y)*s)/(o*o+s*s)));return{x:t.x+n*o,y:t.y+n*s}}class ut extends L{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,minDistance: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}const o=[];for(let t=0;t<i.length-1;t++)o.push([i[t],i[t+1]]);let n;const r=[t.lng,t.lat];if(\"web-mercator\"===this.config.projection?n=function(t,e){let i=[Infinity,Infinity],o=Infinity;for(let s of e){const e=s[0],n=s[1];let r,a=Infinity;const l=x(e[0],e[1]),h=x(n[0],n[1]),d=x(t[0],t[1]);if(e[0]===t[0]&&e[1]===t[1])r=e;else if(n[0]===t[0]&&n[1]===t[1])r=n;else{const{x:t,y:e}=ct(l,h,d),{lng:i,lat:o}=M(t,e);r=[i,o]}r&&(a=N(d,x(r[0],r[1])),a<o&&(i=r,o=a))}return Infinity===o?void 0:{coordinate:i,distance:o}}(r,o):\"globe\"===this.config.projection&&(n=function(t,e){let i=[Infinity,Infinity],o=Infinity;for(let s of e){const e=s[0],n=s[1];let r,a=Infinity;e[0]===t[0]&&e[1]===t[1]?r=e:n[0]===t[0]&&n[1]===t[1]?r=n:[r]=dt(e,n,t),r&&(a=u(t,r),a<o&&(i=r,o=a))}return Infinity===o?void 0:{coordinate:i,distance:o}}(r,o)),!n)return;const a=this.pixelDistance.measure(t,n.coordinate);a<s.minDistance&&a<this.pointerDistance&&(s.coord=n.coordinate,s.minDistance=a)}),s.coord}}class gt extends d{constructor(e){super(e),this.mode=\"polygon\",this.currentCoordinate=0,this.currentId=void 0,this.keyEvents=void 0,this.snapping=void 0,this.snappedPointId=void 0,this.lineSnapping=void 0,this.coordinateSnapping=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.snapping=e&&e.snapping?e.snapping:void 0,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]],e.Finish))return;const i=this.currentId;this.snappedPointId&&this.store.delete([this.snappedPointId]),this.currentCoordinate=0,this.currentId=void 0,this.snappedPointId=void 0,this.closingPoints.delete(),\"drawing\"===this.state&&this.setStarted(),this.onFinish(i,{mode:this.mode,action:\"draw\"})}registerBehaviors(t){const e=new T(t);this.pixelDistance=new U(t),this.lineSnapping=new ut(t,this.pixelDistance,e),this.coordinateSnapping=new A(t,this.pixelDistance,e),this.closingPoints=new nt(t,this.pixelDistance)}start(){this.setStarted(),this.setCursor(this.cursors.start)}stop(){this.cleanUp(),this.setStopped(),this.setCursor(\"unset\")}onMouseMove(t){this.mouseMove=!0,this.setCursor(this.cursors.start);const i=this.snapCoordinate(t);if(i){if(this.snappedPointId)this.store.updateGeometry([{id:this.snappedPointId,geometry:{type:\"Point\",coordinates:i}}]);else{const[t]=this.store.create([{geometry:{type:\"Point\",coordinates:i},properties:{mode:this.mode,[s]:!0}}]);this.snappedPointId=t}t.lng=i[0],t.lat=i[1]}else this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0);if(void 0===this.currentId||0===this.currentCoordinate)return;const o=this.store.getGeometryCopy(this.currentId).coordinates[0];let n;if(1===this.currentCoordinate){const e=1/Math.pow(10,this.coordinatePrecision-1),i=Math.max(1e-6,e);n=[o[0],[t.lng,t.lat],[t.lng,t.lat-i],o[0]]}else if(2===this.currentCoordinate)n=[o[0],o[1],[t.lng,t.lat],o[0]];else{const{isClosing:e,isPreviousClosing:i}=this.closingPoints.isClosingPoint(t);i||e?(this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0),this.setCursor(this.cursors.close),n=[...o.slice(0,-2),o[0],o[0]]):n=[...o.slice(0,-2),[t.lng,t.lat],o[0]]}this.updatePolygonGeometry(n,e.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}).valid||(this.store.updateGeometry([{id:this.currentId,geometry:i}]),0))}snapCoordinate(t){var e,i,o;let s;if(null!=(e=this.snapping)&&e.toLine){let e;e=this.currentId?this.lineSnapping.getSnappableCoordinate(t,this.currentId):this.lineSnapping.getSnappableCoordinateFirstClick(t),e&&(s=e)}if(null!=(i=this.snapping)&&i.toCoordinate){let e;e=this.currentId?this.coordinateSnapping.getSnappableCoordinate(t,this.currentId):this.coordinateSnapping.getSnappableCoordinateFirstClick(t),e&&(s=e)}return null!=(o=this.snapping)&&o.toCustom&&(s=this.snapping.toCustom(t)),s}onClick(t){if(this.currentCoordinate>0&&!this.mouseMove&&this.onMouseMove(t),this.mouseMove=!1,this.snappedPointId&&(this.store.delete([this.snappedPointId]),this.snappedPointId=void 0),0===this.currentCoordinate){const e=this.snapCoordinate(t);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 i=this.snapCoordinate(t);i&&(t.lng=i[0],t.lat=i[1]);const o=this.store.getGeometryCopy(this.currentId);if(J([t.lng,t.lat],o.coordinates[0][0]))return;if(!this.updatePolygonGeometry([o.coordinates[0][0],[t.lng,t.lat],[t.lng,t.lat],o.coordinates[0][0]],e.Commit))return;this.currentCoordinate++}else if(2===this.currentCoordinate&&this.currentId){const i=this.snapCoordinate(t);i&&(t.lng=i[0],t.lat=i[1]);const o=this.store.getGeometryCopy(this.currentId).coordinates[0];if(J([t.lng,t.lat],o[1]))return;if(!this.updatePolygonGeometry([o[0],o[1],[t.lng,t.lat],[t.lng,t.lat],o[0]],e.Commit))return;2===this.currentCoordinate&&this.closingPoints.create(o,\"polygon\"),this.currentCoordinate++}else if(this.currentId){const i=this.store.getGeometryCopy(this.currentId).coordinates[0],{isClosing:o,isPreviousClosing:s}=this.closingPoints.isClosingPoint(t);if(s||o)this.close();else{const o=this.snapCoordinate(t);if(o&&(t.lng=o[0],t.lat=o[1]),J([t.lng,t.lat],i[this.currentCoordinate-1]))return;const s=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(s.geometry.coordinates[0],e.Commit))return;this.currentCoordinate++,this.closingPoints.ids.length&&this.closingPoints.update(s.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,e=this.snappedPointId;this.currentId=void 0,this.snappedPointId=void 0,this.currentCoordinate=0,\"drawing\"===this.state&&this.setStarted();try{void 0!==t&&this.store.delete([t]),void 0!==e&&this.store.delete([e]),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){const t=e.properties[o],n=e.properties[s];return i.pointWidth=this.getNumericStylingValue(t?this.styles.closingPointWidth:n?this.styles.snappingPointWidth:i.pointWidth,i.pointWidth,e),i.pointColor=this.getHexColorStylingValue(t?this.styles.closingPointColor:n?this.styles.snappingPointColor:i.pointColor,i.pointColor,e),i.pointOutlineColor=this.getHexColorStylingValue(t?this.styles.closingPointOutlineColor:n?this.styles.snappingPointOutlineColor:i.pointOutlineColor,i.pointOutlineColor,e),i.pointOutlineWidth=this.getNumericStylingValue(t?this.styles.closingPointOutlineWidth:n?this.styles.snappingPointOutlineWidth:2,2,e),i.zIndex=30,i}}return i}validateFeature(t){return this.validateModeFeature(t,t=>j(t,this.coordinatePrecision))}}class pt extends d{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}).valid)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(),void 0!==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,e.Finish),this.close()}onMouseMove(t){this.updateRectangle(t,e.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 this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}}class yt extends d{constructor(t){super({styles:t.styles}),this.type=h.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){const e=super.validateFeature(t);if(e.valid){const e=t,i=ot(e,this.coordinatePrecision).valid||j(e,this.coordinatePrecision).valid||Q(e,this.coordinatePrecision).valid;return i?{valid:!0}:{valid:i,reason:\"Feature is not a valid Point, Polygon or LineString feature\"}}return e}}function mt(t,e){const i=t,o=e,s=p(i[1]),n=p(o[1]);let r=p(o[0]-i[0]);r>Math.PI&&(r-=2*Math.PI),r<-Math.PI&&(r+=2*Math.PI);const a=Math.log(Math.tan(n/2+Math.PI/4)/Math.tan(s/2+Math.PI/4)),l=(m(Math.atan2(r,a))+360)%360;return l>180?-(360-l):l}function ft(t,e,i){let o=e;e<0&&(o=-Math.abs(o));const s=o/g,n=t[0]*Math.PI/180,r=p(t[1]),a=p(i),l=s*Math.cos(a);let h=r+l;Math.abs(h)>Math.PI/2&&(h=h>0?Math.PI-h:-Math.PI-h);const d=Math.log(Math.tan(h/2+Math.PI/4)/Math.tan(r/2+Math.PI/4)),c=Math.abs(d)>1e-11?l/d:Math.cos(r),u=[(180*(n+s*Math.sin(a)/c)/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 vt(t,e,i,o,s){const n=o(t[0],t[1]),r=o(e[0],e[1]),{lng:a,lat:l}=s((n.x+r.x)/2,(n.y+r.y)/2);return[f(a,i),f(l,i)]}function Ct(t,e,i){const o=ft(t,1e3*u(t,e)/2,mt(t,e));return[f(o[0],i),f(o[1],i)]}function Pt({featureCoords:t,precision:e,unproject:i,project:o,projection:s}){const n=[];for(let r=0;r<t.length-1;r++){let a;if(\"web-mercator\"===s)a=vt(t[r],t[r+1],e,o,i);else{if(\"globe\"!==s)throw new Error(\"Invalid projection\");a=Ct(t[r],t[r+1],e)}n.push(a)}return n}class xt extends L{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),n=this.store.getGeometryCopy(o),r=\"Polygon\"===n.type?n.coordinates[0]:n.coordinates;r.splice(s+1,0,i.coordinates),n.coordinates=\"Polygon\"===n.type?[r]:r,this.store.updateGeometry([{id:o,geometry:n}]),this.store.delete([...this._midPoints,...this.selectionPointBehavior.ids]),this.create(r,o,e),this.selectionPointBehavior.create(r,n.type,o)}create(t,e,o){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,n){return Pt({featureCoords:t,precision:i,project:o,unproject:s,projection:n}).map((t,i)=>({geometry:{type:\"Point\",coordinates:t},properties:e(i)}))}(t,t=>({mode:this.mode,[i.MID_POINT]:!0,midPointSegment:t,midPointFeatureId:e}),o,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 Pt({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 Mt extends L{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 It(t,e){let i=!1;for(let r=0,a=e.length;r<a;r++){const a=e[r];for(let e=0,r=a.length,l=r-1;e<r;l=e++)(s=a[e])[1]>(o=t)[1]!=(n=a[l])[1]>o[1]&&o[0]<(n[0]-s[0])*(o[1]-s[1])/(n[1]-s[1])+s[0]&&(i=!i)}var o,s,n;return i}const St=(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 n=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/o;return n=Math.max(0,Math.min(1,n)),s(t,{x:e.x+n*(i.x-e.x),y:e.y+n*(i.y-e.y)})})(t,e,i))};class Et extends L{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 o,s,n,r,a=Infinity,l=Infinity,h=Infinity;const d=this.createClickBoundingBox.create(t),c=this.store.search(d);for(let d=0;d<c.length;d++){const u=c[d],g=u.geometry;if(\"Point\"===g.type){if(u.properties.selectionPoint||!e&&u.properties[i.MID_POINT])continue;const s=this.pixelDistance.measure(t,g.coordinates);u.properties[i.MID_POINT]&&s<this.pointerDistance&&s<h?(h=s,n=u):!u.properties[i.MID_POINT]&&s<this.pointerDistance&&s<a&&(a=s,o=u)}else if(\"LineString\"===g.type){if(o)continue;for(let e=0;e<g.coordinates.length-1;e++){const i=g.coordinates[e],o=g.coordinates[e+1],n=St({x:t.containerX,y:t.containerY},this.project(i[0],i[1]),this.project(o[0],o[1]));n<this.pointerDistance&&n<l&&(l=n,s=u)}}else if(\"Polygon\"===g.type){if(o||s)continue;It([t.lng,t.lat],g.coordinates)&&(r=u)}}return{clickedFeature:o||s||r,clickedMidPoint:n}}}class Dt extends L{constructor(t,e,i,o){super(t),this.config=void 0,this.featuresAtCursorEvent=void 0,this.selectionPoints=void 0,this.midPoints=void 0,this.draggedFeatureId=null,this.dragPosition=void 0,this.config=t,this.featuresAtCursorEvent=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.featuresAtCursorEvent.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 n,r;if(\"Polygon\"===o.type?(n=o.coordinates[0],r=n.length-1):(n=o.coordinates,r=n.length),!this.dragPosition)return!1;for(let t=0;t<r;t++){const e=n[t];let i,o;if(\"web-mercator\"===this.config.projection){const t=x(this.dragPosition[0],this.dragPosition[1]),n=x(s[0],s[1]),r=x(e[0],e[1]),a={x:t.x-n.x,y:t.y-n.y},l=r.x-a.x,h=r.y-a.y,{lng:d,lat:c}=M(l,h);i=d,o=c}else{const t=[this.dragPosition[0]-s[0],this.dragPosition[1]-s[1]];i=e[0]-t[0],o=e[1]-t[1]}if(i=f(i,this.config.coordinatePrecision),o=f(o,this.config.coordinatePrecision),i>180||i<-180||o>90||o<-90)return!1;n[t]=[i,o]}\"Polygon\"===o.type&&(n[n.length-1]=[n[0][0],n[0][1]]);const a=this.selectionPoints.getUpdated(n)||[],l=this.midPoints.getUpdated(n)||[];if(i&&!i({type:\"Feature\",id:this.draggedFeatureId,geometry:o,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:e.Provisional}).valid)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 Ft extends L{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 n=this.pixelDistance.measure(t,o[s]);if(n<this.pointerDistance&&n<i.dist){const t=\"Polygon\"===e.type&&(s===o.length-1||0===s);i.dist=n,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,i,o){if(!this.draggedCoordinate.id)return!1;const s=this.draggedCoordinate.index,n=this.store.getGeometryCopy(this.draggedCoordinate.id),r=\"LineString\"===n.type?n.coordinates:n.coordinates[0],a=[t.lng,t.lat];if(t.lng>180||t.lng<-180||t.lat>90||t.lat<-90)return!1;if(\"Polygon\"!==n.type||s!==r.length-1&&0!==s)r[s]=a;else{const t=r.length-1;r[0]=a,r[t]=a}const l=this.selectionPoints.getOneUpdated(s,a),h=l?[l]:[],d=this.midPoints.getUpdated(r)||[];return!(\"Point\"!==n.type&&!i&&E({type:\"Feature\",geometry:n,properties:{}})||o&&!o({type:\"Feature\",id:this.draggedCoordinate.id,geometry:n,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:e.Provisional}).valid||(this.store.updateGeometry([{id:this.draggedCoordinate.id,geometry:n},...h,...d]),0))}isDragging(){return null!==this.draggedCoordinate.id}startDragging(t,e){this.draggedCoordinate={id:t,index:e}}stopDragging(){this.draggedCoordinate={id:null,index:-1}}}function wt(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 _t(t,e){t[0]+=t[0]-e[0]>180?-360:e[0]-t[0]>180?360:0;const i=g,o=e[1]*Math.PI/180,s=t[1]*Math.PI/180,n=s-o;let r=Math.abs(t[0]-e[0])*Math.PI/180;r>Math.PI&&(r-=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?n/a:Math.cos(o);return Math.sqrt(n*n+l*l*r*r)*i}function bt(t){const e=(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).map(t=>{const{x:e,y:i}=x(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 n=0;n<s-1;n++){const[s,r]=t[n],[a,l]=t[n+1],h=s*l-a*r;e+=h,i+=(s+a)*h,o+=(r+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,n]=t[s];i+=e,o+=n}return{x:i/e,y:o/e}}(e)}class kt extends L{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 n=[t.lng,t.lat];let r;const a={type:\"Feature\",geometry:s,properties:{}};if(\"web-mercator\"===this.config.projection){if(r=R(bt(a),x(t.lng,t.lat)),!this.lastBearing)return void(this.lastBearing=r);((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])=>x(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 n=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})=>[M(t,e).lng,M(t,e).lat]);\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]=n:t.geometry.coordinates=n})(a,-(this.lastBearing-r))}else{if(\"globe\"!==this.config.projection)throw new Error(\"Unsupported projection\");if(r=mt(wt({type:\"Feature\",geometry:s,properties:{}}),n),!this.lastBearing)return void(this.lastBearing=r+180);!function(t,e){if(0===e||360===e||-360===e)return t;const i=wt(t);(\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]:t.geometry.coordinates).forEach(t=>{const o=mt(i,t)+e,s=_t(i,t),n=ft(i,s,o);t[0]=n[0],t[1]=n[1]})}(a,-(this.lastBearing-(r+180)))}const l=\"Polygon\"===s.type?s.coordinates[0]:s.coordinates;l.forEach(t=>{t[0]=f(t[0],this.coordinatePrecision),t[1]=f(t[1],this.coordinatePrecision)});const h=this.midPoints.getUpdated(l)||[],d=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:e.Provisional}))return!1;this.store.updateGeometry([{id:i,geometry:s},...d,...h]),\"web-mercator\"===this.projection?this.lastBearing=r:\"globe\"===this.projection&&(this.lastBearing=r+180)}}class Ot extends L{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,i,o){const s=this.store.getGeometryCopy(i);if(\"Polygon\"!==s.type&&\"LineString\"!==s.type)return;const n=[t.lng,t.lat],r={type:\"Feature\",geometry:s,properties:{}};let a;const l=bt(r);if(\"web-mercator\"===this.config.projection){const e=x(t.lng,t.lat);a=N(l,e)}else{if(\"globe\"!==this.config.projection)throw new Error(\"Invalid projection\");a=u(wt({type:\"Feature\",geometry:s,properties:{}}),n)}if(!this.lastDistance)return void(this.lastDistance=a);const h=1-(this.lastDistance-a)/a;if(\"web-mercator\"===this.config.projection){const{lng:t,lat:e}=M(l.x,l.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])=>x(t,e)),s=x(i[0],i[1]),n=o.map(t=>({x:s.x+(t.x-s.x)*e,y:s.y+(t.y-s.y)*e})).map(({x:t,y:e})=>[M(t,e).lng,M(t,e).lat]);\"Polygon\"===t.geometry.type?t.geometry.coordinates[0]=n:t.geometry.coordinates=n}(r,h,[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=_t(i,t),n=mt(i,t),r=ft(i,s*e,n);\"x\"!==o&&\"xy\"!==o||(t[0]=r[0]),\"y\"!==o&&\"xy\"!==o||(t[1]=r[1])})}(r,h,wt(r));const d=\"Polygon\"===s.type?s.coordinates[0]:s.coordinates;d.forEach(t=>{t[0]=f(t[0],this.coordinatePrecision),t[1]=f(t[1],this.coordinatePrecision)});const c=this.midPoints.getUpdated(d)||[],g=this.selectionPoints.getUpdated(d)||[];if(o&&!o({id:i,type:\"Feature\",geometry:s,properties:{}},{project:this.config.project,unproject:this.config.unproject,coordinatePrecision:this.config.coordinatePrecision,updateType:e.Provisional}))return!1;this.store.updateGeometry([{id:i,geometry:s},...g,...c]),this.lastDistance=a}}class jt extends L{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 n=this.pixelDistance.measure(t,o[s]);if(n<this.pointerDistance&&n<i.dist){const t=\"Polygon\"===e.type&&(s===o.length-1||0===s);i.dist=n,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:n}=e,r=bt(i);if(!r)return null;const a=x(n[0],n[1]),{closestBBoxIndex:l}=this.getIndexesWebMercator(o,a),h=x(t.lng,t.lat);return this.scaleWebMercator({closestBBoxIndex:l,updatedCoords:s,webMercatorCursor:h,webMercatorSelected:a,webMercatorOrigin:r}),s}centerFixedWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{feature:i,boundingBox:o,updatedCoords:s,selectedCoordinate:n}=e,r=bt(i);if(!r)return null;const a=x(n[0],n[1]),{closestBBoxIndex:l}=this.getIndexesWebMercator(o,a),h=x(t.lng,t.lat);return this.scaleFixedWebMercator({closestBBoxIndex:l,updatedCoords:s,webMercatorCursor:h,webMercatorSelected:a,webMercatorOrigin:r}),s}scaleFixedWebMercator({closestBBoxIndex:t,webMercatorOrigin:e,webMercatorSelected:i,webMercatorCursor:o,updatedCoords:s}){if(!this.isValidDragWebMercator(t,e.x-o.x,e.y-o.y))return null;let n=N(e,o)/N(e,i);return n<0&&(n=this.minimumScale),this.performWebMercatorScale(s,e.x,e.y,n,n),s}oppositeFixedWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{boundingBox:i,updatedCoords:o,selectedCoordinate:s}=e,n=x(s[0],s[1]),{oppositeBboxIndex:r,closestBBoxIndex:a}=this.getIndexesWebMercator(i,n),l={x:i[r][0],y:i[r][1]},h=x(t.lng,t.lat);return this.scaleFixedWebMercator({closestBBoxIndex:a,updatedCoords:o,webMercatorCursor:h,webMercatorSelected:n,webMercatorOrigin:l}),o}oppositeWebMercatorDrag(t){const e=this.getSelectedFeatureDataWebMercator();if(!e)return null;const{boundingBox:i,updatedCoords:o,selectedCoordinate:s}=e,n=x(s[0],s[1]),{oppositeBboxIndex:r,closestBBoxIndex:a}=this.getIndexesWebMercator(i,n),l={x:i[r][0],y:i[r][1]},h=x(t.lng,t.lat);return this.scaleWebMercator({closestBBoxIndex:a,updatedCoords:o,webMercatorCursor:h,webMercatorSelected:n,webMercatorOrigin:l}),o}scaleWebMercator({closestBBoxIndex:t,webMercatorOrigin:e,webMercatorSelected:i,webMercatorCursor:o,updatedCoords:s}){const n=e.x-o.x,r=e.y-o.y;if(!this.isValidDragWebMercator(t,n,r))return null;let a=1;0!==n&&1!==t&&5!==t&&(a=1-(e.x-i.x-n)/n);let l=1;return 0!==r&&3!==t&&7!==t&&(l=1-(e.y-i.y-r)/r),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:n,y:r}=x(t[0],t[1]),a=e+(n-e)*o,l=i+(r-i)*s,{lng:h,lat:d}=M(a,l);t[0]=h,t[1]=d})}getBBoxWebMercator(t){const e=[Infinity,Infinity,-Infinity,-Infinity];(t=t.map(t=>{const{x:e,y:i}=x(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,n]=e;return[[i,n],[(i+s)/2,n],[s,n],[s,n+(o-n)/2],[s,o],[(i+s)/2,o],[i,o],[i,n+(o-n)/2]]}getIndexesWebMercator(t,e){let i,o=Infinity;for(let s=0;s<t.length;s++){const n=N({x:e.x,y:e.y},{x:t[s][0],y:t[s][1]});n<o&&(i=s,o=n)}if(void 0===i)throw new Error(\"No closest coordinate found\");return{oppositeBboxIndex:this.boundingBoxMaps.opposite[i],closestBBoxIndex:i}}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 n=null;if(\"center\"===i?n=this.centerWebMercatorDrag(t):\"opposite\"===i?n=this.oppositeWebMercatorDrag(t):\"center-fixed\"===i?n=this.centerFixedWebMercatorDrag(t):\"opposite-fixed\"===i&&(n=this.oppositeFixedWebMercatorDrag(t)),!n)return!1;for(let t=0;t<n.length;t++){const e=n[t];if(e[0]=f(e[0],this.coordinatePrecision),e[1]=f(e[1],this.coordinatePrecision),!F(e,this.coordinatePrecision))return!1}const r=this.midPoints.getUpdated(n)||[],a=this.selectionPoints.getUpdated(n)||[],l={type:s.geometry.type,coordinates:\"Polygon\"===s.geometry.type?[n]:n};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:e.Provisional}).valid||(this.store.updateGeometry([{id:this.draggedCoordinate.id,geometry:l},...a,...r]),0))}}class Wt extends c{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 U(t),this.clickBoundingBox=new T(t),this.featuresAtMouseEvent=new Et(t,this.clickBoundingBox,this.pixelDistance),this.selectionPoints=new Mt(t),this.midPoints=new xt(t,this.selectionPoints),this.rotateFeature=new kt(t,this.selectionPoints,this.midPoints),this.scaleFeature=new Ot(t,this.selectionPoints,this.midPoints),this.dragFeature=new Dt(t,this.featuresAtMouseEvent,this.selectionPoints,this.midPoints),this.dragCoordinate=new Ft(t,this.pixelDistance,this.selectionPoints,this.midPoints),this.dragCoordinateResizeFeature=new jt(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:i.SELECTED,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 i,o=Infinity;if(this.selectionPoints.ids.forEach(e=>{const s=this.store.getGeometryCopy(e),n=this.pixelDistance.measure(t,s.coordinates);n<this.pointerDistance&&n<o&&(o=n,i=this.store.getPropertiesCopy(e))}),!i)return;const s=i.selectionPointFeatureId,n=i.index,r=this.store.getPropertiesCopy(s),a=this.flags[r.mode],l=this.validations[r.mode];if(!(a&&a.feature&&a.feature.coordinates&&a.feature.coordinates.deletable))return;const h=this.store.getGeometryCopy(s);let d;if(\"Polygon\"===h.type){if(d=h.coordinates[0],d.length<=4)return}else if(\"LineString\"===h.type&&(d=h.coordinates,d.length<=3))return;if(d){if(\"Polygon\"===h.type&&0===n||n===d.length-1?(d.shift(),d.pop(),d.push([d[0][0],d[0][1]])):d.splice(n,1),l&&!l({id:s,type:\"Feature\",geometry:h,properties:r},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:e.Commit}).valid)return;this.store.delete([...this.midPoints.ids,...this.selectionPoints.ids]),this.store.updateGeometry([{id:s,geometry:h}]),this.selectionPoints.create(d,h.type,s),a&&a.feature&&a.feature.coordinates&&a.feature.coordinates.midpoints&&this.midPoints.create(d,s,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:n,coordinates:r}=this.store.getGeometryCopy(t);if(\"LineString\"!==n&&\"Polygon\"!==n)return;const a=\"LineString\"===n?r:r[0];a&&o&&o.feature.coordinates&&(this.selectionPoints.create(a,n,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],n=this.dragCoordinate.getDraggableIndex(t,s);return o&&o.feature&&o.feature.coordinates&&(o.feature.coordinates.draggable||o.feature.coordinates.resizable)&&-1!==n?(this.setCursor(this.cursors.dragStart),o.feature.coordinates.resizable?this.dragCoordinateResizeFeature.startDragging(s,n):this.dragCoordinate.startDragging(s,n),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],n=!0===(s&&s.feature&&s.feature.selfIntersectable);if(this.dragEventCount++,this.dragEventCount%this.dragEventThrottle==0)return;const r=this.validations[o.mode];if(s&&s.feature&&s.feature.rotateable&&this.canRotate(t))return e(!1),void this.rotateFeature.rotate(t,i,r);if(s&&s.feature&&s.feature.scaleable&&this.canScale(t))return e(!1),void this.scaleFeature.scale(t,i,r);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,r)}this.dragCoordinate.isDragging()?this.dragCoordinate.drag(t,n,r):this.dragFeature.isDragging()?this.dragFeature.drag(t,r):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 o=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 o.pointColor=this.getHexColorStylingValue(this.styles.selectionPointColor,o.pointColor,e),o.pointOutlineColor=this.getHexColorStylingValue(this.styles.selectionPointOutlineColor,o.pointOutlineColor,e),o.pointWidth=this.getNumericStylingValue(this.styles.selectionPointWidth,o.pointWidth,e),o.pointOutlineWidth=this.getNumericStylingValue(this.styles.selectionPointOutlineWidth,2,e),o.zIndex=30,o;if(e.properties.midPoint)return o.pointColor=this.getHexColorStylingValue(this.styles.midPointColor,o.pointColor,e),o.pointOutlineColor=this.getHexColorStylingValue(this.styles.midPointOutlineColor,o.pointOutlineColor,e),o.pointWidth=this.getNumericStylingValue(this.styles.midPointWidth,4,e),o.pointOutlineWidth=this.getNumericStylingValue(this.styles.midPointOutlineWidth,2,e),o.zIndex=40,o}else if(e.properties[i.SELECTED]){if(\"Polygon\"===e.geometry.type)return o.polygonFillColor=this.getHexColorStylingValue(this.styles.selectedPolygonColor,o.polygonFillColor,e),o.polygonOutlineWidth=this.getNumericStylingValue(this.styles.selectedPolygonOutlineWidth,o.polygonOutlineWidth,e),o.polygonOutlineColor=this.getHexColorStylingValue(this.styles.selectedPolygonOutlineColor,o.polygonOutlineColor,e),o.polygonFillOpacity=this.getNumericStylingValue(this.styles.selectedPolygonFillOpacity,o.polygonFillOpacity,e),o.zIndex=10,o;if(\"LineString\"===e.geometry.type)return o.lineStringColor=this.getHexColorStylingValue(this.styles.selectedLineStringColor,o.lineStringColor,e),o.lineStringWidth=this.getNumericStylingValue(this.styles.selectedLineStringWidth,o.lineStringWidth,e),o.zIndex=10,o;if(\"Point\"===e.geometry.type)return o.pointWidth=this.getNumericStylingValue(this.styles.selectedPointWidth,o.pointWidth,e),o.pointColor=this.getHexColorStylingValue(this.styles.selectedPointColor,o.pointColor,e),o.pointOutlineColor=this.getHexColorStylingValue(this.styles.selectedPointOutlineColor,o.pointOutlineColor,e),o.pointOutlineWidth=this.getNumericStylingValue(this.styles.selectedPointOutlineWidth,o.pointOutlineWidth,e),o.zIndex=10,o}return o}}class Bt extends d{constructor(...t){super(...t),this.type=h.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 Nt(t,e,i,o,s){for(;o>i;){if(o-i>600){const n=o-i+1,r=e-i+1,a=Math.log(n),l=.5*Math.exp(2*a/3),h=.5*Math.sqrt(a*l*(n-l)/n)*(r-n/2<0?-1:1);Nt(t,e,Math.max(i,Math.floor(e-r*l/n+h)),Math.min(o,Math.floor(e+(n-r)*l/n+h)),s)}const n=t[e];let r=i,a=o;for(Vt(t,i,e),s(t[o],n)>0&&Vt(t,i,o);r<a;){for(Vt(t,r,a),r++,a--;s(t[r],n)<0;)r++;for(;s(t[a],n)>0;)a--}0===s(t[i],n)?Vt(t,i,a):(a++,Vt(t,a,o)),a<=e&&(i=a+1),e<=a&&(o=a-1)}}function Vt(t,e,i){const o=t[e];t[e]=t[i],t[i]=o}function Lt(t,e){Gt(t,0,t.children.length,e,t)}function Gt(t,e,i,o,s){s||(s=Ht([])),s.minX=Infinity,s.minY=Infinity,s.maxX=-Infinity,s.maxY=-Infinity;for(let n=e;n<i;n++){const e=t.children[n];Tt(s,t.leaf?o(e):e)}return s}function Tt(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 Ut(t,e){return t.minX-e.minX}function At(t,e){return t.minY-e.minY}function Kt(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function Xt(t){return t.maxX-t.minX+(t.maxY-t.minY)}function zt(t,e){const i=Math.max(t.minX,e.minX),o=Math.max(t.minY,e.minY),s=Math.min(t.maxX,e.maxX),n=Math.min(t.maxY,e.maxY);return Math.max(0,s-i)*Math.max(0,n-o)}function Rt(t,e){return t.minX<=e.minX&&t.minY<=e.minY&&e.maxX<=t.maxX&&e.maxY<=t.maxY}function Yt(t,e){return e.minX<=t.maxX&&e.minY<=t.maxY&&e.maxX>=t.minX&&e.maxY>=t.minY}function Ht(t){return{children:t,height:1,leaf:!0,minX:Infinity,minY:Infinity,maxX:-Infinity,maxY:-Infinity}}function qt(t,e,i,o,s){const n=[e,i];for(;n.length;){if((i=n.pop())-(e=n.pop())<=o)continue;const r=e+Math.ceil((i-e)/o/2)*o;Nt(t,r,e,i,s),n.push(e,r,r,i)}}class $t{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(!Yt(t,e))return i;const o=this.toBBox,s=[];for(;e;){for(let n=0;n<e.children.length;n++){const r=e.children[n],a=e.leaf?o(r):r;Yt(t,a)&&(e.leaf?i.push(r):Rt(t,a)?this._all(r,i):s.push(r))}e=s.pop()}return i}collides(t){let e=this.data;if(Yt(t,e)){const i=[];for(;e;){for(let o=0;o<e.children.length;o++){const s=e.children[o],n=e.leaf?this.toBBox(s):s;if(Yt(t,n)){if(e.leaf||Rt(t,n))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=Ht([])}remove(t){let e=this.data;const i=this.toBBox(t),o=[],s=[];let n,r,a=!1;for(;e||o.length;){if(e||(e=o.pop(),r=o[o.length-1],n=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||!Rt(e,i)?r?(n++,e=r.children[n],a=!1):e=null:(o.push(e),s.push(n),n=0,r=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 n,r=this._maxEntries;if(s<=r)return n=Ht(t.slice(e,i+1)),Lt(n,this.toBBox),n;o||(o=Math.ceil(Math.log(s)/Math.log(r)),r=Math.ceil(s/Math.pow(r,o-1))),n=Ht([]),n.leaf=!1,n.height=o;const a=Math.ceil(s/r),l=a*Math.ceil(Math.sqrt(r));qt(t,e,i,l,this.compareMinX);for(let s=e;s<=i;s+=l){const e=Math.min(s+l-1,i);qt(t,s,e,a,this.compareMinY);for(let i=s;i<=e;i+=a){const s=Math.min(i+a-1,e);n.children.push(this._build(t,i,s,o-1))}}return Lt(n,this.toBBox),n}_chooseSubtree(t,e,i,o){for(;o.push(e),!e.leaf&&o.length-1!==i;){let i,o=Infinity,r=Infinity;for(let a=0;a<e.children.length;a++){const l=e.children[a],h=Kt(l),d=(s=t,n=l,(Math.max(n.maxX,s.maxX)-Math.min(n.minX,s.minX))*(Math.max(n.maxY,s.maxY)-Math.min(n.minY,s.minY))-h);d<r?(r=d,o=h<o?h:o,i=l):d===r&&h<o&&(o=h,i=l)}e=i||e.children[0]}var s,n;return e}_insert(t,e,i){const o=i?t:this.toBBox(t),s=[],n=this._chooseSubtree(o,this.data,e,s);for(n.children.push(t),Tt(n,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 n=this._chooseSplitIndex(i,s,o),r=Ht(i.children.splice(n,i.children.length-n));r.height=i.height,r.leaf=i.leaf,Lt(i,this.toBBox),Lt(r,this.toBBox),e?t[e-1].children.push(r):this._splitRoot(i,r)}_splitRoot(t,e){this.data=Ht([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Lt(this.data,this.toBBox)}_chooseSplitIndex(t,e,i){let o,s=Infinity,n=Infinity;for(let r=e;r<=i-e;r++){const e=Gt(t,0,r,this.toBBox),a=Gt(t,r,i,this.toBBox),l=zt(e,a),h=Kt(e)+Kt(a);l<s?(s=l,o=r,n=h<n?h:n):l===s&&h<n&&(n=h,o=r)}return o||i-e}_chooseSplitAxis(t,e,i){const o=t.leaf?this.compareMinX:Ut,s=t.leaf?this.compareMinY:At;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,n=Gt(t,0,e,s),r=Gt(t,i-e,i,s);let a=Xt(n)+Xt(r);for(let o=e;o<i-e;o++){const e=t.children[o];Tt(n,t.leaf?s(e):e),a+=Xt(n)}for(let o=i-e-1;o>=e;o--){const e=t.children[o];Tt(r,t.leaf?s(e):e),a+=Xt(r)}return a}_adjustParentBBoxes(t,e,i){for(let o=i;o>=0;o--)Tt(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():Lt(t[i],this.toBBox)}}class Zt{constructor(t){this.tree=void 0,this.idToNode=void 0,this.nodeToId=void 0,this.tree=new $t(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),n=Math.max(...i);return{minX:Math.min(...e),minY:s,maxX:Math.max(...e),maxY:n}}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 Jt={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 Qt{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 Zt,this.tracked=!t||!1!==t.tracked,this.idStrategy=t&&t.idStrategy?t.idStrategy:Jt}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[];let i=this.clone(t);const o=[],s=[];return i=i.filter(t=>{null==t.id&&(t.id=this.idStrategy.getId());const i=t.id;if(e){const o=e(t);if(!o.valid)return s.push({id:i,valid:!1,reason:o.reason}),!1}if(this.tracked){if(t.properties.createdAt){if(!r(t.properties.createdAt))return s.push({id:t.id,valid:!1,reason:\"createdAt is not a valid numeric timestamp\"}),!1}else t.properties.createdAt=+new Date;if(t.properties.updatedAt){if(!r(t.properties.updatedAt))return s.push({id:t.id,valid:!1,reason:\"updatedAt is not a valid numeric timestamp\"}),!1}else t.properties.updatedAt=+new Date}return this.has(i)?(s.push({id:i,valid:!1,reason:`Feature already exists with this id: ${i}`}),!1):(this.store[i]=t,o.push(i),s.push({id:i,valid:!0}),!0)}),this.spatialIndex.load(i),this._onChange(o,\"create\"),s}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,n=t({},o);this.tracked&&(s=+new Date,o?(n.createdAt=\"number\"==typeof o.createdAt?o.createdAt:s,n.updatedAt=\"number\"==typeof o.updatedAt?o.updatedAt:s):n={createdAt:s,updatedAt:s});const r=this.getId(),a={id:r,type:\"Feature\",geometry:e,properties:n};this.store[r]=a,this.spatialIndex.insert(a),i.push(r)}),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 te(t){const e=t.coordinates;let i=0;if(e&&e.length>0){i+=Math.abs(oe(e[0]));for(let t=1;t<e.length;t++)i-=Math.abs(oe(e[t]))}return i}const ee=20294876564838.72,ie=Math.PI/180;function oe(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]*ie-t[o][0]*ie)*Math.sin(t[o+1===e?0:o+1][1]*ie),o++;return i*ee}const se=\"Feature is smaller than the minimum area\",ne=(t,e)=>\"Polygon\"!==t.geometry.type?{valid:!1,reason:a}:te(t.geometry)<e?{valid:!1,reason:se}:{valid:!0},re=(t,e)=>\"Polygon\"!==t.geometry.type?{valid:!1,reason:a}:te(t.geometry)>e?{valid:!1,reason:\"Feature is larger than the maximum area\"}:{valid:!0},ae=\"Feature is not a Polygon or LineString\",le=\"Feature intersects itself\",he=t=>\"Polygon\"!==t.geometry.type&&\"LineString\"!==t.geometry.type?{valid:!1,reason:ae}:E(t)?{valid:!1,reason:le}:{valid:!0};function de(t,e,i){const o=R(t,e);let s=R(e,i)-o;return s<0&&(s+=360),180-Math.abs(s-90-90)}class ce extends d{constructor(e){super(e),this.mode=\"angled-rectangle\",this.currentCoordinate=0,this.currentId=void 0,this.keyEvents=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\"})}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 i=this.store.getGeometryCopy(this.currentId).coordinates[0];let o;if(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){const e=i[0],s=i[1],n=vt(e,s,this.coordinatePrecision,this.project,this.unproject),r=x(e[0],e[1]),a=x(n[0],n[1]),l=x(s[0],s[1]),h=x(t.lng,t.lat),d=N(h,r)<N(h,l),c=de(r,a,h),u=d?90-c:de(r,a,h)-90,g=N(a,h),y=Math.cos(p(u))*g,m=R(r,l)+(\"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\"}(r,l,h)?-90:90),f=X(r,y,m),v=X(l,y,m),C=M(f.x,f.y),P=M(v.x,v.y);o=[i[0],i[1],[P.lng,P.lat],[C.lng,C.lat],i[0]]}o&&this.updatePolygonGeometry(this.currentId,o,e.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}).valid||(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 i=this.store.getGeometryCopy(this.currentId);if(J([t.lng,t.lat],i.coordinates[0][0]))return;if(!this.updatePolygonGeometry(this.currentId,[i.coordinates[0][0],[t.lng,t.lat],[t.lng,t.lat],i.coordinates[0][0]],e.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 this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}}function ue(t,e,i){return(e.x-t.x)*(i.y-t.y)-(e.y-t.y)*(i.x-t.x)<=0}class ge extends d{constructor(e){super(e),this.mode=\"sector\",this.currentCoordinate=0,this.currentId=void 0,this.keyEvents=void 0,this.direction=void 0,this.arcPoints=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}this.arcPoints=(null==e?void 0:e.arcPoints)||64}close(){if(void 0===this.currentId)return;const t=this.currentId;this.currentCoordinate=0,this.currentId=void 0,this.direction=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(this.mouseMove=!0,this.setCursor(this.cursors.start),void 0===this.currentId||0===this.currentCoordinate)return;const i=this.store.getGeometryCopy(this.currentId).coordinates[0];let o;if(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){const e=i[0],s=i[1],n=[t.lng,t.lat],r=x(e[0],e[1]),a=x(s[0],s[1]),l=x(n[0],n[1]);if(void 0===this.direction){const t=ue(r,a,l);this.direction=t?\"clockwise\":\"anticlockwise\"}const h=N(r,a),d=R(r,a),c=R(r,l),u=this.arcPoints,g=[e],p=Y(d),y=Y(c);let m;\"anticlockwise\"===this.direction?(m=y-p,m<0&&(m+=360)):(m=p-y,m<0&&(m+=360));const v=(\"anticlockwise\"===this.direction?1:-1)*m/u;g.push(s);for(let t=0;t<=u;t++){const e=X(r,h,p+t*v),{lng:i,lat:o}=M(e.x,e.y),s=[f(i,this.coordinatePrecision),f(o,this.coordinatePrecision)];s[0]!==g[g.length-1][0]&&s[1]!==g[g.length-1][1]&&g.push(s)}g.push(e),o=[...g]}o&&this.updatePolygonGeometry(this.currentId,o,e.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}).valid||(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 i=this.store.getGeometryCopy(this.currentId);if(J([t.lng,t.lat],i.coordinates[0][0]))return;if(!this.updatePolygonGeometry(this.currentId,[i.coordinates[0][0],[t.lng,t.lat],[t.lng,t.lat],i.coordinates[0][0]],e.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.direction=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 this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}}class pe extends d{constructor(e){super(e),this.mode=\"sensor\",this.currentCoordinate=0,this.currentId=void 0,this.currentInitialArcId=void 0,this.currentStartingPointId=void 0,this.keyEvents=void 0,this.direction=void 0,this.arcPoints=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}this.arcPoints=(null==e?void 0:e.arcPoints)||64}close(){if(void 0===this.currentStartingPointId)return;const t=this.currentStartingPointId,e=this.currentInitialArcId,i=this.currentId;t&&this.store.delete([t]),e&&this.store.delete([e]),this.currentCoordinate=0,this.currentStartingPointId=void 0,this.currentInitialArcId=void 0,this.currentId=void 0,this.direction=void 0,\"drawing\"===this.state&&this.setStarted(),i&&this.onFinish(i,{mode:this.mode,action:\"draw\"})}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.currentInitialArcId&&void 0!==this.currentStartingPointId&&0!==this.currentCoordinate)if(2===this.currentCoordinate){const i=this.store.getGeometryCopy(this.currentInitialArcId).coordinates,o=this.store.getGeometryCopy(this.currentStartingPointId).coordinates,s=i[0],n=[t.lng,t.lat],r=x(s[0],s[1]),a=x(n[0],n[1]),l=x(o[0],o[1]),h=N(l,r);if(void 0===this.direction){const t=ue(l,r,a);this.direction=t?\"clockwise\":\"anticlockwise\"}const d=R(l,r),c=R(l,a),u=this.arcPoints,g=[s],p=Y(d),y=Y(c);let m;\"anticlockwise\"===this.direction?(m=y-p,m<0&&(m+=360)):(m=p-y,m<0&&(m+=360));const v=(\"anticlockwise\"===this.direction?1:-1)*m/u;for(let t=0;t<=u;t++){const e=X(l,h,p+t*v),{lng:i,lat:o}=M(e.x,e.y),s=[f(i,this.coordinatePrecision),f(o,this.coordinatePrecision)];s[0]!==g[g.length-1][0]&&s[1]!==g[g.length-1][1]&&g.push(s)}this.updateLineStringGeometry(this.currentInitialArcId,g,e.Provisional)}else if(3===this.currentCoordinate){const i=this.store.getGeometryCopy(this.currentInitialArcId).coordinates;if(i.length<2)return;if(!this.direction)return;const o=this.store.getGeometryCopy(this.currentStartingPointId).coordinates,s=i[0],n=i[i.length-1],r=x(t.lng,t.lat),a=x(s[0],s[1]),l=x(n[0],n[1]),h=x(o[0],o[1]),d=N(h,a),c=N(h,r)<d?a:r,u=R(h,r),g=R(h,a),p=R(h,l),y=Y(g),m=Y(p),v=Y(u);if(this.notInSector({normalizedCursor:v,normalizedStart:y,normalizedEnd:m,direction:this.direction}))return;const C=this.getDeltaBearing(this.direction,y,m),P=this.arcPoints,I=(\"anticlockwise\"===this.direction?1:-1)*C/P,S=N(h,c),E=[];for(let t=0;t<=P;t++){const e=X(h,S,y+t*I),{lng:o,lat:s}=M(e.x,e.y),n=[f(o,this.coordinatePrecision),f(s,this.coordinatePrecision)];n[0]!==i[i.length-1][0]&&n[1]!==i[i.length-1][1]&&E.unshift(n)}i.push(...E),i.push(i[0]),this.currentId?this.updatePolygonGeometry(this.currentId,i,e.Provisional):[this.currentId]=this.store.create([{geometry:{type:\"Polygon\",coordinates:[i]},properties:{mode:this.mode}}])}}updateLineStringGeometry(t,e,i){const o={type:\"LineString\",coordinates:e};return!(this.validate&&!this.validate({type:\"Feature\",geometry:o},{project:this.project,unproject:this.unproject,coordinatePrecision:this.coordinatePrecision,updateType:i}).valid||(this.store.updateGeometry([{id:t,geometry:o}]),0))}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}).valid||(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:\"Point\",coordinates:[t.lng,t.lat]},properties:{mode:this.mode}}]);this.currentStartingPointId=e,this.currentCoordinate++,this.setDrawing()}else if(1===this.currentCoordinate&&this.currentStartingPointId){const[e]=this.store.create([{geometry:{type:\"LineString\",coordinates:[[t.lng,t.lat],[t.lng,t.lat]]},properties:{mode:this.mode}}]);this.currentInitialArcId=e,this.currentCoordinate++}else 2===this.currentCoordinate&&this.currentStartingPointId?this.currentCoordinate++:3===this.currentCoordinate&&this.currentStartingPointId&&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.currentStartingPointId&&this.store.delete([this.currentStartingPointId]),this.currentInitialArcId&&this.store.delete([this.currentInitialArcId]),this.currentId&&this.store.delete([this.currentId])}catch(t){}this.currentStartingPointId=void 0,this.direction=void 0,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):\"LineString\"===e.geometry.type?(i.lineStringColor=this.getHexColorStylingValue(this.styles.outlineColor,i.polygonOutlineColor,e),i.lineStringWidth=this.getNumericStylingValue(this.styles.outlineWidth,i.polygonOutlineWidth,e),i.zIndex=10):\"Point\"===e.geometry.type&&(i.pointColor=this.getHexColorStylingValue(this.styles.centerPointColor,i.pointColor,e),i.pointWidth=this.getNumericStylingValue(this.styles.centerPointWidth,i.pointWidth,e),i.pointOutlineColor=this.getHexColorStylingValue(this.styles.centerPointOutlineColor,i.pointOutlineColor,e),i.pointOutlineWidth=this.getNumericStylingValue(this.styles.centerPointOutlineWidth,i.pointOutlineWidth,e),i.zIndex=20)),i}validateFeature(t){return this.validateModeFeature(t,t=>W(t,this.coordinatePrecision))}getDeltaBearing(t,e,i){let o;return\"anticlockwise\"===t?(o=i-e,o<0&&(o+=360)):(o=e-i,o<0&&(o+=360)),o}notInSector({normalizedCursor:t,normalizedStart:e,normalizedEnd:i,direction:o}){return\"clockwise\"===o?e<=i?t>=e&&t<=i:t>=e||t<=i:e>=i?t<=e&&t>=i:t<=e||t>=i}}class ye{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}}var me={__proto__:null,GeoJSONStore:Qt,TerraDrawBaseDrawMode:d,TerraDrawBaseAdapter:class{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 e=this.getLngLatFromEvent(t);if(!e)return null;const{lng:i,lat:o}=e,{containerX:s,containerY:n}=this.getMapElementXYPosition(t),r=this.getButton(t),a=Array.from(this._heldKeys);return{lng:f(i,this._coordinatePrecision),lat:f(o,this._coordinatePrecision),containerX:s,containerY:n,button:r,heldKeys:a}}register(t){this._currentModeCallbacks=t,this._listeners=this.getAdapterListeners(),this._listeners.forEach(t=>{t.register()})}getCoordinatePrecision(){return this._coordinatePrecision}getAdapterListeners(){return[new ye({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 ye({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},i={x:e.containerX,y:e.containerY},o=this._currentModeCallbacks.getState(),s=N(t,i);let n=!1;if(n=\"drawing\"===o?s<this._minPixelDragDistanceDrawing:\"selecting\"===o?s<this._minPixelDragDistanceSelecting:s<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 ye({name:\"contextmenu\",callback:t=>{this._currentModeCallbacks&&t.preventDefault()},register:t=>{this.getMapEventElement().addEventListener(\"contextmenu\",t)},unregister:t=>{this.getMapEventElement().removeEventListener(\"contextmenu\",t)}}),new ye({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 ye({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 ye({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()}},SELECT_PROPERTIES:i};const fe={ValidationReasonFeatureNotPoint:et,ValidationReasonFeatureInvalidCoordinates:it,ValidationReasonFeatureNotPolygon:a,ValidationReasonFeatureHasHoles:_,ValidationReasonFeatureLessThanFourCoordinates:b,ValidationReasonFeatureHasInvalidCoordinates:k,ValidationReasonFeatureCoordinatesNotClosed:O,ValidationReasonFeatureNotPolygonOrLineString:ae,ValidationReasonFeatureSelfIntersects:le,ValidationReasonFeatureLessThanMinSize:se,ValidationReasonModeMismatch:l};class ve{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 Bt;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===h.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 Qt({tracked:!!e.tracked,idStrategy:e.idStrategy?e.idStrategy:void 0});const n=t=>{const e=[],i=this._store.copyAll().filter(i=>!t.includes(i.id)||(e.push(i),!1));return{changed:e,unchanged:i}},r=(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}=n(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}=n([t]);this._adapter.render({created:[],deletedIds:[],unchanged:i,updated:e},this.getModeStyles())},d=t=>{if(!this._enabled)return;this._eventListeners.deselect.forEach(t=>{t()});const{changed:e,unchanged:i}=n([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:d,onFinish:r,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[i.SELECTED]?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,n=!o||void 0===o.ignoreSelectFeatures||o.ignoreSelectFeatures,r=this._adapter.unproject.bind(this._adapter),a=this._adapter.project.bind(this._adapter),l=a(t,e),h=G({unproject:r,point:l,pointerDistance:s});return this._store.search(h).filter(o=>{if(n&&(o.properties[i.MID_POINT]||o.properties[i.SELECTION_POINT]))return!1;if(\"Point\"===o.geometry.type){const t=o.geometry.coordinates,e=a(t[0],t[1]);return N(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(St(l,a(i[0],i[1]),a(o[0],o[1]))<s)return!0}return!1}return!!It([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){return this.checkEnabled(),0===t.length?[]:this._store.load(t,t=>{if(function(t){return Boolean(t&&\"object\"==typeof t&&\"properties\"in t&&\"object\"==typeof t.properties&&null!==t.properties&&\"mode\"in t.properties)}(t)){const e=t.properties.mode,i=this._modes[e];if(!i)return{id:t.id,valid:!1,reason:`${e} mode is not in the list of instantiated modes`};const o=i.validateFeature.bind(i)(t);return{id:t.id,valid:o.valid,reason:o.reason?o.reason:o.valid?void 0:\"Feature is invalid\"}}return{id:t.id,valid:!1,reason:\"Mode property does not exist\"}})}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 Ce=\"HELLO\";export{Ce as HELLO,ve as TerraDraw,ce as TerraDrawAngledRectangleMode,B as TerraDrawCircleMode,me as TerraDrawExtend,V as TerraDrawFreehandMode,tt as TerraDrawLineStringMode,st as TerraDrawPointMode,gt as TerraDrawPolygonMode,pt as TerraDrawRectangleMode,yt as TerraDrawRenderMode,ge as TerraDrawSectorMode,Wt as TerraDrawSelectMode,pe as TerraDrawSensorMode,re as ValidateMaxAreaSquareMeters,ne as ValidateMinAreaSquareMeters,he as ValidateNotSelfIntersecting,fe as ValidationReasons};\n//# sourceMappingURL=terra-draw.modern.js.map\n","var e,t,i;function n(e,t=9){const i=Math.pow(10,t);return Math.round(e*i)/i}(t=e||(e={})).Commit=\"commit\",t.Provisional=\"provisional\",t.Finish=\"finish\",function(e){e.Drawing=\"drawing\",e.Select=\"select\",e.Static=\"static\",e.Render=\"render\"}(i||(i={}));class r{constructor({name:e,callback:t,unregister:i,register:n}){this.name=void 0,this.callback=void 0,this.registered=!1,this.register=void 0,this.unregister=void 0,this.name=e,this.register=()=>{this.registered||(this.registered=!0,n(t))},this.unregister=()=>{this.register&&(this.registered=!1,i(t))},this.callback=t}}var s=class{constructor(e){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 e.minPixelDragDistance?e.minPixelDragDistance:1,this._minPixelDragDistanceSelecting=\"number\"==typeof e.minPixelDragDistanceSelecting?e.minPixelDragDistanceSelecting:1,this._minPixelDragDistanceDrawing=\"number\"==typeof e.minPixelDragDistanceDrawing?e.minPixelDragDistanceDrawing:8,this._coordinatePrecision=\"number\"==typeof e.coordinatePrecision?e.coordinatePrecision:9}getButton(e){return-1===e.button?\"neither\":0===e.button?\"left\":1===e.button?\"middle\":2===e.button?\"right\":\"neither\"}getMapElementXYPosition(e){const t=this.getMapEventElement(),{left:i,top:n}=t.getBoundingClientRect();return{containerX:e.clientX-i,containerY:e.clientY-n}}getDrawEventFromEvent(e){const t=this.getLngLatFromEvent(e);if(!t)return null;const{lng:i,lat:r}=t,{containerX:s,containerY:a}=this.getMapElementXYPosition(e),o=this.getButton(e),l=Array.from(this._heldKeys);return{lng:n(i,this._coordinatePrecision),lat:n(r,this._coordinatePrecision),containerX:s,containerY:a,button:o,heldKeys:l}}register(e){this._currentModeCallbacks=e,this._listeners=this.getAdapterListeners(),this._listeners.forEach(e=>{e.register()})}getCoordinatePrecision(){return this._coordinatePrecision}getAdapterListeners(){return[new r({name:\"pointerdown\",callback:e=>{if(!this._currentModeCallbacks)return;if(!e.isPrimary)return;const t=this.getDrawEventFromEvent(e);t&&(this._dragState=\"pre-dragging\",this._lastDrawEvent=t)},register:e=>{this.getMapEventElement().addEventListener(\"pointerdown\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"pointerdown\",e)}}),new r({name:\"pointermove\",callback:e=>{if(!this._currentModeCallbacks)return;if(!e.isPrimary)return;e.preventDefault();const t=this.getDrawEventFromEvent(e);if(t)if(\"not-dragging\"===this._dragState)this._currentModeCallbacks.onMouseMove(t),this._lastDrawEvent=t;else if(\"pre-dragging\"===this._dragState){if(!this._lastDrawEvent)return;const e={x:this._lastDrawEvent.containerX,y:this._lastDrawEvent.containerY},i={x:t.containerX,y:t.containerY},n=this._currentModeCallbacks.getState(),r=((e,t)=>{const{x:i,y:n}=e,{x:r,y:s}=t,a=r-i,o=s-n;return Math.sqrt(o*o+a*a)})(e,i);let s=!1;if(s=\"drawing\"===n?r<this._minPixelDragDistanceDrawing:\"selecting\"===n?r<this._minPixelDragDistanceSelecting:r<this._minPixelDragDistance,s)return;this._dragState=\"dragging\",this._currentModeCallbacks.onDragStart(t,e=>{this.setDraggability.bind(this)(e)})}else\"dragging\"===this._dragState&&this._currentModeCallbacks.onDrag(t,e=>{this.setDraggability.bind(this)(e)})},register:e=>{this.getMapEventElement().addEventListener(\"pointermove\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"pointermove\",e)}}),new r({name:\"contextmenu\",callback:e=>{this._currentModeCallbacks&&e.preventDefault()},register:e=>{this.getMapEventElement().addEventListener(\"contextmenu\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"contextmenu\",e)}}),new r({name:\"pointerup\",callback:e=>{if(!this._currentModeCallbacks)return;if(e.target!==this.getMapEventElement())return;if(!e.isPrimary)return;const t=this.getDrawEventFromEvent(e);t&&(\"dragging\"===this._dragState?this._currentModeCallbacks.onDragEnd(t,e=>{this.setDraggability.bind(this)(e)}):\"not-dragging\"!==this._dragState&&\"pre-dragging\"!==this._dragState||this._currentModeCallbacks.onClick(t),this._dragState=\"not-dragging\",this.setDraggability(!0))},register:e=>{this.getMapEventElement().addEventListener(\"pointerup\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"pointerup\",e)}}),new r({name:\"keyup\",callback:e=>{this._currentModeCallbacks&&(this._heldKeys.delete(e.key),this._currentModeCallbacks.onKeyUp({key:e.key,heldKeys:Array.from(this._heldKeys),preventDefault:()=>e.preventDefault()}))},register:e=>{this.getMapEventElement().addEventListener(\"keyup\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"keyup\",e)}}),new r({name:\"keydown\",callback:e=>{this._currentModeCallbacks&&(this._heldKeys.add(e.key),this._currentModeCallbacks.onKeyDown({key:e.key,heldKeys:Array.from(this._heldKeys),preventDefault:()=>e.preventDefault()}))},register:e=>{this.getMapEventElement().addEventListener(\"keydown\",e)},unregister:e=>{this.getMapEventElement().removeEventListener(\"keydown\",e)}})]}unregister(){this._listeners.forEach(e=>{e.unregister()}),this.clear()}};class a extends s{constructor(e){super(e),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=e.map,this._container=this._map.getContainer()}clearLayers(){this._rendered&&([\"point\",\"linestring\",\"polygon\"].forEach(e=>{const t=`td-${e.toLowerCase()}`;this._map.removeLayer(t),\"polygon\"===e&&this._map.removeLayer(t+\"-outline\"),this._map.removeSource(t)}),this._rendered=!1,this._nextRender&&(cancelAnimationFrame(this._nextRender),this._nextRender=void 0))}_addGeoJSONSource(e,t){this._map.addSource(e,{type:\"geojson\",data:{type:\"FeatureCollection\",features:t},tolerance:0})}_addFillLayer(e){return this._map.addLayer({id:e,source:e,type:\"fill\",paint:{\"fill-color\":[\"get\",\"polygonFillColor\"],\"fill-opacity\":[\"get\",\"polygonFillOpacity\"]}})}_addFillOutlineLayer(e){return this._map.addLayer({id:e+\"-outline\",source:e,type:\"line\",paint:{\"line-width\":[\"get\",\"polygonOutlineWidth\"],\"line-color\":[\"get\",\"polygonOutlineColor\"]}})}_addLineLayer(e){return this._map.addLayer({id:e,source:e,type:\"line\",paint:{\"line-width\":[\"get\",\"lineStringWidth\"],\"line-color\":[\"get\",\"lineStringColor\"]}})}_addPointLayer(e){return this._map.addLayer({id:e,source:e,type:\"circle\",paint:{\"circle-stroke-color\":[\"get\",\"pointOutlineColor\"],\"circle-stroke-width\":[\"get\",\"pointOutlineWidth\"],\"circle-radius\":[\"get\",\"pointWidth\"],\"circle-color\":[\"get\",\"pointColor\"]}})}_addLayer(e,t){\"Point\"===t&&this._addPointLayer(e),\"LineString\"===t&&this._addLineLayer(e),\"Polygon\"===t&&(this._addFillLayer(e),this._addFillOutlineLayer(e))}_addGeoJSONLayer(e,t){const i=`td-${e.toLowerCase()}`;return this._addGeoJSONSource(i,t),this._addLayer(i,e),i}_setGeoJSONLayerData(e,t){const i=`td-${e.toLowerCase()}`;return this._map.getSource(i).setData({type:\"FeatureCollection\",features:t}),i}updateChangedIds(e){[...e.updated,...e.created].forEach(e=>{\"Point\"===e.geometry.type?this.changedIds.points=!0:\"LineString\"===e.geometry.type?this.changedIds.linestrings=!0:\"Polygon\"===e.geometry.type&&(this.changedIds.polygons=!0)}),e.deletedIds.length>0&&(this.changedIds.deletion=!0),0===e.created.length&&0===e.updated.length&&0===e.deletedIds.length&&(this.changedIds.styling=!0)}getLngLatFromEvent(e){const{left:t,top:i}=this._container.getBoundingClientRect();return this.unproject(e.clientX-t,e.clientY-i)}getMapEventElement(){return this._map.getCanvas()}setDraggability(e){e?(this._map.dragRotate.enable(),this._map.dragPan.enable()):(this._map.dragRotate.disable(),this._map.dragPan.disable())}project(e,t){const{x:i,y:n}=this._map.project({lng:e,lat:t});return{x:i,y:n}}unproject(e,t){const{lng:i,lat:n}=this._map.unproject({x:e,y:t});return{lng:i,lat:n}}setCursor(e){const t=this._map.getCanvas();\"unset\"===e?t.style.removeProperty(\"cursor\"):t.style.cursor=e}setDoubleClickToZoom(e){e?this._map.doubleClickZoom.enable():this._map.doubleClickZoom.disable()}render(e,t){this.updateChangedIds(e),this._nextRender&&cancelAnimationFrame(this._nextRender),this._nextRender=requestAnimationFrame(()=>{const i=[...e.created,...e.updated,...e.unchanged],n=[],r=[],s=[];for(let e=0;e<i.length;e++){const a=i[e],{properties:o}=a,l=t[o.mode](a);\"Point\"===a.geometry.type?(o.pointColor=l.pointColor,o.pointOutlineColor=l.pointOutlineColor,o.pointOutlineWidth=l.pointOutlineWidth,o.pointWidth=l.pointWidth,n.push(a)):\"LineString\"===a.geometry.type?(o.lineStringColor=l.lineStringColor,o.lineStringWidth=l.lineStringWidth,r.push(a)):\"Polygon\"===a.geometry.type&&(o.polygonFillColor=l.polygonFillColor,o.polygonFillOpacity=l.polygonFillOpacity,o.polygonOutlineColor=l.polygonOutlineColor,o.polygonOutlineWidth=l.polygonOutlineWidth,s.push(a))}if(this._rendered){const e=this.changedIds.deletion||this.changedIds.styling,t=e||this.changedIds.linestrings,i=e||this.changedIds.polygons;let a;(e||this.changedIds.points)&&(a=this._setGeoJSONLayerData(\"Point\",n)),t&&this._setGeoJSONLayerData(\"LineString\",r),i&&this._setGeoJSONLayerData(\"Polygon\",s),a&&this._map.moveLayer(a)}else{const e=this._addGeoJSONLayer(\"Point\",n);this._addGeoJSONLayer(\"LineString\",r),this._addGeoJSONLayer(\"Polygon\",s),this._rendered=!0,e&&this._map.moveLayer(e)}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(e){var t;super.register(e),null!=(t=this._currentModeCallbacks)&&t.onReady&&this._currentModeCallbacks.onReady()}}export{a as TerraDrawMapLibreGLAdapter};\n//# sourceMappingURL=terra-draw-maplibre-gl-adapter.modern.js.map\n","/**\n * The list of available Terra Draw drawing modes for MaplibreTerraDrawControl\n */\nexport const AvailableModes = [\n\t'render',\n\t'point',\n\t'linestring',\n\t'polygon',\n\t'rectangle',\n\t'circle',\n\t'freehand',\n\t'angled-rectangle',\n\t'sensor',\n\t'sector',\n\t'select',\n\t'delete-selection',\n\t'delete',\n\t'download'\n] as const;\n","/**\n * The list of available Terra Draw drawing modes for MaplibreMeasureControl\n */\nexport const AvailableMeasureModes = [\n\t'render',\n\t'linestring',\n\t'polygon',\n\t'rectangle',\n\t'circle',\n\t'freehand',\n\t'angled-rectangle',\n\t'sensor',\n\t'sector',\n\t'select',\n\t'delete-selection',\n\t'delete',\n\t'download'\n] as const;\n","import type { TerradrawControlOptions } from '../interfaces/TerradrawControlOptions';\n\n/**\n * Default control options\n */\nexport const defaultControlOptions: TerradrawControlOptions = {\n\tmodes: [\n\t\t'render',\n\t\t'point',\n\t\t'linestring',\n\t\t'polygon',\n\t\t'rectangle',\n\t\t'angled-rectangle',\n\t\t'sensor',\n\t\t'sector',\n\t\t'circle',\n\t\t'freehand',\n\t\t'select',\n\t\t'delete-selection',\n\t\t'delete',\n\t\t'download'\n\t],\n\topen: false\n};\n","import {\n\tTerraDrawAngledRectangleMode,\n\tTerraDrawCircleMode,\n\tTerraDrawFreehandMode,\n\tTerraDrawLineStringMode,\n\tTerraDrawPolygonMode,\n\tTerraDrawRectangleMode,\n\tTerraDrawSectorMode,\n\tTerraDrawSensorMode\n} from 'terra-draw';\nimport type { MeasureControlOptions } from '../interfaces/MeasureControlOptions';\n\n/**\n * Default MeasureControl options\n */\nexport const defaultMeasureControlOptions: MeasureControlOptions = {\n\tmodes: [\n\t\t'render',\n\t\t'linestring',\n\t\t'polygon',\n\t\t'rectangle',\n\t\t'angled-rectangle',\n\t\t'sensor',\n\t\t'sector',\n\t\t'circle',\n\t\t'freehand',\n\t\t'select',\n\t\t'delete-selection',\n\t\t'delete',\n\t\t'download'\n\t],\n\topen: false,\n\t// see styling parameters of Terra Draw at https://github.com/JamesLMilner/terra-draw/blob/main/guides/5.STYLING.md\n\tmodeOptions: {\n\t\tlinestring: new TerraDrawLineStringMode({\n\t\t\tstyles: {\n\t\t\t\tlineStringColor: '#232E3D',\n\t\t\t\tlineStringWidth: 2,\n\t\t\t\tclosingPointColor: '#FFFFFF',\n\t\t\t\tclosingPointWidth: 3,\n\t\t\t\tclosingPointOutlineColor: '#232E3D',\n\t\t\t\tclosingPointOutlineWidth: 1\n\t\t\t}\n\t\t}),\n\t\tpolygon: new TerraDrawPolygonMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2,\n\t\t\t\tclosingPointColor: '#FAFAFA',\n\t\t\t\tclosingPointWidth: 3,\n\t\t\t\tclosingPointOutlineColor: '#232E3D',\n\t\t\t\tclosingPointOutlineWidth: 1\n\t\t\t}\n\t\t}),\n\t\trectangle: new TerraDrawRectangleMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2\n\t\t\t}\n\t\t}),\n\t\t'angled-rectangle': new TerraDrawAngledRectangleMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2\n\t\t\t}\n\t\t}),\n\t\tcircle: new TerraDrawCircleMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2\n\t\t\t}\n\t\t}),\n\t\tfreehand: new TerraDrawFreehandMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2,\n\t\t\t\tclosingPointColor: '#FAFAFA',\n\t\t\t\tclosingPointWidth: 3,\n\t\t\t\tclosingPointOutlineColor: '#232E3D',\n\t\t\t\tclosingPointOutlineWidth: 1\n\t\t\t}\n\t\t}),\n\t\tsensor: new TerraDrawSensorMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2,\n\t\t\t\tcenterPointColor: '#FAFAFA',\n\t\t\t\tcenterPointWidth: 3,\n\t\t\t\tcenterPointOutlineColor: '#232E3D',\n\t\t\t\tcenterPointOutlineWidth: 1\n\t\t\t}\n\t\t}),\n\t\tsector: new TerraDrawSectorMode({\n\t\t\tstyles: {\n\t\t\t\tfillColor: '#EDEFF0',\n\t\t\t\tfillOpacity: 0.7,\n\t\t\t\toutlineColor: '#232E3D',\n\t\t\t\toutlineWidth: 2\n\t\t\t}\n\t\t})\n\t},\n\tlineLayerLabelSpec: {\n\t\tid: 'terradraw-measure-line-label',\n\t\ttype: 'symbol',\n\t\tsource: 'terradraw-measure-line-source',\n\t\tfilter: ['==', '$type', 'Point'],\n\t\tlayout: {\n\t\t\t'text-field': [\n\t\t\t\t'concat',\n\t\t\t\t['to-string', ['get', 'distance']],\n\t\t\t\t' ',\n\t\t\t\t['get', 'unit'],\n\t\t\t\t[\n\t\t\t\t\t'case',\n\t\t\t\t\t['==', ['get', 'total'], 0],\n\t\t\t\t\t'',\n\t\t\t\t\t['concat', '\\n(', ['to-string', ['get', 'total']], ' ', ['get', 'unit'], ')']\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t'case',\n\t\t\t\t\t['all', ['has', 'elevation'], ['>', ['get', 'elevation'], 0]],\n\t\t\t\t\t['concat', '\\nAlt. ', ['to-string', ['floor', ['get', 'elevation']]], ' m'],\n\t\t\t\t\t''\n\t\t\t\t]\n\t\t\t],\n\t\t\t'symbol-placement': 'point',\n\t\t\t'text-size': [\n\t\t\t\t'interpolate',\n\t\t\t\t['linear'],\n\t\t\t\t['zoom'],\n\t\t\t\t5,\n\t\t\t\t10,\n\t\t\t\t10,\n\t\t\t\t12.0,\n\t\t\t\t13,\n\t\t\t\t14.0,\n\t\t\t\t14,\n\t\t\t\t16.0,\n\t\t\t\t18,\n\t\t\t\t18.0\n\t\t\t],\n\t\t\t'text-overlap': 'always',\n\t\t\t'text-variable-anchor': ['left', 'right', 'top', 'bottom'],\n\t\t\t'text-radial-offset': 0.5,\n\t\t\t'text-justify': 'center',\n\t\t\t'text-letter-spacing': 0.05\n\t\t},\n\t\tpaint: {\n\t\t\t'text-halo-color': '#F7F7F7',\n\t\t\t'text-halo-width': 2,\n\t\t\t'text-color': '#232E3D'\n\t\t}\n\t},\n\tlineLayerNodeSpec: {\n\t\tid: 'terradraw-measure-line-node',\n\t\ttype: 'circle',\n\t\tsource: 'terradraw-measure-line-source',\n\t\tfilter: ['==', '$type', 'Point'],\n\t\tlayout: {},\n\t\tpaint: {\n\t\t\t'circle-radius': 3,\n\t\t\t'circle-color': '#FFFFFF',\n\t\t\t'circle-stroke-color': '#000000',\n\t\t\t'circle-stroke-width': 1\n\t\t}\n\t},\n\tpolygonLayerSpec: {\n\t\tid: 'terradraw-measure-polygon-label',\n\t\ttype: 'symbol',\n\t\tsource: 'terradraw-measure-polygon-source',\n\t\tfilter: ['==', '$type', 'Point'],\n\t\tlayout: {\n\t\t\t'text-field': ['concat', ['to-string', ['get', 'area']], ' ', ['get', 'unit']],\n\t\t\t'symbol-placement': 'point',\n\t\t\t'text-size': [\n\t\t\t\t'interpolate',\n\t\t\t\t['linear'],\n\t\t\t\t['zoom'],\n\t\t\t\t5,\n\t\t\t\t10,\n\t\t\t\t10,\n\t\t\t\t12.0,\n\t\t\t\t13,\n\t\t\t\t14.0,\n\t\t\t\t14,\n\t\t\t\t16.0,\n\t\t\t\t18,\n\t\t\t\t18.0\n\t\t\t],\n\t\t\t'text-overlap': 'always',\n\t\t\t'text-letter-spacing': 0.05\n\t\t},\n\t\tpaint: {\n\t\t\t'text-halo-color': '#F7F7F7',\n\t\t\t'text-halo-width': 2,\n\t\t\t'text-color': '#232E3D'\n\t\t}\n\t},\n\tcomputeElevation: false,\n\tdistanceUnit: 'kilometers',\n\tdistancePrecision: 2,\n\tareaUnit: 'metric',\n\tareaPrecision: 2\n};\n","import type { MapGeoJSONFeature } from 'maplibre-gl';\nimport type { ModeOptions } from '../interfaces/ModeOptions';\nimport {\n\tTerraDrawAngledRectangleMode,\n\tTerraDrawCircleMode,\n\tTerraDrawFreehandMode,\n\tTerraDrawLineStringMode,\n\tTerraDrawPointMode,\n\tTerraDrawPolygonMode,\n\tTerraDrawRectangleMode,\n\tTerraDrawRenderMode,\n\tTerraDrawSectorMode,\n\tTerraDrawSelectMode,\n\tTerraDrawSensorMode,\n\tValidateNotSelfIntersecting\n} from 'terra-draw';\n\n/**\n * get default Terra Draw mode instances.\n * @returns default TerraDrawMode objects. Key is TerraDraw mode name, and value is Terra Draw mode object instance\n */\nexport const getDefaultModeOptions = () => {\n\tconst modeOptions: ModeOptions = {\n\t\trender: new TerraDrawRenderMode({\n\t\t\tmodeName: 'render',\n\t\t\tstyles: {}\n\t\t}),\n\t\tpoint: new TerraDrawPointMode(),\n\t\tlinestring: new TerraDrawLineStringMode(),\n\t\tpolygon: new TerraDrawPolygonMode({\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t// @ts-ignore\n\t\t\tvalidation: (feature: MapGeoJSONFeature, e: { updateType: string }) => {\n\t\t\t\tconst updateType = e.updateType;\n\t\t\t\tif (updateType === 'finish' || updateType === 'commit') {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn ValidateNotSelfIntersecting(feature);\n\t\t\t\t}\n\t\t\t\treturn { valid: true };\n\t\t\t}\n\t\t}),\n\t\trectangle: new TerraDrawRectangleMode(),\n\t\t'angled-rectangle': new TerraDrawAngledRectangleMode(),\n\t\tcircle: new TerraDrawCircleMode(),\n\t\tfreehand: new TerraDrawFreehandMode(),\n\t\tsensor: new TerraDrawSensorMode(),\n\t\tsector: new TerraDrawSectorMode(),\n\t\tselect: new TerraDrawSelectMode({\n\t\t\tflags: {\n\t\t\t\tpoint: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tpolygon: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlinestring: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfreehand: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcircle: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trectangle: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'angled-rectangle': {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsensor: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsector: {\n\t\t\t\t\tfeature: {\n\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\trotateable: true,\n\t\t\t\t\t\tscaleable: true,\n\t\t\t\t\t\tcoordinates: {\n\t\t\t\t\t\t\tmidpoints: true,\n\t\t\t\t\t\t\tdraggable: true,\n\t\t\t\t\t\t\tdeletable: true\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\tdelete: new TerraDrawRenderMode({\n\t\t\tmodeName: 'delete',\n\t\t\tstyles: {}\n\t\t}),\n\t\t'delete-selection': new TerraDrawRenderMode({\n\t\t\tmodeName: 'delete-selection',\n\t\t\tstyles: {}\n\t\t}),\n\t\tdownload: new TerraDrawRenderMode({\n\t\t\tmodeName: 'download',\n\t\t\tstyles: {}\n\t\t})\n\t};\n\treturn modeOptions;\n};\n","import type { ControlPosition, IControl, Map } from 'maplibre-gl';\nimport { type GeoJSONStoreFeatures, TerraDraw, TerraDrawRenderMode } from 'terra-draw';\nimport { TerraDrawMapLibreGLAdapter } from 'terra-draw-maplibre-gl-adapter';\nimport type {\n\tTerradrawControlOptions,\n\tEventType,\n\tTerradrawMode,\n\tTerradrawModeClass\n} from '../interfaces';\nimport { defaultControlOptions, getDefaultModeOptions } from '../constants';\n\n/**\n * Maplibre GL Terra Draw Control\n */\nexport class MaplibreTerradrawControl implements IControl {\n\tprotected controlContainer?: HTMLElement;\n\tprotected map?: Map;\n\tprotected modeButtons: { [key: string]: HTMLButtonElement } = {};\n\tprotected isExpanded = false;\n\n\tprotected terradraw?: TerraDraw;\n\tprotected options: TerradrawControlOptions = defaultControlOptions;\n\tprotected events: {\n\t\t[key: string]: [(event?: { feature?: GeoJSONStoreFeatures[]; mode?: TerradrawMode }) => void];\n\t} = {};\n\n\tprotected defaultMode = 'render';\n\n\t/**\n\t * Constructor\n\t * @param options Plugin control options\n\t */\n\tconstructor(options?: TerradrawControlOptions) {\n\t\tthis.modeButtons = {};\n\n\t\tif (options) {\n\t\t\tthis.options = Object.assign(this.options, options);\n\t\t}\n\t}\n\n\t/**\n\t * Get the default control position\n\t * @returns default control position. Default is 'top-right'\n\t */\n\tpublic getDefaultPosition(): ControlPosition {\n\t\tconst defaultPosition = 'top-right';\n\t\treturn defaultPosition;\n\t}\n\n\t/**\n\t * add the plugin control to maplibre\n\t * @param map Maplibre Map object\n\t * @returns HTML Element\n\t */\n\tpublic onAdd(map: Map): HTMLElement {\n\t\tif (this.options && this.options.modes && this.options.modes.length === 0) {\n\t\t\tthrow new Error('At least a mode must be enabled.');\n\t\t}\n\t\tthis.map = map;\n\n\t\tconst defaultOptions = getDefaultModeOptions();\n\t\tconst modes: TerradrawModeClass[] = [];\n\n\t\tthis.options?.modes?.forEach((m) => {\n\t\t\tif (this.options.modeOptions && this.options.modeOptions[m]) {\n\t\t\t\tconst newOption = this.options.modeOptions[m];\n\n\t\t\t\tif (m === 'select') {\n\t\t\t\t\t// overwrite other select mode settings if new option does not contain.\n\t\t\t\t\tconst defaultOption = defaultOptions[m];\n\t\t\t\t\tif (defaultOption) {\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tconst flags = defaultOption.flags;\n\t\t\t\t\t\tObject.keys(flags).forEach((key) => {\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tif (newOption.flags[key]) return;\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tnewOption.flags[key] = flags[key];\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmodes.push(newOption);\n\t\t\t} else if (defaultOptions[m]) {\n\t\t\t\tmodes.push(defaultOptions[m]);\n\t\t\t}\n\t\t});\n\n\t\t// sometimes, an error of 'Can not register unless mode is unregistered' is thrown by terradraw,\n\t\t// thus, force reset mode state as unregistered\n\t\tmodes.forEach((m) => {\n\t\t\tif (m.state !== 'unregistered') {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t// @ts-ignore\n\t\t\t\tm._state = 'unregistered';\n\t\t\t}\n\t\t});\n\n\t\t// if no render button is specified, it add hidden render mode\n\t\tif (!this.options?.modes?.includes('render')) {\n\t\t\tmodes.push(\n\t\t\t\tnew TerraDrawRenderMode({\n\t\t\t\t\tmodeName: 'default',\n\t\t\t\t\tstyles: {}\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis.defaultMode = 'default';\n\t\t}\n\n\t\tthis.isExpanded = this.options.open === true;\n\n\t\tthis.terradraw = new TerraDraw({\n\t\t\tadapter: new TerraDrawMapLibreGLAdapter({ map, ...this.options.adapterOptions }),\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\tmodes.forEach((m: TerradrawModeClass) => {\n\t\t\tif (m.mode === 'default') return;\n\t\t\tthis.addTerradrawButton(m.mode as TerradrawMode);\n\t\t});\n\n\t\tObject.values(this.modeButtons).forEach((ele) => {\n\t\t\tthis.controlContainer?.appendChild(ele);\n\t\t});\n\n\t\tthis.terradraw?.on('change', this.toggleButtonsWhenNoFeature.bind(this));\n\t\tthis.toggleButtonsWhenNoFeature();\n\t\treturn this.controlContainer;\n\t}\n\n\t/**\n\t * Remove the plugin control from maplibre\n\t * @returns void\n\t */\n\tpublic onRemove(): void {\n\t\tif (!this.controlContainer || !this.controlContainer.parentNode || !this.map) {\n\t\t\treturn;\n\t\t}\n\t\tthis.deactivate();\n\t\tthis.modeButtons = {};\n\t\tthis.terradraw = undefined;\n\t\tthis.map = undefined;\n\t\tthis.controlContainer.parentNode.removeChild(this.controlContainer);\n\t}\n\n\t/**\n\t * Register an event for the plugin\n\t * @param event event type\n\t * @param callback\n\t */\n\tpublic on(event: EventType, callback: (event?: { feature?: GeoJSONStoreFeatures[] }) => void) {\n\t\tif (!this.events[event]) {\n\t\t\tthis.events[event] = [callback];\n\t\t} else {\n\t\t\tthis.events[event].push(callback);\n\t\t}\n\t}\n\n\t/**\n\t * Unregister an event for the plugin\n\t * @param event event type\n\t * @param callback\n\t * @returns\n\t */\n\tpublic off(event: EventType, callback: (event?: { feature?: GeoJSONStoreFeatures[] }) => void) {\n\t\tif (!this.events[event]) return;\n\t\tconst index = this.events[event].findIndex((c) => c === callback);\n\t\tif (index !== -1) {\n\t\t\tthis.events[event].splice(index, 1);\n\t\t}\n\t}\n\n\t/**\n\t * Dispatch an event. Pass the current snapshot of features and mode\n\t * @param event event type\n\t */\n\tprotected dispatchEvent(event: EventType) {\n\t\tif (this.events[event]) {\n\t\t\tthis.events[event].forEach((callback) => {\n\t\t\t\tconst snapshot = this.terradraw?.getSnapshot();\n\t\t\t\tconst currentFeature = snapshot?.filter((f) => f.properties.selected === true);\n\t\t\t\tcallback({ feature: currentFeature, mode: this.terradraw?.getMode() as TerradrawMode });\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Activate Terra Draw to start drawing\n\t */\n\tpublic activate() {\n\t\tif (!this.terradraw) return;\n\t\tif (!this.terradraw.enabled) {\n\t\t\tthis.terradraw.start();\n\t\t\tthis.dispatchEvent('mode-changed');\n\t\t}\n\t}\n\n\t/**\n\t * Deactivate Terra Draw to stop drawing\n\t */\n\tpublic deactivate() {\n\t\tif (!this.terradraw) return;\n\t\tif (!this.terradraw.enabled) return;\n\t\tthis.resetActiveMode();\n\t\tthis.dispatchEvent('mode-changed');\n\t\tthis.terradraw.stop();\n\t}\n\n\t/**\n\t * Get the Terra Draw instance.\n\t * For the Terra Draw API, please refer to https://terradraw.io/#/api\n\t * @returns Terra Draw instance\n\t */\n\tpublic getTerraDrawInstance() {\n\t\treturn this.terradraw;\n\t}\n\n\t/**\n\t * Toggle editor control\n\t */\n\tprotected toggleEditor() {\n\t\tif (!this.terradraw) return;\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\tif (this.isExpanded) {\n\t\t\t\titem.classList.add('hidden');\n\t\t\t} else {\n\t\t\t\titem.classList.remove('hidden');\n\t\t\t}\n\t\t}\n\t\tconst addButton = document.getElementsByClassName('maplibregl-terradraw-render-button');\n\t\tif (addButton && addButton.length > 0) {\n\t\t\tif (this.isExpanded) {\n\t\t\t\taddButton.item(0)?.classList.remove('enabled');\n\t\t\t\tthis.resetActiveMode();\n\t\t\t} else {\n\t\t\t\taddButton.item(0)?.classList.add('enabled');\n\t\t\t}\n\t\t}\n\t\tthis.toggleDeleteSelectionButton();\n\t\tthis.toggleButtonsWhenNoFeature();\n\t\tthis.isExpanded = !this.isExpanded;\n\t}\n\n\t/**\n\t * Reset active mode to back to render mode\n\t */\n\tprotected resetActiveMode() {\n\t\tif (!this.terradraw) return;\n\t\tif (!this.terradraw.enabled) {\n\t\t\tthis.terradraw.start();\n\t\t}\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\tthis.terradraw?.setMode(this.defaultMode);\n\t}\n\n\t/**\n\t * Add Terra Draw drawing mode button\n\t * @param mode Terra Draw mode name\n\t */\n\tprotected addTerradrawButton(mode: TerradrawMode) {\n\t\tconst btn = document.createElement('button');\n\t\tbtn.type = 'button';\n\t\tthis.modeButtons[mode] = btn;\n\n\t\tif (mode === 'render') {\n\t\t\tbtn.classList.add(`maplibregl-terradraw-${mode}-button`);\n\n\t\t\tif (this.isExpanded) {\n\t\t\t\tbtn.classList.add('enabled');\n\t\t\t}\n\t\t\tbtn.type = 'button';\n\t\t\tbtn.title = this.capitalize('expand or collapse drawing tool');\n\t\t\tbtn.addEventListener('click', this.toggleEditor.bind(this));\n\t\t} else {\n\t\t\tbtn.classList.add('maplibregl-terradraw-add-control');\n\n\t\t\tif (!this.isExpanded) {\n\t\t\t\tbtn.classList.add('hidden');\n\t\t\t}\n\t\t\tbtn.title = this.capitalize(mode.replace(/-/g, ' '));\n\n\t\t\tif (mode === 'delete') {\n\t\t\t\tbtn.classList.add(`maplibregl-terradraw-${mode}-button`);\n\n\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\tif (!this.terradraw) return;\n\t\t\t\t\tif (!this.terradraw.enabled) return;\n\n\t\t\t\t\tthis.terradraw.clear();\n\t\t\t\t\tthis.deactivate();\n\t\t\t\t\tthis.toggleDeleteSelectionButton();\n\t\t\t\t\tthis.toggleButtonsWhenNoFeature();\n\t\t\t\t\tthis.dispatchEvent('feature-deleted');\n\t\t\t\t});\n\t\t\t} else if (mode === 'delete-selection') {\n\t\t\t\tbtn.classList.add(`maplibregl-terradraw-${mode}-button`);\n\t\t\t\tbtn.classList.add(`hidden-delete-selection`);\n\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\tif (!this.terradraw) return;\n\t\t\t\t\tif (!this.terradraw.enabled) return;\n\n\t\t\t\t\tconst snapshot = this.terradraw?.getSnapshot();\n\t\t\t\t\tconst selected = snapshot.filter((f) => f.properties.selected === true);\n\n\t\t\t\t\tif (selected.length > 0) {\n\t\t\t\t\t\t// if feature is selected, delete only selected feature\n\t\t\t\t\t\tconst currentMode = this.terradraw.getMode();\n\t\t\t\t\t\tthis.terradraw.setMode(this.defaultMode);\n\t\t\t\t\t\tconst ids = selected.map((f) => f.id) as [string | number];\n\t\t\t\t\t\tthis.terradraw.removeFeatures(ids);\n\t\t\t\t\t\tthis.terradraw.setMode(currentMode);\n\t\t\t\t\t\tthis.dispatchEvent('feature-deleted');\n\t\t\t\t\t}\n\t\t\t\t\tthis.toggleDeleteSelectionButton();\n\t\t\t\t\tthis.toggleButtonsWhenNoFeature();\n\t\t\t\t});\n\t\t\t} else if (mode === 'download') {\n\t\t\t\tbtn.classList.add(`maplibregl-terradraw-${mode}-button`);\n\t\t\t\tbtn.addEventListener('click', this.handleDownload.bind(this));\n\t\t\t} else {\n\t\t\t\tbtn.classList.add(`maplibregl-terradraw-add-${mode}-button`);\n\n\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\tif (!this.terradraw) return;\n\n\t\t\t\t\tconst isActive = btn.classList.contains('active');\n\t\t\t\t\tthis.activate();\n\t\t\t\t\tthis.resetActiveMode();\n\n\t\t\t\t\tif (!isActive) {\n\t\t\t\t\t\tthis.terradraw.setMode(mode);\n\t\t\t\t\t\tbtn.classList.add('active');\n\t\t\t\t\t}\n\t\t\t\t\tthis.toggleDeleteSelectionButton();\n\t\t\t\t\tthis.toggleButtonsWhenNoFeature();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * get GeoJSON features\n\t * @param onlySelected If true, returns only selected features. Default is false.\n\t * @returns FeatureCollection in GeoJSON format\n\t */\n\tpublic getFeatures(onlySelected = false) {\n\t\tif (!this.terradraw) return;\n\t\tconst snapshot = this.terradraw?.getSnapshot();\n\t\tconst features = snapshot.filter((f) => f.properties.mode !== 'select');\n\n\t\tconst fc = {\n\t\t\ttype: 'FeatureCollection',\n\t\t\tfeatures: features\n\t\t};\n\t\tif (onlySelected !== true) {\n\t\t\treturn fc;\n\t\t}\n\t\tfc.features = fc.features.filter((f) => f.properties.selected === true);\n\t\treturn fc;\n\t}\n\n\t/**\n\t * Download button click event handler\n\t */\n\tprotected handleDownload() {\n\t\tconst fc = this.getFeatures(false);\n\n\t\tconst dataStr = 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(fc));\n\t\tconst download = document.createElement('a');\n\t\tdownload.setAttribute('href', dataStr);\n\t\tdownload.setAttribute('download', 'data.geojson');\n\t\tdocument.body.appendChild(download);\n\t\tdownload.click();\n\t\tdownload.remove();\n\t}\n\n\t/**\n\t * Toggle the state of buttons when there is no features\n\t */\n\tprotected toggleButtonsWhenNoFeature() {\n\t\tif (!this.controlContainer) return;\n\t\tconst fc = this.getFeatures(false);\n\t\tconst isActive = fc && fc.features.length > 0 ? true : false;\n\n\t\tconst targets = [\n\t\t\t`maplibregl-terradraw-add-select-button`,\n\t\t\t`maplibregl-terradraw-download-button`,\n\t\t\t`maplibregl-terradraw-delete-button`\n\t\t];\n\t\tfor (const className of targets) {\n\t\t\tconst btns = this.controlContainer.getElementsByClassName(className);\n\t\t\tfor (let i = 0; i < btns.length; i++) {\n\t\t\t\tconst btn = btns.item(i) as HTMLButtonElement;\n\t\t\t\tif (!btn) continue;\n\t\t\t\tbtn.disabled = !isActive;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Toggle the state of delete-select button\n\t */\n\tprotected toggleDeleteSelectionButton() {\n\t\tconst enabled = this.terradraw?.enabled || false;\n\t\tconst mode = this.terradraw?.getMode();\n\t\tconst fc = this.getFeatures(false);\n\t\tconst hasFeatures = fc && fc.features.length > 0;\n\t\tconst isActive = hasFeatures && enabled && mode === 'select';\n\t\tconst btns = document.getElementsByClassName(`maplibregl-terradraw-delete-selection-button`);\n\t\tfor (let i = 0; i < btns.length; i++) {\n\t\t\tconst btn = btns.item(i);\n\t\t\tif (!btn) continue;\n\t\t\tif (isActive) {\n\t\t\t\tbtn.classList.remove('hidden-delete-selection');\n\t\t\t} else {\n\t\t\t\tbtn.classList.add('hidden-delete-selection');\n\t\t\t}\n\t\t}\n\n\t\tif (!hasFeatures) {\n\t\t\tconst btns = document.getElementsByClassName(`maplibregl-terradraw-add-select-button`);\n\t\t\tfor (let i = 0; i < btns.length; i++) {\n\t\t\t\tconst btn = btns.item(i);\n\t\t\t\tif (!btn) continue;\n\t\t\t\tbtn.classList.remove('active');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Capitalzie string value\n\t * @param value string value\n\t * @returns string\n\t */\n\tprotected capitalize(value: string) {\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t}\n}\n","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 180) {\n return angle - 360;\n } else if (angle < -180) {\n return angle + 360;\n }\n return angle;\n}\nfunction radiansToDegrees(radians) {\n const normalisedRadians = radians % (2 * Math.PI);\n return normalisedRadians * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const normalisedDegrees = degrees % 360;\n return normalisedDegrees * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { isNumber } from \"@turf/helpers\";\nfunction getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\n return [...coord.geometry.coordinates];\n }\n if (coord.type === \"Point\") {\n return [...coord.coordinates];\n }\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\n return [...coord];\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n } else {\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\n \"coords must be GeoJSON Feature, Geometry Object or an Array\"\n );\n}\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\nfunction geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type\n );\n }\n}\nfunction featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n}\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\n \"Invalid input to \" + name + \", FeatureCollection required\"\n );\n }\n for (const feature of featureCollection.features) {\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n }\n}\nfunction getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\nfunction getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\nexport {\n collectionOf,\n containsNumber,\n featureOf,\n geojsonType,\n getCoord,\n getCoords,\n getGeom,\n getType\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { getCoord } from \"@turf/invariant\";\nimport { radiansToLength, degreesToRadians } from \"@turf/helpers\";\nfunction distance(from, to, options = {}) {\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n var dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) + Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return radiansToLength(\n 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)),\n options.units\n );\n}\nvar turf_distance_default = distance;\nexport {\n turf_distance_default as default,\n distance\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry) return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson) throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null) return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { earthRadius } from \"@turf/helpers\";\nimport { geomReduce } from \"@turf/meta\";\nfunction area(geojson) {\n return geomReduce(\n geojson,\n (value, geom) => {\n return value + calculateArea(geom);\n },\n 0\n );\n}\nfunction calculateArea(geom) {\n let total = 0;\n let i;\n switch (geom.type) {\n case \"Polygon\":\n return polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for (i = 0; i < geom.coordinates.length; i++) {\n total += polygonArea(geom.coordinates[i]);\n }\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction polygonArea(coords) {\n let total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs(ringArea(coords[0]));\n for (let i = 1; i < coords.length; i++) {\n total -= Math.abs(ringArea(coords[i]));\n }\n }\n return total;\n}\nvar FACTOR = earthRadius * earthRadius / 2;\nvar PI_OVER_180 = Math.PI / 180;\nfunction ringArea(coords) {\n const coordsLength = coords.length - 1;\n if (coordsLength <= 2) return 0;\n let total = 0;\n let i = 0;\n while (i < coordsLength) {\n const lower = coords[i];\n const middle = coords[i + 1 === coordsLength ? 0 : i + 1];\n const upper = coords[i + 2 >= coordsLength ? (i + 2) % coordsLength : i + 2];\n const lowerX = lower[0] * PI_OVER_180;\n const middleY = middle[1] * PI_OVER_180;\n const upperX = upper[0] * PI_OVER_180;\n total += (upperX - lowerX) * Math.sin(middleY);\n i++;\n }\n return total * FACTOR;\n}\nvar turf_area_default = area;\nexport {\n area,\n turf_area_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { point } from \"@turf/helpers\";\nimport { coordEach } from \"@turf/meta\";\nfunction centroid(geojson, options = {}) {\n let xSum = 0;\n let ySum = 0;\n let len = 0;\n coordEach(\n geojson,\n function(coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n },\n true\n );\n return point([xSum / len, ySum / len], options.properties);\n}\nvar turf_centroid_default = centroid;\nexport {\n centroid,\n turf_centroid_default as default\n};\n//# sourceMappingURL=index.js.map","import type {\n\tCircleLayerSpecification,\n\tGeoJSONSource,\n\tGeoJSONSourceSpecification,\n\tLngLatLike,\n\tMap,\n\tSymbolLayerSpecification\n} from 'maplibre-gl';\nimport { MaplibreTerradrawControl } from './MaplibreTerradrawControl';\nimport { distance } from '@turf/distance';\nimport { area } from '@turf/area';\nimport { centroid } from '@turf/centroid';\nimport { defaultMeasureControlOptions } from '../constants';\nimport type { AreaUnit, DistanceUnit, MeasureControlOptions, TerradrawMode } from '../interfaces';\nimport type { GeoJSONStoreFeatures } from 'terra-draw';\n\n/**\n * Maplibre GL Terra Draw Measure Control\n */\nexport class MaplibreMeasureControl extends MaplibreTerradrawControl {\n\tprivate measureOptions: MeasureControlOptions;\n\n\t/**\n\t * The unit of distance can be degrees, radians, miles, or kilometers (default 'kilometers')\n\t * The measuring result will be recalculated once new value is set\n\t */\n\tget distanceUnit() {\n\t\treturn this.measureOptions.distanceUnit ?? 'kilometers';\n\t}\n\tset distanceUnit(value: DistanceUnit) {\n\t\tconst isSame = this.measureOptions.distanceUnit === value;\n\t\tthis.measureOptions.distanceUnit = value;\n\n\t\tif (this.measureOptions.distanceUnit === 'degrees') {\n\t\t\tthis.distancePrecision = 6;\n\t\t} else {\n\t\t\tthis.distancePrecision = 2;\n\t\t}\n\n\t\tif (!isSame) this.recalc();\n\t}\n\n\t/**\n\t * The precision of distance value. It will be set different value dwhen distance unit is changed. Using setter to override the value if you want.\n\t */\n\tget distancePrecision() {\n\t\treturn this.measureOptions.distancePrecision ?? 2;\n\t}\n\tset distancePrecision(value: number) {\n\t\tconst isSame = this.measureOptions.distancePrecision === value;\n\t\tthis.measureOptions.distancePrecision = value;\n\t\tif (!isSame) this.recalc();\n\t}\n\n\t/**\n\t * The unit of area can be metric (m², ha, km²) or imperial (yd², acre, mi²). Default is metric.\n\t * The measuring result will be recalculated once new value is set\n\t */\n\tget areaUnit() {\n\t\treturn this.measureOptions.areaUnit ?? 'metric';\n\t}\n\tset areaUnit(value: AreaUnit) {\n\t\tconst isSame = this.measureOptions.areaUnit === value;\n\t\tthis.measureOptions.areaUnit = value;\n\t\tif (!isSame) this.recalc();\n\t}\n\n\t/**\n\t * The precision of area value. Using setter to override the value if you want.\n\t */\n\tget areaPrecision() {\n\t\treturn this.measureOptions.areaPrecision ?? 2;\n\t}\n\tset areaPrecision(value: number) {\n\t\tconst isSame = this.measureOptions.areaPrecision === value;\n\t\tthis.measureOptions.areaPrecision = value;\n\t\tif (!isSame) this.recalc();\n\t}\n\n\t/**\n\t * Constructor\n\t * @param options Plugin control options\n\t */\n\tconstructor(options?: MeasureControlOptions) {\n\t\tlet measureOptions: MeasureControlOptions = defaultMeasureControlOptions;\n\t\tif (options) {\n\t\t\tmeasureOptions = Object.assign(measureOptions, options);\n\t\t}\n\t\tsuper({\n\t\t\tmodes: measureOptions.modes,\n\t\t\topen: measureOptions.open,\n\t\t\tmodeOptions: measureOptions.modeOptions\n\t\t});\n\t\tthis.measureOptions = measureOptions;\n\t}\n\n\t/**\n\t * add the plugin control to maplibre\n\t * @param map Maplibre Map object\n\t * @returns HTML Element\n\t */\n\tpublic onAdd(map: Map): HTMLElement {\n\t\tthis.controlContainer = super.onAdd(map);\n\t\treturn this.controlContainer;\n\t}\n\n\t/**\n\t * Remove the plugin control from maplibre\n\t * @returns void\n\t */\n\tpublic onRemove(): void {\n\t\tthis.unregisterMesureControl();\n\t\tsuper.onRemove();\n\t}\n\n\t/**\n\t * Activate Terra Draw to start drawing\n\t */\n\tpublic activate() {\n\t\tsuper.activate();\n\t\tthis.registerMesureControl();\n\t}\n\n\t/**\n\t * Recalculate area and distance in TerraDraw snapshot\n\t *\n\t * if you use `addFeatures` to restore GeoJSON features to TerraDraw, this recalc method needs to be called to re-measure again.\n\t *\n\t * For example, the below code is an example usage.\n\t * ```\n\t * drawInstance?.addFeatures(initData);\n\t * map?.once('idle', ()=>{\n\t * drawControl.recalc()\n\t * })\n\t * ```\n\t */\n\tpublic recalc() {\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (drawInstance) {\n\t\t\tthis.registerMesureControl();\n\n\t\t\tconst snapshot = drawInstance.getSnapshot();\n\t\t\tfor (const feature of snapshot) {\n\t\t\t\tconst id: string = feature.id as string;\n\t\t\t\tconst geometryType = feature.geometry.type;\n\t\t\t\tconst mode = feature.properties.mode as TerradrawMode;\n\t\t\t\tif (mode === 'linestring' && geometryType === 'LineString') {\n\t\t\t\t\tthis.measureLine(id);\n\t\t\t\t} else if (\n\t\t\t\t\t!['point', 'linestring', 'select', 'render'].includes(mode) &&\n\t\t\t\t\tgeometryType === 'Polygon'\n\t\t\t\t) {\n\t\t\t\t\tthis.measurePolygon(id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Register measure control related maplibre sources and layers\n\t */\n\tprivate registerMesureControl() {\n\t\tif (!this.map) return;\n\n\t\tconst lineModes = this.options.modes?.filter((m) => ['linestring'].includes(m));\n\n\t\tif (lineModes && lineModes.length > 0) {\n\t\t\t// add GeoJSON source for distance label\n\t\t\tif (\n\t\t\t\t!this.map.getSource(\n\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthis.map.addSource(\n\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'geojson',\n\t\t\t\t\t\tdata: { type: 'FeatureCollection', features: [] }\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// add GeoJSON layer for distance label node appearance\n\t\t\tif (\n\t\t\t\t!this.map.getLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id)\n\t\t\t) {\n\t\t\t\tthis.map.addLayer(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification);\n\t\t\t}\n\n\t\t\t// add GeoJSON layer for distance label appearance\n\t\t\tif (\n\t\t\t\t!this.map.getLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id)\n\t\t\t) {\n\t\t\t\tthis.map.addLayer(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification);\n\t\t\t}\n\t\t}\n\n\t\tconst polygonModes = this.options.modes?.filter((m) =>\n\t\t\t[\n\t\t\t\t'polygon',\n\t\t\t\t'rectangle',\n\t\t\t\t'angled-rectangle',\n\t\t\t\t'circle',\n\t\t\t\t'sector',\n\t\t\t\t'sensor',\n\t\t\t\t'freehand'\n\t\t\t].includes(m)\n\t\t);\n\t\tif (polygonModes && polygonModes.length > 0) {\n\t\t\t// add GeoJSON source for distance label\n\t\t\tif (\n\t\t\t\t!this.map.getSource(\n\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthis.map.addSource(\n\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'geojson',\n\t\t\t\t\t\tdata: { type: 'FeatureCollection', features: [] }\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} // add GeoJSON layer for polygon area label appearance\n\t\t\tif (\n\t\t\t\t!this.map.getLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id)\n\t\t\t) {\n\t\t\t\tthis.map.addLayer(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification);\n\t\t\t}\n\t\t}\n\n\t\tif ((lineModes && lineModes.length > 0) || (polygonModes && polygonModes.length > 0)) {\n\t\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\t\tif (drawInstance) {\n\t\t\t\t// subscribe change event of TerraDraw to calc distance\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t// @ts-ignore\n\t\t\t\tdrawInstance.on('change', this.handleTerradrawFeatureChanged.bind(this));\n\n\t\t\t\t// subscribe feature-deleted event for the plugin control\n\t\t\t\tthis.on('feature-deleted', this.onFeatureDeleted.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Handle change event of TerraDraw\n\t * @param ids Feature IDs\n\t */\n\tprivate handleTerradrawFeatureChanged(ids: [string | number]) {\n\t\tif (!this.map) return;\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (!drawInstance) return;\n\t\tconst snapshot = drawInstance.getSnapshot();\n\t\tfor (const id of ids) {\n\t\t\tconst feature = snapshot.find((f) => f.id === id);\n\t\t\tif (feature) {\n\t\t\t\tconst geometryType = feature.geometry.type;\n\t\t\t\tconst mode = feature.properties.mode as TerradrawMode;\n\t\t\t\tif (mode === 'linestring' && geometryType === 'LineString') {\n\t\t\t\t\tthis.measureLine(id);\n\t\t\t\t} else if (\n\t\t\t\t\t!['point', 'linestring', 'select', 'render'].includes(mode) &&\n\t\t\t\t\tgeometryType === 'Polygon'\n\t\t\t\t) {\n\t\t\t\t\tthis.measurePolygon(id);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// if editing ID does not exist, delete all related features from measure layers\n\t\t\t\tthis.clearMeasureFeatures(\n\t\t\t\t\tid,\n\t\t\t\t\t(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).source\n\t\t\t\t);\n\t\t\t\tthis.clearMeasureFeatures(\n\t\t\t\t\tid,\n\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t\t);\n\t\t\t\tthis.clearMeasureFeatures(\n\t\t\t\t\tid,\n\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Unregister measure control related maplibre sources and layers\n\t */\n\tprivate unregisterMesureControl() {\n\t\tthis.off('feature-deleted', this.onFeatureDeleted.bind(this));\n\t\tif (!this.map) return;\n\t\tif (\n\t\t\tthis.map.getLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id)\n\t\t) {\n\t\t\tthis.map.removeLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id);\n\t\t}\n\t\tif (this.map.getLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id)) {\n\t\t\tthis.map.removeLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id);\n\t\t}\n\t\tif (this.map.getLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id)) {\n\t\t\tthis.map.removeLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id);\n\t\t}\n\t\tif (\n\t\t\tthis.map.getSource(\n\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t)\n\t\t) {\n\t\t\tthis.map.removeSource(\n\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tthis.map.getSource((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source)\n\t\t) {\n\t\t\tthis.map.removeSource(\n\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Clear GeoJSON feature related to measure control by TerraDraw feature ID\n\t * @param id feature ID\n\t * @param sourceId source ID to delete\n\t * @returns void\n\t */\n\tprivate clearMeasureFeatures(id: string | number, sourceId: string) {\n\t\tif (!this.map) return;\n\t\tconst geojsonSource: GeoJSONSourceSpecification = this.map.getStyle().sources[\n\t\t\tsourceId\n\t\t] as GeoJSONSourceSpecification;\n\t\tif (geojsonSource) {\n\t\t\t// delete old nodes\n\t\t\tif (\n\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t) {\n\t\t\t\tgeojsonSource.data.features = geojsonSource.data.features.filter(\n\t\t\t\t\t(f) => f.properties?.originalId !== id\n\t\t\t\t);\n\n\t\t\t\t// update GeoJSON source with new data\n\t\t\t\t(this.map.getSource(sourceId) as GeoJSONSource)?.setData(geojsonSource.data);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calculate area from polygon feature\n\t * @param feature Polygon GeoJSON feature\n\t * @returns The returning feature will contain `area`,`unit` properties.\n\t */\n\tprivate calcArea(feature: GeoJSONStoreFeatures) {\n\t\tif (feature.geometry.type !== 'Polygon') return feature;\n\t\t// caculate area in m2 by using turf/area\n\t\tconst result = area(feature.geometry);\n\n\t\t// convert unit to ha or km2 if value is larger\n\t\tlet outputArea = result;\n\t\tlet outputUnit = 'm²';\n\n\t\tif (this.areaUnit === 'metric') {\n\t\t\tif (result >= 1000000) {\n\t\t\t\t// 1 km² = 1,000,000 m²\n\t\t\t\toutputArea = result / 1000000;\n\t\t\t\toutputUnit = 'km²';\n\t\t\t} else if (result >= 10000) {\n\t\t\t\t// 1 ha = 10,000 m²\n\t\t\t\toutputArea = result / 10000;\n\t\t\t\toutputUnit = 'ha';\n\t\t\t}\n\t\t} else {\n\t\t\tif (result >= 2589988.11) {\n\t\t\t\t// 1 mi² = 2,589,988.11 m²\n\t\t\t\toutputArea = result / 2589988.11;\n\t\t\t\toutputUnit = 'mi²';\n\t\t\t} else if (result >= 4046.856) {\n\t\t\t\t// 1 acre = 4,046.856 m²\n\t\t\t\toutputArea = result / 4046.856;\n\t\t\t\toutputUnit = 'acre';\n\t\t\t} else if (result >= 0.83612736) {\n\t\t\t\t// 1 yd² = 0.83612736 m²\n\t\t\t\toutputArea = result / 0.83612736;\n\t\t\t\toutputUnit = 'yd²';\n\t\t\t}\n\t\t}\n\n\t\toutputArea = parseFloat(outputArea.toFixed(this.areaPrecision));\n\n\t\tfeature.properties.area = outputArea;\n\t\tfeature.properties.unit = outputUnit;\n\n\t\treturn feature;\n\t}\n\n\t/**\n\t * Get the equivalent unit name for displaying\n\t * @param distanceUnit distance unit\n\t * @returns Unit name for displaying\n\t */\n\tprivate getDistanceUnitName(distanceUnit: DistanceUnit) {\n\t\tif (distanceUnit === 'degrees') {\n\t\t\treturn '°';\n\t\t} else if (distanceUnit === 'miles') {\n\t\t\treturn 'mi';\n\t\t} else if (distanceUnit === 'radians') {\n\t\t\treturn 'rad';\n\t\t} else {\n\t\t\treturn 'km';\n\t\t}\n\t}\n\n\t/**\n\t * Caclulate distance for each segment on a given feature\n\t * @param feature LineString GeoJSON feature\n\t * @returns The returning feature will contain `segments`, `distance`, `unit` properties. `segments` will have multiple point features.\n\t */\n\tprivate calcDistance(feature: GeoJSONStoreFeatures) {\n\t\tif (feature.geometry.type !== 'LineString') return feature;\n\t\tconst coordinates: number[][] = (feature as GeoJSONStoreFeatures).geometry\n\t\t\t.coordinates as number[][];\n\n\t\t// calculate distance for each segment of LineString feature\n\t\tlet totalDistance = 0;\n\t\tconst segments: GeoJSONStoreFeatures[] = [];\n\t\tfor (let i = 0; i < coordinates.length - 1; i++) {\n\t\t\tconst start = coordinates[i];\n\t\t\tconst end = coordinates[i + 1];\n\t\t\tconst result = distance(start, end, { units: this.distanceUnit });\n\t\t\ttotalDistance += result;\n\n\t\t\t// segment\n\t\t\tconst segment = JSON.parse(JSON.stringify(feature));\n\t\t\tsegment.id = `${segment.id}-${i}`;\n\t\t\tsegment.geometry.coordinates = [start, end];\n\t\t\tsegment.properties.originalId = feature.id;\n\t\t\tsegment.properties.distance = parseFloat(result.toFixed(this.distancePrecision));\n\t\t\tsegment.properties.total = parseFloat(totalDistance.toFixed(this.distancePrecision));\n\t\t\tsegment.properties.unit = this.getDistanceUnitName(this.distanceUnit);\n\n\t\t\tif (this.measureOptions.computeElevation === true) {\n\t\t\t\tconst elevation_start = this.map?.queryTerrainElevation(start as LngLatLike);\n\t\t\t\tif (elevation_start) {\n\t\t\t\t\tsegment.properties.elevation_start = elevation_start;\n\t\t\t\t}\n\n\t\t\t\tconst elevation_end = this.map?.queryTerrainElevation(end as LngLatLike);\n\t\t\t\tif (elevation_end) {\n\t\t\t\t\tsegment.properties.elevation_end = elevation_end;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegments.push(segment);\n\t\t}\n\n\t\tfeature.properties.distance = segments[segments.length - 1].properties.total;\n\t\tfeature.properties.unit = segments[segments.length - 1].properties.unit;\n\t\tfeature.properties.segments = JSON.parse(JSON.stringify(segments));\n\n\t\treturn feature;\n\t}\n\n\t/**\n\t * measure polygon area for given feature ID\n\t * @param id terradraw feature id\n\t */\n\tprivate measurePolygon(id: string | number) {\n\t\tif (!this.map) return;\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (!drawInstance) return;\n\n\t\tconst snapshot = drawInstance.getSnapshot();\n\t\tlet feature = snapshot?.find((f) => f.id === id && f.geometry.type === 'Polygon');\n\t\tif (feature) {\n\t\t\tconst geojsonSource: GeoJSONSourceSpecification = this.map.getStyle().sources[\n\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t] as GeoJSONSourceSpecification;\n\t\t\tif (geojsonSource) {\n\t\t\t\t// delete old nodes\n\t\t\t\tif (\n\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t) {\n\t\t\t\t\tgeojsonSource.data.features = geojsonSource.data.features.filter(\n\t\t\t\t\t\t(f) => f.properties?.originalId !== id\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst point = JSON.parse(JSON.stringify(feature));\n\t\t\t\tpoint.id = point.id + '-area-label';\n\t\t\t\tpoint.geometry = centroid(feature.geometry).geometry;\n\t\t\t\tpoint.properties.originalId = feature.id;\n\n\t\t\t\tfeature = this.calcArea(feature);\n\t\t\t\tpoint.properties.area = feature.properties.area;\n\t\t\t\tpoint.properties.unit = feature.properties.unit;\n\n\t\t\t\tif (\n\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t) {\n\t\t\t\t\tgeojsonSource.data.features.push(point);\n\t\t\t\t}\n\t\t\t\t// update GeoJSON source with new data\n\t\t\t\t(\n\t\t\t\t\tthis.map.getSource(\n\t\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t\t) as GeoJSONSource\n\t\t\t\t)?.setData(geojsonSource.data);\n\n\t\t\t\tthis.map.moveLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id);\n\n\t\t\t\tif (\n\t\t\t\t\tthis.map.getLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id)\n\t\t\t\t) {\n\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.map.getLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id)\n\t\t\t\t) {\n\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * measure line distance for given feature ID\n\t * @param id terradraw feature id\n\t */\n\tprivate measureLine(id: string | number) {\n\t\tif (!this.map) return;\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (!drawInstance) return;\n\n\t\tconst snapshot = drawInstance.getSnapshot();\n\t\tlet feature = snapshot?.find((f) => f.id === id && f.geometry.type === 'LineString');\n\t\tif (feature) {\n\t\t\tconst geojsonSource: GeoJSONSourceSpecification = this.map.getStyle().sources[\n\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t] as GeoJSONSourceSpecification;\n\t\t\tif (geojsonSource) {\n\t\t\t\t// delete old nodes\n\t\t\t\tif (\n\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t) {\n\t\t\t\t\tgeojsonSource.data.features = geojsonSource.data.features.filter(\n\t\t\t\t\t\t(f) => f.properties?.originalId !== id\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfeature = this.calcDistance(feature);\n\t\t\t\tconst segments = feature.properties.segments as unknown as GeoJSONStoreFeatures[];\n\t\t\t\tfor (let i = 0; i < segments.length; i++) {\n\t\t\t\t\tconst segment = segments[i];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t\t) {\n\t\t\t\t\t\tgeojsonSource.data.features.push(segment);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst coordinates: number[][] = segment.geometry.coordinates as number[][];\n\t\t\t\t\tconst start = coordinates[0];\n\t\t\t\t\tconst end = coordinates[1];\n\n\t\t\t\t\t// node\n\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\tconst startNode = JSON.parse(JSON.stringify(segment));\n\t\t\t\t\t\tstartNode.id = `${segment.id}-node-${i}`;\n\t\t\t\t\t\tstartNode.geometry = {\n\t\t\t\t\t\t\ttype: 'Point',\n\t\t\t\t\t\t\tcoordinates: start\n\t\t\t\t\t\t};\n\t\t\t\t\t\tstartNode.properties.distance = 0;\n\t\t\t\t\t\tstartNode.properties.total = 0;\n\n\t\t\t\t\t\tif (segment.properties.elevation_start) {\n\t\t\t\t\t\t\tstartNode.properties.elevation = segment.properties.elevation_start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tgeojsonSource.data.features.push(startNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst endNode = JSON.parse(JSON.stringify(segment));\n\t\t\t\t\tendNode.id = `${segment.id}-node-${i + 1}`;\n\t\t\t\t\tendNode.geometry = {\n\t\t\t\t\t\ttype: 'Point',\n\t\t\t\t\t\tcoordinates: end\n\t\t\t\t\t};\n\n\t\t\t\t\tif (segment.properties.elevation_end) {\n\t\t\t\t\t\tendNode.properties.elevation = segment.properties.elevation_end;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t\t) {\n\t\t\t\t\t\tgeojsonSource.data.features.push(endNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// update GeoJSON source with new data\n\t\t\t\t(\n\t\t\t\t\tthis.map.getSource(\n\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t\t\t) as GeoJSONSource\n\t\t\t\t)?.setData(geojsonSource.data);\n\n\t\t\t\tif (\n\t\t\t\t\tthis.map.getLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id)\n\t\t\t\t) {\n\t\t\t\t\tthis.map.moveLayer((this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id);\n\t\t\t\t}\n\n\t\t\t\tthis.map.moveLayer((this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id);\n\t\t\t\tthis.map.moveLayer((this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Event definition when feature is deleted by terradraw\n\t */\n\tprivate onFeatureDeleted() {\n\t\tif (!this.map) return;\n\t\tconst drawInstance = this.getTerraDrawInstance();\n\t\tif (drawInstance) {\n\t\t\tconst sourceIds = [\n\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source,\n\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t];\n\t\t\tfor (const src of sourceIds) {\n\t\t\t\tconst geojsonSource: GeoJSONSourceSpecification = this.map.getStyle().sources[\n\t\t\t\t\tsrc\n\t\t\t\t] as GeoJSONSourceSpecification;\n\t\t\t\tif (geojsonSource) {\n\t\t\t\t\t// get IDs in current TerraDraw snapshot\n\t\t\t\t\tconst snapshot = drawInstance.getSnapshot();\n\t\t\t\t\tconst features = snapshot?.filter((feature) =>\n\t\t\t\t\t\t['LineString', 'Polygon'].includes(feature.geometry.type)\n\t\t\t\t\t);\n\t\t\t\t\tconst ids: string[] = features.map((f) => f.id as string);\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof geojsonSource.data !== 'string' &&\n\t\t\t\t\t\tgeojsonSource.data.type === 'FeatureCollection'\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Delete label features if originalId does not exist anymore.\n\t\t\t\t\t\tgeojsonSource.data.features = geojsonSource.data.features.filter((f) =>\n\t\t\t\t\t\t\tids.includes(f.properties?.originalId)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (src === (this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source) {\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tthis.map.getSource(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).source\n\t\t\t\t\t\t\t) as GeoJSONSource\n\t\t\t\t\t\t)?.setData(geojsonSource.data);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis.map.getLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerNodeSpec as CircleLayerSpecification).id\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis.map.getLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.lineLayerLabelSpec as SymbolLayerSpecification).id\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tsrc === (this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t\t) {\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tthis.map.getSource(\n\t\t\t\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).source\n\t\t\t\t\t\t\t) as GeoJSONSource\n\t\t\t\t\t\t)?.setData(geojsonSource.data);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis.map.getLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.map.moveLayer(\n\t\t\t\t\t\t\t\t(this.measureOptions.polygonLayerSpec as SymbolLayerSpecification).id\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\t/**\n\t * Calculate area / distance and update a feature properties\n\t * @param feature GeoJSON feature\n\t * @returns updated GeoJSON feature\n\t */\n\tprivate updateFeatureProperties = (feature: GeoJSONStoreFeatures) => {\n\t\tif (!this.map) return feature;\n\t\tif (!this.map.loaded()) return feature;\n\t\tconst geomType = feature.geometry.type;\n\t\tif (geomType === 'LineString') {\n\t\t\tfeature = this.calcDistance(feature);\n\t\t} else if (geomType === 'Polygon') {\n\t\t\tfeature = this.calcArea(feature);\n\t\t}\n\n\t\treturn feature;\n\t};\n\n\t/**\n\t * get GeoJSON features\n\t * @param onlySelected If true, returns only selected features. Default is false.\n\t * @returns FeatureCollection in GeoJSON format\n\t */\n\tpublic getFeatures(onlySelected = false) {\n\t\tconst fc = super.getFeatures(onlySelected);\n\t\tif (!fc) return fc;\n\t\tif (!this.terradraw) return fc;\n\n\t\tfor (let i = 0; i < fc.features.length; i++) {\n\t\t\tfc.features[i] = this.updateFeatureProperties(fc.features[i]);\n\t\t}\n\t\treturn fc;\n\t}\n}\n"],"names":["t","i","o","e","s","n","r","l","h","d","c","u","g","p","y","m","f","v","C","P","M","I","S","E","a","D","F","w","_","b","k","O","j","W","B","N","V","L","G","T","U","A","K","X","z","R","Y","H","q","$","Z","Q","tt","et","it","ot","st","nt","rt","at","lt","ht","dt","x","ct","ut","gt","pt","yt","mt","ft","vt","Ct","Pt","xt","Mt","It","St","Et","Dt","Ft","wt","_t","bt","kt","Ot","jt","Wt","Bt","Nt","Vt","Lt","Gt","Ht","Tt","Ut","At","Kt","Xt","zt","Rt","Yt","qt","$t","Jt","Qt","ae","le","he","de","ce","ue","ge","pe","ve","AvailableModes","AvailableMeasureModes","defaultControlOptions","defaultMeasureControlOptions","TerraDrawLineStringMode","TerraDrawPolygonMode","TerraDrawRectangleMode","TerraDrawAngledRectangleMode","TerraDrawCircleMode","TerraDrawFreehandMode","TerraDrawSensorMode","TerraDrawSectorMode","getDefaultModeOptions","TerraDrawRenderMode","TerraDrawPointMode","feature","updateType","ValidateNotSelfIntersecting","TerraDrawSelectMode","MaplibreTerradrawControl","options","__publicField","map","_a","_b","_c","_d","_e","defaultOptions","modes","newOption","defaultOption","flags","key","TerraDraw","TerraDrawMapLibreGLAdapter","ele","event","callback","index","snapshot","currentFeature","controls","item","addButton","mode","btn","selected","currentMode","ids","isActive","onlySelected","fc","dataStr","download","targets","className","btns","enabled","hasFeatures","value","earthRadius","factors","geom","properties","feat","point","coordinates","isNumber","radiansToLength","radians","units","factor","degreesToRadians","degrees","num","getCoord","coord","distance","from","to","coordinates1","coordinates2","dLat","dLon","lat1","lat2","coordEach","geojson","excludeWrapCoord","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","type","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","geomEach","featureProperties","featureBBox","featureId","geomReduce","initialValue","previousValue","currentGeometry","area","calculateArea","total","polygonArea","ringArea","FACTOR","PI_OVER_180","coordsLength","lower","middle","upper","lowerX","middleY","upperX","centroid","xSum","ySum","len","MaplibreMeasureControl","measureOptions","isSame","drawInstance","id","geometryType","lineModes","polygonModes","sourceId","geojsonSource","result","outputArea","outputUnit","distanceUnit","totalDistance","segments","start","end","segment","elevation_start","elevation_end","startNode","endNode","sourceIds","src"],"mappings":"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","x_google_ignoreList":[0,1,8,9,10,11,12,13]}