solid-map-gl 2.3.0 → 2.3.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.
@@ -154,23 +154,23 @@ type layerEventTypes = {
154
154
  onTouchCancel?: (event: MapTouchEvent) => void;
155
155
  };
156
156
  type drawEventTypes = {
157
- onCreate?: (event: Object) => void;
157
+ onCreate?: (event: object) => void;
158
158
  /** called when a feature is created */
159
- onDelete?: (event: Object) => void;
159
+ onDelete?: (event: object) => void;
160
160
  /** called when a feature is deleted */
161
- onCombine?: (event: Object) => void;
161
+ onCombine?: (event: object) => void;
162
162
  /** called when features are combined */
163
- onUncombine?: (event: Object) => void;
163
+ onUncombine?: (event: object) => void;
164
164
  /** called when features are uncombined */
165
- onUpdate?: (event: Object) => void;
165
+ onUpdate?: (event: object) => void;
166
166
  /** called when a feature is updated */
167
- onSelectionchange?: (event: Object) => void;
167
+ onSelectionchange?: (event: object) => void;
168
168
  /** called when the selected features change */
169
- onModechange?: (event: Object) => void;
169
+ onModechange?: (event: object) => void;
170
170
  /** called when the draw mode changes */
171
- onRender?: (event: Object) => void;
171
+ onRender?: (event: object) => void;
172
172
  /** called when the draw canvas is re-rendered */
173
- onActionable?: (event: Object) => void;
173
+ onActionable?: (event: object) => void;
174
174
  };
175
175
 
