solid-map-gl 1.11.2 → 1.12.0

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/esm/index.js +1 -1
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/source/components/Draw/drawingStyles.js +225 -0
  4. package/dist/source/components/Draw/index.jsx +35 -8
  5. package/dist/source/components/Draw/modes/index.js +9 -0
  6. package/dist/source/components/Draw/modes/line_string.js +43 -0
  7. package/dist/source/components/Draw/modes/measurements.js +76 -0
  8. package/dist/source/components/Draw/modes/multi_point.js +37 -0
  9. package/dist/source/components/Draw/modes/point.js +25 -0
  10. package/dist/source/components/Draw/modes/polygon.js +25 -0
  11. package/dist/source/components/Draw/modes/radius.js +138 -0
  12. package/dist/source/components/Draw/modes/rectangle.js +118 -0
  13. package/dist/source/components/Draw/modes/rectangle_assisted.js +233 -0
  14. package/dist/source/components/Layer/index.jsx +17 -17
  15. package/dist/source/components/Layer3D/index.jsx +256 -21
  16. package/dist/source/components/Popup/index.jsx +10 -10
  17. package/dist/source/index.jsx +14 -14
  18. package/dist/types/components/Draw/drawingStyles.d.ts +20 -0
  19. package/dist/types/components/Draw/index.d.ts +5 -3
  20. package/dist/types/components/Draw/modes/index.d.ts +6 -0
  21. package/dist/types/components/Draw/modes/line_string.d.ts +2 -0
  22. package/dist/types/components/Draw/modes/multi_point.d.ts +2 -0
  23. package/dist/types/components/Draw/modes/point.d.ts +2 -0
  24. package/dist/types/components/Draw/modes/polygon.d.ts +2 -0
  25. package/dist/types/components/Draw/modes/radius.d.ts +2 -0
  26. package/dist/types/components/Draw/modes/rectangle.d.ts +2 -0
  27. package/dist/types/components/Draw/modes/rectangle_assisted.d.ts +18 -0
  28. package/dist/types/components/Layer3D/index.d.ts +7 -2
  29. package/dist/types/components/Popup/index.d.ts +2 -2
  30. package/dist/types/index.d.ts +16 -16
  31. package/package.json +20 -13
package/dist/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createComponent as e,use as t,insert as o,memo as a,effect as n,setAttribute as r,className as i,classList as s,style as l,template as p}from"solid-js/web";import{createContext as c,useContext as d,createSignal as m,onMount as g,createEffect as u,on as h,onCleanup as y,createUniqueId as b,splitProps as w,untrack as f}from"solid-js";import{createStore as v}from"solid-js/store";const[x,k]=v({map:null}),M=c([x]),L=()=>d(M),$=t=>(t.map&&k("map",t.map),e(M.Provider,{value:[x],get children(){return t.children}})),S=["onMouseDown","onMouseUp","onMouseOver","onMouseOut","onMouseMove","onMouseEnter","onMouseLeave","onPreClick","onClick","onDblClick","onContextMenu","onTouchStart","onTouchEnd","onTouchCancel","onWheel","onResize","onRemove","onTouchMove","onMoveStart","onMove","onMoveEnd","onDragStart","onDrag","onDragEnd","onZoomStart","onZoom","onZoomEnd","onRotateStart","onRotate","onRotatEnd","onPitchStart","onPitch","onPitchEnd","onBoxZoomStart","onBoxZoomEnd","onBoxZoomCancel","onWebglContextLost","onWebglContextRestored","onLoad","onRender","onIdle","onError","onData","onStyleData","onSourceData","onDataLoading","onStyleDataLoading","onSourceDataLoading","onStyleImageMissing"],j=["onMouseDown","onMouseUp","onMouseOver","onMouseOut","onMouseMove","onMouseEnter","onMouseLeave","onClick","onDblClick","onContextMenu","onTouchStart","onTouchEnd","onTouchCancel"],C=["onCreate","onDelete","onCombine","onUncombine","onUpdate","onSelectionchange","onModechange","onRender","onActionable"],z="mapbox://styles/mapbox",E="https://raw.githubusercontent.com/",_="https://raw.githubusercontent.com/GIShub4/map-styles/main/",I="https://assets.vector.hereapi.com/styles/",P={mb:{standard:`${z}/standard`,light:`${z}/light-v11`,dark:`${z}/dark-v11`,street:`${z}/streets-v12`,outdoor:`${z}/outdoors-v12`,sat:`${z}/satellite-v9`,sat_street:`${z}/satellite-streets-v12`,nav_base:`${z}/navigation-guidance-day-v4`,nav_base_night:`${z}/navigation-guidance-night-v4`,nav:`${z}/navigation-day-v1`,nav_night:`${z}/navigation-night-v1`,basic:`${z}/cjf4m44iw0uza2spb3q0a7s41`,monochrome:`${z}/cjv6rzz4j3m4b1fqcchuxclhb`,leshine:`${z}/cjcunv5ae262f2sm9tfwg8i0w`,icecream:`${z}/cj7t3i5yj0unt2rmt3y4b5e32`,cali:`${z}/cjerxnqt3cgvp2rmyuxbeqme7`,northstar:`${z}/cj44mfrt20f082snokim4ungi`,mineral:`${z}/cjtep62gq54l21frr1whf27ak`,moonlight:`${z}/cj3kbeqzo00022smj7akz3o1e`,frank:`${z}-map-design/ckshxkppe0gge18nz20i0nrwq`,minimo:`${z}-map-design/cksjc2nsq1bg117pnekb655h1`,decimal:`${z}-map-design/ck4014y110wt61ctt07egsel6`,stand:`${z}-map-design/ckr0svm3922ki18qntevm857n`,blueprint:`${z}-map-design/cks97e1e37nsd17nzg7p0308g`,bubble:`${z}-map-design/cksysy2nl62zp17quosctdtcc`,pencil:`${z}-map-design/cks9iema71es417mlrft4go2k`,swiss_ski:`${E}mapbox/mapbox-gl-swiss-ski-style/master/cij1zoclj002y8rkkdjl69psd.json`,vintage:`${E}mapbox/mapbox-gl-vintage-style/master/cif5p01n202nisaktvljx9mv3.json`,whaam:`${E}mapbox/mapbox-gl-whaam-style/master/cii8323c8004w0nlvtss3dbm2.json`,neon:`${E}NatEvatt/awesome-mapbox-gl-styles/master/styles/Neon/style.json`,camoflauge:`${E}jingsam/mapbox-gl-styles/master/Camouflage.json`,emerald:`${E}jingsam/mapbox-gl-styles/master/Emerald.json`,runner:`${E}jingsam/mapbox-gl-styles/master/Runner.json`,x_ray:`${E}jingsam/mapbox-gl-styles/master/X-ray.json`},here:{base:`${I}berlin/base/mapbox/tilezen?apikey={apikey}`,day:`${I}berlin/day/mapbox/tilezen?apikey={apikey}`,night:`${I}berlin/night/mapbox/tilezen?apikey={apikey}`},esri:{blueprint:`${_}esri:blueprint.json`,charted_territory:`${_}esri:charted-territory.json`,colored_pencil:`${_}esri:colored-pencil.json`,community:`${_}esri:community.json`,mid_century:`${_}esri:mid-century.json`,modern_antique:`${_}esri:modern-antique.json`,nat_geo:`${_}esri:national-geographic.json`,newspaper:`${_}esri:newspaper.json`,open_street_map:`${_}esri:open-street-map.json`,light_gray_canvas:`${_}esri:light-gray-canvas.json`,dark_gray_canvas:`${_}esri:dark-gray-canvas.json`,human_geo_light:`${_}esri:human-geography-light.json`,human_geo_dark:`${_}esri:human-geography-dark.json`,world_navigation:`${_}esri:world-navigation.json`,world_street:`${_}esri:world-street.json`,world_street_night:`${_}esri:world-street-night.json`,world_terrain:`${_}esri:world-terrain.json`,world_terrain_hybrid:`${_}esri:world-terrain-hybrid.json`,world_topographic:`${_}esri:world-topographic.json`,chromium:`${_}esri:chromium.json`,dreamcatcher:`${_}esri:dreamcatcher.json`,seahaven:`${_}esri:seahaven.json`,sangria:`${_}esri:sangria.json`,mercurial:`${_}esri:mercurial.json`,imagery:`${_}esri:imagery.json`,imagery_hybrid:`${_}esri:imagery-hybrid.json`,firefly:`${_}esri:firefly.json`,firefly_hybrid:`${_}esri:firefly-hybrid.json`,oceans:`${_}esri:oceans.json`}},T="https://{s}.basemaps.cartocdn.com/rastertiles/",O="https://stamen-tiles-{s}.a.ssl.fastly.net/",A="https://{s}.tile.thunderforest.com/",D={osm:{org:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",human:"https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",cycle:"https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png",topo:"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png",_copy:'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap</a>'},carto:{voyager:`${T}voyager_labels_under/{z}/{x}/{y}{r}.png`,positron:`${T}light_all/{z}/{x}/{y}{r}.png`,dark:`${T}dark_all/{z}/{x}/{y}{r}.png`,_copy:'<a href="https://carto.com/attribution" target="_blank">&copy; Carto</a>'},stamen:{toner:`${O}toner/{z}/{x}/{y}{r}.png`,toner_lite:`${O}toner-lite/{z}/{x}/{y}{r}.png`,watercolor:`${O}watercolor/{z}/{x}/{y}.png`,terrain:`${O}terrain/{z}/{x}/{y}{r}.png`,_copy:'<a href="https://stamen.com/privacy-policy" target="_blank">&copy; Stamen Design</a>'},tf:{cycle:`${A}cycle/{z}/{x}/{y}{r}.png?apikey={apikey}`,trans:`${A}transport/{z}/{x}/{y}{r}.png?apikey={apikey}`,trans_dark:`${A}transport-dark/{z}/{x}/{y}{r}.png?apikey={apikey}`,landscape:`${A}landscape/{z}/{x}/{y}{r}.png?apikey={apikey}`,outdoors:`${A}outdoors/{z}/{x}/{y}{r}.png?apikey={apikey}`,neighbourhood:`${A}neighbourhood/{z}/{x}/{y}{r}.png?apikey={apikey}`,spinal:`${A}spinal-map/{z}/{x}/{y}{r}.png?apikey={apikey}`,pioneer:`${A}pioneer/{z}/{x}/{y}{r}.png?apikey={apikey}`,atlas:`${A}atlas/{z}/{x}/{y}{r}.png?apikey={apikey}`,mobile:`${A}mobile-atlas/{z}/{x}/{y}{r}.png?apikey={apikey}`,_copy:'<a href="https://thunderforest.com/privacy" target="_blank">&copy; Thunderforest</a>'}};var R=p("<div>"),V=p("<style>.overlay{position:relative;width:100%;height:100%;pointer-events:none}.overlay>*{pointer-events:auto}"),q=p("<div class=overlay>");const F=p=>{let c,d,b,w;const[f,v]=m(null),[x,k]=m("undefined"!=typeof window&&window.matchMedia("(prefers-color-scheme: dark)").matches||"undefined"!=typeof document&&document.body.classList.contains("dark")),[M,L]=m(!1),j=(e,t)=>(p.debug||p.debugEvents)&&console.debug("%c[MapGL]","color: #0ea5e9",e,t||""),C=(e,t)=>{const o=x()&&t?t:e;return("string"==typeof o||o instanceof String)&&o?.split(":").reduce(((e,t)=>e&&e[t]),P)?.replace("{apikey}",p.apikey||import.meta.env.VITE_VECTOR_API_KEY)||o};g((async()=>{let e=p.mapLib||await import("mapbox-gl");if(e.Map||(e=window.maplibregl||window.mapboxgl),"function"==typeof e.supported&&!e.supported())throw new Error("Mapbox GL not supported");j(`Map (v${e.version}) loading...`),c=new e.Map({accessToken:p.options?.accessToken||import.meta.env.VITE_MAPBOX_ACCESS_TOKEN,interactive:p.options?.interactive||!!p.onViewportChange,...p.options,...p.viewport,projection:p.options?.projection,container:d,style:C(p.options?.style,p.darkStyle),fitBoundsOptions:{padding:p.viewport?.padding}}),c.debug=p.debug,c.debugEvents=p.debugEvents,c.sourceIdList=[],c.layerIdList=[],window.MapLib=e,S.forEach((e=>{const t=p[e];if(t){const o=e.slice(2).toLowerCase();"function"==typeof t?c.on(o,(e=>{setTimeout((()=>{e.clickOnLayer||(t(e),p.debugEvents&&j(`Map '${o}' event:`,e))}),0)})):Object.keys(t).forEach((e=>{c.on(o,e,(a=>{setTimeout((()=>{a.clickOnLayer||(t[e](a),p.debugEvents&&j(`Map '${o}' event on '${e}':`,a))}),0)}))}))}})),c.once("load",(()=>{v(c),j("Map loaded"),["mousedown","touchstart","wheel"].forEach((e=>c.on(e,(e=>!e.rotate&&p.onUserInteraction?.(!0))))),["moveend","mouseup","touchend"].forEach((e=>c.on(e,(e=>!e.rotate&&p.onUserInteraction?.(!1)))));const e="undefined"!=typeof window&&window?.matchMedia("(prefers-color-scheme: dark)");e?.addEventListener("change",(()=>{k(e.matches),j("Set dark theme to:",e.matches?.toString())})),w=new MutationObserver((()=>{const e=document.body.classList.contains("dark");k(e),j("Set theme to:",e)})),w.observe(document.body,{attributes:!0}),p.disableResize||(b=new ResizeObserver((()=>{setTimeout((()=>{c?.resize()}),0),j("Map resized")})),b.observe(d)),u((()=>{for(const e in p.config){if(!e||"id"===e)continue;const t=p.config?.id||"basemap",o=p.config[e];c?.setConfigProperty(t,e,o),j(`Set Config (${t}:${e}) to:`,o)}})),c.on("move",(e=>{const t={...p.viewport,id:p.id,point:{x:e.originalEvent?.x,y:e.originalEvent?.y},center:p.viewport?.center?.lat?c.getCenter():[c.getCenter().lng,c.getCenter().lat],zoom:c.getZoom(),pitch:c.getPitch(),bearing:c.getBearing(),inTransit:!0,bounds:null};L(!0),!e.viewport&&p.onViewportChange?.(t)})),c.on("moveend",(e=>{!e.rotate&&p.onViewportChange?.({...p.viewport,inTransit:!1}),L(!1)}))}))})),u(h((()=>p.viewport),(e=>{if(p.id!==e?.id||M())return;const t={...e,...e.bounds?c.cameraForBounds(e.bounds,{bearing:e?.bearing,pitch:e?.pitch,padding:e?.padding}):null};c.stop()[p.transitionType||"flyTo"](t),j(`Update Viewport (${p.transitionType||"flyTo"}):`,t)}),{defer:!0})),u((()=>{const e=p.options?.projection;c&&e&&(c.setProjection(e),j("Set Projection to:",e))})),u((()=>{const e=p.cursorStyle;c&&e&&(c.getCanvas().style.cursor=e,j("Set Cursor to:",e))}));return u((e=>{const t=C(p.options?.style,p.darkStyle);if(c?.isStyleLoaded()&&e!==t){const e=c.getStyle(),o=e.layers.filter((e=>c.layerIdList.includes(e.id))),a=Object.keys(e.sources).filter((e=>c.sourceIdList.includes(e))).reduce(((t,o)=>({...t,[o]:e.sources[o]})),{});c.setStyle(t),c.once("styledata",(()=>{if(!o)return;const n=c.getStyle();var r,i;c.setStyle({...n,sources:{...n.sources,...a},layers:(r=n.layers,i=o,i.forEach((e=>{const t=r.findIndex((t=>e.metadata.smg.beforeType?t.type===e.metadata.smg.beforeType:t.id===e.metadata.smg.beforeId));r=-1===t?[...r,e]:[...r.slice(0,t),e,...r.slice(t+1)]})),r),fog:e.fog,terrain:e.terrain}),j("Set Mapstyle to:",t)}))}return t}),p.options?.style),["showTileBoundaries","showTerrainWireframe","showCollisionBoxes","showPadding","showOverdrawInspector"].forEach((e=>{u((()=>{const t=p[e];c&&t&&(c[e]=t,j(`Set ${e} to:`,t))}))})),y((()=>{b?.disconnect(),w?.disconnect(),c?.remove(),j("Map removed")})),E=R(),"function"==typeof d?t(d,E):d=E,o(E,(z=a((()=>!!f())),()=>z()&&e($,{get map(){return f()},get children(){return[V(),(e=q(),o(e,(()=>p.children)),e)];var e}}))),n((e=>{var t=p.id,o=p?.class,a=p?.classList,n=p?.class||p?.classList?null:p.style||{position:"absolute",inset:0,"z-index":-1};return t!==e.e&&r(E,"id",e.e=t),o!==e.t&&i(E,e.t=o),e.a=s(E,a,e.a),e.o=l(E,n,e.o),e}),{e:void 0,t:void 0,a:void 0,o:void 0}),E;var z,E},Z=c(),U=()=>d(Z),W=t=>{const[o]=L();t.id??=b();const a=(e,t)=>{o.map.debug&&console.debug("%c[MapGL]","color: #ec4899",e,t||"")},n=e=>{const o=e?.split(":").reduce(((e,t)=>e&&e[t]),D),a=o?{...t.source,url:"",tiles:[o.replace("{apikey}",t.source.apikey||import.meta.env.VITE_RASTER_API_KEY).replace("{r}",window.devicePixelRatio>1?"@2x":"")],attribution:D[e.split(":")[0]]._copy}:t.source;return a.tiles&&(a.tiles=["a","b","c"].map((e=>a.tiles[0].replace("{s}",e)))),a};o.map.addSource(t.id,n(t.source.url)),o.map.sourceIdList.push(t.id),a("Add Source:",t.id);const r=o.map.getSource(t.id);switch(t.source.type){case"geojson":u((()=>{const e=t.source.data;o.map.isSourceLoaded(t.id)&&(r.setData(e||{}),a("Update GeoJSON Data:",t.id))}));break;case"image":u((()=>{const e=t.source.url,n=t.source.coordinates;o.map.isSourceLoaded(t.id)&&(r.updateImage(e,n),a("Update Image Data:",t.id))}));break;case"vector":u((()=>{const e=t.source.url,n=t.source.tiles;o.map.isSourceLoaded(t.id)&&(e?r.setUrl(e):r.setTiles(n),a("Update Vector Data:",t.id))}));break;case"raster":u((()=>{const e=n(t.source.url);o.map.isSourceLoaded(t.id)&&(e.url?r.setUrl(e.url):r.setTiles(e.tiles),a("Update Raster Data:",t.id))}))}return y((()=>{o.map?.getStyle().layers.forEach((e=>e.source===t.id&&o.map.removeLayer(e.id))),o.map?.getSource(t.id)&&o.map?.removeSource(t.id),a("Remove Source:",t.id)})),e(Z.Provider,{get value(){return t.id},get children(){return t.children}})},G=["id","type","filter","source","source-layer","minzoom","metadata","maxzoom","paint","layout"],B=["visibility","line-join","line-cap","line-miter-limit","line-round-limit","line-sort-key","circle-sort-key","symbol-avoid-edges","symbol-placement","symbol-sort-key","symbol-spacing","symbol-z-order","icon-allow-overlap","icon-anchor","icon-ignore-placement","icon-image","icon-keep-upright","icon-offset","icon-optional","icon-padding","icon-pitch-alignment","icon-rotate","icon-rotation-alignment","icon-size","icon-text-fit","icon-text-fit-padding","text-allow-overlap","text-anchor","text-field","text-font","text-ignore-placement","text-justify","text-keep-upright","text-letter-spacing","text-line-height","text-max-angle","text-max-width","text-offset","text-optional","text-padding","text-pitch-alignment","text-radial-offset","text-rotate","text-rotation-alignment","text-size","text-transform","text-variable-anchor","text-writing-mode"],H=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].reduce(((o,a)=>{const n=e[a];return n!==t[a]&&o.push([a,n]),o}),[]),N=(e,t)=>(e.startsWith(t)||e.startsWith("icon")||e.startsWith("text")?"":t+"-")+e.replace(/[A-Z]/g,(e=>"-"+e.toLowerCase())),X=e=>{if(!e)return;let t={},o={},a={};return Object.entries(e).forEach((([n,r])=>{if(G.includes(n))a[n]=r;else{const a=N(n,e.type);B.includes(a)?t[a]=r:o[a]=r}})),e.paint&&Object.entries(e.paint).forEach((([t,a])=>o[N(t,e.type)]=a)),e.layout&&Object.entries(e.layout).forEach((([o,a])=>t[N(o,e.type)]=a)),{...a,paint:o,layout:t}},Y=e=>{const[t]=L(),o=e.style?.source||U();e.id=e.id||e.customLayer?.id||b();const a=(e,o)=>{(t.map.debug||t.map.debugEvents)&&console.debug("%c[MapGL]","color: #10b981",e,o||"")};return t.map.addLayer(e.customLayer||{...X(e.style),id:e.id,source:o,slot:e.slot||"",metadata:{smg:{beforeType:e.beforeType,beforeId:e.beforeId}}},e.beforeType?t.map.getStyle().layers.find((t=>t.type===e.beforeType))?.id:e.beforeId),t.map.layerIdList.push(e.id),e.customLayer&&t.map.fire("load"),a("Add Layer:",e.id),j.forEach((o=>{if(e[o]){const n=o.slice(2).toLowerCase();t.map.on(n,e.id,(r=>{r.clickOnLayer=!0,e[o](r),t.map.debugEvent&&a(`Layer '${n}' event on '${e.id}':`,r)}))}})),u((o=>{const n=X(e.style);if(n!==o)return n.layout!==o?.layout&&H(n.layout,o?.layout).forEach((([o,a])=>t.map.setLayoutProperty(e.id,o,a,{validate:!1}))),n.paint!==o?.paint&&H(n.paint,o?.paint).forEach((([o,a])=>t.map.setPaintProperty(e.id,o,a,{validate:!1}))),n.minzoom===o?.minzoom&&n.maxzoom===o?.maxzoom||t.map.setLayerZoomRange(e.id,n.minzoom,n.maxzoom),n.filter!==o?.filter&&t.map.setFilter(e.id,n.filter,{validate:!1}),a("Update Layer Style:",e.id),n}),X(e.style)),u((o=>{if(e.visible!==o)return t.map.setLayoutProperty(e.id,"visibility",e.visible?"visible":"none",{validate:!1}),a(`Update Visibility (${e.id}):`,e.visible.toString()),e.visible}),e.visible),u((async()=>{e.filter&&(!t.map.isStyleLoaded()&&await t.map.once("styledata"),t.map.setFilter(e.id,e.filter),a(`Update Filter (${e.id}):`,e.filter))})),u((async()=>{e.featureState&&null!==e.featureState.id&&(!t.map.isStyleLoaded()&&await t.map.once("styledata"),t.map.removeFeatureState({source:o,sourceLayer:e.style["source-layer"]}),t.map.setFeatureState({source:o,sourceLayer:e.style["source-layer"],id:e.featureState.id},e.featureState.state))})),y((()=>t.map?.getLayer(e.id)&&t.map?.removeLayer(e.id))),e.children},K=e=>{const[t]=L();return g((async()=>{e.id=e.id||b();const o=window.MapLib.MercatorCoordinate.fromLngLat(e.origin?[e.origin[0],e.origin[1]]:[0,0],e.origin?e.origin[2]:0),a=o.meterInMercatorCoordinateUnits();let n=null,r=null,i=null;e.babylon?(r=await import("@babylonjs/core"),n=r.Matrix.Compose(new r.Vector3(a,a,a),r.Quaternion.FromEulerAngles(Math.PI/2,0,0),new r.Vector3(o.x,o.y,o.z))):(i=await import("three"),n={translateX:o.x,translateY:o.y,translateZ:o.z,rotateX:Math.PI/2,rotateY:0,rotateZ:0,scale:a}),t.map.addLayer({id:e.id,type:"custom",renderingMode:"3d",onAdd(t,o){if(e.babylon){const t=new r.Engine(o,!0,{useHighPrecisionMatrix:!0},!0);this.scene=new r.Scene(t),this.scene.autoClear=!1,this.scene.detachControl(),this.scene.beforeRender=()=>t.wipeCaches(!0),this.scene.activeCamera=new r.Camera("Camera",new r.Vector3,this.scene),e.defaultLight&&new r.HemisphericLight("Light",new r.Vector3(1,0,0),this.scene)}else this.camera=new i.Camera,this.scene=new i.Scene,e.defaultLight&&(this.light=new i.DirectionalLight(16777215),this.light.position.set(100,0,0).normalize(),this.scene.add(this.light)),this.renderer=new i.WebGLRenderer({canvas:t.getCanvas(),context:o,antialias:!0}),this.renderer.autoClear=!1;this.map=t,e.onAdd&&e.onAdd(this.scene,this.map,o)},render(o,a){if(e.babylon){this.scene.activeCamera.freezeProjectionMatrix(n.multiply(r.Matrix.FromArray(a)));const{x:e,y:t,z:o}=this.map.getFreeCameraOptions().position;this.scene.activeCamera.position=r.Vector3.TransformCoordinates(new r.Vector3(e,t,o),this.scene.activeCamera.getProjectionMatrix().clone().invert()),this.scene.render(!1)}else{const e=(new i.Matrix4).makeRotationAxis(new i.Vector3(1,0,0),n.rotateX),t=(new i.Matrix4).makeRotationAxis(new i.Vector3(0,1,0),n.rotateY),o=(new i.Matrix4).makeRotationAxis(new i.Vector3(0,0,1),n.rotateZ),r=(new i.Matrix4).fromArray(a),s=(new i.Matrix4).makeTranslation(n.translateX,n.translateY,n.translateZ).scale(new i.Vector3(n.scale,-n.scale,n.scale)).multiply(e).multiply(t).multiply(o);this.camera.projectionMatrix=r.multiply(s),this.renderer.resetState(),this.renderer.render(this.scene,this.camera)}e.onRender&&e.onRender(o,a),t.map.triggerRepaint()}})})),y((()=>{t.map.getLayer(e.id)&&t.map.removeLayer(e.id)})),null},J=e=>{const[t]=L();return u((()=>t.map.setFog(e.style||{}))),y((()=>{t.map.getFog()&&t.map.setFog(null)})),null},Q=e=>{const[t]=L();let o=U();return o||e?.source||(o=b(),t.map.addSource(o,{type:"raster-dem",url:t.map.isMapLibre?"https://demotiles.maplibre.org/terrain-tiles/tiles.json":"mapbox://mapbox.terrain-rgb",tileSize:t.map.isMapLibre?256:512,maxzoom:t.map.isMapLibre?void 0:14}),t.map.sourceIdList.push(o)),u((()=>{t.map.setTerrain({exaggeration:e.exaggeration||1,source:e?.source||o})})),y((()=>t.map?.setTerrain(null))),null},ee=e=>{const[t]=L(),[o,a]=w(e,["position"]),[n,r]=m(null),i=new Map([["navigation",window.MapLib.NavigationControl],["scale",window.MapLib.ScaleControl],["attribution",window.MapLib.AttributionControl],["geolocate",window.MapLib.GeolocateControl],["fullscreen",window.MapLib.FullscreenControl],["logo",window.MapLib.LogoControl],["terrain",window.MapLib.TerrainControl]]);return u((()=>{f((()=>n()&&t.map.hasControl(n())&&t.map.removeControl(n()))),r(a.custom||new(i.get(a.type||"navigation"))(a.options))})),u((()=>{t.map.hasControl(n())&&t.map.removeControl(n()),t.map.addControl(n(),o.position)})),y((()=>{t.map.hasControl(n())&&t.map.removeControl(n())})),null},te=e=>{if(!e.lngLat)throw new Error("Marker - lngLat is required");const[t,o,a]=w(e,["lngLat","children","showPopup","draggable"],["popup","onOpen","onClose"]),[n]=L();let r=null,i=null;const s=t.lngLat;return u((()=>{n.map&&(i?.remove(),i=new window.MapLib.Popup({closeOnClick:!1,focusAfterOpen:!1,...o.popup}).on("open",(()=>o.onOpen?.())).on("close",(()=>o.onClose?.())),u((()=>{void 0!==t.children&&("string"==typeof t.children?i?.setHTML(t.children):i?.setDOMContent(t.children),r?.setPopup(i))})),u((()=>t.showPopup!==i?.isOpen()&&r?.togglePopup())))})),u((()=>{n.map&&(r?.remove(),r=new window.MapLib.Marker(a.options).on("dragstart",(()=>a.onDragStart?.())).on("dragend",(()=>a.onDragEnd?.())).on("drag",(()=>a.onDrag?.(r?.getLngLat().toArray()))).setPopup(i).setLngLat(s).addTo(n.map),u((()=>t.showPopup!==i?.isOpen()&&r?.togglePopup())))})),u((()=>r?.setLngLat(t.lngLat))),u((()=>r?.setDraggable(t.draggable))),y((()=>r?.remove())),null},oe=e=>{if(!e.trackPointer&&!e.lngLat)throw new Error("Popup - lngLat or trackPointer is required");const[t,o]=w(e,["lngLat","children","trackPointer"]),[a]=L();let n;return u((()=>{a.map&&(n?.remove(),n=new window.MAPLIB.Popup({closeOnClick:!1,focusAfterOpen:!1,...o.options}).on("open",(()=>o.onOpen?.())).on("close",(()=>o.onClose?.())).addTo(a.map),u((()=>t.trackPointer?n.trackPointer():n.setLngLat(t.lngLat))),u((()=>"string"==typeof t.children?n.setHTML(t.children):n.setDOMContent(t.children))))})),y((()=>n?.remove())),null},ae={diagonal_l:{size:20,path:"M20 0 0 20M-10 10 10-10M10 30 30 10"},diagonal_r:{size:20,path:"M0 0 20 20M30 10 10-10M10 30-10 10"},horizontal:{size:14,path:"M7 0V20"},vertical:{size:14,path:"M0 7H20"},cross:{size:18,path:"M9 0V18M0 9H18"},hash:{size:30,path:"M15 0 30 15 15 30 0 15Z"},chevron_h:{size:20,path:"M-5 5 0 10 10 0 20 10 25 5M0 30 10 20 20 30"},chevron_v:{size:20,path:"M5-5 10 0 0 10 10 20 5 25M25 15 20 10 25 5"},square:{size:20,path:"M8 8H12V12H8Z",fill:!0},hex:{size:50,path:"M0 0V50L50 25ZM50 0V50L0 25ZM25 0V50"},circle:{size:25,path:"M8 10A2.5 2.5 0 118.01 10M18 15A2.5 2.5 0 1018.01 15",fill:!0}},ne=Object.keys(ae),re=e=>{const[t]=L(),[o,a]=m({width:0,height:0}),n=(e,o)=>{t.map.debug&&console.debug("%c[MapGL]","color: #10b981",e,o||"")};y((()=>{t.map?.hasImage(e.id)&&t.map?.removeImage(e.id),n("Remove Image:",e.id)})),u((()=>{if(!e.id)throw new Error("Image - ID is required");if(!e.source&&!e.pattern)throw new Error("Image - Image or Pattern is required");const s=e.pattern?{pixelRatio:2,...e.options}:e.options;r(e.source||i(e.pattern),(r=>{const{width:i,height:l}=r;t.map&&!t.map.hasImage(e.id)&&t.map.addImage(e.id,r,s),!e.pattern&&f((()=>i===o().width&&l===o().height))?(t.map.updateImage(e.id,r),t.map.triggerRepaint()):(t.map.removeImage(e.id),t.map.addImage(e.id,r,s)),a({width:i,height:l}),n("Add Image:",e.id),t.map.on("style.load",(()=>{t.map.hasImage(e.id)||(t.map.addImage(e.id,r,s),n("Re-Add Image:",e.id))}))}))}));const r=(o,a)=>{if("string"==typeof o&&o?.trimStart().startsWith("<svg")&&(o=(new DOMParser).parseFromString(o,"image/svg+xml").childNodes[0]),o instanceof SVGElement&&(e.options?.fill&&o.setAttribute("fill",e.options.fill),e.options?.stroke&&o.setAttribute("stroke",e.options.stroke),o=(new XMLSerializer).serializeToString(o)),"string"!=typeof o)return a(o);t.map.loadImage(o,(async(t,n)=>{if(!t)return a(n);{"string"==typeof o&&o?.trimEnd().endsWith(".svg")&&(o=await(await fetch(o)).text(),(o=(new DOMParser).parseFromString(o,"image/svg+xml").childNodes[0]).setAttribute("fill",e.options.fill),o.setAttribute("stroke",e.options.stroke),o.setAttribute("transform",e.options.transform),o=(new XMLSerializer).serializeToString(o));const t=new Image;t.crossOrigin="Anonymous",t.onload=()=>{const e=document.createElement("canvas");e.width=Math.max(t.width,50),e.height=Math.max(t.height,50);const o=e.getContext("2d");return o.imageSmoothingEnabled=!0,o.drawImage(t,0,0,e.width,e.height),a(o.getImageData(0,0,e.width,e.height))},t.src=o.trimStart().startsWith("<svg")?"data:image/svg+xml;charset=utf-8,"+o:o}}))},i=e=>{const t=ae[e.type];return{width:t.size,height:t.size,data:new Uint8Array(t.size*t.size*4),onAdd:function(){let e=document.createElement("canvas");e.width=e.height=t.size,this.ctx=e.getContext("2d",{willReadFrequently:!0})},render:function(){return this.ctx.fillStyle=e.background||"transparent",this.ctx.fillRect(0,0,this.width,this.height),this.ctx.strokeStyle=this.ctx.fillStyle=e.color||"black",this.ctx.lineWidth=e.lineWith||1,this.ctx.stroke(new Path2D(t.path)),t.fill&&this.ctx.fill(new Path2D(t.path)),this.data=this.ctx.getImageData(0,0,this.width,this.height).data,!0}}};return null},ie={in:e=>e*e,out:e=>1-(1-e)*(1-e),inOut:e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2},se=e=>{const[t]=L();let o=.1,a=!1;const[n,r]=m(!1);["mousedown","touchstart","wheel"].forEach((e=>t.map.on(e,(e=>!e.rotate&&r(!0))))),["moveend","mouseup","touchend"].forEach((e=>t.map.on(e,(e=>!e.rotate&&r(!1)))));const i=()=>{e.translate&&window.requestAnimationFrame(i);const n=[e.translate.start,e.translate.end,e.translate.easing?ie[e.translate.easing](o):o];(async([e,o,a],n)=>{const r=t.map.getFreeCameraOptions();r.position=window.MapLib.MercatorCoordinate.fromLngLat([e,o],a),r.lookAtPoint(n),t.map.setFreeCameraOptions(r)})("line"===e.translate.type?((e,t,o)=>e.map(((a,n)=>(1-o)*e[n]+o*t[n])))(...n):((e,t,o)=>{const a=e.map(((o,a)=>e[a]*t[a])).reduce(((e,t)=>e+t)),n=Math.acos(a);return e.map(((a,r)=>Math.sin((1-o)*n)/Math.sin(n)*e[r]+Math.sin(o*n)/Math.sin(n)*t[r]))})(...n),e.translate.target),!e.translate.loop&&(o>1||o<0)&&(a=!a),o=a?o-.001:o+.001};u((()=>{e.translate&&window.requestAnimationFrame(i)}));const s={duration:1e3,easing:e=>e},l=()=>{if(n())return;const{secPerRev:o=120,maxSpinZoom:a=5,slowSpinZoom:r=3}=e.rotateGlobe,i=t.map.getZoom();if(i>a)return;let l=360/o;i>r&&(l*=(a-i)/(a-r));const p=t.map.getCenter();p.lng=e.reverse?p.lng+l:p.lng-l,t.map.easeTo({center:p,...s},{rotate:!0})},p=()=>{if(!e.rotateViewport||n())return void t.map.stop();const o=e.rotateViewport,a=o?.secPerRev||60,r=e.reverse?t.map.getBearing()+360/a:t.map.getBearing()-360/a,i=o?.pitch||60,l=o?.around;t.map.easeTo({bearing:r,pitch:i,around:l,...s},{rotate:!0})},c=()=>e.rotateGlobe?l():p();let d;return t.map.on("moveend",c).on("dragend",c),u((()=>{null!=e.rotateGlobe&&(e.rotateGlobe?(d=t.map.getCenter(),l()):e.resetWhenStopped?t.map.stop().easeTo({center:d}):t.map.stop())})),u((()=>{null!=e.rotateViewport&&(e.rotateViewport?p():e.resetWhenStopped?t.map.stop().resetNorthPitch():t.map.stop())})),y((()=>t.map.off("moveend",c).off("dragend",c))),e.children},le=e=>{const[t]=L();return u((()=>t.map.setLight(e.style||{}))),y((()=>t.map?.setLight(null))),null},pe=e=>{const[t]=L(),o=new e.lib(e.options);t.map.addControl(o,e.position||"top-right"),e.getInstance&&e.getInstance(o);const a={};return C.forEach((o=>{if(e[o]){const n=`draw.${o.slice(2).toLowerCase()}`,r=t=>e[o](t);a[n]=r,t.map.on(n,r)}})),y((()=>{Object.keys(a).forEach((e=>t.map.off(e,a[e]))),t.map?.removeControl(o)})),null};export{J as Atmosphere,se as Camera,ee as Control,pe as Draw,re as Image,Y as Layer,K as Layer3D,le as Light,$ as MapProvider,te as Marker,oe as Popup,W as Source,Q as Terrain,F as default,ne as patternList,L as useMapContext,U as useSourceId};
1
+ import{createComponent as e,use as t,insert as o,memo as a,effect as n,setAttribute as r,className as i,classList as s,style as l,template as c}from"solid-js/web";import{createContext as p,useContext as d,createSignal as m,onMount as g,createEffect as u,on as h,onCleanup as y,createUniqueId as f,splitProps as w,untrack as b}from"solid-js";import{createStore as v}from"solid-js/store";import x from"@mapbox/mapbox-gl-draw";import M from"@turf/length";import L from"@turf/area";import k from"@turf/midpoint";import{centerOfMass as C}from"@turf/center-of-mass";const[S,$]=v({map:null}),_=p([S]),P=()=>d(_),j=t=>(t.map&&$("map",t.map),e(_.Provider,{value:[S],get children(){return t.children}})),z=["onMouseDown","onMouseUp","onMouseOver","onMouseOut","onMouseMove","onMouseEnter","onMouseLeave","onPreClick","onClick","onDblClick","onContextMenu","onTouchStart","onTouchEnd","onTouchCancel","onWheel","onResize","onRemove","onTouchMove","onMoveStart","onMove","onMoveEnd","onDragStart","onDrag","onDragEnd","onZoomStart","onZoom","onZoomEnd","onRotateStart","onRotate","onRotatEnd","onPitchStart","onPitch","onPitchEnd","onBoxZoomStart","onBoxZoomEnd","onBoxZoomCancel","onWebglContextLost","onWebglContextRestored","onLoad","onRender","onIdle","onError","onData","onStyleData","onSourceData","onDataLoading","onStyleDataLoading","onSourceDataLoading","onStyleImageMissing"],I=["onMouseDown","onMouseUp","onMouseOver","onMouseOut","onMouseMove","onMouseEnter","onMouseLeave","onClick","onDblClick","onContextMenu","onTouchStart","onTouchEnd","onTouchCancel"],E=["onCreate","onDelete","onCombine","onUncombine","onUpdate","onSelectionchange","onModechange","onRender","onActionable"],F="mapbox://styles/mapbox",T="https://raw.githubusercontent.com/",D="https://raw.githubusercontent.com/GIShub4/map-styles/main/",A="https://assets.vector.hereapi.com/styles/",O={mb:{standard:`${F}/standard`,light:`${F}/light-v11`,dark:`${F}/dark-v11`,street:`${F}/streets-v12`,outdoor:`${F}/outdoors-v12`,sat:`${F}/satellite-v9`,sat_street:`${F}/satellite-streets-v12`,nav_base:`${F}/navigation-guidance-day-v4`,nav_base_night:`${F}/navigation-guidance-night-v4`,nav:`${F}/navigation-day-v1`,nav_night:`${F}/navigation-night-v1`,basic:`${F}/cjf4m44iw0uza2spb3q0a7s41`,monochrome:`${F}/cjv6rzz4j3m4b1fqcchuxclhb`,leshine:`${F}/cjcunv5ae262f2sm9tfwg8i0w`,icecream:`${F}/cj7t3i5yj0unt2rmt3y4b5e32`,cali:`${F}/cjerxnqt3cgvp2rmyuxbeqme7`,northstar:`${F}/cj44mfrt20f082snokim4ungi`,mineral:`${F}/cjtep62gq54l21frr1whf27ak`,moonlight:`${F}/cj3kbeqzo00022smj7akz3o1e`,frank:`${F}-map-design/ckshxkppe0gge18nz20i0nrwq`,minimo:`${F}-map-design/cksjc2nsq1bg117pnekb655h1`,decimal:`${F}-map-design/ck4014y110wt61ctt07egsel6`,stand:`${F}-map-design/ckr0svm3922ki18qntevm857n`,blueprint:`${F}-map-design/cks97e1e37nsd17nzg7p0308g`,bubble:`${F}-map-design/cksysy2nl62zp17quosctdtcc`,pencil:`${F}-map-design/cks9iema71es417mlrft4go2k`,swiss_ski:`${T}mapbox/mapbox-gl-swiss-ski-style/master/cij1zoclj002y8rkkdjl69psd.json`,vintage:`${T}mapbox/mapbox-gl-vintage-style/master/cif5p01n202nisaktvljx9mv3.json`,whaam:`${T}mapbox/mapbox-gl-whaam-style/master/cii8323c8004w0nlvtss3dbm2.json`,neon:`${T}NatEvatt/awesome-mapbox-gl-styles/master/styles/Neon/style.json`,camoflauge:`${T}jingsam/mapbox-gl-styles/master/Camouflage.json`,emerald:`${T}jingsam/mapbox-gl-styles/master/Emerald.json`,runner:`${T}jingsam/mapbox-gl-styles/master/Runner.json`,x_ray:`${T}jingsam/mapbox-gl-styles/master/X-ray.json`},here:{base:`${A}berlin/base/mapbox/tilezen?apikey={apikey}`,day:`${A}berlin/day/mapbox/tilezen?apikey={apikey}`,night:`${A}berlin/night/mapbox/tilezen?apikey={apikey}`},esri:{blueprint:`${D}esri:blueprint.json`,charted_territory:`${D}esri:charted-territory.json`,colored_pencil:`${D}esri:colored-pencil.json`,community:`${D}esri:community.json`,mid_century:`${D}esri:mid-century.json`,modern_antique:`${D}esri:modern-antique.json`,nat_geo:`${D}esri:national-geographic.json`,newspaper:`${D}esri:newspaper.json`,open_street_map:`${D}esri:open-street-map.json`,light_gray_canvas:`${D}esri:light-gray-canvas.json`,dark_gray_canvas:`${D}esri:dark-gray-canvas.json`,human_geo_light:`${D}esri:human-geography-light.json`,human_geo_dark:`${D}esri:human-geography-dark.json`,world_navigation:`${D}esri:world-navigation.json`,world_street:`${D}esri:world-street.json`,world_street_night:`${D}esri:world-street-night.json`,world_terrain:`${D}esri:world-terrain.json`,world_terrain_hybrid:`${D}esri:world-terrain-hybrid.json`,world_topographic:`${D}esri:world-topographic.json`,chromium:`${D}esri:chromium.json`,dreamcatcher:`${D}esri:dreamcatcher.json`,seahaven:`${D}esri:seahaven.json`,sangria:`${D}esri:sangria.json`,mercurial:`${D}esri:mercurial.json`,imagery:`${D}esri:imagery.json`,imagery_hybrid:`${D}esri:imagery-hybrid.json`,firefly:`${D}esri:firefly.json`,firefly_hybrid:`${D}esri:firefly-hybrid.json`,oceans:`${D}esri:oceans.json`}},V="https://{s}.basemaps.cartocdn.com/rastertiles/",R="https://stamen-tiles-{s}.a.ssl.fastly.net/",U="https://{s}.tile.thunderforest.com/",Z={osm:{org:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",human:"https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",cycle:"https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png",topo:"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png",_copy:'<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap</a>'},carto:{voyager:`${V}voyager_labels_under/{z}/{x}/{y}{r}.png`,positron:`${V}light_all/{z}/{x}/{y}{r}.png`,dark:`${V}dark_all/{z}/{x}/{y}{r}.png`,_copy:'<a href="https://carto.com/attribution" target="_blank">&copy; Carto</a>'},stamen:{toner:`${R}toner/{z}/{x}/{y}{r}.png`,toner_lite:`${R}toner-lite/{z}/{x}/{y}{r}.png`,watercolor:`${R}watercolor/{z}/{x}/{y}.png`,terrain:`${R}terrain/{z}/{x}/{y}{r}.png`,_copy:'<a href="https://stamen.com/privacy-policy" target="_blank">&copy; Stamen Design</a>'},tf:{cycle:`${U}cycle/{z}/{x}/{y}{r}.png?apikey={apikey}`,trans:`${U}transport/{z}/{x}/{y}{r}.png?apikey={apikey}`,trans_dark:`${U}transport-dark/{z}/{x}/{y}{r}.png?apikey={apikey}`,landscape:`${U}landscape/{z}/{x}/{y}{r}.png?apikey={apikey}`,outdoors:`${U}outdoors/{z}/{x}/{y}{r}.png?apikey={apikey}`,neighbourhood:`${U}neighbourhood/{z}/{x}/{y}{r}.png?apikey={apikey}`,spinal:`${U}spinal-map/{z}/{x}/{y}{r}.png?apikey={apikey}`,pioneer:`${U}pioneer/{z}/{x}/{y}{r}.png?apikey={apikey}`,atlas:`${U}atlas/{z}/{x}/{y}{r}.png?apikey={apikey}`,mobile:`${U}mobile-atlas/{z}/{x}/{y}{r}.png?apikey={apikey}`,_copy:'<a href="https://thunderforest.com/privacy" target="_blank">&copy; Thunderforest</a>'}};var q=c("<div>"),G=c("<style>.overlay{position:relative;width:100%;height:100%;pointer-events:none}.overlay>*{pointer-events:auto}"),N=c("<div class=overlay>");const W=c=>{let p,d,f,w;const[b,v]=m(null),[x,M]=m("undefined"!=typeof window&&window.matchMedia("(prefers-color-scheme: dark)").matches||"undefined"!=typeof document&&document.body.classList.contains("dark")),[L,k]=m(!1),C=(e,t)=>(c.debug||c.debugEvents)&&console.debug("%c[MapGL]","color: #0ea5e9",e,t||""),S=(e,t)=>{const o=x()&&t?t:e;return("string"==typeof o||o instanceof String)&&o?.split(":").reduce(((e,t)=>e&&e[t]),O)?.replace("{apikey}",c.apikey||import.meta.env.VITE_VECTOR_API_KEY)||o};g((async()=>{let e=c.mapLib||await import("mapbox-gl");if(e.Map||(e=window.maplibregl||window.mapboxgl),"function"==typeof e.supported&&!e.supported())throw new Error("Mapbox GL not supported");C(`Map (v${e.version}) loading...`),p=new e.Map({accessToken:c.options?.accessToken||import.meta.env.VITE_MAPBOX_ACCESS_TOKEN,interactive:c.options?.interactive||!!c.onViewportChange,...c.options,...c.viewport,projection:c.options?.projection,container:d,style:S(c.options?.style,c.darkStyle),fitBoundsOptions:{padding:c.viewport?.padding}}),p.debug=c.debug,p.debugEvents=c.debugEvents,p.sourceIdList=[],p.layerIdList=[],window.MapLib=e,z.forEach((e=>{const t=c[e];if(t){const o=e.slice(2).toLowerCase();"function"==typeof t?p.on(o,(e=>{setTimeout((()=>{e.clickOnLayer||(t(e),c.debugEvents&&C(`Map '${o}' event:`,e))}),0)})):Object.keys(t).forEach((e=>{p.on(o,e,(a=>{setTimeout((()=>{a.clickOnLayer||(t[e](a),c.debugEvents&&C(`Map '${o}' event on '${e}':`,a))}),0)}))}))}})),p.once("load",(()=>{v(p),C("Map loaded"),["mousedown","touchstart","wheel"].forEach((e=>p.on(e,(e=>!e.rotate&&c.onUserInteraction?.(!0))))),["moveend","mouseup","touchend"].forEach((e=>p.on(e,(e=>!e.rotate&&c.onUserInteraction?.(!1)))));const e="undefined"!=typeof window&&window?.matchMedia("(prefers-color-scheme: dark)");e?.addEventListener("change",(()=>{M(e.matches),C("Set dark theme to:",e.matches?.toString())})),w=new MutationObserver((()=>{const e=document.body.classList.contains("dark");M(e),C("Set theme to:",e)})),w.observe(document.body,{attributes:!0}),c.disableResize||(f=new ResizeObserver((()=>{setTimeout((()=>{p?.resize()}),0),C("Map resized")})),f.observe(d)),u((()=>{for(const e in c.config){if(!e||"id"===e)continue;const t=c.config?.id||"basemap",o=c.config[e];p?.setConfigProperty(t,e,o),C(`Set Config (${t}:${e}) to:`,o)}})),p.on("move",(e=>{const t={...c.viewport,id:c.id,point:{x:e.originalEvent?.x,y:e.originalEvent?.y},center:c.viewport?.center?.lat?p.getCenter():[p.getCenter().lng,p.getCenter().lat],zoom:p.getZoom(),pitch:p.getPitch(),bearing:p.getBearing(),inTransit:!0,bounds:null};k(!0),!e.viewport&&c.onViewportChange?.(t)})),p.on("moveend",(e=>{!e.rotate&&c.onViewportChange?.({...c.viewport,inTransit:!1}),k(!1)}))}))})),u(h((()=>c.viewport),(e=>{if(c.id!==e?.id||L())return;const t={...e,...e.bounds?p.cameraForBounds(e.bounds,{bearing:e?.bearing,pitch:e?.pitch,padding:e?.padding}):null};p.stop()[c.transitionType||"flyTo"](t),C(`Update Viewport (${c.transitionType||"flyTo"}):`,t)}),{defer:!0})),u((()=>{const e=c.options?.projection;p&&e&&(p.setProjection(e),C("Set Projection to:",e))})),u((()=>{const e=c.cursorStyle;p&&e&&(p.getCanvas().style.cursor=e,C("Set Cursor to:",e))}));return u((e=>{const t=S(c.options?.style,c.darkStyle);if(p?.isStyleLoaded()&&e!==t){const e=p.getStyle(),o=e.layers.filter((e=>p.layerIdList.includes(e.id))),a=Object.keys(e.sources).filter((e=>p.sourceIdList.includes(e))).reduce(((t,o)=>({...t,[o]:e.sources[o]})),{});p.setStyle(t),p.once("styledata",(()=>{if(!o)return;const n=p.getStyle();var r,i;p.setStyle({...n,sources:{...n.sources,...a},layers:(r=n.layers,i=o,i.forEach((e=>{const t=r.findIndex((t=>e.metadata.smg.beforeType?t.type===e.metadata.smg.beforeType:t.id===e.metadata.smg.beforeId));r=-1===t?[...r,e]:[...r.slice(0,t),e,...r.slice(t+1)]})),r),fog:e.fog,terrain:e.terrain}),C("Set Mapstyle to:",t)}))}return t}),c.options?.style),["showTileBoundaries","showTerrainWireframe","showCollisionBoxes","showPadding","showOverdrawInspector"].forEach((e=>{u((()=>{const t=c[e];p&&t&&(p[e]=t,C(`Set ${e} to:`,t))}))})),y((()=>{f?.disconnect(),w?.disconnect(),p?.remove(),C("Map removed")})),_=q(),"function"==typeof d?t(d,_):d=_,o(_,($=a((()=>!!b())),()=>$()&&e(j,{get map(){return b()},get children(){return[G(),(e=N(),o(e,(()=>c.children)),e)];var e}}))),n((e=>{var t=c.id,o=c?.class,a=c?.classList,n=c?.class||c?.classList?null:c.style||{position:"absolute",inset:0,"z-index":-1};return t!==e.e&&r(_,"id",e.e=t),o!==e.t&&i(_,e.t=o),e.a=s(_,a,e.a),e.o=l(_,n,e.o),e}),{e:void 0,t:void 0,a:void 0,o:void 0}),_;var $,_},B=p(),H=()=>d(B),X=t=>{const[o]=P();t.id??=f();const a=(e,t)=>{o.map.debug&&console.debug("%c[MapGL]","color: #ec4899",e,t||"")},n=e=>{const o=e?.split(":").reduce(((e,t)=>e&&e[t]),Z),a=o?{...t.source,url:"",tiles:[o.replace("{apikey}",t.source.apikey||import.meta.env.VITE_RASTER_API_KEY).replace("{r}",window.devicePixelRatio>1?"@2x":"")],attribution:Z[e.split(":")[0]]._copy}:t.source;return a.tiles&&(a.tiles=["a","b","c"].map((e=>a.tiles[0].replace("{s}",e)))),a};o.map.addSource(t.id,n(t.source.url)),o.map.sourceIdList.push(t.id),a("Add Source:",t.id);const r=o.map.getSource(t.id);switch(t.source.type){case"geojson":u((()=>{const e=t.source.data;o.map.isSourceLoaded(t.id)&&(r.setData(e||{}),a("Update GeoJSON Data:",t.id))}));break;case"image":u((()=>{const e=t.source.url,n=t.source.coordinates;o.map.isSourceLoaded(t.id)&&(r.updateImage(e,n),a("Update Image Data:",t.id))}));break;case"vector":u((()=>{const e=t.source.url,n=t.source.tiles;o.map.isSourceLoaded(t.id)&&(e?r.setUrl(e):r.setTiles(n),a("Update Vector Data:",t.id))}));break;case"raster":u((()=>{const e=n(t.source.url);o.map.isSourceLoaded(t.id)&&(e.url?r.setUrl(e.url):r.setTiles(e.tiles),a("Update Raster Data:",t.id))}))}return y((()=>{o.map?.getStyle().layers.forEach((e=>e.source===t.id&&o.map.removeLayer(e.id))),o.map?.getSource(t.id)&&o.map?.removeSource(t.id),a("Remove Source:",t.id)})),e(B.Provider,{get value(){return t.id},get children(){return t.children}})},Y=["id","type","filter","source","source-layer","minzoom","metadata","maxzoom","paint","layout"],J=["visibility","line-join","line-cap","line-miter-limit","line-round-limit","line-sort-key","circle-sort-key","symbol-avoid-edges","symbol-placement","symbol-sort-key","symbol-spacing","symbol-z-order","icon-allow-overlap","icon-anchor","icon-ignore-placement","icon-image","icon-keep-upright","icon-offset","icon-optional","icon-padding","icon-pitch-alignment","icon-rotate","icon-rotation-alignment","icon-size","icon-text-fit","icon-text-fit-padding","text-allow-overlap","text-anchor","text-field","text-font","text-ignore-placement","text-justify","text-keep-upright","text-letter-spacing","text-line-height","text-max-angle","text-max-width","text-offset","text-optional","text-padding","text-pitch-alignment","text-radial-offset","text-rotate","text-rotation-alignment","text-size","text-transform","text-variable-anchor","text-writing-mode"],K=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].reduce(((o,a)=>{const n=e[a];return n!==t[a]&&o.push([a,n]),o}),[]),Q=(e,t)=>(e.startsWith(t)||e.startsWith("icon")||e.startsWith("text")?"":t+"-")+e.replace(/[A-Z]/g,(e=>"-"+e.toLowerCase())),ee=e=>{if(!e)return;let t={},o={},a={};return Object.entries(e).forEach((([n,r])=>{if(Y.includes(n))a[n]=r;else{const a=Q(n,e.type);J.includes(a)?t[a]=r:o[a]=r}})),e.paint&&Object.entries(e.paint).forEach((([t,a])=>o[Q(t,e.type)]=a)),e.layout&&Object.entries(e.layout).forEach((([o,a])=>t[Q(o,e.type)]=a)),{...a,paint:o,layout:t}},te=e=>{const[t]=P(),o=e.sourceId||e.style?.source||H(),a=e.id||e.customLayer?.id||f(),n=(e,o)=>{(t.map.debug||t.map.debugEvents)&&console.debug("%c[MapGL]","color: #10b981",e,o||"")};return t.map.addLayer(e.customLayer||{...ee(e.style),id:a,source:o,slot:e.slot||"",metadata:{smg:{beforeType:e.beforeType,beforeId:e.beforeId}}},e.beforeType?t.map.getStyle().layers.find((t=>t.type===e.beforeType))?.id:e.beforeId),t.map.layerIdList.push(a),e.customLayer&&t.map.fire("load"),n("Add Layer:",a),I.forEach((o=>{if(e[o]){const r=o.slice(2).toLowerCase();t.map.on(r,a,(i=>{i.clickOnLayer=!0,e[o](i),t.map.debugEvent&&n(`Layer '${r}' event on '${a}':`,i)}))}})),u((o=>{const r=ee(e.style);if(r!==o)return r.layout!==o?.layout&&K(r.layout,o?.layout).forEach((([e,o])=>t.map.setLayoutProperty(a,e,o,{validate:!1}))),r.paint!==o?.paint&&K(r.paint,o?.paint).forEach((([e,o])=>t.map.setPaintProperty(a,e,o,{validate:!1}))),r.minzoom===o?.minzoom&&r.maxzoom===o?.maxzoom||t.map.setLayerZoomRange(a,r.minzoom,r.maxzoom),r.filter!==o?.filter&&t.map.setFilter(a,r.filter,{validate:!1}),n("Update Layer Style:",a),r}),ee(e.style)),u((o=>{if(e.visible!==o)return t.map.setLayoutProperty(a,"visibility",e.visible?"visible":"none",{validate:!1}),n(`Update Visibility (${a}):`,e.visible.toString()),e.visible}),e.visible),u((async()=>{e.filter&&(!t.map.isStyleLoaded()&&await t.map.once("styledata"),t.map.setFilter(a,e.filter),n(`Update Filter (${a}):`,e.filter))})),u((async()=>{e.featureState&&null!==e.featureState.id&&(!t.map.isStyleLoaded()&&await t.map.once("styledata"),t.map.removeFeatureState({source:o,sourceLayer:e.style["source-layer"]}),t.map.setFeatureState({source:o,sourceLayer:e.style["source-layer"],id:e.featureState.id},e.featureState.state))})),y((()=>t.map?.getLayer(a)&&t.map?.removeLayer(a))),e.children},oe=p(),ae=()=>d(oe),ne=t=>{const[o]=P(),[a,n]=m(null);return g((async()=>{t.id=t.id||f();const e=window.MapLib.MercatorCoordinate.fromLngLat([t.origin[0]||0,t.origin[1]||0],t.origin[2]||0),a=e.meterInMercatorCoordinateUnits(),{x:r,y:i,z:s}=e;let l=null,c=null,p=null;t.babylon?(c=await import("@babylonjs/core"),l=c.Matrix.Compose(new c.Vector3(a,a,a),c.Quaternion.FromEulerAngles(Math.PI/2,0,0),new c.Vector3(r,i,s))):(p=await import("three"),l={translateX:r,translateY:i,translateZ:s,rotateX:Math.PI/2,rotateY:0,rotateZ:0,scale:a}),o.map.addLayer({id:t.id,type:"custom",renderingMode:"3d",onAdd(e,o){if(t.babylon){const e=new c.Engine(o,!0,{useHighPrecisionMatrix:!0},!0);this.scene=new c.Scene(e),this.scene.autoClear=!1,this.scene.preventDefaultOnPointerDown=!1,this.scene.preventDefaultOnPointerUp=!1;const a=new c.UniversalCamera("Camera",c.Vector3.Zero());a.mode=c.Camera.ORTHOGRAPHIC_CAMERA,a.inertia=0,this.scene.ambientColor=new c.Color3(1,1,1),t.defaultLight&&new c.HemisphericLight("Light",new c.Vector3(100,10,0),this.scene)}else this.camera=new p.Camera,this.scene=new p.Scene,t.defaultLight&&(this.light=new p.DirectionalLight(16777215),this.light.position.set(100,0,0).normalize(),this.scene.add(this.light)),this.renderer=new p.WebGLRenderer({canvas:e.getCanvas(),context:o,antialias:!0}),this.renderer.autoClear=!1;this.map=e,t.onAdd&&t.onAdd(this.scene,this.map,o),n(this.scene)},render(e,a){if(t.babylon)this.scene.activeCamera.freezeProjectionMatrix(l.multiply(c.Matrix.FromArray(a))),this.map.getPitch(),Math.PI,this.map.getBearing(),Math.PI,this.scene.render(!1);else{const e=(new p.Matrix4).makeRotationAxis(new p.Vector3(1,0,0),l.rotateX),t=(new p.Matrix4).makeRotationAxis(new p.Vector3(0,1,0),l.rotateY),o=(new p.Matrix4).makeRotationAxis(new p.Vector3(0,0,1),l.rotateZ),n=(new p.Matrix4).fromArray(a),r=(new p.Matrix4).makeTranslation(l.translateX,l.translateY,l.translateZ).scale(new p.Vector3(l.scale,-l.scale,l.scale)).multiply(e).multiply(t).multiply(o);this.camera.projectionMatrix=n.multiply(r),this.renderer.resetState(),this.renderer.render(this.scene,this.camera)}t.onRender&&t.onRender(e,a),o.map.triggerRepaint()}},t.beforeId)})),y((()=>{o.map.getLayer(t.id)&&o.map.removeLayer(t.id)})),e(oe.Provider,{value:a,get children(){return a()&&t.children}})},re=e=>{const[t]=P();return u((()=>t.map.setFog(e.style||{}))),y((()=>{t.map.getFog()&&t.map.setFog(null)})),null},ie=e=>{const[t]=P();let o=H();return o||e?.source||(o=f(),t.map.addSource(o,{type:"raster-dem",url:t.map.isMapLibre?"https://demotiles.maplibre.org/terrain-tiles/tiles.json":"mapbox://mapbox.terrain-rgb",tileSize:t.map.isMapLibre?256:512,maxzoom:t.map.isMapLibre?void 0:14}),t.map.sourceIdList.push(o)),u((()=>{t.map.setTerrain({exaggeration:e.exaggeration||1,source:e?.source||o})})),y((()=>t.map?.setTerrain(null))),null},se=e=>{const[t]=P(),[o,a]=w(e,["position"]),[n,r]=m(null),i=new Map([["navigation",window.MapLib.NavigationControl],["scale",window.MapLib.ScaleControl],["attribution",window.MapLib.AttributionControl],["geolocate",window.MapLib.GeolocateControl],["fullscreen",window.MapLib.FullscreenControl],["logo",window.MapLib.LogoControl],["terrain",window.MapLib.TerrainControl]]);return u((()=>{b((()=>n()&&t.map.hasControl(n())&&t.map.removeControl(n()))),r(a.custom||new(i.get(a.type||"navigation"))(a.options))})),u((()=>{t.map.hasControl(n())&&t.map.removeControl(n()),t.map.addControl(n(),o.position)})),y((()=>{t.map.hasControl(n())&&t.map.removeControl(n())})),null},le=e=>{if(!e.lngLat)throw new Error("Marker - lngLat is required");const[t,o,a]=w(e,["lngLat","children","showPopup","draggable"],["popup","onOpen","onClose"]),[n]=P();let r=null,i=null;const s=t.lngLat;return u((()=>{n.map&&(i?.remove(),i=new window.MapLib.Popup({closeOnClick:!1,focusAfterOpen:!1,...o.popup}).on("open",(()=>o.onOpen?.())).on("close",(()=>o.onClose?.())),u((()=>{void 0!==t.children&&("string"==typeof t.children?i?.setHTML(t.children):i?.setDOMContent(t.children),r?.setPopup(i))})),u((()=>t.showPopup!==i?.isOpen()&&r?.togglePopup())))})),u((()=>{n.map&&(r?.remove(),r=new window.MapLib.Marker(a.options).on("dragstart",(()=>a.onDragStart?.())).on("dragend",(()=>a.onDragEnd?.())).on("drag",(()=>a.onDrag?.(r?.getLngLat().toArray()))).setPopup(i).setLngLat(s).addTo(n.map),u((()=>t.showPopup!==i?.isOpen()&&r?.togglePopup())))})),u((()=>r?.setLngLat(t.lngLat))),u((()=>r?.setDraggable(t.draggable))),y((()=>r?.remove())),null},ce=e=>{if(!e.trackPointer&&!e.lngLat)throw new Error("Popup - lngLat or trackPointer is required");const[t,o]=w(e,["lngLat","children","trackPointer"]),[a]=P();let n;return u((()=>{a.map&&(n?.remove(),n=new window.MapLib.Popup({closeOnClick:!1,focusAfterOpen:!1,...o.options}).on("open",(()=>o.onOpen?.())).on("close",(()=>o.onClose?.())).addTo(a.map),u((()=>t.trackPointer?n.trackPointer():n.setLngLat(t.lngLat))),u((()=>"string"==typeof t.children?n.setHTML(t.children):n.setDOMContent(t.children))))})),y((()=>n?.remove())),null},pe={diagonal_l:{size:20,path:"M20 0 0 20M-10 10 10-10M10 30 30 10"},diagonal_r:{size:20,path:"M0 0 20 20M30 10 10-10M10 30-10 10"},horizontal:{size:14,path:"M7 0V20"},vertical:{size:14,path:"M0 7H20"},cross:{size:18,path:"M9 0V18M0 9H18"},hash:{size:30,path:"M15 0 30 15 15 30 0 15Z"},chevron_h:{size:20,path:"M-5 5 0 10 10 0 20 10 25 5M0 30 10 20 20 30"},chevron_v:{size:20,path:"M5-5 10 0 0 10 10 20 5 25M25 15 20 10 25 5"},square:{size:20,path:"M8 8H12V12H8Z",fill:!0},hex:{size:50,path:"M0 0V50L50 25ZM50 0V50L0 25ZM25 0V50"},circle:{size:25,path:"M8 10A2.5 2.5 0 118.01 10M18 15A2.5 2.5 0 1018.01 15",fill:!0}},de=Object.keys(pe),me=e=>{const[t]=P(),[o,a]=m({width:0,height:0}),n=(e,o)=>{t.map.debug&&console.debug("%c[MapGL]","color: #10b981",e,o||"")};y((()=>{t.map?.hasImage(e.id)&&t.map?.removeImage(e.id),n("Remove Image:",e.id)})),u((()=>{if(!e.id)throw new Error("Image - ID is required");if(!e.source&&!e.pattern)throw new Error("Image - Image or Pattern is required");const s=e.pattern?{pixelRatio:2,...e.options}:e.options;r(e.source||i(e.pattern),(r=>{const{width:i,height:l}=r;t.map&&!t.map.hasImage(e.id)&&t.map.addImage(e.id,r,s),!e.pattern&&b((()=>i===o().width&&l===o().height))?(t.map.updateImage(e.id,r),t.map.triggerRepaint()):(t.map.removeImage(e.id),t.map.addImage(e.id,r,s)),a({width:i,height:l}),n("Add Image:",e.id),t.map.on("style.load",(()=>{t.map.hasImage(e.id)||(t.map.addImage(e.id,r,s),n("Re-Add Image:",e.id))}))}))}));const r=(o,a)=>{if("string"==typeof o&&o?.trimStart().startsWith("<svg")&&(o=(new DOMParser).parseFromString(o,"image/svg+xml").childNodes[0]),o instanceof SVGElement&&(e.options?.fill&&o.setAttribute("fill",e.options.fill),e.options?.stroke&&o.setAttribute("stroke",e.options.stroke),o=(new XMLSerializer).serializeToString(o)),"string"!=typeof o)return a(o);t.map.loadImage(o,(async(t,n)=>{if(!t)return a(n);{"string"==typeof o&&o?.trimEnd().endsWith(".svg")&&(o=await(await fetch(o)).text(),(o=(new DOMParser).parseFromString(o,"image/svg+xml").childNodes[0]).setAttribute("fill",e.options.fill),o.setAttribute("stroke",e.options.stroke),o.setAttribute("transform",e.options.transform),o=(new XMLSerializer).serializeToString(o));const t=new Image;t.crossOrigin="Anonymous",t.onload=()=>{const e=document.createElement("canvas");e.width=Math.max(t.width,50),e.height=Math.max(t.height,50);const o=e.getContext("2d");return o.imageSmoothingEnabled=!0,o.drawImage(t,0,0,e.width,e.height),a(o.getImageData(0,0,e.width,e.height))},t.src=o.trimStart().startsWith("<svg")?"data:image/svg+xml;charset=utf-8,"+o:o}}))},i=e=>{const t=pe[e.type];return{width:t.size,height:t.size,data:new Uint8Array(t.size*t.size*4),onAdd:function(){let e=document.createElement("canvas");e.width=e.height=t.size,this.ctx=e.getContext("2d",{willReadFrequently:!0})},render:function(){return this.ctx.fillStyle=e.background||"transparent",this.ctx.fillRect(0,0,this.width,this.height),this.ctx.strokeStyle=this.ctx.fillStyle=e.color||"black",this.ctx.lineWidth=e.lineWith||1,this.ctx.stroke(new Path2D(t.path)),t.fill&&this.ctx.fill(new Path2D(t.path)),this.data=this.ctx.getImageData(0,0,this.width,this.height).data,!0}}};return null},ge={in:e=>e*e,out:e=>1-(1-e)*(1-e),inOut:e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2},ue=e=>{const[t]=P();let o=.1,a=!1;const[n,r]=m(!1);["mousedown","touchstart","wheel"].forEach((e=>t.map.on(e,(e=>!e.rotate&&r(!0))))),["moveend","mouseup","touchend"].forEach((e=>t.map.on(e,(e=>!e.rotate&&r(!1)))));const i=()=>{e.translate&&window.requestAnimationFrame(i);const n=[e.translate.start,e.translate.end,e.translate.easing?ge[e.translate.easing](o):o];(async([e,o,a],n)=>{const r=t.map.getFreeCameraOptions();r.position=window.MapLib.MercatorCoordinate.fromLngLat([e,o],a),r.lookAtPoint(n),t.map.setFreeCameraOptions(r)})("line"===e.translate.type?((e,t,o)=>e.map(((a,n)=>(1-o)*e[n]+o*t[n])))(...n):((e,t,o)=>{const a=e.map(((o,a)=>e[a]*t[a])).reduce(((e,t)=>e+t)),n=Math.acos(a);return e.map(((a,r)=>Math.sin((1-o)*n)/Math.sin(n)*e[r]+Math.sin(o*n)/Math.sin(n)*t[r]))})(...n),e.translate.target),!e.translate.loop&&(o>1||o<0)&&(a=!a),o=a?o-.001:o+.001};u((()=>{e.translate&&window.requestAnimationFrame(i)}));const s={duration:1e3,easing:e=>e},l=()=>{if(n())return;const{secPerRev:o=120,maxSpinZoom:a=5,slowSpinZoom:r=3}=e.rotateGlobe,i=t.map.getZoom();if(i>a)return;let l=360/o;i>r&&(l*=(a-i)/(a-r));const c=t.map.getCenter();c.lng=e.reverse?c.lng+l:c.lng-l,t.map.easeTo({center:c,...s},{rotate:!0})},c=()=>{if(!e.rotateViewport||n())return void t.map.stop();const o=e.rotateViewport,a=o?.secPerRev||60,r=e.reverse?t.map.getBearing()+360/a:t.map.getBearing()-360/a,i=o?.pitch||60,l=o?.around;t.map.easeTo({bearing:r,pitch:i,around:l,...s},{rotate:!0})},p=()=>e.rotateGlobe?l():c();let d;return t.map.on("moveend",p).on("dragend",p),u((()=>{null!=e.rotateGlobe&&(e.rotateGlobe?(d=t.map.getCenter(),l()):e.resetWhenStopped?t.map.stop().easeTo({center:d}):t.map.stop())})),u((()=>{null!=e.rotateViewport&&(e.rotateViewport?c():e.resetWhenStopped?t.map.stop().resetNorthPitch():t.map.stop())})),y((()=>t.map.off("moveend",p).off("dragend",p))),e.children},he=e=>{const[t]=P();return u((()=>t.map.setLight(e.style||{}))),y((()=>t.map?.setLight(null))),null};var ye=[{id:"measure-label",type:"symbol",filter:["all",["==","$type","Point"],["==","user_type","measure"]],layout:{"text-field":["get","user_value"],"text-anchor":["get","user_anchor"],"text-offset":["match",["get","user_anchor"],"bottom",[0,-.5],[0,0]],"text-size":12,"text-allow-overlap":!0,"text-ignore-placement":!0},paint:{"text-halo-color":"rgba(255,255,255,0.75)","text-halo-width":2,"text-halo-blur":1,"text-color":"#000"}}];const fe=(e,t)=>{const o=M({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:e}},{units:"en-US"===window.navigator.language?"miles":"kilometers"});return{label:"en-US"===window.navigator.language?new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:o<=1?"foot":"mile"}).format(o<=1?5280*o:o):new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:o<=1?"meter":"kilometer"}).format(o<=1?1e3*o:o),pos:k(e[0],e[1]).geometry.coordinates}},we=(e,t)=>{const o=L({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:e}});return{type:"Feature",properties:{meta:"measureLabel",value:"en-US"===window.navigator.language?new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:o<=10.764?"foot":"mile"}).format(o<=10.764?10.764*o:1.0000003861*o)+"²":new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:o<=1e6?"meter":"kilometer"}).format(o<=1e6?o:o/1e6)+"²",...t},geometry:C({type:"Polygon",coordinates:e}).geometry}},be=x.modes.draw_point;var ve={...be,onSetup:function(){const e=be.onSetup.call(this);return e.point.properties={...e.point.properties,type:"measure",anchor:"bottom"},e},onMouseMove:function(e,{lngLat:t}){var o;e.point.properties.value=(o=[t.lng,t.lat],new Intl.NumberFormat(void 0,{maximumFractionDigits:5}).format(o[0])+"° "+new Intl.NumberFormat(void 0,{maximumFractionDigits:5}).format(o[1])+"°"),e.point.updateCoordinate("",t.lng,t.lat)},toDisplayFeatures:function(e,t,o){const a=t.properties.id===e.point.id;return t.properties.active=a?"":"false",console.log(t.properties),o(t)}};const xe=x.modes.draw_polygon;var Me={...xe,toDisplayFeatures:function(e,t,o){xe.toDisplayFeatures.call(this,e,t,(e=>{if(o(e),this.drawConfig.userProperties.showLength){const t=Array.isArray(e.geometry.coordinates[0][0])?e.geometry.coordinates[0]:e.geometry.coordinates;t.forEach(((e,a)=>{Array.isArray(e)&&0!=a&&o(fe([t[a-1],e]))}))}this.drawConfig.userProperties.showArea&&e.geometry.coordinates[0].length>=3&&o(we([e.geometry.coordinates[0]]))}))}};const Le=x.modes.draw_line_string;var ke={...Le,onSetup:function(){return{...Le.onSetup.call(this),measure:this.newFeature({type:"Feature",properties:{type:"measure",value:"TTT"},geometry:{type:"Point",coordinates:[]}})}},onMouseMove:function(e,t){if(Le.onMouseMove.call(this,e,t),e.line.coordinates.length>=2){const{label:t,pos:o}=fe(e.line.coordinates);e.measure.properties.value=t,e.measure.updateCoordinate("",o[1],o[0])}},toDisplayFeatures:function(e,t,o){Le.toDisplayFeatures.call(this,e,t,o),console.log(e,t),o(e.measure.toGeoJSON())}};const Ce=e=>{setTimeout((()=>{e.map&&e.map.doubleClickZoom&&e._ctx&&e._ctx.store&&e._ctx.store.getInitialConfigValue&&e._ctx.store.getInitialConfigValue("doubleClickZoom")&&e.map.doubleClickZoom.enable()}),0)},Se={...x.modes.draw_line_string,clickAnywhere:function(e,t){return 1===e.currentVertexPosition?(e.line.addCoordinate(0,t.lngLat.lng,t.lngLat.lat),this.changeMode("simple_select",{featureIds:[e.line.id]})):(this.updateUIClasses({mouse:"add"}),e.line.updateCoordinate(e.currentVertexPosition,t.lngLat.lng,t.lngLat.lat),"forward"===e.direction?(e.currentVertexPosition+=1,e.line.updateCoordinate(e.currentVertexPosition,t.lngLat.lng,t.lngLat.lat)):e.line.addCoordinate(0,t.lngLat.lng,t.lngLat.lat),null)},onStop:function(e){if(Ce(this),this.activateUIButton(),void 0!==this.getFeature(e.line.id))if(console.log(e),e.line.removeCoordinate("0"),e.line.isValid()){const t=e.line.toGeoJSON();t.geometry.coordinates[0],(1e3*M(t)).toFixed(1)}else this.deleteFeature([e.line.id],{silent:!0}),this.changeMode("simple_select",{},{silent:!0})},toDisplayFeatures:function(e,t,o){const a=t.properties.id===e.line.id;return t.properties.active=a?"true":"false",a?(t.geometry.coordinates.length<2||(t.properties.meta="feature",o((n=e.line.id,r=t.geometry.coordinates["forward"===e.direction?t.geometry.coordinates.length-2:1],i=""+("forward"===e.direction?t.geometry.coordinates.length-2:1),{type:"Feature",properties:{meta:"vertex",parent:n,coord_path:i,active:"false"},geometry:{type:"Point",coordinates:r}})),o(t),o(fe(t,e.line.id)),o(function(e,t,o,a=64){const n=[],r=t/(111.32*Math.cos(e[1]*Math.PI/180)),i=t/110.574;for(let t=0;t<a;t+=1){let o=t/a*(2*Math.PI),s=r*Math.cos(o),l=i*Math.sin(o);n.push([e[0]+s,e[1]+l])}return n.push(n[0]),{type:"Feature",geometry:{type:"Polygon",coordinates:[n]},properties:{parent:o,active:"true"}}}(t.geometry.coordinates[0],M(t),e.line.id))),null):o(t);var n,r,i}},$e={...x.modes.draw_line_string,onSetup:function(e){const t=x.modes.draw_line_string.onSetup.call(this,e),o=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[]]}});return this.addFeature(o),{...t,...e,rectangle:o}},onTap:function(e,t){e.startPoint&&this.onMouseMove(e,t),this.onClick(e,t)},onClick:function(e,t){e.startPoint&&e.startPoint[0]!==t.lngLat.lng&&e.startPoint[1]!==t.lngLat.lat?(this.updateUIClasses({mouse:"pointer"}),e.endPoint=[t.lngLat.lng,t.lngLat.lat],this.changeMode("simple_select",{featuresId:e.rectangle.id})):e.startPoint=[t.lngLat.lng,t.lngLat.lat]},onMouseMove:function(e,t){e.startPoint&&(e.rectangle.updateCoordinate("0.0",e.startPoint[0],e.startPoint[1]),e.rectangle.updateCoordinate("0.1",t.lngLat.lng,e.startPoint[1]),e.rectangle.updateCoordinate("0.2",t.lngLat.lng,t.lngLat.lat),e.rectangle.updateCoordinate("0.3",e.startPoint[0],t.lngLat.lat),e.rectangle.updateCoordinate("0.4",e.startPoint[0],e.startPoint[1]))},onKeyUp:function(e,t){if(27===t.keyCode)return this.changeMode("simple_select")},onStop:function(e){x.modes.draw_line_string.onStop.call(this,e),void 0!==this.getFeature(e.rectangle.id)&&(e.rectangle.removeCoordinate("0.4"),e.rectangle.isValid()?this.map.fire("draw.create",{features:[e.rectangle.toGeoJSON()]}):(this.deleteFeature([e.rectangle.id],{silent:!0}),this.changeMode("simple_select",{},{silent:!0})))},toDisplayFeatures:function(e,t,o){console.log(e);const a=t.properties.id===e.rectangle.id;return t.properties.active=a?"true":"false",a?e.startPoint?(o(t),e.showLength&&(o(fe({type:"Feature",geometry:{type:"LineString",coordinates:[t.geometry.coordinates[0][0],t.geometry.coordinates[0][1]]}},e.rectangle.id)),o(fe({type:"Feature",geometry:{type:"LineString",coordinates:[t.geometry.coordinates[0][1],t.geometry.coordinates[0][2]]}},e.rectangle.id))),e.showArea&&o(we(t,{parent:e.rectangle.id})),null):void 0:o(t)},onTrash:function(e){this.deleteFeature([e.rectangle.id],{silent:!0}),this.changeMode("simple_select")}},_e=e=>{const[t]=P(),o=new e.lib({styles:[...e.lib.lib.theme,...ye],modes:{...e.lib.modes,draw_point:ve,draw_line_string:ke,draw_polygon:Me,draw_radius:Se,draw_rectangle:$e},userProperties:{showLength:e.showLength||!1,showArea:e.showArea||!1},...e.options});t.map.addControl(o,e.position||"top-right"),e.getInstance&&e.getInstance(o);const a={};return E.forEach((o=>{if(e[o]){const n=`draw.${o.slice(2).toLowerCase()}`,r=t=>e[o](t);a[n]=r,t.map.on(n,r)}})),y((()=>{Object.keys(a).forEach((e=>t.map.off(e,a[e]))),t.map?.removeControl(o)})),null};export{re as Atmosphere,ue as Camera,se as Control,_e as Draw,me as Image,te as Layer,ne as Layer3D,he as Light,j as MapProvider,le as Marker,ce as Popup,X as Source,ie as Terrain,W as default,de as patternList,P as useMapContext,ae as useScene,H as useSourceId};
2
2
  //# sourceMappingURL=index.js.map