176
176
  type Map = mapboxgl.Map & {
@@ -3,8 +3,8 @@ export { b as MapProvider, a as useMapContext } from '../chunk/UULRNHYR.js';
3
3
  import { template, isServer, use, insert, memo, createComponent, effect, setAttribute, className, classList, style } from 'solid-js/web';
4
4
  import { createContext, createSignal, onMount, createEffect, on, onCleanup, useContext, createUniqueId, createMemo, splitProps, untrack } from 'solid-js';
5
5
 
6
- var ye=["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"],ve=["onMouseDown","onMouseUp","onMouseOver","onMouseOut","onMouseMove","onMouseEnter","onMouseLeave","onClick","onDblClick","onContextMenu","onTouchStart","onTouchEnd","onTouchCancel"],Me=["onCreate","onDelete","onCombine","onUncombine","onUpdate","onSelectionchange","onModechange","onRender","onActionable"];var C="mapbox://styles/mapbox",D="https://raw.githubusercontent.com/",L="https://raw.githubusercontent.com/GIShub4/map-styles/main/",ne="https://assets.vector.hereapi.com/styles/",be={mb:{standard:`${C}/standard`,light:`${C}/light-v11`,dark:`${C}/dark-v11`,street:`${C}/streets-v12`,outdoor:`${C}/outdoors-v12`,sat:`${C}/satellite-v9`,sat_street:`${C}/satellite-streets-v12`,nav_base:`${C}/navigation-guidance-day-v4`,nav_base_night:`${C}/navigation-guidance-night-v4`,nav:`${C}/navigation-day-v1`,nav_night:`${C}/navigation-night-v1`,basic:`${C}/cjf4m44iw0uza2spb3q0a7s41`,monochrome:`${C}/cjv6rzz4j3m4b1fqcchuxclhb`,leshine:`${C}/cjcunv5ae262f2sm9tfwg8i0w`,icecream:`${C}/cj7t3i5yj0unt2rmt3y4b5e32`,cali:`${C}/cjerxnqt3cgvp2rmyuxbeqme7`,northstar:`${C}/cj44mfrt20f082snokim4ungi`,mineral:`${C}/cjtep62gq54l21frr1whf27ak`,moonlight:`${C}/cj3kbeqzo00022smj7akz3o1e`,frank:`${C}-map-design/ckshxkppe0gge18nz20i0nrwq`,minimo:`${C}-map-design/cksjc2nsq1bg117pnekb655h1`,decimal:`${C}-map-design/ck4014y110wt61ctt07egsel6`,stand:`${C}-map-design/ckr0svm3922ki18qntevm857n`,blueprint:`${C}-map-design/cks97e1e37nsd17nzg7p0308g`,bubble:`${C}-map-design/cksysy2nl62zp17quosctdtcc`,pencil:`${C}-map-design/cks9iema71es417mlrft4go2k`,swiss_ski:`${D}mapbox/mapbox-gl-swiss-ski-style/master/cij1zoclj002y8rkkdjl69psd.json`,vintage:`${D}mapbox/mapbox-gl-vintage-style/master/cif5p01n202nisaktvljx9mv3.json`,whaam:`${D}mapbox/mapbox-gl-whaam-style/master/cii8323c8004w0nlvtss3dbm2.json`,neon:`${D}NatEvatt/awesome-mapbox-gl-styles/master/styles/Neon/style.json`,camoflauge:`${D}jingsam/mapbox-gl-styles/master/Camouflage.json`,emerald:`${D}jingsam/mapbox-gl-styles/master/Emerald.json`,runner:`${D}jingsam/mapbox-gl-styles/master/Runner.json`,x_ray:`${D}jingsam/mapbox-gl-styles/master/X-ray.json`},here:{base:`${ne}berlin/base/mapbox/tilezen?apikey={apikey}`,day:`${ne}berlin/day/mapbox/tilezen?apikey={apikey}`,night:`${ne}berlin/night/mapbox/tilezen?apikey={apikey}`},esri:{blueprint:`${L}esri:blueprint.json`,charted_territory:`${L}esri:charted-territory.json`,colored_pencil:`${L}esri:colored-pencil.json`,community:`${L}esri:community.json`,mid_century:`${L}esri:mid-century.json`,modern_antique:`${L}esri:modern-antique.json`,nat_geo:`${L}esri:national-geographic.json`,newspaper:`${L}esri:newspaper.json`,open_street_map:`${L}esri:open-street-map.json`,light_gray_canvas:`${L}esri:light-gray-canvas.json`,dark_gray_canvas:`${L}esri:dark-gray-canvas.json`,human_geo_light:`${L}esri:human-geography-light.json`,human_geo_dark:`${L}esri:human-geography-dark.json`,world_navigation:`${L}esri:world-navigation.json`,world_street:`${L}esri:world-street.json`,world_street_night:`${L}esri:world-street-night.json`,world_terrain:`${L}esri:world-terrain.json`,world_terrain_hybrid:`${L}esri:world-terrain-hybrid.json`,world_topographic:`${L}esri:world-topographic.json`,chromium:`${L}esri:chromium.json`,dreamcatcher:`${L}esri:dreamcatcher.json`,seahaven:`${L}esri:seahaven.json`,sangria:`${L}esri:sangria.json`,mercurial:`${L}esri:mercurial.json`,imagery:`${L}esri:imagery.json`,imagery_hybrid:`${L}esri:imagery-hybrid.json`,firefly:`${L}esri:firefly.json`,firefly_hybrid:`${L}esri:firefly-hybrid.json`,oceans:`${L}esri:oceans.json`}},oe="https://{s}.basemaps.cartocdn.com/rastertiles/",G="https://stamen-tiles-{s}.a.ssl.fastly.net/",$="https://{s}.tile.thunderforest.com/",re={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:`${oe}voyager_labels_under/{z}/{x}/{y}{r}.png`,positron:`${oe}light_all/{z}/{x}/{y}{r}.png`,dark:`${oe}dark_all/{z}/{x}/{y}{r}.png`,_copy:'<a href="https://carto.com/attribution" target="_blank">&copy; Carto</a>'},stamen:{toner:`${G}toner/{z}/{x}/{y}{r}.png`,toner_lite:`${G}toner-lite/{z}/{x}/{y}{r}.png`,watercolor:`${G}watercolor/{z}/{x}/{y}.png`,terrain:`${G}terrain/{z}/{x}/{y}{r}.png`,_copy:'<a href="https://stamen.com/privacy-policy" target="_blank">&copy; Stamen Design</a>'},tf:{cycle:`${$}cycle/{z}/{x}/{y}{r}.png?apikey={apikey}`,trans:`${$}transport/{z}/{x}/{y}{r}.png?apikey={apikey}`,trans_dark:`${$}transport-dark/{z}/{x}/{y}{r}.png?apikey={apikey}`,landscape:`${$}landscape/{z}/{x}/{y}{r}.png?apikey={apikey}`,outdoors:`${$}outdoors/{z}/{x}/{y}{r}.png?apikey={apikey}`,neighbourhood:`${$}neighbourhood/{z}/{x}/{y}{r}.png?apikey={apikey}`,spinal:`${$}spinal-map/{z}/{x}/{y}{r}.png?apikey={apikey}`,pioneer:`${$}pioneer/{z}/{x}/{y}{r}.png?apikey={apikey}`,atlas:`${$}atlas/{z}/{x}/{y}{r}.png?apikey={apikey}`,mobile:`${$}mobile-atlas/{z}/{x}/{y}{r}.png?apikey={apikey}`,_copy:'<a href="https://thunderforest.com/privacy" target="_blank">&copy; Thunderforest</a>'}};var V=()=>new Promise(e=>requestAnimationFrame(()=>e())),et=e=>{try{return !!e.style?.hasTransitions?.()}catch{return false}};function tt(e,t){return new Promise(n=>{let o=Date.now()+t,r=()=>{if(e.areTilesLoaded()){n(true);return}if(Date.now()>=o){n(false);return}setTimeout(r,100);};r();})}async function B(e,t={}){let{timeout:n=1e4,fadeMargin:o=400}=t;if(await tt(e,n),e.triggerRepaint(),await V(),await V(),o>0){let r=Date.now()+Math.max(o,2e3);for(;et(e)&&Date.now()<r;)e.triggerRepaint(),await V();await new Promise(a=>setTimeout(a,o)),e.triggerRepaint(),await V(),await V();}}function Y(e,t={}){return new Promise(n=>{e.once("idle",()=>{B(e,t).then(n);}),e.triggerRepaint();})}function ae(e){for(let t of e.getStyle()?.layers??[])try{e.setPaintProperty(t.id,"raster-fade-duration",0);}catch{}}function xe(e,t){return {map:e,waitUntilSettled:()=>Y(e,t),capture:(n="image/jpeg",o=.92)=>e.getCanvas().toDataURL(n,o),captureWhenSettled:async(n="image/jpeg",o=.92)=>(await Y(e,t),e.getCanvas().toDataURL(n,o))}}var dt=template("<div>"),ut=template("<style>.overlay{position:relative;width:100%;height:100%;pointer-events:none}:where(.overlay>*){pointer-events:auto}"),mt=template("<div class=overlay>"),ft=e=>{let t,n,o,r,a,i=false,c=0,[l,s]=createSignal(null),[u,d]=createSignal(0),[M,h]=createSignal(!isServer&&(window.matchMedia("(prefers-color-scheme: dark)").matches||document.body.classList.contains("dark"))),y=false,v=false,f=(m,p)=>(e.debug||e.debugEvents)&&console.debug("%c[MapGL]","color: #0ea5e9",m,p||""),b$1=(m,p)=>{let g=M()&&p?p:m;return (typeof g=="string"||g instanceof String)&&g?.split(":").reduce((x,k)=>x&&x[k],be)?.replace("{apikey}",e.apikey||import.meta.env?.VITE_VECTOR_API_KEY)||g};onMount(async()=>{try{await S();}catch(m){console.error("[MapGL] Failed to initialize map:",m),e.onError?.(m);}});let S=async()=>{if(a=e.mapLib||await import('mapbox-gl'),a.Map||(a=window.maplibregl||window.mapboxgl),typeof a.supported=="function"&&!a.supported())throw new Error("Mapbox GL not supported");if(i=typeof a.Map?.prototype?.setConfigProperty!="function",f(`Map (v${a.version}) loading...`),t=new a.Map({accessToken:e.options?.accessToken||import.meta.env?.VITE_MAPBOX_ACCESS_TOKEN,interactive:e.options?.interactive||!!e.onViewportChange,...e.options,...e.viewport,projection:e.options?.projection,container:n,style:b$1(e.options?.style,e.darkStyle),fitBoundsOptions:{padding:e.viewport?.padding},...e.offscreen?{preserveDrawingBuffer:true}:{}}),t.debug=e.debug,t.debugEvents=e.debugEvents,t.sourceIdList=[],t.layerIdList=[],t.isMapLibre=i,ye.forEach(m=>{let p=e[m];if(p){let g=m.slice(2).toLowerCase();typeof p=="function"?t.on(g,x=>{setTimeout(()=>{g==="click"&&x.clickOnLayer||(p(x),e.debugEvents&&f(`Map '${g}' event:`,x));},0);}):Object.keys(p).forEach(x=>{t.on(g,x,k=>{setTimeout(()=>{g==="click"&&k.clickOnLayer||(p[x](k),e.debugEvents&&f(`Map '${g}' event on '${x}':`,k));},0);});});}}),e.onTilesLoaded){let m=e.tilesLoadedTimeout??1e4,p=e.tilesLoadedFadeMargin??400;t.on("idle",()=>{let g=++c;B(t,{timeout:m,fadeMargin:p}).then(()=>{g===c&&(f("Tiles settled"),e.onTilesLoaded());});});}t.once("load",()=>{s(t),f("Map loaded"),e.offscreen&&e.offscreen.disableRasterFade!==false&&ae(t),e.onCapturerReady&&e.onCapturerReady(xe(t,{timeout:e.tilesLoadedTimeout??1e4,fadeMargin:e.tilesLoadedFadeMargin??400})),["mousedown","touchstart","wheel"].forEach(p=>t.on(p,g=>!g.rotate&&e.onUserInteraction?.(true))),["moveend","mouseup","touchend"].forEach(p=>t.on(p,g=>!g.rotate&&e.onUserInteraction?.(false)));let m=!isServer&&window.matchMedia("(prefers-color-scheme: dark)");m?.addEventListener("change",()=>{h(m.matches),d(p=>p+1),f("Set dark theme to:",m.matches?.toString());}),r=new MutationObserver(()=>{let p=document.documentElement.classList.contains("dark")||document.body.classList.contains("dark");h(p),d(g=>g+1),f("Set theme to:",p);}),r.observe(document.documentElement,{attributes:true}),r.observe(document.body,{attributes:true}),e.disableResize||(o=new ResizeObserver(()=>{setTimeout(()=>{t?.resize();},0),f("Map resized");}),o.observe(n)),t.on("move",p=>{let g={...e.viewport,id:e.id,point:{x:p.originalEvent?.x,y:p.originalEvent?.y},center:e.viewport?.center?.lat?t.getCenter():[t.getCenter().lng,t.getCenter().lat],zoom:t.getZoom(),pitch:t.getPitch(),bearing:t.getBearing(),inTransit:true,bounds:null};!p.viewport&&e.onViewportChange&&(v=true,e.onViewportChange(g));}),t.on("moveend",p=>{if(y||p.rotate||!e.onViewportChange)return;let g={...e.viewport,inTransit:false};v=true,e.onViewportChange(g);});});};createEffect(on(()=>e.viewport,m=>{if(!t||e.id!==m?.id)return;if(v){v=false;return}let p={...m,...m.bounds?t.cameraForBounds(m.bounds,{bearing:m?.bearing,pitch:m?.pitch,padding:m?.padding}):null};y=true,t.stop(),y=false,t[e.transitionType||"flyTo"](p),f(`Update Viewport (${e.transitionType||"flyTo"}):`,p);},{defer:true})),createEffect(()=>{let m=l();if(typeof m?.setConfigProperty!="function"){m&&e.config&&Object.keys(e.config).length&&f("Config prop is set but this map library has no setConfigProperty (Mapbox Standard Style only) \u2014 skipping");return}for(let p in e.config){if(!p||p==="id")continue;let g=e.config?.id||"basemap",x=e.config[p];m.setConfigProperty(g,p,x),f(`Set Config (${g}:${p}) to:`,x);}}),createEffect(()=>{let m=e.options?.projection;!t||!m||(t.setProjection(m),f("Set Projection to:",m));}),createEffect(()=>{let m=e.cursorStyle;!t||!m||(t.getCanvas().style.cursor=m,f("Set Cursor to:",m));});let E=(m,p)=>(p.forEach(g=>{let x=m.findIndex(k=>g.metadata.smg.beforeType?k.type===g.metadata.smg.beforeType:k.id===g.metadata.smg.beforeId);m=x===-1?[...m,g]:[...m.slice(0,x),g,...m.slice(x)];}),m),_=null;return createEffect(m=>{let p=b$1(e.options?.style,e.darkStyle);if(t&&m!==p){let g=t.getStyle(),x=g.layers.filter(I=>t.layerIdList.includes(I.id)),k=Object.keys(g.sources).filter(I=>t.sourceIdList.includes(I)).reduce((I,he)=>({...I,[he]:g.sources[he]}),{}),ee=e.shouldDiffStyle?e.shouldDiffStyle(m,p):true;_&&(t.off("style.load",_),_=null),t.setStyle(p,ee?void 0:{diff:false}),_=()=>{if(_=null,!x)return;let I=t.getStyle();t.setStyle({...I,sources:{...I.sources,...k},layers:E(I.layers,x),fog:g.fog,terrain:g.terrain,light:g.light},{diff:false}),f("Set Mapstyle to:",p);},t.once("style.load",_);}return p},e.options?.style),onCleanup(()=>{_&&(t?.off("style.load",_),_=null);}),["showTileBoundaries","showTerrainWireframe","showCollisionBoxes","showPadding","showOverdrawInspector"].forEach(m=>{createEffect(()=>{let p=e[m];!t||!p||(t[m]=p,f(`Set ${m} to:`,p));});}),onCleanup(()=>{o?.disconnect(),r?.disconnect(),c++,t?.remove(),f("Map removed");}),(()=>{var m=dt(),p=n;return typeof p=="function"?use(p,m):n=m,insert(m,(()=>{var g=memo(()=>!!l());return ()=>g()&&createComponent(b,{get map(){return l()},mapLib:a,isMapLibre:i,get constants(){return e.constants},get themeVersion(){return u()},get children(){return [ut(),(()=>{var x=mt();return insert(x,()=>e.children),x})()]}})})()),effect(g=>{var x=e.id,k=e?.class,ee=e?.classList,I=e.offscreen?{position:"fixed",left:"-99999px",top:"-99999px",width:`${e.offscreen.width}px`,height:`${e.offscreen.height}px`,...e.style}:{width:"100%",height:"100%",...e.style};return x!==g.e&&setAttribute(m,"id",g.e=x),k!==g.t&&className(m,g.t=k),g.a=classList(m,ee,g.a),g.o=style(m,I,g.o),g},{e:void 0,t:void 0,a:void 0,o:void 0}),m})()};var Se=createContext(),U=()=>useContext(Se),xt=e=>{let[t]=a();e.id??=createUniqueId();let n=(a,i)=>{t.map.debug&&console.debug("%c[MapGL]","color: #ec4899",a,i||"");},o=()=>e.source,r=a=>{let i=a?.split(":").reduce((l,s)=>l&&l[s],re),c=i?{...o(),url:"",tiles:[i.replace("{apikey}",o().apikey||import.meta.env?.VITE_RASTER_API_KEY).replace("{r}",window.devicePixelRatio>1?"@2x":"")],attribution:re[a.split(":")[0]]._copy}:o();return c.tiles&&(c.tiles=["a","b","c"].map(l=>c.tiles[0].replace("{s}",l))),c};switch(t.map.addSource(e.id,r(o().url)),t.map.sourceIdList.push(e.id),n("Add Source:",e.id),o().type){case "geojson":createEffect(()=>{let a=o().data,i=t.map.getSource(e.id);i&&(i.setData(a||{}),n("Update GeoJSON Data:",e.id));});break;case "image":createEffect(()=>{let a=o().url,i=o().coordinates,c=t.map.getSource(e.id);c&&(c.updateImage(a,i),n("Update Image Data:",e.id));});break;case "vector":createEffect(()=>{let a=o().url,i=o().tiles,c=t.map.getSource(e.id);c&&(a?c.setUrl(a):c.setTiles(i),n("Update Vector Data:",e.id));});break;case "raster":createEffect(()=>{let a=r(o().url),i=t.map.getSource(e.id);i&&(a.url?i.setUrl(a.url):i.setTiles(a.tiles),n("Update Raster Data:",e.id));});break}return onCleanup(()=>{t.map?.getStyle().layers.forEach(a=>a.source===e.id&&t.map.removeLayer(a.id)),t.map?.getSource(e.id)&&t.map?.removeSource(e.id),n("Remove Source:",e.id);}),createComponent(Se.Provider,{get value(){return e.id},get children(){return e.children}})};var Pe=["id","type","filter","source","source-layer","minzoom","metadata","maxzoom","paint","layout"],Ee=["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"];var R,ke=e=>(R??=document.body.appendChild(document.createElement("div")),R.style.cssText="position:absolute;visibility:hidden;pointer-events:none",R.style.color="",R.style.color=e,R.style.color?getComputedStyle(R).color:void 0),wt=/^[a-z]+-\d{2,3}$/,Lt=/^(rgb|rgba|hsl|hsla)\(/i,Ct=/^[a-z-]+\(/i,j,St=/^bg-[a-z]+-\d{2,3}(?:\s+dark:bg-[a-z]+-\d{2,3})?$/,Pt=e=>{j??=document.body.appendChild(document.createElement("div")),j.style.cssText="position:absolute;visibility:hidden;pointer-events:none",j.className=e;let t=getComputedStyle(j).backgroundColor;return j.className="",t&&t!=="rgba(0, 0, 0, 0)"?t:e},_e=e=>{if(St.test(e))return Pt(e);if(wt.test(e)){let t=getComputedStyle(document.documentElement).getPropertyValue(`--color-${e}`).trim();return t&&ke(t)||e}return Ct.test(e)&&!Lt.test(e)&&ke(e)||e};var Te=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].reduce((o,r)=>{let a=e[r];return a!==t[r]&&o.push([r,a]),o},[]),le=(e,t)=>(e.startsWith(t)||e.startsWith("icon")||e.startsWith("text")?"":t+"-")+e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase()),_t=["slot","filter","visible","beforeId","beforeType"],H=(e,t)=>e.endsWith("color")?Array.isArray(t)?t.map(n=>H(e,n)):typeof t=="string"?_e(t):t:t,It=/^@(.+)$/,W=(e,t,n,o)=>{if(Array.isArray(t))return t.map(i=>W(e,i,n,o));if(typeof t!="string")return t;let r=t.match(It);if(!r)return t;let a=n[r[1]];return a===void 0?(o(`Unknown constant "@${r[1]}" referenced by "${e}" \u2014 leaving unresolved`),t):a},ce=(e,t={},n=()=>{})=>{if(!e)return;let o={},r={},a={},i=(c,l)=>H(c,W(c,l,t,n));return Object.entries(e).forEach(([c,l])=>{if(Pe.includes(c))a[c]=l;else {_t.includes(c)&&n(`"${c}" is a <Layer> prop, not a style property \u2014 belongs outside "style", not inside it. Treating it as a paint/layout property instead.`);let s=le(c,e.type);Ee.includes(s)?o[s]=W(s,l,t,n):r[s]=i(s,l);}}),e.paint&&Object.entries(e.paint).forEach(([c,l])=>{let s=le(c,e.type);r[s]=i(s,l);}),e.layout&&Object.entries(e.layout).forEach(([c,l])=>{let s=le(c,e.type);o[s]=W(s,l,t,n);}),{...a,paint:r,layout:o}},$e=false,Z=e=>{let t={type:e.type,paint:e.paint,layout:e.layout,minzoom:e.minzoom,maxzoom:e.maxzoom,"source-layer":e.sourceLayer??e["source-layer"]};for(let n of Object.keys(t))t[n]===void 0&&delete t[n];return e.style?{...e.style,...t}:Object.keys(t).length?t:void 0},Tt=e=>{let[t]=a();e.style&&!$e&&($e=true,console.warn("[solid-map-gl] <Layer style={...}> is deprecated \u2014 pass type/paint/layout/minzoom/maxzoom/sourceLayer as top-level <Layer> props instead."));let n=e.sourceId||e.style?.source||U(),o=e.id||e.customLayer?.id||createUniqueId(),r=(l,s)=>{(t.map.debug||t.map.debugEvents)&&console.debug("%c[MapGL]","color: #10b981",l,s||"");},a$1=l=>{try{l();}catch(s){if(!(s instanceof Error)||s.message!=="Style is not done loading")throw s;r(`Skipped map update (${o}) \u2014 style mid-swap`);}},i=createMemo(()=>e.beforeType?t.map.getStyle().layers.find(l=>l.type===e.beforeType)?.id:e.beforeId);t.map.addLayer(e.customLayer||{...ce(Z(e),t.constants,r),id:o,source:n,...t.isMapLibre?{}:{slot:e.slot||""},...e.filter!==void 0?{filter:e.filter}:{},metadata:{smg:{beforeType:e.beforeType,beforeId:e.beforeId}}},i()),t.map.layerIdList.push(o),e.customLayer&&t.map.fire("load"),r("Add Layer:",o),ve.forEach(l=>{if(e[l]){let s=l.slice(2).toLowerCase();t.map.on(s,o,u=>{s==="click"&&(u.clickOnLayer=true),e[l](u),t.map.debugEvents&&r(`Layer '${s}' event on '${o}':`,u);});}});let c=true;return createEffect(l=>{t.themeVersion;let s=ce(Z(e),t.constants,r);if(c)return c=false,s;if(s!==l)return s.layout!==l?.layout&&Te(s.layout,l?.layout).forEach(([u,d])=>a$1(()=>t.map.setLayoutProperty(o,u,d,{validate:!1}))),s.paint!==l?.paint&&Te(s.paint,l?.paint).forEach(([u,d])=>a$1(()=>t.map.setPaintProperty(o,u,d,{validate:!1}))),(s.minzoom!==l?.minzoom||s.maxzoom!==l?.maxzoom)&&a$1(()=>t.map.setLayerZoomRange(o,s.minzoom,s.maxzoom)),s.filter!==l?.filter&&a$1(()=>t.map.setFilter(o,s.filter,{validate:!1})),r("Update Layer Style:",o),s},ce(Z(e),t.constants,r)),createEffect(l=>{if(e.visible!==l)return a$1(()=>t.map.setLayoutProperty(o,"visibility",e.visible?"visible":"none",{validate:!1})),r(`Update Visibility (${o}):`,e.visible.toString()),e.visible},e.visible),createEffect(l=>i()===l?l:(a$1(()=>t.map.moveLayer(o,i())),r(`Update Layer Z-Index (${o}):`,i()),i()),i()),createEffect(l=>e.filter===l||l===void 0&&!e.filter?l:(a$1(()=>t.map.setFilter(o,e.filter??null)),r(`Update Filter (${o}):`,e.filter),e.filter),e.filter),createEffect(()=>{!e.featureState||e.featureState.id===null||a$1(()=>{t.map.removeFeatureState({source:n,sourceLayer:Z(e)?.["source-layer"]}),t.map.setFeatureState({source:n,sourceLayer:Z(e)?.["source-layer"],id:e.featureState.id},e.featureState.state);});}),createEffect(()=>{if(!e.pulse)return;let s=(Array.isArray(e.pulse)?e.pulse:[e.pulse]).map(u=>{let{property:d,duration:M=1500,holdFraction:h=.25}=u,y=H(d,u.from),v=H(d,u.to),f=M*(1-h),b=()=>{a$1(()=>{t.map.setPaintProperty(o,`${d}-transition`,{duration:0,delay:0},{validate:!1}),t.map.setPaintProperty(o,d,y,{validate:!1});}),requestAnimationFrame(()=>{a$1(()=>{t.map.setPaintProperty(o,`${d}-transition`,{duration:f,delay:0},{validate:!1}),t.map.setPaintProperty(o,d,v,{validate:!1});});});};return b(),window.setInterval(b,M)});r(`Start Pulse (${o}):`,e.pulse),onCleanup(()=>s.forEach(u=>window.clearInterval(u)));}),onCleanup(()=>t.map?.getLayer(o)&&t.map?.removeLayer(o)),e.children};var Ae=createContext(),Ut=()=>useContext(Ae),jt=e=>{let[t]=a(),[n,o]=createSignal(null);return onMount(async()=>{e.id=e.id||createUniqueId();let r=t.mapLib.MercatorCoordinate.fromLngLat([e.origin[0]||0,e.origin[1]||0],e.origin[2]||0),a=r.meterInMercatorCoordinateUnits(),{x:i,y:c,z:l}=r,s=null,u=null,d=null;e.babylon?(u=await import('@babylonjs/core'),s=u.Matrix.Compose(new u.Vector3(a,a,a),u.Quaternion.FromEulerAngles(Math.PI/2,0,0),new u.Vector3(i,c,l))):(d=await import('three'),s={translateX:i,translateY:c,translateZ:l,rotateX:Math.PI/2,rotateY:0,rotateZ:0,scale:a}),t.map.addLayer({id:e.id,type:"custom",renderingMode:"3d",onAdd(M,h){if(e.babylon){let y=new u.Engine(h,true,{useHighPrecisionMatrix:true},true);this.scene=new u.Scene(y),this.scene.autoClear=false,this.scene.preventDefaultOnPointerDown=false,this.scene.preventDefaultOnPointerUp=false;let v=new u.UniversalCamera("Camera",u.Vector3.Zero());v.mode=u.Camera.ORTHOGRAPHIC_CAMERA,v.inertia=0,this.scene.ambientColor=new u.Color3(1,1,1),e.defaultLight&&new u.HemisphericLight("Light",new u.Vector3(100,10,0),this.scene);}else this.camera=new d.Camera,this.scene=new d.Scene,e.defaultLight&&(this.light=new d.DirectionalLight(16777215),this.light.position.set(100,0,0).normalize(),this.scene.add(this.light)),this.renderer=new d.WebGLRenderer({canvas:M.getCanvas(),context:h,antialias:true}),this.renderer.autoClear=false;this.map=M,e.onAdd&&e.onAdd(this.scene,this.map,h),o(this.scene);},render(M,h){if(e.babylon){this.scene.activeCamera.freezeProjectionMatrix(s.multiply(u.Matrix.FromArray(h)));this.map.getPitch()*(Math.PI/180);this.map.getBearing()*(Math.PI/180);this.scene.render(false);}else {let y=new d.Matrix4().makeRotationAxis(new d.Vector3(1,0,0),s.rotateX),v=new d.Matrix4().makeRotationAxis(new d.Vector3(0,1,0),s.rotateY),f=new d.Matrix4().makeRotationAxis(new d.Vector3(0,0,1),s.rotateZ),b=new d.Matrix4().fromArray(h),S=new d.Matrix4().makeTranslation(s.translateX,s.translateY,s.translateZ).scale(new d.Vector3(s.scale,-s.scale,s.scale)).multiply(y).multiply(v).multiply(f);this.camera.projectionMatrix=b.multiply(S),this.renderer.resetState(),this.renderer.render(this.scene,this.camera);}e.onRender&&e.onRender(M,h),t.map.triggerRepaint();}},e.beforeId);}),onCleanup(()=>{t.map.getLayer(e.id)&&t.map.removeLayer(e.id);}),createComponent(Ae.Provider,{value:n,get children(){return memo(()=>!!n())()&&e.children}})};var qt=e=>{let[t]=a();return createEffect(()=>{t.isMapLibre?t.map.setSky?.(e.style||{}):t.map.setFog(e.style||{});}),onCleanup(()=>{t.isMapLibre?t.map.getSky?.()&&t.map.setSky(null):t.map.getFog()&&t.map.setFog(null);}),null};var Xt=e=>{let[t]=a(),n=U();return !n&&!e?.source&&(n=createUniqueId(),t.map.addSource(n,{type:"raster-dem",url:t.isMapLibre?"https://demotiles.maplibre.org/terrain-tiles/tiles.json":"mapbox://mapbox.terrain-rgb",tileSize:t.isMapLibre?256:512,maxzoom:t.isMapLibre?void 0:14}),t.map.sourceIdList.push(n)),createEffect(()=>{t.map.setTerrain({exaggeration:e.exaggeration||1,source:e?.source||n});}),onCleanup(()=>t.map?.setTerrain(null)),null};var Q=(e,t)=>{let[n]=a();createEffect(()=>{let o=e(),r=t?.();o&&(n.map.hasControl(o)&&n.map.removeControl(o),n.map.addControl(o,r));}),onCleanup(()=>{let o=e();o&&n.map.hasControl(o)&&n.map.removeControl(o);});};var tn=e=>{let[t]=a(),[n,o]=splitProps(e,["position"]),[r,a$1]=createSignal(null),i=new Map([["navigation",t.mapLib.NavigationControl],["scale",t.mapLib.ScaleControl],["attribution",t.mapLib.AttributionControl],["geolocate",t.mapLib.GeolocateControl],["fullscreen",t.mapLib.FullscreenControl],["logo",t.mapLib.LogoControl],["terrain",t.mapLib.TerrainControl]]);return createEffect(()=>{untrack(()=>r()&&t.map.hasControl(r())&&t.map.removeControl(r())),a$1(o.custom||new(i.get(o.type||"navigation"))(o.options));}),Q(r,()=>n.position),null};var rn=e=>{if(!e.lngLat)throw new Error("Marker - lngLat is required");let[t,n,o]=splitProps(e,["lngLat","children","showPopup","draggable"],["popup","onOpen","onClose"]),[r]=a(),a$1=null,i=null,c=t.lngLat;return createEffect(()=>{r.map&&(i?.remove(),i=new r.mapLib.Popup({closeOnClick:false,focusAfterOpen:false,...n.popup}).on("open",()=>n.onOpen?.()).on("close",()=>n.onClose?.()),createEffect(()=>{t.children!==void 0&&(typeof t.children=="string"?i?.setHTML(t.children):i?.setDOMContent(t.children),a$1?.setPopup(i));}),createEffect(()=>t.showPopup!==i?.isOpen()&&a$1?.togglePopup()));}),createEffect(()=>{r.map&&(a$1?.remove(),a$1=new r.mapLib.Marker(o.options).on("dragstart",()=>o.onDragStart?.()).on("dragend",()=>o.onDragEnd?.()).on("drag",()=>o.onDrag?.(a$1?.getLngLat().toArray())).setPopup(i).setLngLat(c).addTo(r.map),createEffect(()=>t.showPopup!==i?.isOpen()&&a$1?.togglePopup()));}),createEffect(()=>a$1?.setLngLat(t.lngLat)),createEffect(()=>a$1?.setDraggable(t.draggable)),onCleanup(()=>a$1?.remove()),null};var ln=e=>{if(!e.trackPointer&&!e.lngLat)throw new Error("Popup - lngLat or trackPointer is required");let[t,n]=splitProps(e,["lngLat","children","trackPointer"]),[o]=a(),r;return createEffect(()=>{o.map&&(r?.remove(),r=new o.mapLib.Popup({closeOnClick:false,focusAfterOpen:false,...n.options}).on("open",()=>n.onOpen?.()).on("close",()=>n.onClose?.()).addTo(o.map),createEffect(()=>t.trackPointer?r.trackPointer():r.setLngLat(t.lngLat)),createEffect(()=>typeof t.children=="string"?r.setHTML(t.children):r.setDOMContent(t.children)));}),onCleanup(()=>r?.remove()),null};var ue=new Float64Array(256);for(let e=0;e<256;e++){let t=.5-Math.pow(e/255,.45454545454545453);ue[e]=t*Math.abs(t);}ue[255]=-1e20;function De(e,t,n,o,r,a,i){a[0]=0,i[0]=-1e20,i[1]=1e20,r[0]=e[t];for(let c=1,l=0,s=0;c<o;c++){r[c]=e[t+c*n];let u=c*c;do{let d=a[l];s=(r[c]-r[d]+u-d*d)/(c-d)/2;}while(s<=i[l]&&--l>-1);l++,a[l]=c,i[l]=s,i[l+1]=1e20;}for(let c=0,l=0;c<o;c++){for(;i[l+1]<c;)l++;let s=a[l],u=c-s;e[t+c*n]=r[s]+u*u;}}function Fe(e,t,n,o,r,a){for(let i=0;i<t;i++)De(e,i,t,n,o,r,a);for(let i=0;i<n;i++)De(e,i*t,1,t,o,r,a);}var me=({radius:e=8}={})=>Math.ceil(e);function K(e,{radius:t=8,cutoff:n=.25}={}){let{width:o,height:r}=e,a=o*r,i=new Float64Array(a).fill(1e20),c=new Float64Array(a),l=Math.max(o,r),s=new Float64Array(l),u=new Uint16Array(l),d=new Float64Array(l+1),M=e.data;for(let f=0,b=3;f<a;f++,b+=4){let S=M[b];if(S===0)continue;let E=ue[S];i[f]=Math.max(0,E),c[f]=Math.max(0,-E);}Fe(i,o,r,s,u,d),Fe(c,o,r,s,u,d);let h=255/t,y=255*(1-n),v=new Uint8ClampedArray(a*4);for(let f=0,b=0;f<a;f++,b+=4){let S=Math.sqrt(i[f])-Math.sqrt(c[f]),E=Math.max(0,Math.min(255,Math.round(y-h*S)));v[b]=v[b+1]=v[b+2]=255,v[b+3]=E;}return {width:o,height:r,data:v}}var 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:true},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:true},grid:{size:20,path:"M10 0V20M0 10H20"},brick:{size:40,path:"M0 0H40M0 20H40M0 40H40M0 0V20M20 0V20M40 0V20M10 20V40M30 20V40"},wave:{size:20,path:"M0 5Q5 0 10 5T20 5M0 15Q5 10 10 15T20 15"}},Oe=Object.keys(pe),P=e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" stroke-linecap="round" stroke-linejoin="round">
6
+ var ye=["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"],ve=["onMouseDown","onMouseUp","onMouseOver","onMouseOut","onMouseMove","onMouseEnter","onMouseLeave","onClick","onDblClick","onContextMenu","onTouchStart","onTouchEnd","onTouchCancel"],Me=["onCreate","onDelete","onCombine","onUncombine","onUpdate","onSelectionchange","onModechange","onRender","onActionable"];var C="mapbox://styles/mapbox",D="https://raw.githubusercontent.com/",w="https://raw.githubusercontent.com/GIShub4/map-styles/main/",ne="https://assets.vector.hereapi.com/styles/",be={mb:{standard:`${C}/standard`,light:`${C}/light-v11`,dark:`${C}/dark-v11`,street:`${C}/streets-v12`,outdoor:`${C}/outdoors-v12`,sat:`${C}/satellite-v9`,sat_street:`${C}/satellite-streets-v12`,nav_base:`${C}/navigation-guidance-day-v4`,nav_base_night:`${C}/navigation-guidance-night-v4`,nav:`${C}/navigation-day-v1`,nav_night:`${C}/navigation-night-v1`,basic:`${C}/cjf4m44iw0uza2spb3q0a7s41`,monochrome:`${C}/cjv6rzz4j3m4b1fqcchuxclhb`,leshine:`${C}/cjcunv5ae262f2sm9tfwg8i0w`,icecream:`${C}/cj7t3i5yj0unt2rmt3y4b5e32`,cali:`${C}/cjerxnqt3cgvp2rmyuxbeqme7`,northstar:`${C}/cj44mfrt20f082snokim4ungi`,mineral:`${C}/cjtep62gq54l21frr1whf27ak`,moonlight:`${C}/cj3kbeqzo00022smj7akz3o1e`,frank:`${C}-map-design/ckshxkppe0gge18nz20i0nrwq`,minimo:`${C}-map-design/cksjc2nsq1bg117pnekb655h1`,decimal:`${C}-map-design/ck4014y110wt61ctt07egsel6`,stand:`${C}-map-design/ckr0svm3922ki18qntevm857n`,blueprint:`${C}-map-design/cks97e1e37nsd17nzg7p0308g`,bubble:`${C}-map-design/cksysy2nl62zp17quosctdtcc`,pencil:`${C}-map-design/cks9iema71es417mlrft4go2k`,swiss_ski:`${D}mapbox/mapbox-gl-swiss-ski-style/master/cij1zoclj002y8rkkdjl69psd.json`,vintage:`${D}mapbox/mapbox-gl-vintage-style/master/cif5p01n202nisaktvljx9mv3.json`,whaam:`${D}mapbox/mapbox-gl-whaam-style/master/cii8323c8004w0nlvtss3dbm2.json`,neon:`${D}NatEvatt/awesome-mapbox-gl-styles/master/styles/Neon/style.json`,camoflauge:`${D}jingsam/mapbox-gl-styles/master/Camouflage.json`,emerald:`${D}jingsam/mapbox-gl-styles/master/Emerald.json`,runner:`${D}jingsam/mapbox-gl-styles/master/Runner.json`,x_ray:`${D}jingsam/mapbox-gl-styles/master/X-ray.json`},here:{base:`${ne}berlin/base/mapbox/tilezen?apikey={apikey}`,day:`${ne}berlin/day/mapbox/tilezen?apikey={apikey}`,night:`${ne}berlin/night/mapbox/tilezen?apikey={apikey}`},esri:{blueprint:`${w}esri:blueprint.json`,charted_territory:`${w}esri:charted-territory.json`,colored_pencil:`${w}esri:colored-pencil.json`,community:`${w}esri:community.json`,mid_century:`${w}esri:mid-century.json`,modern_antique:`${w}esri:modern-antique.json`,nat_geo:`${w}esri:national-geographic.json`,newspaper:`${w}esri:newspaper.json`,open_street_map:`${w}esri:open-street-map.json`,light_gray_canvas:`${w}esri:light-gray-canvas.json`,dark_gray_canvas:`${w}esri:dark-gray-canvas.json`,human_geo_light:`${w}esri:human-geography-light.json`,human_geo_dark:`${w}esri:human-geography-dark.json`,world_navigation:`${w}esri:world-navigation.json`,world_street:`${w}esri:world-street.json`,world_street_night:`${w}esri:world-street-night.json`,world_terrain:`${w}esri:world-terrain.json`,world_terrain_hybrid:`${w}esri:world-terrain-hybrid.json`,world_topographic:`${w}esri:world-topographic.json`,chromium:`${w}esri:chromium.json`,dreamcatcher:`${w}esri:dreamcatcher.json`,seahaven:`${w}esri:seahaven.json`,sangria:`${w}esri:sangria.json`,mercurial:`${w}esri:mercurial.json`,imagery:`${w}esri:imagery.json`,imagery_hybrid:`${w}esri:imagery-hybrid.json`,firefly:`${w}esri:firefly.json`,firefly_hybrid:`${w}esri:firefly-hybrid.json`,oceans:`${w}esri:oceans.json`}},oe="https://{s}.basemaps.cartocdn.com/rastertiles/",G="https://stamen-tiles-{s}.a.ssl.fastly.net/",I="https://{s}.tile.thunderforest.com/",re={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:`${oe}voyager_labels_under/{z}/{x}/{y}{r}.png`,positron:`${oe}light_all/{z}/{x}/{y}{r}.png`,dark:`${oe}dark_all/{z}/{x}/{y}{r}.png`,_copy:'<a href="https://carto.com/attribution" target="_blank">&copy; Carto</a>'},stamen:{toner:`${G}toner/{z}/{x}/{y}{r}.png`,toner_lite:`${G}toner-lite/{z}/{x}/{y}{r}.png`,watercolor:`${G}watercolor/{z}/{x}/{y}.png`,terrain:`${G}terrain/{z}/{x}/{y}{r}.png`,_copy:'<a href="https://stamen.com/privacy-policy" target="_blank">&copy; Stamen Design</a>'},tf:{cycle:`${I}cycle/{z}/{x}/{y}{r}.png?apikey={apikey}`,trans:`${I}transport/{z}/{x}/{y}{r}.png?apikey={apikey}`,trans_dark:`${I}transport-dark/{z}/{x}/{y}{r}.png?apikey={apikey}`,landscape:`${I}landscape/{z}/{x}/{y}{r}.png?apikey={apikey}`,outdoors:`${I}outdoors/{z}/{x}/{y}{r}.png?apikey={apikey}`,neighbourhood:`${I}neighbourhood/{z}/{x}/{y}{r}.png?apikey={apikey}`,spinal:`${I}spinal-map/{z}/{x}/{y}{r}.png?apikey={apikey}`,pioneer:`${I}pioneer/{z}/{x}/{y}{r}.png?apikey={apikey}`,atlas:`${I}atlas/{z}/{x}/{y}{r}.png?apikey={apikey}`,mobile:`${I}mobile-atlas/{z}/{x}/{y}{r}.png?apikey={apikey}`,_copy:'<a href="https://thunderforest.com/privacy" target="_blank">&copy; Thunderforest</a>'}};var V=()=>new Promise(e=>requestAnimationFrame(()=>e())),et=e=>{try{return !!e.style?.hasTransitions?.()}catch{return false}};function tt(e,t){return new Promise(n=>{let o=Date.now()+t,r=()=>{if(e.areTilesLoaded()){n(true);return}if(Date.now()>=o){n(false);return}setTimeout(r,100);};r();})}async function B(e,t={}){let{timeout:n=1e4,fadeMargin:o=400}=t;if(await tt(e,n),e.triggerRepaint(),await V(),await V(),o>0){let r=Date.now()+Math.max(o,2e3);for(;et(e)&&Date.now()<r;)e.triggerRepaint(),await V();await new Promise(a=>setTimeout(a,o)),e.triggerRepaint(),await V(),await V();}}function Y(e,t={}){return new Promise(n=>{e.once("idle",()=>{B(e,t).then(n);}),e.triggerRepaint();})}function ae(e){for(let t of e.getStyle()?.layers??[])try{e.setPaintProperty(t.id,"raster-fade-duration",0);}catch{}}function xe(e,t){return {map:e,waitUntilSettled:()=>Y(e,t),capture:(n="image/jpeg",o=.92)=>e.getCanvas().toDataURL(n,o),captureWhenSettled:async(n="image/jpeg",o=.92)=>(await Y(e,t),e.getCanvas().toDataURL(n,o))}}var dt=template("<div>"),ut=template("<style>.overlay{position:relative;width:100%;height:100%;pointer-events:none}:where(.overlay>*){pointer-events:auto}"),mt=template("<div class=overlay>"),ft=e=>{let t,n,o,r,a,i=false,c=0,[l,s]=createSignal(null),[u,d]=createSignal(0),[v,h]=createSignal(!isServer&&(window.matchMedia("(prefers-color-scheme: dark)").matches||document.body.classList.contains("dark"))),y=false,M=false,f=(m,p)=>(e.debug||e.debugEvents)&&console.debug("%c[MapGL]","color: #0ea5e9",m,p||""),b$1=(m,p)=>{let g=v()&&p?p:m;return (typeof g=="string"||g instanceof String)&&g?.split(":").reduce((x,k)=>x&&x[k],be)?.replace("{apikey}",e.apikey||import.meta.env?.VITE_VECTOR_API_KEY)||g};onMount(async()=>{try{await S();}catch(m){console.error("[MapGL] Failed to initialize map:",m),e.onError?.(m);}});let S=async()=>{if(a=e.mapLib||await import('mapbox-gl'),a.Map||(a=window.maplibregl||window.mapboxgl),typeof a.supported=="function"&&!a.supported())throw new Error("Mapbox GL not supported");if(i=typeof a.Map?.prototype?.setConfigProperty!="function",f(`Map (v${a.version}) loading...`),t=new a.Map({accessToken:e.options?.accessToken||import.meta.env?.VITE_MAPBOX_ACCESS_TOKEN,interactive:e.options?.interactive||!!e.onViewportChange,...e.options,...e.viewport,projection:e.options?.projection,container:n,style:b$1(e.options?.style,e.darkStyle),fitBoundsOptions:{padding:e.viewport?.padding},...e.offscreen?{preserveDrawingBuffer:true}:{}}),t.debug=e.debug,t.debugEvents=e.debugEvents,t.sourceIdList=[],t.layerIdList=[],t.isMapLibre=i,ye.forEach(m=>{let p=e[m];if(p){let g=m.slice(2).toLowerCase();typeof p=="function"?t.on(g,x=>{setTimeout(()=>{g==="click"&&x.clickOnLayer||(p(x),e.debugEvents&&f(`Map '${g}' event:`,x));},0);}):Object.keys(p).forEach(x=>{t.on(g,x,k=>{setTimeout(()=>{g==="click"&&k.clickOnLayer||(p[x](k),e.debugEvents&&f(`Map '${g}' event on '${x}':`,k));},0);});});}}),e.onTilesLoaded){let m=e.tilesLoadedTimeout??1e4,p=e.tilesLoadedFadeMargin??400;t.on("idle",()=>{let g=++c;B(t,{timeout:m,fadeMargin:p}).then(()=>{g===c&&(f("Tiles settled"),e.onTilesLoaded());});});}t.once("load",()=>{s(t),f("Map loaded"),e.offscreen&&e.offscreen.disableRasterFade!==false&&ae(t),e.onCapturerReady&&e.onCapturerReady(xe(t,{timeout:e.tilesLoadedTimeout??1e4,fadeMargin:e.tilesLoadedFadeMargin??400})),["mousedown","touchstart","wheel"].forEach(p=>t.on(p,g=>!g.rotate&&e.onUserInteraction?.(true))),["moveend","mouseup","touchend"].forEach(p=>t.on(p,g=>!g.rotate&&e.onUserInteraction?.(false)));let m=!isServer&&window.matchMedia("(prefers-color-scheme: dark)");m?.addEventListener("change",()=>{h(m.matches),d(p=>p+1),f("Set dark theme to:",m.matches?.toString());}),r=new MutationObserver(()=>{let p=document.documentElement.classList.contains("dark")||document.body.classList.contains("dark");h(p),d(g=>g+1),f("Set theme to:",p);}),r.observe(document.documentElement,{attributes:true}),r.observe(document.body,{attributes:true}),e.disableResize||(o=new ResizeObserver(()=>{setTimeout(()=>{t?.resize();},0),f("Map resized");}),o.observe(n)),t.on("move",p=>{let g={...e.viewport,id:e.id,point:{x:p.originalEvent?.x,y:p.originalEvent?.y},center:e.viewport?.center?.lat?t.getCenter():[t.getCenter().lng,t.getCenter().lat],zoom:t.getZoom(),pitch:t.getPitch(),bearing:t.getBearing(),inTransit:true,bounds:null};!p.viewport&&e.onViewportChange&&(M=true,e.onViewportChange(g));}),t.on("moveend",p=>{if(y||p.rotate||!e.onViewportChange)return;let g={...e.viewport,inTransit:false};M=true,e.onViewportChange(g);});});};createEffect(on(()=>e.viewport,m=>{if(!t||e.id!==m?.id)return;if(M){M=false;return}let p={...m,...m.bounds?t.cameraForBounds(m.bounds,{bearing:m?.bearing,pitch:m?.pitch,padding:m?.padding}):null};y=true,t.stop(),y=false,t[e.transitionType||"flyTo"](p),f(`Update Viewport (${e.transitionType||"flyTo"}):`,p);},{defer:true})),createEffect(()=>{let m=l();if(typeof m?.setConfigProperty!="function"){m&&e.config&&Object.keys(e.config).length&&f("Config prop is set but this map library has no setConfigProperty (Mapbox Standard Style only) \u2014 skipping");return}for(let p in e.config){if(!p||p==="id")continue;let g=e.config?.id||"basemap",x=e.config[p];m.setConfigProperty(g,p,x),f(`Set Config (${g}:${p}) to:`,x);}}),createEffect(()=>{let m=e.options?.projection;!t||!m||(t.setProjection(m),f("Set Projection to:",m));}),createEffect(()=>{let m=e.cursorStyle;!t||!m||(t.getCanvas().style.cursor=m,f("Set Cursor to:",m));});let E=(m,p)=>(p.forEach(g=>{let x=m.findIndex(k=>g.metadata.smg.beforeType?k.type===g.metadata.smg.beforeType:k.id===g.metadata.smg.beforeId);m=x===-1?[...m,g]:[...m.slice(0,x),g,...m.slice(x)];}),m),_=null;return createEffect(m=>{let p=b$1(e.options?.style,e.darkStyle);if(t&&m!==p){let g=t.getStyle(),x=g.layers.filter(T=>t.layerIdList.includes(T.id)),k=Object.keys(g.sources).filter(T=>t.sourceIdList.includes(T)).reduce((T,he)=>({...T,[he]:g.sources[he]}),{}),ee=e.shouldDiffStyle?e.shouldDiffStyle(m,p):true;_&&(t.off("style.load",_),_=null),t.setStyle(p,ee?void 0:{diff:false}),_=()=>{if(_=null,!x)return;let T=t.getStyle();t.setStyle({...T,sources:{...T.sources,...k},layers:E(T.layers,x),fog:g.fog,terrain:g.terrain,light:g.light},{diff:false}),f("Set Mapstyle to:",p);},t.once("style.load",_);}return p},e.options?.style),onCleanup(()=>{_&&(t?.off("style.load",_),_=null);}),["showTileBoundaries","showTerrainWireframe","showCollisionBoxes","showPadding","showOverdrawInspector"].forEach(m=>{createEffect(()=>{let p=e[m];!t||!p||(t[m]=p,f(`Set ${m} to:`,p));});}),onCleanup(()=>{o?.disconnect(),r?.disconnect(),c++,t?.remove(),f("Map removed");}),(()=>{var m=dt(),p=n;return typeof p=="function"?use(p,m):n=m,insert(m,(()=>{var g=memo(()=>!!l());return ()=>g()&&createComponent(b,{get map(){return l()},mapLib:a,isMapLibre:i,get constants(){return e.constants},get themeVersion(){return u()},get children(){return [ut(),(()=>{var x=mt();return insert(x,()=>e.children),x})()]}})})()),effect(g=>{var x=e.id,k=e?.class,ee=e?.classList,T=e.offscreen?{position:"fixed",left:"-99999px",top:"-99999px",width:`${e.offscreen.width}px`,height:`${e.offscreen.height}px`,...e.style}:{width:"100%",height:"100%",...e.style};return x!==g.e&&setAttribute(m,"id",g.e=x),k!==g.t&&className(m,g.t=k),g.a=classList(m,ee,g.a),g.o=style(m,T,g.o),g},{e:void 0,t:void 0,a:void 0,o:void 0}),m})()};var Se=createContext(),U=()=>useContext(Se),xt=e=>{let[t]=a();e.id??=createUniqueId();let n=(a,i)=>{t.map.debug&&console.debug("%c[MapGL]","color: #ec4899",a,i||"");},o=()=>e.source,r=a=>{let i=a?.split(":").reduce((l,s)=>l&&l[s],re),c=i?{...o(),url:"",tiles:[i.replace("{apikey}",o().apikey||import.meta.env?.VITE_RASTER_API_KEY).replace("{r}",window.devicePixelRatio>1?"@2x":"")],attribution:re[a.split(":")[0]]._copy}:o();return c.tiles&&(c.tiles=["a","b","c"].map(l=>c.tiles[0].replace("{s}",l))),c};switch(t.map.addSource(e.id,r(o().url)),t.map.sourceIdList.push(e.id),n("Add Source:",e.id),o().type){case "geojson":createEffect(()=>{let a=o().data,i=t.map.getSource(e.id);i&&(i.setData(a||{}),n("Update GeoJSON Data:",e.id));});break;case "image":createEffect(()=>{let a=o().url,i=o().coordinates,c=t.map.getSource(e.id);c&&(c.updateImage(a,i),n("Update Image Data:",e.id));});break;case "vector":createEffect(()=>{let a=o().url,i=o().tiles,c=t.map.getSource(e.id);c&&(a?c.setUrl(a):c.setTiles(i),n("Update Vector Data:",e.id));});break;case "raster":createEffect(()=>{let a=r(o().url),i=t.map.getSource(e.id);i&&(a.url?i.setUrl(a.url):i.setTiles(a.tiles),n("Update Raster Data:",e.id));});break}return onCleanup(()=>{t.map?.getStyle().layers.forEach(a=>a.source===e.id&&t.map.removeLayer(a.id)),t.map?.getSource(e.id)&&t.map?.removeSource(e.id),n("Remove Source:",e.id);}),createComponent(Se.Provider,{get value(){return e.id},get children(){return e.children}})};var Pe=["id","type","filter","source","source-layer","minzoom","metadata","maxzoom","paint","layout"],Ee=["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"];var z,ke=e=>(z??=document.body.appendChild(document.createElement("div")),z.style.cssText="position:absolute;visibility:hidden;pointer-events:none",z.style.color="",z.style.color=e,z.style.color?getComputedStyle(z).color:void 0),wt=/^[a-z]+-\d{2,3}$/,Lt=/^(rgb|rgba|hsl|hsla)\(/i,Ct=/^[a-z-]+\(/i,j,St=/^bg-[a-z]+-\d{2,3}(?:\s+dark:bg-[a-z]+-\d{2,3})?$/,Pt=e=>{j??=document.body.appendChild(document.createElement("div")),j.style.cssText="position:absolute;visibility:hidden;pointer-events:none",j.className=e;let t=getComputedStyle(j).backgroundColor;return j.className="",t&&t!=="rgba(0, 0, 0, 0)"?t:e},_e=e=>{if(St.test(e))return Pt(e);if(wt.test(e)){let t=getComputedStyle(document.documentElement).getPropertyValue(`--color-${e}`).trim();return t&&ke(t)||e}return Ct.test(e)&&!Lt.test(e)&&ke(e)||e};var $e=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].reduce((o,r)=>{let a=e[r];return a!==t[r]&&o.push([r,a]),o},[]),le=(e,t)=>(e.startsWith(t)||e.startsWith("icon")||e.startsWith("text")?"":t+"-")+e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase()),_t=["slot","filter","visible","beforeId","beforeType"],H=(e,t)=>e.endsWith("color")?Array.isArray(t)?t.map(n=>H(e,n)):typeof t=="string"?_e(t):t:t,Tt=/^@(.+)$/,W=(e,t,n,o)=>{if(Array.isArray(t))return t.map(i=>W(e,i,n,o));if(typeof t!="string")return t;let r=t.match(Tt);if(!r)return t;let a=n[r[1]];return a===void 0?(o(`Unknown constant "@${r[1]}" referenced by "${e}" \u2014 leaving unresolved`),t):a},ce=(e,t={},n=()=>{})=>{if(!e)return;let o={},r={},a={},i=(c,l)=>H(c,W(c,l,t,n));return Object.entries(e).forEach(([c,l])=>{if(Pe.includes(c))a[c]=l;else {_t.includes(c)&&n(`"${c}" is a <Layer> prop, not a style property \u2014 belongs outside "style", not inside it. Treating it as a paint/layout property instead.`);let s=le(c,e.type);Ee.includes(s)?o[s]=W(s,l,t,n):r[s]=i(s,l);}}),e.paint&&Object.entries(e.paint).forEach(([c,l])=>{let s=le(c,e.type);r[s]=i(s,l);}),e.layout&&Object.entries(e.layout).forEach(([c,l])=>{let s=le(c,e.type);o[s]=W(s,l,t,n);}),{...a,paint:r,layout:o}},Ie=false,Z=e=>{let t={type:e.type,paint:e.paint,layout:e.layout,minzoom:e.minzoom,maxzoom:e.maxzoom,"source-layer":e.sourceLayer??e["source-layer"]};for(let n of Object.keys(t))t[n]===void 0&&delete t[n];return e.style?{...e.style,...t}:Object.keys(t).length?t:void 0},$t=e=>{let[t]=a();e.style&&!Ie&&(Ie=true,console.warn("[solid-map-gl] <Layer style={...}> is deprecated \u2014 pass type/paint/layout/minzoom/maxzoom/sourceLayer as top-level <Layer> props instead."));let n=e.sourceId||e.style?.source||U(),o=e.id||e.customLayer?.id||createUniqueId(),r=(l,s)=>{(t.map.debug||t.map.debugEvents)&&console.debug("%c[MapGL]","color: #10b981",l,s||"");},a$1=l=>{try{l();}catch(s){if(!(s instanceof Error)||s.message!=="Style is not done loading")throw s;r(`Skipped map update (${o}) \u2014 style mid-swap`);}},i=createMemo(()=>e.beforeType?t.map.getStyle().layers.find(l=>l.type===e.beforeType)?.id:e.beforeId);t.map.addLayer(e.customLayer||{...ce(Z(e),t.constants,r),id:o,source:n,...t.isMapLibre?{}:{slot:e.slot||""},...e.filter!==void 0?{filter:e.filter}:{},metadata:{smg:{beforeType:e.beforeType,beforeId:e.beforeId}}},i()),t.map.layerIdList.push(o),e.customLayer&&t.map.fire("load"),r("Add Layer:",o),ve.forEach(l=>{if(e[l]){let s=l.slice(2).toLowerCase();t.map.on(s,o,u=>{s==="click"&&(u.clickOnLayer=true),e[l](u),t.map.debugEvents&&r(`Layer '${s}' event on '${o}':`,u);});}});let c=true;return createEffect(l=>{t.themeVersion;let s=ce(Z(e),t.constants,r);if(c)return c=false,s;if(s!==l)return s.layout!==l?.layout&&$e(s.layout,l?.layout).forEach(([u,d])=>a$1(()=>t.map.setLayoutProperty(o,u,d,{validate:!1}))),s.paint!==l?.paint&&$e(s.paint,l?.paint).forEach(([u,d])=>a$1(()=>t.map.setPaintProperty(o,u,d,{validate:!1}))),(s.minzoom!==l?.minzoom||s.maxzoom!==l?.maxzoom)&&a$1(()=>t.map.setLayerZoomRange(o,s.minzoom,s.maxzoom)),s.filter!==l?.filter&&a$1(()=>t.map.setFilter(o,s.filter,{validate:!1})),r("Update Layer Style:",o),s},ce(Z(e),t.constants,r)),createEffect(l=>{if(e.visible!==l)return a$1(()=>t.map.setLayoutProperty(o,"visibility",e.visible?"visible":"none",{validate:!1})),r(`Update Visibility (${o}):`,e.visible.toString()),e.visible},e.visible),createEffect(l=>i()===l?l:(a$1(()=>t.map.moveLayer(o,i())),r(`Update Layer Z-Index (${o}):`,i()),i()),i()),createEffect(l=>e.filter===l||l===void 0&&!e.filter?l:(a$1(()=>t.map.setFilter(o,e.filter??null)),r(`Update Filter (${o}):`,e.filter),e.filter),e.filter),createEffect(()=>{!e.featureState||e.featureState.id===null||a$1(()=>{t.map.removeFeatureState({source:n,sourceLayer:Z(e)?.["source-layer"]}),t.map.setFeatureState({source:n,sourceLayer:Z(e)?.["source-layer"],id:e.featureState.id},e.featureState.state);});}),createEffect(()=>{if(!e.pulse)return;let s=(Array.isArray(e.pulse)?e.pulse:[e.pulse]).map(u=>{let{property:d,duration:v=1500,holdFraction:h=.25}=u,y=H(d,u.from),M=H(d,u.to),f=v*(1-h),b=()=>{a$1(()=>{t.map.setPaintProperty(o,`${d}-transition`,{duration:0,delay:0},{validate:!1}),t.map.setPaintProperty(o,d,y,{validate:!1});}),requestAnimationFrame(()=>{a$1(()=>{t.map.setPaintProperty(o,`${d}-transition`,{duration:f,delay:0},{validate:!1}),t.map.setPaintProperty(o,d,M,{validate:!1});});});};return b(),window.setInterval(b,v)});r(`Start Pulse (${o}):`,e.pulse),onCleanup(()=>s.forEach(u=>window.clearInterval(u)));}),onCleanup(()=>t.map?.getLayer(o)&&t.map?.removeLayer(o)),e.children};var Ae=createContext(),Ut=()=>useContext(Ae),jt=e=>{let[t]=a(),[n,o]=createSignal(null);return onMount(async()=>{e.id=e.id||createUniqueId();let r=t.mapLib.MercatorCoordinate.fromLngLat([e.origin[0]||0,e.origin[1]||0],e.origin[2]||0),a=r.meterInMercatorCoordinateUnits(),{x:i,y:c,z:l}=r,s=null,u=null,d=null;e.babylon?(u=await import('@babylonjs/core'),s=u.Matrix.Compose(new u.Vector3(a,a,a),u.Quaternion.FromEulerAngles(Math.PI/2,0,0),new u.Vector3(i,c,l))):(d=await import('three'),s={translateX:i,translateY:c,translateZ:l,rotateX:Math.PI/2,rotateY:0,rotateZ:0,scale:a}),t.map.addLayer({id:e.id,type:"custom",renderingMode:"3d",onAdd(v,h){if(e.babylon){let y=new u.Engine(h,true,{useHighPrecisionMatrix:true},true);this.scene=new u.Scene(y),this.scene.autoClear=false,this.scene.preventDefaultOnPointerDown=false,this.scene.preventDefaultOnPointerUp=false;let M=new u.UniversalCamera("Camera",u.Vector3.Zero());M.mode=u.Camera.ORTHOGRAPHIC_CAMERA,M.inertia=0,this.scene.ambientColor=new u.Color3(1,1,1),e.defaultLight&&new u.HemisphericLight("Light",new u.Vector3(100,10,0),this.scene);}else this.camera=new d.Camera,this.scene=new d.Scene,e.defaultLight&&(this.light=new d.DirectionalLight(16777215),this.light.position.set(100,0,0).normalize(),this.scene.add(this.light)),this.renderer=new d.WebGLRenderer({canvas:v.getCanvas(),context:h,antialias:true}),this.renderer.autoClear=false;this.map=v,e.onAdd&&e.onAdd(this.scene,this.map,h),o(this.scene);},render(v,h){if(e.babylon)this.scene.activeCamera.freezeProjectionMatrix(s.multiply(u.Matrix.FromArray(h))),this.scene.render(false);else {let y=new d.Matrix4().makeRotationAxis(new d.Vector3(1,0,0),s.rotateX),M=new d.Matrix4().makeRotationAxis(new d.Vector3(0,1,0),s.rotateY),f=new d.Matrix4().makeRotationAxis(new d.Vector3(0,0,1),s.rotateZ),b=new d.Matrix4().fromArray(h),S=new d.Matrix4().makeTranslation(s.translateX,s.translateY,s.translateZ).scale(new d.Vector3(s.scale,-s.scale,s.scale)).multiply(y).multiply(M).multiply(f);this.camera.projectionMatrix=b.multiply(S),this.renderer.resetState(),this.renderer.render(this.scene,this.camera);}e.onRender&&e.onRender(v,h),t.map.triggerRepaint();}},e.beforeId);}),onCleanup(()=>{t.map.getLayer(e.id)&&t.map.removeLayer(e.id);}),createComponent(Ae.Provider,{value:n,get children(){return memo(()=>!!n())()&&e.children}})};var qt=e=>{let[t]=a();return createEffect(()=>{t.isMapLibre?t.map.setSky?.(e.style||{}):t.map.setFog(e.style||{});}),onCleanup(()=>{t.isMapLibre?t.map.getSky?.()&&t.map.setSky(null):t.map.getFog()&&t.map.setFog(null);}),null};var Xt=e=>{let[t]=a(),n=U();return !n&&!e?.source&&(n=createUniqueId(),t.map.addSource(n,{type:"raster-dem",url:t.isMapLibre?"https://demotiles.maplibre.org/terrain-tiles/tiles.json":"mapbox://mapbox.terrain-rgb",tileSize:t.isMapLibre?256:512,maxzoom:t.isMapLibre?void 0:14}),t.map.sourceIdList.push(n)),createEffect(()=>{t.map.setTerrain({exaggeration:e.exaggeration||1,source:e?.source||n});}),onCleanup(()=>t.map?.setTerrain(null)),null};var Q=(e,t)=>{let[n]=a();createEffect(()=>{let o=e(),r=t?.();o&&(n.map.hasControl(o)&&n.map.removeControl(o),n.map.addControl(o,r));}),onCleanup(()=>{let o=e();o&&n.map.hasControl(o)&&n.map.removeControl(o);});};var tn=e=>{let[t]=a(),[n,o]=splitProps(e,["position"]),[r,a$1]=createSignal(null),i=new Map([["navigation",t.mapLib.NavigationControl],["scale",t.mapLib.ScaleControl],["attribution",t.mapLib.AttributionControl],["geolocate",t.mapLib.GeolocateControl],["fullscreen",t.mapLib.FullscreenControl],["logo",t.mapLib.LogoControl],["terrain",t.mapLib.TerrainControl]]);return createEffect(()=>{untrack(()=>r()&&t.map.hasControl(r())&&t.map.removeControl(r())),a$1(o.custom||new(i.get(o.type||"navigation"))(o.options));}),Q(r,()=>n.position),null};var rn=e=>{if(!e.lngLat)throw new Error("Marker - lngLat is required");let[t,n,o]=splitProps(e,["lngLat","children","showPopup","draggable"],["popup","onOpen","onClose"]),[r]=a(),a$1=null,i=null,c=t.lngLat;return createEffect(()=>{r.map&&(i?.remove(),i=new r.mapLib.Popup({closeOnClick:false,focusAfterOpen:false,...n.popup}).on("open",()=>n.onOpen?.()).on("close",()=>n.onClose?.()),createEffect(()=>{t.children!==void 0&&(typeof t.children=="string"?i?.setHTML(t.children):i?.setDOMContent(t.children),a$1?.setPopup(i));}),createEffect(()=>t.showPopup!==i?.isOpen()&&a$1?.togglePopup()));}),createEffect(()=>{r.map&&(a$1?.remove(),a$1=new r.mapLib.Marker(o.options).on("dragstart",()=>o.onDragStart?.()).on("dragend",()=>o.onDragEnd?.()).on("drag",()=>o.onDrag?.(a$1?.getLngLat().toArray())).setPopup(i).setLngLat(c).addTo(r.map),createEffect(()=>t.showPopup!==i?.isOpen()&&a$1?.togglePopup()));}),createEffect(()=>a$1?.setLngLat(t.lngLat)),createEffect(()=>a$1?.setDraggable(t.draggable)),onCleanup(()=>a$1?.remove()),null};var ln=e=>{if(!e.trackPointer&&!e.lngLat)throw new Error("Popup - lngLat or trackPointer is required");let[t,n]=splitProps(e,["lngLat","children","trackPointer"]),[o]=a(),r;return createEffect(()=>{o.map&&(r?.remove(),r=new o.mapLib.Popup({closeOnClick:false,focusAfterOpen:false,...n.options}).on("open",()=>n.onOpen?.()).on("close",()=>n.onClose?.()).addTo(o.map),createEffect(()=>t.trackPointer?r.trackPointer():r.setLngLat(t.lngLat)),createEffect(()=>typeof t.children=="string"?r.setHTML(t.children):r.setDOMContent(t.children)));}),onCleanup(()=>r?.remove()),null};var ue=new Float64Array(256);for(let e=0;e<256;e++){let t=.5-Math.pow(e/255,.45454545454545453);ue[e]=t*Math.abs(t);}ue[255]=-1e20;function De(e,t,n,o,r,a,i){a[0]=0,i[0]=-1e20,i[1]=1e20,r[0]=e[t];for(let c=1,l=0,s;c<o;c++){r[c]=e[t+c*n];let u=c*c;do{let d=a[l];s=(r[c]-r[d]+u-d*d)/(c-d)/2;}while(s<=i[l]&&--l>-1);l++,a[l]=c,i[l]=s,i[l+1]=1e20;}for(let c=0,l=0;c<o;c++){for(;i[l+1]<c;)l++;let s=a[l],u=c-s;e[t+c*n]=r[s]+u*u;}}function Fe(e,t,n,o,r,a){for(let i=0;i<t;i++)De(e,i,t,n,o,r,a);for(let i=0;i<n;i++)De(e,i*t,1,t,o,r,a);}var me=({radius:e=8}={})=>Math.ceil(e);function K(e,{radius:t=8,cutoff:n=.25}={}){let{width:o,height:r}=e,a=o*r,i=new Float64Array(a).fill(1e20),c=new Float64Array(a),l=Math.max(o,r),s=new Float64Array(l),u=new Uint16Array(l),d=new Float64Array(l+1),v=e.data;for(let f=0,b=3;f<a;f++,b+=4){let S=v[b];if(S===0)continue;let E=ue[S];i[f]=Math.max(0,E),c[f]=Math.max(0,-E);}Fe(i,o,r,s,u,d),Fe(c,o,r,s,u,d);let h=255/t,y=255*(1-n),M=new Uint8ClampedArray(a*4);for(let f=0,b=0;f<a;f++,b+=4){let S=Math.sqrt(i[f])-Math.sqrt(c[f]),E=Math.max(0,Math.min(255,Math.round(y-h*S)));M[b]=M[b+1]=M[b+2]=255,M[b+3]=E;}return {width:o,height:r,data:M}}var 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:true},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:true},grid:{size:20,path:"M10 0V20M0 10H20"},brick:{size:40,path:"M0 0H40M0 20H40M0 40H40M0 0V20M20 0V20M40 0V20M10 20V40M30 20V40"},wave:{size:20,path:"M0 5Q5 0 10 5T20 5M0 15Q5 10 10 15T20 15"}},Oe=Object.keys(pe),P=e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" stroke-linecap="round" stroke-linejoin="round">
7
7
  <path d="${e}" fill="#000" stroke="#000" stroke-width="3"/>
8
- </svg>`,ge={square:P("M3,3 L21,3 L21,21 L3,21 Z"),circle:P("M 12 4 A 1 1 0 0 0 12 20 A 1 1 0 0 0 12 4 Z"),triangle:P("M 12 2 L 22 19 H 2 Z"),diamond:P("M 12 1 L 19 12 L 12 23 L 5 12 Z"),pentagon:P("M12,3 L21,9 L17,19 L7,19 L3,9 Z"),hexagon:P("M12,3 L20,7.5 L20,16.5 L12,21 L4,16.5 L4,7.5 Z"),octagon:P("M 8 3 Q 12 3.3 16 3 Q 18.3 5.7 21 8 Q 20.7 12 21 16 Q 18.3 18.3 16 21 Q 12 20.7 8 21 Q 5.8 18.2 3 16 Q 3.3 12 3 8 Q 5.7 5.7 8 3 Z"),cross:P("M 10.5 3 h 3 v 7.5 h 7.5 v 3 h -7.5 v 7.5 h -3 v -7.5 h -7.5 v -3 h 7.5 Z"),x:P("M 18 4 L 20 6 L 14 12 L 20 18 L 18 20 L 12 14 L 6 20 L 4 18 L 10 12 L 4 6 L 6 4 L 12 10 Z"),star:P("M12,3 L14,9 L20.5,9 L15.5,13 L17.5,19.5 L12,15.5 L6.5,19.5 L8.5,13 L3.5,9 L10,9 Z"),heart:P("M 12 21 L 3 11 A 4.5 4.5 0 1 1 11 8 L 13 8 A 4.5 4.5 0 1 1 21 11 Z"),pin:P("M 12 21 L 7 11 A 6 6 0 0 1 12 2 A 6 6 0 0 1 17 11 Z"),drop:P("M 4 21 V 12 A 7.5 7.5 0 0 1 12 4 A 7.5 7.5 0 0 1 13 21 Z"),chevron:P("M 8 4 L 14 12 L 8 20 H 5 L 11 12 L 5 4 Z")},Re=Object.keys(ge),ze=e=>P(e);var pn=e=>{let[t]=a(),[n,o]=createSignal({width:0,height:0}),r=null,a$1=(s,u)=>{t.map.debug&&console.debug("%c[MapGL]","color: #10b981",s,u||"");},i=()=>{!r||!t.map||t.map.hasImage(e.id)||(t.map.addImage(e.id,r.data,r.ops),a$1("Re-Add Image:",e.id));};t.map.on("style.load",i),onCleanup(()=>{t.map?.off("style.load",i),t.map?.hasImage(e.id)&&t.map?.removeImage(e.id),a$1("Remove Image:",e.id);}),createEffect(()=>{if(!e.id)throw new Error("Image - ID is required");if(!e.source&&!e.pattern&&!e.symbol)throw new Error("Image - Image, Pattern or Symbol is required");let s=Math.max(1,Math.round(window.devicePixelRatio||2)),u=e.pattern?{pixelRatio:s,...e.options}:e.sdf?{...e.options,sdf:true}:e.options,d=e.symbol&&(ge[e.symbol]||(e.symbol.trimStart().startsWith("<svg")?e.symbol:ze(e.symbol)));c(e.source||d||l(e.pattern,s),(M,h)=>{let y=h?{...u,pixelRatio:h}:u,{width:v,height:f}=M;t.map&&!t.map.hasImage(e.id)&&t.map.addImage(e.id,M,y),!e.pattern&&untrack(()=>v===n().width&&f===n().height)?(t.map.updateImage(e.id,M),t.map.triggerRepaint()):(t.map.removeImage(e.id),t.map.addImage(e.id,M,y)),o({width:v,height:f}),r={data:M,ops:y},a$1("Add Image:",e.id);});});let c=(s,u)=>{let d=e.sdf?typeof e.sdf=="object"?e.sdf:{}:null;if(typeof s=="string"&&s?.trimStart().startsWith("<svg")&&(s=new DOMParser().parseFromString(s,"image/svg+xml").childNodes[0]),s instanceof SVGElement&&(e.options?.fill&&s.setAttribute("fill",e.options.fill),e.options?.stroke&&s.setAttribute("stroke",e.options.stroke),s=new XMLSerializer().serializeToString(s)),typeof s!="string")return u(s);t.map.loadImage(s,async(M,h)=>{if(M){typeof s=="string"&&s?.trimEnd().endsWith(".svg")&&(s=await(await fetch(s)).text(),s=new DOMParser().parseFromString(s,"image/svg+xml").childNodes[0],s.setAttribute("fill",e.options.fill),s.setAttribute("stroke",e.options.stroke),s.setAttribute("transform",e.options.transform),s=new XMLSerializer().serializeToString(s));let y=new Image;y.crossOrigin="Anonymous",y.onload=()=>{let v=Math.min(y.width,y.height),f=v>0?Math.max(1,50/v):1,b=e.options?.pixelRatio??Math.max(1,Math.round(window.devicePixelRatio||1)),S=f*b,E=d?me(d)*S:0,_=Math.round(y.width*S),m=Math.round(y.height*S),p=document.createElement("canvas");p.width=_+E*2,p.height=m+E*2;let g=p.getContext("2d");g.imageSmoothingEnabled=true,g.drawImage(y,E,E,_,m);let x=g.getImageData(0,0,p.width,p.height);return u(d?K(x,d):x,S)},y.onerror=v=>console.error(`[MapGL] Image "${e.id}" failed to load:`,v),y.src=s.trimStart().startsWith("<svg")?"data:image/svg+xml;charset=utf-8,"+encodeURIComponent(s):s;}else {if(!d)return u(h);let{width:y,height:v}=h,f=me(d),b=document.createElement("canvas");b.width=y+f*2,b.height=v+f*2;let S=b.getContext("2d");S.imageSmoothingEnabled=true,"data"in h?S.putImageData(h,f,f):S.drawImage(h,f,f,y,v);let E=S.getImageData(0,0,b.width,b.height);return u(K(E,d))}});},l=(s,u=2)=>{let d=pe[s.type],M=d.size*u;return {width:M,height:M,data:new Uint8Array(M*M*4),onAdd:function(){let h=document.createElement("canvas");h.width=h.height=M,this.ctx=h.getContext("2d",{willReadFrequently:true}),this.ctx.scale(u,u);},render:function(){return this.ctx.fillStyle=s.background||"transparent",this.ctx.fillRect(0,0,d.size,d.size),this.ctx.strokeStyle=this.ctx.fillStyle=s.color||"black",this.ctx.lineWidth=s.lineWidth||1,this.ctx.stroke(new Path2D(d.path)),d.fill&&this.ctx.fill(new Path2D(d.path)),this.data=this.ctx.getImageData(0,0,this.width,this.height).data,true}}};return null};var hn=(e,t,n)=>e.map((o,r)=>(1-n)*e[r]+n*t[r]),yn=(e,t,n)=>{let o=e.map((a,i)=>e[i]*t[i]).reduce((a,i)=>a+i),r=Math.acos(o);return e.map((a,i)=>Math.sin((1-n)*r)/Math.sin(r)*e[i]+Math.sin(n*r)/Math.sin(r)*t[i])},vn={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},Mn=e=>{let[t]=a(),n=.1,o=false,[r,a$1]=createSignal(false);["mousedown","touchstart","wheel"].forEach(h=>t.map.on(h,y=>!y.rotate&&a$1(true))),["moveend","mouseup","touchend"].forEach(h=>t.map.on(h,y=>!y.rotate&&a$1(false)));let i=async([h,y,v],f)=>{let b=t.map.getFreeCameraOptions();b.position=t.mapLib.MercatorCoordinate.fromLngLat([h,y],v),b.lookAtPoint(f),t.map.setFreeCameraOptions(b);},c=()=>{e.translate&&window.requestAnimationFrame(c);let h=[e.translate.start,e.translate.end,e.translate.easing?vn[e.translate.easing](n):n],y=e.translate.type==="line"?hn(...h):yn(...h);i(y,e.translate.target),!e.translate.loop&&(n>1||n<0)&&(o=!o),n=o?n-.001:n+.001;};createEffect(()=>{e.translate&&window.requestAnimationFrame(c);});let l={duration:1e3,easing:h=>h},s=()=>{if(r())return;let{secPerRev:h=120,maxSpinZoom:y=5,slowSpinZoom:v=3}=e.rotateGlobe,f=t.map.getZoom();if(f>y)return;let b=360/h;f>v&&(b*=(y-f)/(y-v));let S=t.map.getCenter();S.lng=e.reverse?S.lng+b:S.lng-b,t.map.easeTo({center:S,...l},{rotate:true});},u=()=>{if(!e.rotateViewport||r()){t.map.stop();return}let h=e.rotateViewport,y=h?.secPerRev||60,v=e.reverse?t.map.getBearing()+360/y:t.map.getBearing()-360/y,f=h?.pitch||60,b=h?.around;t.map.easeTo({bearing:v,pitch:f,around:b,...l},{rotate:true});},d=()=>e.rotateGlobe?s():u();t.map.on("moveend",d).on("dragend",d);let M;return createEffect(()=>{e.rotateGlobe!=null&&(e.rotateGlobe?(M=t.map.getCenter(),s()):e.resetWhenStopped?t.map.stop().easeTo({center:M}):t.map.stop());}),createEffect(()=>{e.rotateViewport!=null&&(e.rotateViewport?u():e.resetWhenStopped?t.map.stop().resetNorthPitch():t.map.stop());}),onCleanup(()=>t.map.off("moveend",d).off("dragend",d)),e.children};var wn=e=>{let[t]=a();return createEffect(()=>t.map.setLight(e.style||{})),onCleanup(()=>t.map?.setLight(null)),null};var N={};N.onSetup=function(e){var t={};return t.count=e.count||0,t};N.onClick=function(e,t){var n=this.newFeature({type:"Feature",properties:{count:e.count},geometry:{type:"Point",coordinates:[t.lngLat.lng,t.lngLat.lat]}});this.addFeature(n);};N.onKeyUp=function(e,t){if(t.keyCode===27)return this.changeMode("simple_select")};N.toDisplayFeatures=function(e,t,n){n(t);};var Ve=N;var Ln=6371.0088,Cn=1.609344,Ue=6378137;function T(e){return e*Math.PI/180}function je(e){return e*180/Math.PI}function Sn(e,t){let n=T(t[1]-e[1]),o=T(t[0]-e[0]),r=T(e[1]),a=T(t[1]),i=Math.sin(n/2)**2+Math.cos(r)*Math.cos(a)*Math.sin(o/2)**2;return Ln*2*Math.asin(Math.sqrt(i))}function q(e,t="kilometers"){let n=0;for(let o=1;o<e.length;o++)n+=Sn(e[o-1],e[o]);return t==="miles"?n/Cn:n}function Ze(e,t){let n=T(e[1]),o=T(e[0]),r=T(t[1]),a=T(t[0]-e[0]),i=Math.cos(r)*Math.cos(a),c=Math.cos(r)*Math.sin(a),l=Math.atan2(Math.sin(n)+Math.sin(r),Math.sqrt((Math.cos(n)+i)**2+c**2)),s=o+Math.atan2(c,Math.cos(n)+i);return [je(s),je(l)]}function Pn(e){let t=e.length;if(t<=2)return 0;let n=0;for(let o=0;o<t;o++){let r,a,i;o===t-2?(r=t-2,a=t-1,i=0):o===t-1?(r=t-1,a=0,i=1):(r=o,a=o+1,i=o+2),n+=(T(e[i][0])-T(e[r][0]))*Math.sin(T(e[a][1]));}return n*Ue*Ue/2}function Ne(e){return e.reduce((t,n,o)=>{let r=Math.abs(Pn(n));return o===0?t+r:t-r},0)}function qe(e){let t=e[0],n=0,o=0;for(let[l,s]of t)n+=l,o+=s;n/=t.length,o/=t.length;let r=0,a=0,i=0;for(let l=0;l<t.length-1;l++){let s=t[l][0]-n,u=t[l][1]-o,d=t[l+1][0]-n,M=t[l+1][1]-o,h=s*M-d*u;r+=(s+d)*h,a+=(u+M)*h,i+=h;}if(i===0)return [n,o];let c=1/(3*i);return [n+r*c,o+a*c]}var Ge=e=>new Intl.NumberFormat(void 0,{maximumFractionDigits:5}).format(e[0])+"\xB0 "+new Intl.NumberFormat(void 0,{maximumFractionDigits:5}).format(e[1])+"\xB0",A=(e,t)=>{let n=q(e,window.navigator.language==="en-US"?"miles":"kilometers");return {type:"Feature",properties:{type:"measure",value:window.navigator.language==="en-US"?new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:n<=1?"foot":"mile"}).format(n<=1?n*5280:n):new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:n<=1?"meter":"kilometer"}).format(n<=1?n*1e3:n),...t},geometry:{type:"Point",coordinates:Ze(e[0],e[1])}}},J=(e,t)=>{let n=Ne(e);return {type:"Feature",properties:{type:"measure",value:window.navigator.language==="en-US"?new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:n<=10.764?"foot":"mile"}).format(n<=10.764?n*10.764:n*1.0000003861)+"\xB2":new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:n<=1e6?"meter":"kilometer"}).format(n<=1e6?n:n/1e6)+"\xB2",...t},geometry:{type:"Point",coordinates:qe(e)}}};var Be=e=>{let t=e.modes.draw_line_string;return {...t,onSetup:function(){let n=t.onSetup.call(this),o=this.newFeature({type:"Feature",properties:{type:"measure",value:"TTT"},geometry:{type:"Point",coordinates:[]}});return {...n,measure:o}},onMouseMove:function(n,o){if(t.onMouseMove.call(this,n,o),n.line.coordinates.length>=2){let r=A(n.line.coordinates);n.measure.properties.value=r.properties.value,n.measure.updateCoordinate("",r.geometry.coordinates[0],r.geometry.coordinates[1]);}},toDisplayFeatures:function(n,o,r){t.toDisplayFeatures.call(this,n,o,r),this.drawConfig.userProperties.showLength&&r(n.measure.toGeoJSON());}}};var Ye=e=>{let t=e.modes.draw_point;return {...t,onSetup:function(){let n=t.onSetup.call(this);return n.point.properties={...n.point.properties,type:"measure",anchor:"bottom"},n},onMouseMove:function(n,{lngLat:o}){n.point.properties.value=Ge([o.lng,o.lat]),n.point.updateCoordinate("",o.lng,o.lat);},toDisplayFeatures:function(n,o,r){let a=o.properties.id===n.point.id;return o.properties.active=a?"":"false",r(o)}}};var Xe=e=>{let t=e.modes.draw_polygon;return {...t,toDisplayFeatures:function(n,o,r){let a=i=>{if(r(i),this.drawConfig.userProperties.showLength){let c=Array.isArray(i.geometry.coordinates[0][0])?i.geometry.coordinates[0]:i.geometry.coordinates;c.forEach((l,s)=>{!Array.isArray(l)||s==0||r(A([c[s-1],l]));});}this.drawConfig.userProperties.showArea&&i.geometry.coordinates[0].length>=3&&r(J([i.geometry.coordinates[0]]));};t.toDisplayFeatures.call(this,n,o,a);}}};function En(e,t,n,o){return {type:"Feature",properties:{meta:"vertex",parent:e,coord_path:n,active:o?"true":"false"},geometry:{type:"Point",coordinates:t}}}function kn(e,t,n,o=64){let r=[],a=t/(111.32*Math.cos(e[1]*Math.PI/180)),i=t/110.574;for(let c=0;c<o;c+=1){let l=c/o*(2*Math.PI),s=a*Math.cos(l),u=i*Math.sin(l);r.push([e[0]+s,e[1]+u]);}return r.push(r[0]),{type:"Feature",geometry:{type:"Polygon",coordinates:[r]},properties:{parent:n,active:"true"}}}var _n={enable: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);}},In=e=>({...e.modes.draw_line_string,clickAnywhere:function(t,n){return t.currentVertexPosition===1?(t.line.addCoordinate(0,n.lngLat.lng,n.lngLat.lat),this.changeMode("simple_select",{featureIds:[t.line.id]})):(this.updateUIClasses({mouse:"add"}),t.line.updateCoordinate(t.currentVertexPosition,n.lngLat.lng,n.lngLat.lat),t.direction==="forward"?(t.currentVertexPosition+=1,t.line.updateCoordinate(t.currentVertexPosition,n.lngLat.lng,n.lngLat.lat)):t.line.addCoordinate(0,n.lngLat.lng,n.lngLat.lat),null)},onStop:function(t){if(_n.enable(this),this.activateUIButton(),this.getFeature(t.line.id)!==void 0)if(t.line.removeCoordinate("0"),t.line.isValid()){let n=t.line.toGeoJSON(),o=(q(n.geometry.coordinates)*1e3).toFixed(1),r=n.geometry.coordinates[0];this.deleteFeature([t.line.id],{silent:true});let a=this.newFeature({type:"Feature",properties:{radius:o},geometry:{type:"Point",coordinates:r}});this.addFeature(a),this.map.fire("draw.create",{features:[a.toGeoJSON()]}),this.changeMode("simple_select",{featureIds:[a.id]});}else this.deleteFeature([t.line.id],{silent:true}),this.changeMode("simple_select",{},{silent:true});},toDisplayFeatures:function(t,n,o){let r=n.properties.id===t.line.id;return n.properties.active=r?"true":"false",r?(n.geometry.coordinates.length<2||(n.properties.meta="feature",o(En(t.line.id,n.geometry.coordinates[t.direction==="forward"?n.geometry.coordinates.length-2:1],`${t.direction==="forward"?n.geometry.coordinates.length-2:1}`,false)),o(n),o(A(n.geometry.coordinates,{parent:t.line.id})),o(kn(n.geometry.coordinates[0],q(n.geometry.coordinates),t.line.id))),null):o(n)}}),We=In;var Tn=e=>({...e.modes.draw_line_string,onSetup:function(t){let n=e.modes.draw_line_string.onSetup.call(this,t),o=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[]]}});return this.addFeature(o),{...n,...t,rectangle:o}},onTap:function(t,n){t.startPoint&&this.onMouseMove(t,n),this.onClick(t,n);},onClick:function(t,n){t.startPoint&&t.startPoint[0]!==n.lngLat.lng&&t.startPoint[1]!==n.lngLat.lat?(this.updateUIClasses({mouse:"pointer"}),t.endPoint=[n.lngLat.lng,n.lngLat.lat],this.changeMode("simple_select",{featuresId:t.rectangle.id})):t.startPoint=[n.lngLat.lng,n.lngLat.lat];},onMouseMove:function(t,n){t.startPoint&&(t.rectangle.updateCoordinate("0.0",t.startPoint[0],t.startPoint[1]),t.rectangle.updateCoordinate("0.1",n.lngLat.lng,t.startPoint[1]),t.rectangle.updateCoordinate("0.2",n.lngLat.lng,n.lngLat.lat),t.rectangle.updateCoordinate("0.3",t.startPoint[0],n.lngLat.lat),t.rectangle.updateCoordinate("0.4",t.startPoint[0],t.startPoint[1]));},onKeyUp:function(t,n){if(n.keyCode===27)return this.changeMode("simple_select")},onStop:function(t){e.modes.draw_line_string.onStop.call(this,t),this.getFeature(t.rectangle.id)!==void 0&&(t.rectangle.removeCoordinate("0.4"),t.rectangle.isValid()?this.map.fire("draw.create",{features:[t.rectangle.toGeoJSON()]}):(this.deleteFeature([t.rectangle.id],{silent:true}),this.changeMode("simple_select",{},{silent:true})));},toDisplayFeatures:function(t,n,o){let r=n.properties.id===t.rectangle.id;if(n.properties.active=r?"true":"false",!r)return o(n);if(t.startPoint)return o(n),this.drawConfig.userProperties.showLength&&(o(A([n.geometry.coordinates[0][0],n.geometry.coordinates[0][1]],{parent:t.rectangle.id,anchor:"bottom"})),o(A([n.geometry.coordinates[0][1],n.geometry.coordinates[0][2]],{parent:t.rectangle.id,anchor:"left"}))),this.drawConfig.userProperties.showArea&&o(J(n.geometry.coordinates,{parent:t.rectangle.id})),null},onTrash:function(t){this.deleteFeature([t.rectangle.id],{silent:true}),this.changeMode("simple_select");}}),He=Tn;var Qe={enable: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);},disable(e){setTimeout(()=>{!e.map||!e.map.doubleClickZoom||e.map.doubleClickZoom.disable();},0);}},$n={onSetup:function(e){let t=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[]]}});return this.addFeature(t),this.clearSelectedFeatures(),Qe.disable(this),this.updateUIClasses({mouse:"add"}),this.setActionableState({trash:true}),{rectangle:t,currentVertexPosition:0}},onTap:function(e,t){this.onClick(e,t);},onClick:function(e,t){if(e.currentVertexPosition===2){let n=this.calculatepXY3(e,t,false);return n&&e.rectangle.updateCoordinate(`0.${e.currentVertexPosition+1}`,n[0],n[1]),this.updateUIClasses({mouse:"pointer"}),this.changeMode("simple_select",{featuresId:e.rectangle.id})}else e.rectangle.updateCoordinate(`0.${e.currentVertexPosition}`,t.lngLat.lng,t.lngLat.lat),e.currentVertexPosition++,e.rectangle.updateCoordinate(`0.${e.currentVertexPosition}`,t.lngLat.lng,t.lngLat.lat);},onMouseMove:function(e,t){if(e.rectangle.updateCoordinate("0."+e.currentVertexPosition,t.lngLat.lng,t.lngLat.lat),e.currentVertexPosition&&e.currentVertexPosition>0&&this.calculateOrientedAnglePolygon(e),e.currentVertexPosition===2){let n=this.calculatepXY3(e,t,true);n&&e.rectangle.updateCoordinate("0."+(e.currentVertexPosition+1),n[0],n[1]);}},deegrees2meters(e){let t=e[0]*2003750834e-2/180,n=Math.log(Math.tan((90+e[1])*Math.PI/360))/(Math.PI/180);return n=n*2003750834e-2/180,[t,n]},meters2degress(e){let t=e[0]*180/2003750834e-2,n=Math.atan(Math.exp(e[1]*Math.PI/2003750834e-2))*360/Math.PI-90;return [t,n]},calculateOrientedAnglePolygon:function(e){let t=e.rectangle.getCoordinate("0.0"),n=this.deegrees2meters(t),o=e.rectangle.getCoordinate("0.1"),r=this.deegrees2meters(o),i=-1*(Math.atan2(r[1]-n[1],r[0]-n[0])*180/Math.PI+90),c=i<0?i+360:i;e.angle=parseFloat(c.toFixed(2));},calculatepXY3:function(e,t,n){let o=e.rectangle.getCoordinate("0.0"),r=this.deegrees2meters(o),a=e.rectangle.getCoordinate("0.1"),i=this.deegrees2meters(a),c=this.deegrees2meters([t.lngLat.lng,t.lngLat.lat]),l=this.deegrees2meters([t.lngLat.lng,t.lngLat.lat]);if(r[0]===i[0])c=[l[0],i[1]];else if(r[1]===i[1])c=[i[0],l[1]];else {let y=-1/((i[1]-r[1])/(i[0]-r[0]));Math.abs(y)<1?c[1]=y*(l[0]-i[0])+i[1]:c[0]=i[0]+(c[1]-i[1])/y;}let s=[i[0]-r[0],i[1]-r[1]],u=[c[0]-s[0],c[1]-s[1]],d=this.meters2degress(c),M=this.meters2degress(u);return e.rectangle.updateCoordinate("0.2",d[0],d[1]),e.rectangle.updateCoordinate("0.3",M[0],M[1]),M},onKeyUp:function(e,t){if(t.keyCode===27)return this.changeMode("simple_select")},onStop:function(e){Qe.enable(this),this.updateUIClasses({mouse:"none"}),this.activateUIButton(),this.getFeature(e.rectangle.id)!==void 0&&(e.rectangle.removeCoordinate("0.4"),e.rectangle.isValid()?this.map.fire("draw.create",{features:[e.rectangle.toGeoJSON()]}):(this.deleteFeature([e.rectangle.id],{silent:true}),this.changeMode("simple_select",{},{silent:true})));},toDisplayFeatures:function(e,t,n){let o=t.properties.id===e.rectangle.id;if(t.properties.active=o?"true":"false",t.properties.angle=e.angle,t.angle=e.angle,!o)return n(t);let r=t.geometry.coordinates[0].length;if(r<3){let a=t.geometry.coordinates[0][0],i={type:"Feature",properties:t.properties,angle:e.angle,geometry:{coordinates:t.geometry.coordinates[0][0],type:"Point"}};a&&n(i);return}if(r>=3&&r<=4){let a=[[t.geometry.coordinates[0][0][0],t.geometry.coordinates[0][0][1]],[t.geometry.coordinates[0][1][0],t.geometry.coordinates[0][1][1]]];if(n({type:"Feature",properties:t.properties,angle:e.angle,geometry:{coordinates:a,type:"LineString"}}),r===3)return}return n(t)},onTrash:function(e){this.deleteFeature([e.rectangle.id],{silent:true}),this.changeMode("simple_select");}},Ke=$n;var Je=[{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,-0.5],[0,0]],"text-size":12,"text-allow-overlap":true,"text-ignore-placement":true},paint:{"text-halo-color":"rgba(255,255,255,0.75)","text-halo-width":2,"text-halo-blur":1,"text-color":"#000"}}];var Dn=e=>{let[t]=a();t.isMapLibre&&e.lib.constants?.classes&&Object.assign(e.lib.constants.classes,{CANVAS:"maplibregl-canvas",CONTROL_BASE:"maplibregl-ctrl",CONTROL_PREFIX:"maplibregl-ctrl-",CONTROL_GROUP:"maplibregl-ctrl-group",ATTRIBUTION:"maplibregl-ctrl-attrib"});let n=new e.lib({styles:[...e.lib.lib.theme,...Je],modes:{...e.lib.modes,draw_point:Ye(e.lib),draw_line_string:Be(e.lib),draw_polygon:Xe(e.lib),multi_point:Ve,radius:We(e.lib),rectangle:He(e.lib),rectangle_assisted:Ke},userProperties:{showLength:e.showLength||false,showArea:e.showArea||false},...e.options});t.map.addControl(n,e.position||"top-right"),e.getInstance&&e.getInstance(n);let o={};return Me.forEach(r=>{if(e[r]){let a=`draw.${r.slice(2).toLowerCase()}`,i=c=>e[r](c);o[a]=i,t.map.on(a,i);}}),onCleanup(()=>{Object.keys(o).forEach(r=>t.map.off(r,o[r])),t.map?.removeControl(n);}),null};var On=e=>{let[t]=a(),n;return Q(()=>(n||(n=new e.overlay(e.props||{})),n)),createEffect(()=>n?.setProps(e.props||{})),null};
8
+ </svg>`,ge={square:P("M3,3 L21,3 L21,21 L3,21 Z"),circle:P("M 12 4 A 1 1 0 0 0 12 20 A 1 1 0 0 0 12 4 Z"),triangle:P("M 12 2 L 22 19 H 2 Z"),diamond:P("M 12 1 L 19 12 L 12 23 L 5 12 Z"),pentagon:P("M12,3 L21,9 L17,19 L7,19 L3,9 Z"),hexagon:P("M12,3 L20,7.5 L20,16.5 L12,21 L4,16.5 L4,7.5 Z"),octagon:P("M 8 3 Q 12 3.3 16 3 Q 18.3 5.7 21 8 Q 20.7 12 21 16 Q 18.3 18.3 16 21 Q 12 20.7 8 21 Q 5.8 18.2 3 16 Q 3.3 12 3 8 Q 5.7 5.7 8 3 Z"),cross:P("M 10.5 3 h 3 v 7.5 h 7.5 v 3 h -7.5 v 7.5 h -3 v -7.5 h -7.5 v -3 h 7.5 Z"),x:P("M 18 4 L 20 6 L 14 12 L 20 18 L 18 20 L 12 14 L 6 20 L 4 18 L 10 12 L 4 6 L 6 4 L 12 10 Z"),star:P("M12,3 L14,9 L20.5,9 L15.5,13 L17.5,19.5 L12,15.5 L6.5,19.5 L8.5,13 L3.5,9 L10,9 Z"),heart:P("M 12 21 L 3 11 A 4.5 4.5 0 1 1 11 8 L 13 8 A 4.5 4.5 0 1 1 21 11 Z"),pin:P("M 12 21 L 7 11 A 6 6 0 0 1 12 2 A 6 6 0 0 1 17 11 Z"),drop:P("M 4 21 V 12 A 7.5 7.5 0 0 1 12 4 A 7.5 7.5 0 0 1 13 21 Z"),chevron:P("M 8 4 L 14 12 L 8 20 H 5 L 11 12 L 5 4 Z")},ze=Object.keys(ge),Re=e=>P(e);var pn=e=>{let[t]=a(),[n,o]=createSignal({width:0,height:0}),r=null,a$1=(s,u)=>{t.map.debug&&console.debug("%c[MapGL]","color: #10b981",s,u||"");},i=()=>{!r||!t.map||t.map.hasImage(e.id)||(t.map.addImage(e.id,r.data,r.ops),a$1("Re-Add Image:",e.id));};t.map.on("style.load",i),onCleanup(()=>{t.map?.off("style.load",i),t.map?.hasImage(e.id)&&t.map?.removeImage(e.id),a$1("Remove Image:",e.id);}),createEffect(()=>{if(!e.id)throw new Error("Image - ID is required");if(!e.source&&!e.pattern&&!e.symbol)throw new Error("Image - Image, Pattern or Symbol is required");let s=Math.max(1,Math.round(window.devicePixelRatio||2)),u=e.pattern?{pixelRatio:s,...e.options}:e.sdf?{...e.options,sdf:true}:e.options,d=e.symbol&&(ge[e.symbol]||(e.symbol.trimStart().startsWith("<svg")?e.symbol:Re(e.symbol)));c(e.source||d||l(e.pattern,s),(v,h)=>{let y=h?{...u,pixelRatio:h}:u,{width:M,height:f}=v;t.map&&!t.map.hasImage(e.id)&&t.map.addImage(e.id,v,y),!e.pattern&&untrack(()=>M===n().width&&f===n().height)?(t.map.updateImage(e.id,v),t.map.triggerRepaint()):(t.map.removeImage(e.id),t.map.addImage(e.id,v,y)),o({width:M,height:f}),r={data:v,ops:y},a$1("Add Image:",e.id);});});let c=(s,u)=>{let d=e.sdf?typeof e.sdf=="object"?e.sdf:{}:null;if(typeof s=="string"&&s?.trimStart().startsWith("<svg")&&(s=new DOMParser().parseFromString(s,"image/svg+xml").childNodes[0]),s instanceof SVGElement&&(e.options?.fill&&s.setAttribute("fill",e.options.fill),e.options?.stroke&&s.setAttribute("stroke",e.options.stroke),s=new XMLSerializer().serializeToString(s)),typeof s!="string")return u(s);t.map.loadImage(s,async(v,h)=>{if(v){typeof s=="string"&&s?.trimEnd().endsWith(".svg")&&(s=await(await fetch(s)).text(),s=new DOMParser().parseFromString(s,"image/svg+xml").childNodes[0],s.setAttribute("fill",e.options.fill),s.setAttribute("stroke",e.options.stroke),s.setAttribute("transform",e.options.transform),s=new XMLSerializer().serializeToString(s));let y=new Image;y.crossOrigin="Anonymous",y.onload=()=>{let M=Math.min(y.width,y.height),f=M>0?Math.max(1,50/M):1,b=e.options?.pixelRatio??Math.max(1,Math.round(window.devicePixelRatio||1)),S=f*b,E=d?me(d)*S:0,_=Math.round(y.width*S),m=Math.round(y.height*S),p=document.createElement("canvas");p.width=_+E*2,p.height=m+E*2;let g=p.getContext("2d");g.imageSmoothingEnabled=true,g.drawImage(y,E,E,_,m);let x=g.getImageData(0,0,p.width,p.height);return u(d?K(x,d):x,S)},y.onerror=M=>console.error(`[MapGL] Image "${e.id}" failed to load:`,M),y.src=s.trimStart().startsWith("<svg")?"data:image/svg+xml;charset=utf-8,"+encodeURIComponent(s):s;}else {if(!d)return u(h);let{width:y,height:M}=h,f=me(d),b=document.createElement("canvas");b.width=y+f*2,b.height=M+f*2;let S=b.getContext("2d");S.imageSmoothingEnabled=true,"data"in h?S.putImageData(h,f,f):S.drawImage(h,f,f,y,M);let E=S.getImageData(0,0,b.width,b.height);return u(K(E,d))}});},l=(s,u=2)=>{let d=pe[s.type],v=d.size*u;return {width:v,height:v,data:new Uint8Array(v*v*4),onAdd:function(){let h=document.createElement("canvas");h.width=h.height=v,this.ctx=h.getContext("2d",{willReadFrequently:true}),this.ctx.scale(u,u);},render:function(){return this.ctx.fillStyle=s.background||"transparent",this.ctx.fillRect(0,0,d.size,d.size),this.ctx.strokeStyle=this.ctx.fillStyle=s.color||"black",this.ctx.lineWidth=s.lineWidth||1,this.ctx.stroke(new Path2D(d.path)),d.fill&&this.ctx.fill(new Path2D(d.path)),this.data=this.ctx.getImageData(0,0,this.width,this.height).data,true}}};return null};var hn=(e,t,n)=>e.map((o,r)=>(1-n)*e[r]+n*t[r]),yn=(e,t,n)=>{let o=e.map((a,i)=>e[i]*t[i]).reduce((a,i)=>a+i),r=Math.acos(o);return e.map((a,i)=>Math.sin((1-n)*r)/Math.sin(r)*e[i]+Math.sin(n*r)/Math.sin(r)*t[i])},vn={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},Mn=e=>{let[t]=a(),n=.1,o=false,[r,a$1]=createSignal(false);["mousedown","touchstart","wheel"].forEach(h=>t.map.on(h,y=>!y.rotate&&a$1(true))),["moveend","mouseup","touchend"].forEach(h=>t.map.on(h,y=>!y.rotate&&a$1(false)));let i=async([h,y,M],f)=>{let b=t.map.getFreeCameraOptions();b.position=t.mapLib.MercatorCoordinate.fromLngLat([h,y],M),b.lookAtPoint(f),t.map.setFreeCameraOptions(b);},c=()=>{e.translate&&window.requestAnimationFrame(c);let h=[e.translate.start,e.translate.end,e.translate.easing?vn[e.translate.easing](n):n],y=e.translate.type==="line"?hn(...h):yn(...h);i(y,e.translate.target),!e.translate.loop&&(n>1||n<0)&&(o=!o),n=o?n-.001:n+.001;};createEffect(()=>{e.translate&&window.requestAnimationFrame(c);});let l={duration:1e3,easing:h=>h},s=()=>{if(r())return;let{secPerRev:h=120,maxSpinZoom:y=5,slowSpinZoom:M=3}=e.rotateGlobe,f=t.map.getZoom();if(f>y)return;let b=360/h;f>M&&(b*=(y-f)/(y-M));let S=t.map.getCenter();S.lng=e.reverse?S.lng+b:S.lng-b,t.map.easeTo({center:S,...l},{rotate:true});},u=()=>{if(!e.rotateViewport||r()){t.map.stop();return}let h=e.rotateViewport,y=h?.secPerRev||60,M=e.reverse?t.map.getBearing()+360/y:t.map.getBearing()-360/y,f=h?.pitch||60,b=h?.around;t.map.easeTo({bearing:M,pitch:f,around:b,...l},{rotate:true});},d=()=>e.rotateGlobe?s():u();t.map.on("moveend",d).on("dragend",d);let v;return createEffect(()=>{e.rotateGlobe!=null&&(e.rotateGlobe?(v=t.map.getCenter(),s()):e.resetWhenStopped?t.map.stop().easeTo({center:v}):t.map.stop());}),createEffect(()=>{e.rotateViewport!=null&&(e.rotateViewport?u():e.resetWhenStopped?t.map.stop().resetNorthPitch():t.map.stop());}),onCleanup(()=>t.map.off("moveend",d).off("dragend",d)),e.children};var wn=e=>{let[t]=a();return createEffect(()=>t.map.setLight(e.style||{})),onCleanup(()=>t.map?.setLight(null)),null};var N={};N.onSetup=function(e){let t={};return t.count=e.count||0,t};N.onClick=function(e,t){let n=this.newFeature({type:"Feature",properties:{count:e.count},geometry:{type:"Point",coordinates:[t.lngLat.lng,t.lngLat.lat]}});this.addFeature(n);};N.onKeyUp=function(e,t){if(t.keyCode===27)return this.changeMode("simple_select")};N.toDisplayFeatures=function(e,t,n){n(t);};var Ve=N;var Ln=6371.0088,Cn=1.609344,Ue=6378137;function $(e){return e*Math.PI/180}function je(e){return e*180/Math.PI}function Sn(e,t){let n=$(t[1]-e[1]),o=$(t[0]-e[0]),r=$(e[1]),a=$(t[1]),i=Math.sin(n/2)**2+Math.cos(r)*Math.cos(a)*Math.sin(o/2)**2;return Ln*2*Math.asin(Math.sqrt(i))}function q(e,t="kilometers"){let n=0;for(let o=1;o<e.length;o++)n+=Sn(e[o-1],e[o]);return t==="miles"?n/Cn:n}function Ze(e,t){let n=$(e[1]),o=$(e[0]),r=$(t[1]),a=$(t[0]-e[0]),i=Math.cos(r)*Math.cos(a),c=Math.cos(r)*Math.sin(a),l=Math.atan2(Math.sin(n)+Math.sin(r),Math.sqrt((Math.cos(n)+i)**2+c**2)),s=o+Math.atan2(c,Math.cos(n)+i);return [je(s),je(l)]}function Pn(e){let t=e.length;if(t<=2)return 0;let n=0;for(let o=0;o<t;o++){let r,a,i;o===t-2?(r=t-2,a=t-1,i=0):o===t-1?(r=t-1,a=0,i=1):(r=o,a=o+1,i=o+2),n+=($(e[i][0])-$(e[r][0]))*Math.sin($(e[a][1]));}return n*Ue*Ue/2}function Ne(e){return e.reduce((t,n,o)=>{let r=Math.abs(Pn(n));return o===0?t+r:t-r},0)}function qe(e){let t=e[0],n=0,o=0;for(let[l,s]of t)n+=l,o+=s;n/=t.length,o/=t.length;let r=0,a=0,i=0;for(let l=0;l<t.length-1;l++){let s=t[l][0]-n,u=t[l][1]-o,d=t[l+1][0]-n,v=t[l+1][1]-o,h=s*v-d*u;r+=(s+d)*h,a+=(u+v)*h,i+=h;}if(i===0)return [n,o];let c=1/(3*i);return [n+r*c,o+a*c]}var Ge=e=>new Intl.NumberFormat(void 0,{maximumFractionDigits:5}).format(e[0])+"\xB0 "+new Intl.NumberFormat(void 0,{maximumFractionDigits:5}).format(e[1])+"\xB0",A=(e,t)=>{let n=q(e,window.navigator.language==="en-US"?"miles":"kilometers");return {type:"Feature",properties:{type:"measure",value:window.navigator.language==="en-US"?new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:n<=1?"foot":"mile"}).format(n<=1?n*5280:n):new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:n<=1?"meter":"kilometer"}).format(n<=1?n*1e3:n),...t},geometry:{type:"Point",coordinates:Ze(e[0],e[1])}}},J=(e,t)=>{let n=Ne(e);return {type:"Feature",properties:{type:"measure",value:window.navigator.language==="en-US"?new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:n<=10.764?"foot":"mile"}).format(n<=10.764?n*10.764:n*1.0000003861)+"\xB2":new Intl.NumberFormat(void 0,{style:"unit",maximumFractionDigits:2,unit:n<=1e6?"meter":"kilometer"}).format(n<=1e6?n:n/1e6)+"\xB2",...t},geometry:{type:"Point",coordinates:qe(e)}}};var Be=e=>{let t=e.modes.draw_line_string;return {...t,onSetup:function(){let n=t.onSetup.call(this),o=this.newFeature({type:"Feature",properties:{type:"measure",value:"TTT"},geometry:{type:"Point",coordinates:[]}});return {...n,measure:o}},onMouseMove:function(n,o){if(t.onMouseMove.call(this,n,o),n.line.coordinates.length>=2){let r=A(n.line.coordinates);n.measure.properties.value=r.properties.value,n.measure.updateCoordinate("",r.geometry.coordinates[0],r.geometry.coordinates[1]);}},toDisplayFeatures:function(n,o,r){t.toDisplayFeatures.call(this,n,o,r),this.drawConfig.userProperties.showLength&&r(n.measure.toGeoJSON());}}};var Ye=e=>{let t=e.modes.draw_point;return {...t,onSetup:function(){let n=t.onSetup.call(this);return n.point.properties={...n.point.properties,type:"measure",anchor:"bottom"},n},onMouseMove:function(n,{lngLat:o}){n.point.properties.value=Ge([o.lng,o.lat]),n.point.updateCoordinate("",o.lng,o.lat);},toDisplayFeatures:function(n,o,r){let a=o.properties.id===n.point.id;return o.properties.active=a?"":"false",r(o)}}};var Xe=e=>{let t=e.modes.draw_polygon;return {...t,toDisplayFeatures:function(n,o,r){let a=i=>{if(r(i),this.drawConfig.userProperties.showLength){let c=Array.isArray(i.geometry.coordinates[0][0])?i.geometry.coordinates[0]:i.geometry.coordinates;c.forEach((l,s)=>{!Array.isArray(l)||s==0||r(A([c[s-1],l]));});}this.drawConfig.userProperties.showArea&&i.geometry.coordinates[0].length>=3&&r(J([i.geometry.coordinates[0]]));};t.toDisplayFeatures.call(this,n,o,a);}}};function En(e,t,n,o){return {type:"Feature",properties:{meta:"vertex",parent:e,coord_path:n,active:o?"true":"false"},geometry:{type:"Point",coordinates:t}}}function kn(e,t,n,o=64){let r=[],a=t/(111.32*Math.cos(e[1]*Math.PI/180)),i=t/110.574;for(let c=0;c<o;c+=1){let l=c/o*(2*Math.PI),s=a*Math.cos(l),u=i*Math.sin(l);r.push([e[0]+s,e[1]+u]);}return r.push(r[0]),{type:"Feature",geometry:{type:"Polygon",coordinates:[r]},properties:{parent:n,active:"true"}}}var _n={enable: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);}},Tn=e=>({...e.modes.draw_line_string,clickAnywhere:function(t,n){return t.currentVertexPosition===1?(t.line.addCoordinate(0,n.lngLat.lng,n.lngLat.lat),this.changeMode("simple_select",{featureIds:[t.line.id]})):(this.updateUIClasses({mouse:"add"}),t.line.updateCoordinate(t.currentVertexPosition,n.lngLat.lng,n.lngLat.lat),t.direction==="forward"?(t.currentVertexPosition+=1,t.line.updateCoordinate(t.currentVertexPosition,n.lngLat.lng,n.lngLat.lat)):t.line.addCoordinate(0,n.lngLat.lng,n.lngLat.lat),null)},onStop:function(t){if(_n.enable(this),this.activateUIButton(),this.getFeature(t.line.id)!==void 0)if(t.line.removeCoordinate("0"),t.line.isValid()){let n=t.line.toGeoJSON(),o=(q(n.geometry.coordinates)*1e3).toFixed(1),r=n.geometry.coordinates[0];this.deleteFeature([t.line.id],{silent:true});let a=this.newFeature({type:"Feature",properties:{radius:o},geometry:{type:"Point",coordinates:r}});this.addFeature(a),this.map.fire("draw.create",{features:[a.toGeoJSON()]}),this.changeMode("simple_select",{featureIds:[a.id]});}else this.deleteFeature([t.line.id],{silent:true}),this.changeMode("simple_select",{},{silent:true});},toDisplayFeatures:function(t,n,o){let r=n.properties.id===t.line.id;return n.properties.active=r?"true":"false",r?(n.geometry.coordinates.length<2||(n.properties.meta="feature",o(En(t.line.id,n.geometry.coordinates[t.direction==="forward"?n.geometry.coordinates.length-2:1],`${t.direction==="forward"?n.geometry.coordinates.length-2:1}`,false)),o(n),o(A(n.geometry.coordinates,{parent:t.line.id})),o(kn(n.geometry.coordinates[0],q(n.geometry.coordinates),t.line.id))),null):o(n)}}),We=Tn;var $n=e=>({...e.modes.draw_line_string,onSetup:function(t){let n=e.modes.draw_line_string.onSetup.call(this,t),o=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[]]}});return this.addFeature(o),{...n,...t,rectangle:o}},onTap:function(t,n){t.startPoint&&this.onMouseMove(t,n),this.onClick(t,n);},onClick:function(t,n){t.startPoint&&t.startPoint[0]!==n.lngLat.lng&&t.startPoint[1]!==n.lngLat.lat?(this.updateUIClasses({mouse:"pointer"}),t.endPoint=[n.lngLat.lng,n.lngLat.lat],this.changeMode("simple_select",{featuresId:t.rectangle.id})):t.startPoint=[n.lngLat.lng,n.lngLat.lat];},onMouseMove:function(t,n){t.startPoint&&(t.rectangle.updateCoordinate("0.0",t.startPoint[0],t.startPoint[1]),t.rectangle.updateCoordinate("0.1",n.lngLat.lng,t.startPoint[1]),t.rectangle.updateCoordinate("0.2",n.lngLat.lng,n.lngLat.lat),t.rectangle.updateCoordinate("0.3",t.startPoint[0],n.lngLat.lat),t.rectangle.updateCoordinate("0.4",t.startPoint[0],t.startPoint[1]));},onKeyUp:function(t,n){if(n.keyCode===27)return this.changeMode("simple_select")},onStop:function(t){e.modes.draw_line_string.onStop.call(this,t),this.getFeature(t.rectangle.id)!==void 0&&(t.rectangle.removeCoordinate("0.4"),t.rectangle.isValid()?this.map.fire("draw.create",{features:[t.rectangle.toGeoJSON()]}):(this.deleteFeature([t.rectangle.id],{silent:true}),this.changeMode("simple_select",{},{silent:true})));},toDisplayFeatures:function(t,n,o){let r=n.properties.id===t.rectangle.id;if(n.properties.active=r?"true":"false",!r)return o(n);if(t.startPoint)return o(n),this.drawConfig.userProperties.showLength&&(o(A([n.geometry.coordinates[0][0],n.geometry.coordinates[0][1]],{parent:t.rectangle.id,anchor:"bottom"})),o(A([n.geometry.coordinates[0][1],n.geometry.coordinates[0][2]],{parent:t.rectangle.id,anchor:"left"}))),this.drawConfig.userProperties.showArea&&o(J(n.geometry.coordinates,{parent:t.rectangle.id})),null},onTrash:function(t){this.deleteFeature([t.rectangle.id],{silent:true}),this.changeMode("simple_select");}}),He=$n;var Qe={enable: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);},disable(e){setTimeout(()=>{!e.map||!e.map.doubleClickZoom||e.map.doubleClickZoom.disable();},0);}},In={onSetup:function(e){let t=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[]]}});return this.addFeature(t),this.clearSelectedFeatures(),Qe.disable(this),this.updateUIClasses({mouse:"add"}),this.setActionableState({trash:true}),{rectangle:t,currentVertexPosition:0}},onTap:function(e,t){this.onClick(e,t);},onClick:function(e,t){if(e.currentVertexPosition===2){let n=this.calculatepXY3(e,t,false);return n&&e.rectangle.updateCoordinate(`0.${e.currentVertexPosition+1}`,n[0],n[1]),this.updateUIClasses({mouse:"pointer"}),this.changeMode("simple_select",{featuresId:e.rectangle.id})}else e.rectangle.updateCoordinate(`0.${e.currentVertexPosition}`,t.lngLat.lng,t.lngLat.lat),e.currentVertexPosition++,e.rectangle.updateCoordinate(`0.${e.currentVertexPosition}`,t.lngLat.lng,t.lngLat.lat);},onMouseMove:function(e,t){if(e.rectangle.updateCoordinate("0."+e.currentVertexPosition,t.lngLat.lng,t.lngLat.lat),e.currentVertexPosition&&e.currentVertexPosition>0&&this.calculateOrientedAnglePolygon(e),e.currentVertexPosition===2){let n=this.calculatepXY3(e,t,true);n&&e.rectangle.updateCoordinate("0."+(e.currentVertexPosition+1),n[0],n[1]);}},deegrees2meters(e){let t=e[0]*2003750834e-2/180,n=Math.log(Math.tan((90+e[1])*Math.PI/360))/(Math.PI/180);return n=n*2003750834e-2/180,[t,n]},meters2degress(e){let t=e[0]*180/2003750834e-2,n=Math.atan(Math.exp(e[1]*Math.PI/2003750834e-2))*360/Math.PI-90;return [t,n]},calculateOrientedAnglePolygon:function(e){let t=e.rectangle.getCoordinate("0.0"),n=this.deegrees2meters(t),o=e.rectangle.getCoordinate("0.1"),r=this.deegrees2meters(o),i=-1*(Math.atan2(r[1]-n[1],r[0]-n[0])*180/Math.PI+90),c=i<0?i+360:i;e.angle=parseFloat(c.toFixed(2));},calculatepXY3:function(e,t,n){let o=e.rectangle.getCoordinate("0.0"),r=this.deegrees2meters(o),a=e.rectangle.getCoordinate("0.1"),i=this.deegrees2meters(a),c=this.deegrees2meters([t.lngLat.lng,t.lngLat.lat]),l=this.deegrees2meters([t.lngLat.lng,t.lngLat.lat]);if(r[0]===i[0])c=[l[0],i[1]];else if(r[1]===i[1])c=[i[0],l[1]];else {let y=-1/((i[1]-r[1])/(i[0]-r[0]));Math.abs(y)<1?c[1]=y*(l[0]-i[0])+i[1]:c[0]=i[0]+(c[1]-i[1])/y;}let s=[i[0]-r[0],i[1]-r[1]],u=[c[0]-s[0],c[1]-s[1]],d=this.meters2degress(c),v=this.meters2degress(u);return e.rectangle.updateCoordinate("0.2",d[0],d[1]),e.rectangle.updateCoordinate("0.3",v[0],v[1]),v},onKeyUp:function(e,t){if(t.keyCode===27)return this.changeMode("simple_select")},onStop:function(e){Qe.enable(this),this.updateUIClasses({mouse:"none"}),this.activateUIButton(),this.getFeature(e.rectangle.id)!==void 0&&(e.rectangle.removeCoordinate("0.4"),e.rectangle.isValid()?this.map.fire("draw.create",{features:[e.rectangle.toGeoJSON()]}):(this.deleteFeature([e.rectangle.id],{silent:true}),this.changeMode("simple_select",{},{silent:true})));},toDisplayFeatures:function(e,t,n){let o=t.properties.id===e.rectangle.id;if(t.properties.active=o?"true":"false",t.properties.angle=e.angle,t.angle=e.angle,!o)return n(t);let r=t.geometry.coordinates[0].length;if(r<3){let a=t.geometry.coordinates[0][0],i={type:"Feature",properties:t.properties,angle:e.angle,geometry:{coordinates:t.geometry.coordinates[0][0],type:"Point"}};a&&n(i);return}if(r>=3&&r<=4){let a=[[t.geometry.coordinates[0][0][0],t.geometry.coordinates[0][0][1]],[t.geometry.coordinates[0][1][0],t.geometry.coordinates[0][1][1]]];if(n({type:"Feature",properties:t.properties,angle:e.angle,geometry:{coordinates:a,type:"LineString"}}),r===3)return}return n(t)},onTrash:function(e){this.deleteFeature([e.rectangle.id],{silent:true}),this.changeMode("simple_select");}},Ke=In;var Je=[{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,-0.5],[0,0]],"text-size":12,"text-allow-overlap":true,"text-ignore-placement":true},paint:{"text-halo-color":"rgba(255,255,255,0.75)","text-halo-width":2,"text-halo-blur":1,"text-color":"#000"}}];var Dn=e=>{let[t]=a();t.isMapLibre&&e.lib.constants?.classes&&Object.assign(e.lib.constants.classes,{CANVAS:"maplibregl-canvas",CONTROL_BASE:"maplibregl-ctrl",CONTROL_PREFIX:"maplibregl-ctrl-",CONTROL_GROUP:"maplibregl-ctrl-group",ATTRIBUTION:"maplibregl-ctrl-attrib"});let n=new e.lib({styles:[...e.lib.lib.theme,...Je],modes:{...e.lib.modes,draw_point:Ye(e.lib),draw_line_string:Be(e.lib),draw_polygon:Xe(e.lib),multi_point:Ve,radius:We(e.lib),rectangle:He(e.lib),rectangle_assisted:Ke},userProperties:{showLength:e.showLength||false,showArea:e.showArea||false},...e.options});t.map.addControl(n,e.position||"top-right"),e.getInstance&&e.getInstance(n);let o={};return Me.forEach(r=>{if(e[r]){let a=`draw.${r.slice(2).toLowerCase()}`,i=c=>e[r](c);o[a]=i,t.map.on(a,i);}}),onCleanup(()=>{Object.keys(o).forEach(r=>t.map.off(r,o[r])),t.map?.removeControl(n);}),null};var On=e=>{let t;return Q(()=>(t||(t=new e.overlay(e.props||{})),t)),createEffect(()=>t?.setProps(e.props||{})),null};
9
9
 
10
- export { qt as Atmosphere, Mn as Camera, tn as Control, On as DeckOverlay, Dn as Draw, pn as Image, Tt as Layer, jt as Layer3D, wn as Light, rn as Marker, ln as Popup, xt as Source, Xt as Terrain, ft as default, ae as disableRasterFade, Oe as patternList, B as settleAfterIdle, Re as symbolList, K as toSDF, Ut as useScene, U as useSourceId, Y as waitForIdleAndSettle };
10
+ export { qt as Atmosphere, Mn as Camera, tn as Control, On as DeckOverlay, Dn as Draw, pn as Image, $t as Layer, jt as Layer3D, wn as Light, rn as Marker, ln as Popup, xt as Source, Xt as Terrain, ft as default, ae as disableRasterFade, Oe as patternList, B as settleAfterIdle, ze as symbolList, K as toSDF, Ut as useScene, U as useSourceId, Y as waitForIdleAndSettle };
@@ -305,7 +305,7 @@ var MapGL = (props) => {
305
305
  const style = darkMode() && dark ? dark : light;
306
306
  return typeof style === "string" || style instanceof String ? style?.split(":").reduce((p, c) => p && p[c], vectorStyleList)?.replace(
307
307
  "{apikey}",
308
- //@ts-ignore
308
+ //@ts-expect-error -- import.meta.env is Vite-only
309
309
  props.apikey || import.meta.env?.VITE_VECTOR_API_KEY
310
310
  ) || style : style;
311
311
  };
@@ -325,7 +325,7 @@ var MapGL = (props) => {
325
325
  isMapLibre = typeof mapLib.Map?.prototype?.setConfigProperty !== "function";
326
326
  debug(`Map (v${mapLib.version}) loading...`);
327
327
  map = new mapLib.Map({
328
- accessToken: props.options?.accessToken || //@ts-ignore
328
+ accessToken: props.options?.accessToken || //@ts-expect-error -- import.meta.env is Vite-only
329
329
  import.meta.env?.VITE_MAPBOX_ACCESS_TOKEN,
330
330
  interactive: props.options?.interactive || !!props.onViewportChange,
331
331
  ...props.options,
@@ -655,7 +655,7 @@ var Source = (props) => {
655
655
  tiles: [
656
656
  s.replace(
657
657
  "{apikey}",
658
- //@ts-ignore
658
+ //@ts-expect-error -- import.meta.env is Vite-only
659
659
  anySource().apikey || import.meta.env?.VITE_RASTER_API_KEY
660
660
  ).replace("{r}", window.devicePixelRatio > 1 ? "@2x" : "")
661
661
  ],
@@ -862,9 +862,9 @@ var resolveConstant = (key, value, constants, debug) => {
862
862
  var updateStyle = (oldStyle, constants = {}, debug = () => {
863
863
  }) => {
864
864
  if (!oldStyle) return;
865
- let layout = {};
866
- let paint = {};
867
- let style = {};
865
+ const layout = {};
866
+ const paint = {};
867
+ const style = {};
868
868
  const resolvePaint = (key, value) => resolveColor2(key, resolveConstant(key, value, constants, debug));
869
869
  Object.entries(oldStyle).forEach(([key, value]) => {
870
870
  if (baseStyle.includes(key)) style[key] = value;
@@ -960,7 +960,7 @@ var Layer = (props) => {
960
960
  });
961
961
  let isFirstStyleUpdate = true;
962
962
  createEffect3((prev) => {
963
- ctx.themeVersion;
963
+ void ctx.themeVersion;
964
964
  const style = updateStyle(flatStyle(props), ctx.constants, debug);
965
965
  if (isFirstStyleUpdate) {
966
966
  isFirstStyleUpdate = false;
@@ -1161,8 +1161,6 @@ var Layer3D = (props) => {
1161
1161
  // ? BABYLON.Matrix.FromArray(matrix)
1162
1162
  worldMatrix.multiply(BABYLON.Matrix.FromArray(matrix))
1163
1163
  );
1164
- const pitch = this.map.getPitch() * (Math.PI / 180);
1165
- const bearing = this.map.getBearing() * (Math.PI / 180);
1166
1164
  this.scene.render(false);
1167
1165
  } else {
1168
1166
  const rotationX = new THREE.Matrix4().makeRotationAxis(
@@ -1397,7 +1395,7 @@ function edt1d(grid, offset, stride, length2, f, v, z) {
1397
1395
  z[0] = -INF;
1398
1396
  z[1] = INF;
1399
1397
  f[0] = grid[offset];
1400
- for (let q = 1, k = 0, s = 0; q < length2; q++) {
1398
+ for (let q = 1, k = 0, s; q < length2; q++) {
1401
1399
  f[q] = grid[offset + q * stride];
1402
1400
  const q2 = q * q;
1403
1401
  do {
@@ -1785,12 +1783,12 @@ import { onCleanup as onCleanup13 } from "solid-js";
1785
1783
  // src/components/Draw/modes/multi_point.ts
1786
1784
  var MultiPointMode = {};
1787
1785
  MultiPointMode.onSetup = function(opts) {
1788
- var state = {};
1786
+ const state = {};
1789
1787
  state.count = opts.count || 0;
1790
1788
  return state;
1791
1789
  };
1792
1790
  MultiPointMode.onClick = function(state, e) {
1793
- var point = this.newFeature({
1791
+ const point = this.newFeature({
1794
1792
  type: "Feature",
1795
1793
  properties: {
1796
1794
  count: state.count
@@ -2080,9 +2078,9 @@ function createGeoJSONCircle(center, radius, parentId, points = 64) {
2080
2078
  const distanceX = radius / (111.32 * Math.cos(center[1] * Math.PI / 180));
2081
2079
  const distanceY = radius / 110.574;
2082
2080
  for (let i = 0; i < points; i += 1) {
2083
- let theta = i / points * (2 * Math.PI);
2084
- let x = distanceX * Math.cos(theta);
2085
- let y = distanceY * Math.sin(theta);
2081
+ const theta = i / points * (2 * Math.PI);
2082
+ const x = distanceX * Math.cos(theta);
2083
+ const y = distanceY * Math.sin(theta);
2086
2084
  ret.push([center[0] + x, center[1] + y]);
2087
2085
  }
2088
2086
  ret.push(ret[0]);
@@ -2313,7 +2311,7 @@ var doubleClickZoom2 = {
2313
2311
  }
2314
2312
  };
2315
2313
  var RectangleAssistedMode = {
2316
- onSetup: function(opts) {
2314
+ onSetup: function(_opts) {
2317
2315
  const rectangle = this.newFeature({
2318
2316
  type: "Feature",
2319
2317
  properties: {},
@@ -2406,11 +2404,11 @@ var RectangleAssistedMode = {
2406
2404
  const pXY1 = state.rectangle.getCoordinate("0.1");
2407
2405
  const pXY1_3857 = this.deegrees2meters(pXY1);
2408
2406
  const angleStdGraus = Math.atan2(pXY1_3857[1] - pXY0_3857[1], pXY1_3857[0] - pXY0_3857[0]) * 180 / Math.PI;
2409
- let angleSudGraus = -1 * (angleStdGraus + 90);
2407
+ const angleSudGraus = -1 * (angleStdGraus + 90);
2410
2408
  const angle = angleSudGraus < 0 ? angleSudGraus + 360 : angleSudGraus;
2411
2409
  state.angle = parseFloat(angle.toFixed(2));
2412
2410
  },
2413
- calculatepXY3: function(state, e, tmp) {
2411
+ calculatepXY3: function(state, e, _tmp) {
2414
2412
  const pXY0 = state.rectangle.getCoordinate("0.0");
2415
2413
  const pXY0_3857 = this.deegrees2meters(pXY0);
2416
2414
  const pXY1 = state.rectangle.getCoordinate("0.1");
@@ -2810,7 +2808,6 @@ var Draw = (props) => {
2810
2808
  // src/components/DeckOverlay/index.tsx
2811
2809
  import { createEffect as createEffect13 } from "solid-js";
2812
2810
  var DeckOverlay = (props) => {
2813
- const [ctx] = useMapContext();
2814
2811
  let overlay;
2815
2812
  const control = () => {
2816
2813
  if (!overlay) overlay = new props.overlay(props.props || {});
@@ -13,8 +13,8 @@ declare class MockPopup {
13
13
  options: any;
14
14
  open: boolean;
15
15
  constructor(options?: any);
16
- on: vitest.Mock<() => this>;
17
- off: vitest.Mock<() => this>;
16
+ on: vitest.Mock<(..._args: any[]) => this>;
17
+ off: vitest.Mock<(..._args: any[]) => this>;
18
18
  addTo: vitest.Mock<() => this>;
19
19
  remove: vitest.Mock<() => this>;
20
20
  setHTML: vitest.Mock<() => this>;
@@ -29,8 +29,8 @@ declare class MockMarker {
29
29
  options: any;
30
30
  popup: MockPopup | null;
31
31
  constructor(options?: any);
32
- on: vitest.Mock<() => this>;
33
- off: vitest.Mock<() => this>;
32
+ on: vitest.Mock<(..._args: any[]) => this>;
33
+ off: vitest.Mock<(..._args: any[]) => this>;
34
34
  addTo: vitest.Mock<() => this>;
35
35
  remove: vitest.Mock<() => this>;
36
36
  setLngLat: vitest.Mock<() => this>;
@@ -3,6 +3,6 @@ import { vi } from 'vitest';
3
3
  import { createComponent } from 'solid-js/web';
4
4
  import { render } from '@solidjs/testing-library';
5
5
 
6
- var M=(s,e)=>e?`${s}:${e}`:s,b=class{};function L(s={}){let e=!!s.isMapLibre,a=new Map,f=new Map,g=new Map,p=new Set,u=new Set,h={layers:[],sources:{},fog:null,terrain:null,light:null},P=null,k=null,v=null,S=null,T=vi.fn((t,o,c)=>{let l=typeof o=="function"?o:c,y=typeof o=="function"?t:M(t,o);return a.has(y)||a.set(y,new Set),a.get(y).add(l),r}),x=vi.fn((t,o,c)=>{let l=typeof o=="function"?o:c,y=typeof o=="function"?t:M(t,o);return a.get(y)?.delete(l),r}),F=vi.fn((t,o)=>{if(!o)return Promise.resolve();let c=(...l)=>{x(t,c),o(...l);};return T(t,c),r}),O=vi.fn((t,o={},c)=>(a.get(M(t,c))?.forEach(l=>l(o)),r)),w=vi.fn((t,o)=>(f.set(t,{...o,setData:vi.fn(),setUrl:vi.fn(),setTiles:vi.fn(),updateImage:vi.fn()}),r)),I=vi.fn(t=>f.get(t)),R=vi.fn(t=>f.delete(t)),N=vi.fn(()=>true),_=vi.fn((t,o)=>(g.set(t.id,t),r)),U=vi.fn(t=>g.get(t)),D=vi.fn(t=>g.delete(t)),E=vi.fn(),B=vi.fn(),j=vi.fn(),z=vi.fn(),W=vi.fn(),$=vi.fn(),G=vi.fn(),Z=vi.fn(()=>h),H=vi.fn(t=>(h=typeof t=="string"?{...h,styleUrl:t}:{...h,...t},r)),V=vi.fn(()=>true),X=vi.fn(()=>true),q=vi.fn((t,o)=>(p.add(t),r)),J=vi.fn(t=>(p.delete(t),r)),K=vi.fn(t=>p.has(t)),Q=vi.fn(t=>u.has(t)),Y=vi.fn((t,o,c)=>{u.add(t);}),nn=vi.fn(t=>u.delete(t)),tn=vi.fn(),en=vi.fn(),on=vi.fn((t,o)=>{Promise.resolve().then(()=>o(null,{width:1,height:1,data:new Uint8Array(4)}));}),sn=vi.fn(()=>r),rn=vi.fn(()=>r),an=vi.fn(()=>r),cn=vi.fn(()=>r),fn=vi.fn(()=>r),pn=vi.fn(()=>r),ln=vi.fn(),r=Object.assign(new b,{debug:false,debugEvents:false,sourceIdList:[],layerIdList:[],isMapLibre:e,on:T,off:x,once:F,fire:O,addSource:w,getSource:I,removeSource:R,isSourceLoaded:N,addLayer:_,getLayer:U,removeLayer:D,moveLayer:E,setLayoutProperty:B,setPaintProperty:j,setLayerZoomRange:z,setFilter:W,setFeatureState:$,removeFeatureState:G,getStyle:Z,setStyle:H,isStyleLoaded:V,areTilesLoaded:X,addControl:q,removeControl:J,hasControl:K,hasImage:Q,addImage:Y,removeImage:nn,updateImage:tn,loadImage:on,triggerRepaint:en,stop:sn,flyTo:rn,easeTo:an,jumpTo:cn,resetNorthPitch:fn,resize:pn,remove:ln,getCanvas:vi.fn(()=>({style:{}})),getCenter:vi.fn(()=>({lng:0,lat:0,toArray:()=>[0,0]})),getZoom:vi.fn(()=>0),getBearing:vi.fn(()=>0),getPitch:vi.fn(()=>0),getBounds:vi.fn(()=>({getNorthEast:()=>({lng:0,lat:0}),getSouthWest:()=>({lng:0,lat:0})})),cameraForBounds:vi.fn(()=>({})),setProjection:vi.fn(),getFreeCameraOptions:vi.fn(()=>({position:null,lookAtPoint:vi.fn()})),setFreeCameraOptions:vi.fn(),setLight:vi.fn(t=>{v=t;}),getLight:vi.fn(()=>v),setTerrain:vi.fn(t=>{S=t;}),getTerrain:vi.fn(()=>S),...e?{}:{setConfigProperty:vi.fn(),getConfigProperty:vi.fn(),setFog:vi.fn(t=>{k=t;}),getFog:vi.fn(()=>k)},...e?{setSky:vi.fn(t=>{P=t;}),getSky:vi.fn(()=>P)}:{}});return r}var m=class s{static instances=[];options;open=false;constructor(e){this.options=e,s.instances.push(this);}on=vi.fn(()=>this);off=vi.fn(()=>this);addTo=vi.fn(()=>(this.open=true,this));remove=vi.fn(()=>(this.open=false,this));setHTML=vi.fn(()=>this);setDOMContent=vi.fn(()=>this);setLngLat=vi.fn(()=>this);trackPointer=vi.fn(()=>this);isOpen=vi.fn(()=>this.open);toggle=vi.fn(()=>(this.open=!this.open,this))},d=class s{static instances=[];options;popup=null;constructor(e){this.options=e,s.instances.push(this);}on=vi.fn(()=>this);off=vi.fn(()=>this);addTo=vi.fn(()=>this);remove=vi.fn(()=>this);setLngLat=vi.fn(()=>this);setDraggable=vi.fn(()=>this);setPopup=vi.fn(e=>(this.popup=e,this));getPopup=vi.fn(()=>this.popup);togglePopup=vi.fn(()=>(this.popup?.toggle(),this));getLngLat=vi.fn(()=>({lng:0,lat:0,toArray:()=>[0,0]}))},i=class s{static instances=[];options;constructor(e){this.options=e,s.instances.push(this);}};function C(s={}){let e=!!s.isMapLibre;m.instances=[],d.instances=[],i.instances=[];function a(g){let p=L({isMapLibre:e});return a.instances.push(p),Promise.resolve().then(()=>p.fire("load")),p}e||(a.prototype.setConfigProperty=()=>{}),a.instances=[];class f{x=0;y=0;z=0;static fromLngLat(p,u=0){return {x:0,y:0,z:u,meterInMercatorCoordinateUnits:()=>1}}meterInMercatorCoordinateUnits(){return 1}}return {Map:a,Popup:m,Marker:d,NavigationControl:i,ScaleControl:i,AttributionControl:i,GeolocateControl:i,FullscreenControl:i,LogoControl:i,TerrainControl:i,MercatorCoordinate:f,version:"mock"}}function gn(){function s(e){this.options=e,this.onAdd=vi.fn(()=>document.createElement("div")),this.onRemove=vi.fn();}return s.modes={},s.lib={theme:[]},s.constants={classes:{CANVAS:"mapboxgl-canvas",CONTROL_BASE:"mapboxgl-ctrl",CONTROL_PREFIX:"mapboxgl-ctrl-",CONTROL_GROUP:"mapboxgl-ctrl-group",ATTRIBUTION:"mapboxgl-ctrl-attrib"}},s}var un=()=>Promise.resolve().then(()=>Promise.resolve());function mn(s,e={}){let a=e.map||L({isMapLibre:e.isMapLibre}),f=C({isMapLibre:e.isMapLibre});return {...render(()=>createComponent(b$1,{map:a,mapLib:f,get isMapLibre(){return !!e.isMapLibre},get constants(){return e.constants},get children(){return s()}})),map:a,mapLib:f}}
6
+ var M=(o,e)=>e?`${o}:${e}`:o,b=class{};function L(o={}){let e=!!o.isMapLibre,a=new Map,f=new Map,g=new Map,p=new Set,y=new Set,h={layers:[],sources:{},fog:null,terrain:null,light:null},P=null,k=null,v=null,S=null,T=vi.fn((t,s,c)=>{let l=typeof s=="function"?s:c,u=typeof s=="function"?t:M(t,s);return a.has(u)||a.set(u,new Set),a.get(u).add(l),r}),x=vi.fn((t,s,c)=>{let l=typeof s=="function"?s:c,u=typeof s=="function"?t:M(t,s);return a.get(u)?.delete(l),r}),F=vi.fn((t,s)=>{if(!s)return Promise.resolve();let c=(...l)=>{x(t,c),s(...l);};return T(t,c),r}),O=vi.fn((t,s={},c)=>(a.get(M(t,c))?.forEach(l=>l(s)),r)),w=vi.fn((t,s)=>(f.set(t,{...s,setData:vi.fn(),setUrl:vi.fn(),setTiles:vi.fn(),updateImage:vi.fn()}),r)),I=vi.fn(t=>f.get(t)),_=vi.fn(t=>f.delete(t)),R=vi.fn(()=>true),N=vi.fn((t,s)=>(g.set(t.id,t),r)),U=vi.fn(t=>g.get(t)),D=vi.fn(t=>g.delete(t)),E=vi.fn(),B=vi.fn(),j=vi.fn(),z=vi.fn(),W=vi.fn(),$=vi.fn(),G=vi.fn(),Z=vi.fn(()=>h),H=vi.fn(t=>(h=typeof t=="string"?{...h,styleUrl:t}:{...h,...t},r)),V=vi.fn(()=>true),X=vi.fn(()=>true),q=vi.fn((t,s)=>(p.add(t),r)),J=vi.fn(t=>(p.delete(t),r)),K=vi.fn(t=>p.has(t)),Q=vi.fn(t=>y.has(t)),Y=vi.fn((t,s,c)=>{y.add(t);}),nn=vi.fn(t=>y.delete(t)),tn=vi.fn(),en=vi.fn(),sn=vi.fn((t,s)=>{Promise.resolve().then(()=>s(null,{width:1,height:1,data:new Uint8Array(4)}));}),on=vi.fn(()=>r),rn=vi.fn(()=>r),an=vi.fn(()=>r),cn=vi.fn(()=>r),fn=vi.fn(()=>r),pn=vi.fn(()=>r),ln=vi.fn(),r=Object.assign(new b,{debug:false,debugEvents:false,sourceIdList:[],layerIdList:[],isMapLibre:e,on:T,off:x,once:F,fire:O,addSource:w,getSource:I,removeSource:_,isSourceLoaded:R,addLayer:N,getLayer:U,removeLayer:D,moveLayer:E,setLayoutProperty:B,setPaintProperty:j,setLayerZoomRange:z,setFilter:W,setFeatureState:$,removeFeatureState:G,getStyle:Z,setStyle:H,isStyleLoaded:V,areTilesLoaded:X,addControl:q,removeControl:J,hasControl:K,hasImage:Q,addImage:Y,removeImage:nn,updateImage:tn,loadImage:sn,triggerRepaint:en,stop:on,flyTo:rn,easeTo:an,jumpTo:cn,resetNorthPitch:fn,resize:pn,remove:ln,getCanvas:vi.fn(()=>({style:{}})),getCenter:vi.fn(()=>({lng:0,lat:0,toArray:()=>[0,0]})),getZoom:vi.fn(()=>0),getBearing:vi.fn(()=>0),getPitch:vi.fn(()=>0),getBounds:vi.fn(()=>({getNorthEast:()=>({lng:0,lat:0}),getSouthWest:()=>({lng:0,lat:0})})),cameraForBounds:vi.fn(()=>({})),setProjection:vi.fn(),getFreeCameraOptions:vi.fn(()=>({position:null,lookAtPoint:vi.fn()})),setFreeCameraOptions:vi.fn(),setLight:vi.fn(t=>{v=t;}),getLight:vi.fn(()=>v),setTerrain:vi.fn(t=>{S=t;}),getTerrain:vi.fn(()=>S),...e?{}:{setConfigProperty:vi.fn(),getConfigProperty:vi.fn(),setFog:vi.fn(t=>{k=t;}),getFog:vi.fn(()=>k)},...e?{setSky:vi.fn(t=>{P=t;}),getSky:vi.fn(()=>P)}:{}});return r}var m=class o{static instances=[];options;open=false;constructor(e){this.options=e,o.instances.push(this);}on=vi.fn((...e)=>this);off=vi.fn((...e)=>this);addTo=vi.fn(()=>(this.open=true,this));remove=vi.fn(()=>(this.open=false,this));setHTML=vi.fn(()=>this);setDOMContent=vi.fn(()=>this);setLngLat=vi.fn(()=>this);trackPointer=vi.fn(()=>this);isOpen=vi.fn(()=>this.open);toggle=vi.fn(()=>(this.open=!this.open,this))},d=class o{static instances=[];options;popup=null;constructor(e){this.options=e,o.instances.push(this);}on=vi.fn((...e)=>this);off=vi.fn((...e)=>this);addTo=vi.fn(()=>this);remove=vi.fn(()=>this);setLngLat=vi.fn(()=>this);setDraggable=vi.fn(()=>this);setPopup=vi.fn(e=>(this.popup=e,this));getPopup=vi.fn(()=>this.popup);togglePopup=vi.fn(()=>(this.popup?.toggle(),this));getLngLat=vi.fn(()=>({lng:0,lat:0,toArray:()=>[0,0]}))},i=class o{static instances=[];options;constructor(e){this.options=e,o.instances.push(this);}};function C(o={}){let e=!!o.isMapLibre;m.instances=[],d.instances=[],i.instances=[];function a(g){let p=L({isMapLibre:e});return a.instances.push(p),Promise.resolve().then(()=>p.fire("load")),p}e||(a.prototype.setConfigProperty=()=>{}),a.instances=[];class f{x=0;y=0;z=0;static fromLngLat(p,y=0){return {x:0,y:0,z:y,meterInMercatorCoordinateUnits:()=>1}}meterInMercatorCoordinateUnits(){return 1}}return {Map:a,Popup:m,Marker:d,NavigationControl:i,ScaleControl:i,AttributionControl:i,GeolocateControl:i,FullscreenControl:i,LogoControl:i,TerrainControl:i,MercatorCoordinate:f,version:"mock"}}function gn(){function o(e){this.options=e,this.onAdd=vi.fn(()=>document.createElement("div")),this.onRemove=vi.fn();}return o.modes={},o.lib={theme:[]},o.constants={classes:{CANVAS:"mapboxgl-canvas",CONTROL_BASE:"mapboxgl-ctrl",CONTROL_PREFIX:"mapboxgl-ctrl-",CONTROL_GROUP:"mapboxgl-ctrl-group",ATTRIBUTION:"mapboxgl-ctrl-attrib"}},o}var yn=()=>Promise.resolve().then(()=>Promise.resolve());function mn(o,e={}){let a=e.map||L({isMapLibre:e.isMapLibre}),f=C({isMapLibre:e.isMapLibre});return {...render(()=>createComponent(b$1,{map:a,mapLib:f,get isMapLibre(){return !!e.isMapLibre},get constants(){return e.constants},get children(){return o()}})),map:a,mapLib:f}}
7
7
 
8
- export { gn as createMockDrawLib, L as createMockMap, C as createMockMapLib, mn as renderWithMap, un as tick };
8
+ export { gn as createMockDrawLib, L as createMockMap, C as createMockMapLib, mn as renderWithMap, yn as tick };
@@ -196,8 +196,8 @@ var MockPopup = class _MockPopup {
196
196
  this.options = options;
197
197
  _MockPopup.instances.push(this);
198
198
  }
199
- on = vi.fn(() => this);
200
- off = vi.fn(() => this);
199
+ on = vi.fn((..._args) => this);
200
+ off = vi.fn((..._args) => this);
201
201
  addTo = vi.fn(() => {
202
202
  this.open = true;
203
203
  return this;
@@ -224,8 +224,8 @@ var MockMarker = class _MockMarker {
224
224
  this.options = options;
225
225
  _MockMarker.instances.push(this);
226
226
  }
227
- on = vi.fn(() => this);
228
- off = vi.fn(() => this);
227
+ on = vi.fn((..._args) => this);
228
+ off = vi.fn((..._args) => this);
229
229
  addTo = vi.fn(() => this);
230
230
  remove = vi.fn(() => this);
231
231
  setLngLat = vi.fn(() => this);
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.3.0",
2
+ "version": "2.3.1",
3
3
  "name": "solid-map-gl",
4
4
  "description": "SolidJS Component Library for Mapbox GL JS & MapLibre GL JS",
5
5
  "info": "SolidJS Component Library for Mapbox GL JS & MapLibre GL JS. Mapbox GL JS and MapLibre GL JS are JavaScript libraries that render interactive maps from vector tiles and map styles using WebGL. This project is intended to be as close as possible to the Mapbox GL JS API.",
@@ -57,7 +57,8 @@
57
57
  "pub": "tsup && npm version patch && npm publish",
58
58
  "test": "vitest",
59
59
  "coverage": "vitest run --coverage",
60
- "docs:api": "typedoc"
60
+ "docs:api": "typedoc",
61
+ "lint": "eslint ."
61
62
  },
62
63
  "repository": {
63
64
  "type": "git",
@@ -68,9 +69,13 @@
68
69
  "not ie 11"
69
70
  ],
70
71
  "devDependencies": {
72
+ "@eslint/js": "^10.0.1",
71
73
  "@solidjs/testing-library": "^0.8.10",
72
74
  "@testing-library/jest-dom": "^7.0.1",
73
75
  "@vitest/coverage-v8": "^5.0.3",
76
+ "eslint": "^10.12.0",
77
+ "eslint-plugin-solid": "^0.18.0",
78
+ "globals": "^17.13.0",
74
79
  "jsdom": "^30.1.1",
75
80
  "jsdom-worker": "^0.3.0",
76
81
  "mapbox-gl": "^3.32.0",
@@ -80,6 +85,7 @@
80
85
  "typedoc": "^0.28.20",
81
86
  "typedoc-plugin-markdown": "^4.13.1",
82
87
  "typescript": "^6.0.3",
88
+ "typescript-eslint": "^8.71.0",
83
89
  "vite": "^8.3.2",
84
90
  "vite-plugin-solid": "^2.11.14",
85
91
  "vitest": "^5.0.3"