UNPKG

@indoorequal/vue-maplibre-gl

Version:
8 lines (7 loc) 25.8 kB
/*! * @indoorequal/vue-maplibre-gl v8.4.0 * (c) 2025 François de Metz <francois@2metz.fr> * @license MIT */ (function(c,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("maplibre-gl")):typeof define=="function"&&define.amd?define(["exports","vue","maplibre-gl"],t):(c=typeof globalThis<"u"?globalThis:c||self,t(c.VueMaplibreGl={},c.Vue,c.maplibregl))})(this,function(c,t,y){"use strict";var Be=Object.defineProperty;var ze=(c,t,y)=>t in c?Be(c,t,{enumerable:!0,configurable:!0,writable:!0,value:y}):c[t]=y;var k=(c,t,y)=>ze(c,typeof t!="symbol"?t+"":t,y);const q=Symbol("map"),h=q,B=Symbol("isLoaded"),F=Symbol("isInitialized"),T=F,S=Symbol("componentId"),M=Symbol("sourceId"),w=Symbol("sourceLayerRegistry"),x=Symbol("marker"),be=["error","load","idle","remove","render","resize","webglcontextlost","webglcontextrestored","dataloading","data","tiledataloading","sourcedataloading","styledataloading","sourcedata","styledata","styleimagemissing","dataabort","sourcedataabort","boxzoomcancel","boxzoomstart","boxzoomend","touchcancel","touchmove","touchend","touchstart","click","contextmenu","dblclick","mousemove","mouseup","mousedown","mouseout","mouseover","movestart","move","moveend","zoomstart","zoom","zoomend","rotatestart","rotate","rotateend","dragstart","drag","dragend","pitchstart","pitch","pitchend","wheel","terrain","cooperativegestureprevented"];function he(e,a,r,n){return o=>r.emit(n,{type:o.type,map:a,component:e,event:o})}function Se(e,a){const r=y.LngLat.convert(e),n=y.LngLat.convert(a);return r.lng===n.lng&&r.lat===n.lat}var z=(e=>(e.TOP_LEFT="top-left",e.TOP_RIGHT="top-right",e.BOTTOM_LEFT="bottom-left",e.BOTTOM_RIGHT="bottom-right",e))(z||{});const L=Object.values(z),A=new Map,V=Symbol("default");function Me(e=V){let a=A.get(e);return a||(a=t.reactive({isLoaded:!1,isMounted:!1,language:null}),A.set(e,a)),a}function Ce(e,a,r=V){var o;let n=A.get(r);return n||(n=t.reactive({isLoaded:!1,isMounted:!1,language:null}),A.set(r,n)),n.isLoaded=((o=a.value)==null?void 0:o.loaded())||!1,n.isMounted=!1,n.component=e,n.map=a.value,n}const U=t.defineComponent({name:"MglMap",props:{width:{type:[Number,String],default:"100%"},height:{type:[Number,String],default:"100%"},attributionControl:{type:[Boolean,Object],default:void 0},bearing:{type:Number},bearingSnap:{type:Number},bounds:{type:[Array,Object]},boxZoom:{type:Boolean,default:void 0},center:{type:[Array,Object]},clickTolerance:{type:Number},collectResourceTiming:{type:Boolean,default:void 0},crossSourceCollisions:{type:Boolean,default:void 0},dragPan:{type:Boolean,default:void 0},dragRotate:{type:Boolean,default:void 0},doubleClickZoom:{type:Boolean,default:void 0},hash:{type:[Boolean,String],default:void 0},fadeDuration:{type:Number},fitBoundsOptions:{type:Object},interactive:{type:Boolean,default:void 0},keyboard:{type:Boolean,default:void 0},locale:{type:Object},localIdeographFontFamily:{type:String},logoPosition:{type:[String],validator:e=>e in z},maxBounds:{type:[Array,Object]},maxPitch:{type:Number},maxZoom:{type:Number},minPitch:{type:Number},minZoom:{type:Number},pitch:{type:Number},pitchWithRotate:{type:Boolean,default:void 0},canvasContextAttributes:{type:Object},refreshExpiredTiles:{type:Boolean,default:void 0},renderWorldCopies:{type:Boolean,default:void 0},scrollZoom:{type:Boolean,default:void 0},mapStyle:{type:[String,Object]},trackResize:{type:Boolean,default:void 0},transformRequest:{type:Function},transformCameraUpdate:{type:Function},touchZoomRotate:{type:Boolean,default:void 0},touchPitch:{type:Boolean,default:void 0},zoom:{type:Number},maxTileCacheSize:{type:Number},mapKey:{type:[String,Symbol]},pixelRatio:{type:Number},validateStyle:{type:Boolean,default:void 0},cooperativeGestures:{type:Object}},emits:["map:error","map:load","map:idle","map:remove","map:render","map:resize","map:webglcontextlost","map:webglcontextrestored","map:dataloading","map:data","map:tiledataloading","map:sourcedataloading","map:styledataloading","map:sourcedata","map:styledata","map:styleimagemissing","map:dataabort","map:sourcedataabort","map:boxzoomcancel","map:boxzoomstart","map:boxzoomend","map:touchcancel","map:touchmove","map:touchend","map:touchstart","map:click","map:contextmenu","map:dblclick","map:mousemove","map:mouseup","map:mousedown","map:mouseout","map:mouseover","map:movestart","map:move","map:moveend","map:zoomstart","map:zoom","map:zoomend","map:rotatestart","map:rotate","map:rotateend","map:dragstart","map:drag","map:dragend","map:pitchstart","map:pitch","map:pitchend","map:wheel","map:terrain","map:cooperativegestureprevented","map:projectiontransition","update:center","update:zoom","update:pitch","update:bearing"],slots:Object,setup(e,a){const r=t.markRaw(t.getCurrentInstance()),n=t.shallowRef(),o=t.shallowRef(),u=t.ref(!1),f=t.ref(!1),l=new Map,g=Ce(r,o,e.mapKey);t.provide(h,o),t.provide(B,f),t.provide(T,u),t.provide(S,r.uid),t.provide(M,""),t.watch(()=>e.bearing,s=>{var m;s&&((m=o.value)==null||m.setBearing(s))}),t.watch(()=>e.bounds,s=>{var m;s&&((m=o.value)==null||m.fitBounds(s,e.fitBoundsOptions))}),t.watch(()=>e.center,s=>{var P,_;const m=(P=o.value)==null?void 0:P.getCenter();s&&m&&!Se(s,m)&&((_=o.value)==null||_.setCenter(s))}),t.watch(()=>e.maxBounds,s=>{var m;s&&((m=o.value)==null||m.setMaxBounds(s))}),t.watch(()=>e.maxPitch,s=>{var m;s&&((m=o.value)==null||m.setMaxPitch(s))}),t.watch(()=>e.maxZoom,s=>{var m;s&&((m=o.value)==null||m.setMaxZoom(s))}),t.watch(()=>e.minPitch,s=>{var m;s&&((m=o.value)==null||m.setMinPitch(s))}),t.watch(()=>e.minZoom,s=>{var m;s&&((m=o.value)==null||m.setMinZoom(s))}),t.watch(()=>e.pitch,s=>{var m;s&&((m=o.value)==null||m.setPitch(s))}),t.watch(()=>e.renderWorldCopies,s=>{var m;s&&((m=o.value)==null||m.setRenderWorldCopies(s))}),t.watch(()=>e.mapStyle,s=>{var m;s&&((m=o.value)==null||m.setStyle(s))}),t.watch(()=>e.transformRequest,s=>{var m;s&&((m=o.value)==null||m.setTransformRequest(s))}),t.watch(()=>e.zoom,s=>{var m;s&&((m=o.value)==null||m.setZoom(s))}),t.watch(()=>e.zoom,s=>{var m;s&&((m=o.value)==null||m.setZoom(s))});function i(){g.isMounted=!0;const s={...e,style:e.mapStyle,container:n.value};for(const m of Object.keys(s))s[m]===void 0&&delete s[m];if(o.value=t.markRaw(new y.Map(s)),g.map=o.value,u.value=!0,l.set("__load",()=>(f.value=!0,g.isLoaded=!0)),o.value.on("load",l.get("__load")),l.set("__moveend",()=>a.emit("update:center",o.value.getCenter())),o.value.on("moveend",l.get("__moveend")),l.set("__zoomend",()=>a.emit("update:zoom",o.value.getZoom())),o.value.on("zoomend",l.get("__zoomend")),l.set("__pitchend",()=>a.emit("update:pitch",o.value.getPitch())),o.value.on("pitchend",l.get("__pitchend")),l.set("__rotateend",()=>a.emit("update:bearing",o.value.getBearing())),o.value.on("rotateend",l.get("__rotateend")),r.vnode.props){for(const m of be)if(r.vnode.props["onMap:"+m]){const P=`map:${m}`,_=he(r,o.value,a,P);l.set(m,_),o.value.on(m,_)}}o.value.getCanvas().addEventListener("webglcontextlost",C)}async function d(){g.isMounted=!1,g.isLoaded=!1,f.value=!1,o.value&&(o.value.getCanvas().removeEventListener("webglcontextlost",C),u.value=!1,l.forEach((s,m)=>{o.value.off(m.startsWith("__")?m.substring(2):m,s)}),o.value.remove())}function C(){d(),t.nextTick(i)}return t.onMounted(i),t.onBeforeUnmount(d),a.expose({map:o}),()=>[t.h("div",{ref:n,style:{height:e.height,width:e.width}}),u.value&&a.slots.default?a.slots.default({}):void 0]},render(){return null}});function Z(e,a,r){t.watch(e,n=>{var o,u;n&&L.indexOf(n)===-1||((o=a.value)!=null&&o.hasControl(r)&&a.value.removeControl(r),(u=a.value)==null||u.addControl(r,n))},{immediate:!0})}function v(e,a){const r=t.inject(h),n=t.inject(T),o=t.shallowRef();return o.value=e(),Z(()=>a.position,r,o.value),t.onBeforeUnmount(()=>{var u;return n.value&&((u=r.value)==null?void 0:u.removeControl(o.value))}),{control:o,map:r}}const H=t.defineComponent({name:"MglAttributionControl",props:{position:{type:String,validator:e=>L.indexOf(e)!==-1},compact:Boolean,customAttribution:[String,Array]},setup(e){v(()=>new y.AttributionControl({compact:e.compact,customAttribution:e.customAttribution}),e)},render(){return null}});class we{constructor(a,r){k(this,"container");this.isAdded=a,this.container=document.createElement("div"),this.setClasses(r)}getDefaultPosition(){return z.TOP_LEFT}onAdd(){return t.nextTick(()=>this.isAdded.value=!0),this.container}onRemove(){this.isAdded.value=!1,this.container.remove()}setClasses(a){this.container.className=a}}const W=t.defineComponent({name:"MglCustomControl",props:{position:{type:String,validator:e=>L.indexOf(e)!==-1},class:{type:String,default:"maplibregl-ctrl maplibregl-ctrl-group"}},slots:Object,setup(e,{slots:a}){const r=t.ref(!1),{control:n}=v(()=>new we(r,e.class),e);return t.watch(()=>e.class,()=>n.value.setClasses(e.class)),()=>{var o;return r.value?t.h(t.Teleport,{to:n.value.container},(o=a.default)==null?void 0:o.call(a,{})):t.createCommentVNode("custom-component")}},render(){return null}}),D=t.defineComponent({name:"MglFullscreenControl",props:{position:{type:String,validator:e=>L.indexOf(e)!==-1},container:{type:Object,default:null}},setup(e){const{control:a,map:r}=v(()=>new y.FullscreenControl({container:e.container||void 0}),e);function n(){t.nextTick(()=>{var o;return(o=r.value)==null?void 0:o.resize()})}a.value.on("fullscreenstart",n),a.value.on("fullscreenend",n),t.onBeforeUnmount(()=>{a.value.off("fullscreenstart",n),a.value.off("fullscreenend",n)})},render(){return null}}),G=t.defineComponent({name:"MglGeolocateControl",props:{position:{type:String,default:z.TOP_RIGHT,validator:e=>L.indexOf(e)!==-1},positionOptions:{type:Object,default:()=>({enableHighAccuracy:!1,timeout:6e3})},fitBoundsOptions:{type:Object,default:()=>({maxZoom:15})},trackUserLocation:{type:Boolean,default:!1},showAccuracyCircle:{type:Boolean,default:!0},showUserLocation:{type:Boolean,default:!0}},emits:["trackuserlocationstart","trackuserlocationend","userlocationlostfocus","userlocationfocus","geolocate","error","outofmaxbounds"],setup(e,a){const{control:r}=v(()=>new y.GeolocateControl({positionOptions:e.positionOptions,fitBoundsOptions:e.fitBoundsOptions,trackUserLocation:e.trackUserLocation,showAccuracyCircle:e.showAccuracyCircle,showUserLocation:e.showUserLocation}),e);function n(o){const u=f=>{a.emit(o,f)};r.value.on(o,u),t.onBeforeUnmount(()=>{r.value.off(o,u)})}n("trackuserlocationstart"),n("trackuserlocationend"),n("userlocationlostfocus"),n("userlocationfocus"),n("geolocate"),n("error"),n("outofmaxbounds")},render(){return null}}),J=t.defineComponent({name:"MglNavigationControl",props:{position:{type:String,validator:e=>L.indexOf(e)!==-1},showCompass:{type:Boolean,default:!0},showZoom:{type:Boolean,default:!0},visualizePitch:Boolean},setup(e){v(()=>new y.NavigationControl({showCompass:e.showCompass,showZoom:e.showZoom,visualizePitch:e.visualizePitch}),e)},render(){return null}});var $=(e=>(e.IMPERIAL="imperial",e.METRIC="metric",e.NAUTICAL="nautical",e))($||{});const Le=Object.values($),K=t.defineComponent({name:"MglScaleControl",props:{position:{type:String,validator:e=>L.indexOf(e)!==-1},maxWidth:{type:Number,default:100},unit:{type:String,default:"metric",validator:e=>Le.indexOf(e)!==-1}},setup(e){v(()=>new y.ScaleControl({maxWidth:e.maxWidth,unit:e.unit}),e)},render(){return null}}),Y=t.defineComponent({name:"MglLogoControl",props:{position:{type:String,validator:e=>L.indexOf(e)!==-1},compact:{type:Boolean}},setup(e){v(()=>new y.LogoControl({compact:e.compact}),e)},render(){return null}}),Q=t.defineComponent({name:"MglMarker",emits:["dragstart","drag","dragend","update:coordinates"],props:{coordinates:{type:[Object,Array],required:!0},className:String,offset:[Object,Array],anchor:String,color:String,draggable:Boolean,clickTolerance:Number,rotation:Number,rotationAlignment:String,pitchAlignment:String,scale:Number,opacity:String,opacityWhenCovered:String,subpixelPositioning:{type:Boolean,default:!1}},setup(e,{slots:a,emit:r}){const n=t.inject(h),o=t.shallowRef(),u=t.ref(),f=t.ref(!1),l=new Map;function g(i,d){const C=()=>{d&&d(),r(i)};o.value.on(i,C),l.set(i,C)}return t.provide(x,o),t.onMounted(()=>{const i={...e};a.marker&&(i.element=u.value),o.value=new y.Marker(i),o.value.setLngLat(e.coordinates).addTo(n.value),g("dragstart"),g("drag",()=>{var d;r("update:coordinates",(d=o.value)==null?void 0:d.getLngLat())}),g("dragend",()=>{var d;r("update:coordinates",(d=o.value)==null?void 0:d.getLngLat())}),f.value=!0}),t.watch(()=>e.coordinates,i=>{var d;return(d=o.value)==null?void 0:d.setLngLat(i)},{deep:!0}),t.watch(()=>e.draggable,i=>{var d;return(d=o.value)==null?void 0:d.setDraggable(i)}),t.watch(()=>e.offset,i=>{var d;return(d=o.value)==null?void 0:d.setOffset(i||[0,0])}),t.watch(()=>e.pitchAlignment,i=>{var d;return(d=o.value)==null?void 0:d.setPitchAlignment(i||"auto")}),t.watch(()=>e.rotation,i=>{var d;return(d=o.value)==null?void 0:d.setRotation(i)}),t.watch(()=>e.rotationAlignment,i=>{var d;return(d=o.value)==null?void 0:d.setRotationAlignment(i||"auto")}),t.watch(()=>e.opacity,i=>{var d;return(d=o.value)==null?void 0:d.setOpacity(i,e.opacityWhenCovered)}),t.watch(()=>e.opacityWhenCovered,i=>{var d;return(d=o.value)==null?void 0:d.setOpacity(e.opacity,i)}),t.watch(()=>e.subpixelPositioning,i=>{var d;return(d=o.value)==null?void 0:d.setSubpixelPositioning(i)}),t.watch(()=>e.className,(i,d)=>{var C,s;d&&((C=o.value)==null||C.removeClassName(d)),i&&((s=o.value)==null||s.addClassName(i))}),t.onBeforeUnmount(()=>{var i;l.forEach((d,C)=>{var s;(s=o.value)==null||s.off(C,d)}),(i=o.value)==null||i.remove()}),()=>[t.h("div",a.default&&f.value?a.default({}):void 0),t.h("div",{ref:u},a.marker?a.marker():void 0)]},render(){return null}}),X=t.defineComponent({name:"MglPopup",emits:["open","close"],props:{coordinates:{type:[Object,Array],required:!1},closeButton:{type:Boolean,required:!1,default:!0},closeOnClick:{type:Boolean,required:!1,default:!0},closeOnMove:{type:Boolean,required:!1,default:!1},focusAfterOpen:{type:Boolean,required:!1,default:!0},anchor:{type:String,required:!1},offset:{type:[Number,Object,Array],required:!1},className:{type:String,required:!1},maxWidth:{type:String,default:"240px"},subpixelPositioning:{type:Boolean,default:!1},text:{type:String,required:!1}},setup(e,{slots:a,emit:r,expose:n}){const o=t.inject(h),u=t.inject(x,void 0),f=t.ref(),l=new y.Popup(e);u&&u.value?u.value.setPopup(l):e.coordinates&&o&&l.setLngLat(e.coordinates).addTo(o.value),e.text&&l.setText(e.text);function g(i){const d=()=>r(i);l.on(i,d),t.onBeforeUnmount(()=>{l.off(i,d)})}return g("open"),g("close"),n({remove(){l.remove()}}),t.watch(()=>e.coordinates,i=>{i&&l.setLngLat(i)},{deep:!0}),t.watch(()=>e.text,i=>l.setText(i||"")),t.watch(()=>e.offset,i=>l.setOffset(i)),t.watch(()=>e.maxWidth,i=>l.setMaxWidth(i)),t.watch(()=>e.className,(i,d)=>{d&&l.removeClassName(d),i&&l.addClassName(i)}),t.watch(()=>e.subpixelPositioning,i=>l.setSubpixelPositioning(i)),t.onMounted(()=>{f.value&&!e.text&&l.setDOMContent(f.value)}),t.onBeforeUnmount(()=>{l.remove()}),()=>[t.h("div",{ref:f},a.default?a.default():void 0)]},render(){return null}}),ee=t.defineComponent({name:"MglImage",props:{id:{type:String,required:!0},image:Object,url:String,options:Object},setup(e){const a=t.inject(h);if(!e.url&&!e.image)return t.warn(`${e.id} image: missing prop url or image`),()=>[];if(!a.value.hasImage(e.id))return(async()=>{let r=e.image;e.url&&(r=(await a.value.loadImage(e.url)).data),a.value.addImage(e.id,r,e.options)})(),()=>[]}});class N{constructor(){k(this,"unmountHandlers",new Map)}registerUnmountHandler(a,r){this.unmountHandlers.set(a,r)}unregisterUnmountHandler(a){this.unmountHandlers.delete(a)}unmount(){this.unmountHandlers.forEach(a=>a())}}const R=class R{static genSourceOpts(a){const r={...a};for(const n of Object.keys(r))(r[n]===void 0||n==="sourceId")&&delete r[n];return r}static getSourceRef(a,r){const n=typeof r=="string",o=String(a)+(n?r:"");let u=R.REFS.get(o);return u||(u=t.ref(n?null:void 0),R.REFS.set(o,u)),u}};k(R,"REFS",new Map);let p=R;function O(e,a,r){const n=t.inject(h),o=t.inject(B);function u(){o.value&&(n.value.addSource(a.sourceId,p.genSourceOpts(a)),e.value=n.value.getSource(a.sourceId))}return t.watch(o,u,{immediate:!0}),n.value.on("style.load",u),t.onBeforeUnmount(()=>{o.value&&(r.unmount(),n.value.removeSource(a.sourceId)),n.value.off("style.load",u)})}const te=t.defineComponent({name:"MglCanvasSource",props:{sourceId:{type:String,required:!0},coordinates:Array,animate:Boolean,canvas:[Object,String]},slots:Object,setup(e,{slots:a}){const r=t.inject(S),n=p.getSourceRef(r,e.sourceId),o=new N,u={...e,type:"canvas"};return t.provide(M,e.sourceId),t.provide(w,o),O(n,u,o),t.watch([t.isRef(e.coordinates)?e.coordinates:()=>e.coordinates,n],([f,l])=>{l==null||l.setCoordinates(f)},{immediate:!0}),()=>[t.createCommentVNode("Canvas Source"),n.value&&a.default?a.default({}):void 0]}}),oe=t.defineComponent({name:"MglGeoJsonSource",props:{sourceId:{type:String,required:!0},data:{type:[Object,String],required:!0},maxzoom:Number,attribution:String,buffer:Number,tolerance:Number,cluster:Boolean,clusterRadius:Number,clusterMaxZoom:Number,clusterMinPoints:Number,clusterProperties:Object,lineMetrics:Boolean,generateId:Boolean,promoteId:[Object,String],filter:[Array,String,Object]},slots:Object,setup(e,{slots:a}){const r=t.inject(S),n=p.getSourceRef(r,e.sourceId),o=new N,u={...e,type:"geojson"};return t.provide(M,e.sourceId),t.provide(w,o),O(n,u,o),t.watch([t.isRef(e.data)?e.data:()=>e.data,n],([f,l])=>{l==null||l.setData(f||{type:"FeatureCollection",features:[]})},{immediate:!0}),()=>[t.createCommentVNode("GeoJSON Source"),n.value&&a.default?a.default({}):void 0]}}),ae=t.defineComponent({name:"MglImageSource",props:{sourceId:{type:String,required:!0},url:String,coordinates:Array},slots:Object,setup(e,{slots:a}){const r=t.inject(S),n=p.getSourceRef(r,e.sourceId),o=new N,u={...e,type:"image"};return t.provide(M,e.sourceId),t.provide(w,o),O(n,u,o),t.watch([t.isRef(e.coordinates)?e.coordinates:()=>e.coordinates,n],([f,l])=>{l==null||l.setCoordinates(f)},{immediate:!0}),()=>[t.createCommentVNode("Image Source"),n.value&&a.default?a.default({}):void 0]}}),ne=t.defineComponent({name:"MglRasterSource",props:{sourceId:{type:String,required:!0},url:String,tiles:Array,bounds:Array,minzoom:Number,maxzoom:Number,tileSize:Number,scheme:String,attribution:String,volatile:Boolean},slots:Object,setup(e,{slots:a}){const r=t.inject(S),n=p.getSourceRef(r,e.sourceId),o=new N,u={...e,type:"raster"};return t.provide(M,e.sourceId),t.provide(w,o),O(n,u,o),()=>[t.createCommentVNode("Raster Source"),n.value&&a.default?a.default({}):void 0]}}),re=t.defineComponent({name:"MglRasterDemSource",props:{sourceId:{type:String,required:!0},url:String,tiles:Array,bounds:Array,minzoom:Number,maxzoom:Number,tileSize:Number,attribution:String,encoding:String,volatile:Boolean,redFactor:Number,blueFactor:Number,greenFactor:Number,baseShift:Number},slots:Object,setup(e,{slots:a}){const r=t.inject(S),n=p.getSourceRef(r,e.sourceId),o=new N,u={...e,type:"raster-dem"};return t.provide(M,e.sourceId),t.provide(w,o),O(n,u,o),()=>[t.createCommentVNode("RasterDem Source"),n.value&&a.default?a.default({}):void 0]}}),ie=t.defineComponent({name:"MglVectorSource",props:{sourceId:{type:String,required:!0},url:String,tiles:Array,bounds:{type:Array,validator:function(e){return e.length===4}},scheme:String,minzoom:Number,maxzoom:Number,attribution:String,promoteId:[Object,String],volatile:Boolean},slots:Object,setup(e,{slots:a}){const r=t.inject(S),n=p.getSourceRef(r,e.sourceId),o=new N,u={...e,type:"vector"};return t.provide(M,e.sourceId),t.provide(w,o),O(n,u,o),t.watch([t.isRef(e.tiles)?e.tiles:()=>e.tiles,n],([f,l])=>{l==null||l.setTiles(f||[])},{immediate:!0}),t.watch([t.isRef(e.url)?e.url:()=>e.url,n],([f,l])=>{l==null||l.setUrl(f||"")},{immediate:!0}),()=>[t.createCommentVNode("Vector Source"),n.value&&a.default?a.default({}):void 0]}}),le=t.defineComponent({name:"MglVideoSource",props:{sourceId:{type:String,required:!0},urls:Array,coordinates:Array},slots:Object,setup(e,{slots:a}){const r=t.inject(S),n=p.getSourceRef(r,e.sourceId),o=new N,u={...e,type:"video"};return t.provide(M,e.sourceId),t.provide(w,o),O(n,u,o),t.watch([t.isRef(e.coordinates)?e.coordinates:()=>e.coordinates,n],([f,l])=>{l==null||l.setCoordinates(f)},{immediate:!0}),()=>[t.createCommentVNode("Video Source"),n.value&&a.default?a.default({}):void 0]}}),b=["click","dblclick","mousedown","mouseup","mousemove","mouseenter","mouseleave","mouseover","mouseout","contextmenu","touchstart","touchend","touchcancel"];function j(){return{layerId:{type:String,required:!0},source:{type:String},metadata:{type:[Object,Array,String,Number]},sourceLayer:{type:String},minzoom:{type:Number},maxzoom:{type:Number},filter:{type:Object},before:{type:String},layout:{type:Object},paint:{type:Object}}}function ve(e,a,r,n){const o={id:e,type:a,source:r.source||n,metadata:r.metadata,minzoom:r.minzoom,maxzoom:r.maxzoom,"source-layer":r.sourceLayer,filter:r.filter,paint:r.paint,layout:r.layout};for(const u of Object.keys(o))o[u]===void 0&&delete o[u];return o}function Oe(e,a,r){if(r.props)for(const n of b){const o="on"+n.charAt(0).toUpperCase()+n.substr(1);r.props[o]&&e.on(n,a,r.props[o])}}function je(e,a,r){if(r.props)for(const n of b){const o="on"+n.charAt(0).toUpperCase()+n.substr(1);r.props[o]&&e.off(n,a,r.props[o])}}function E(e,a){const r=t.inject(h),n=t.inject(B),o=t.inject(w);function u(){n.value&&(a&&je(r.value,e,a.vnode),r.value.getLayer(e)&&r.value.removeLayer(e))}o.registerUnmountHandler(e,u),t.onBeforeUnmount(()=>{o.unregisterUnmountHandler(e),u()})}const ce=t.defineComponent({name:"MglBackgroundLayer",props:{layerId:{type:String,required:!0},metadata:[Object,Array,String,Number],minzoom:Number,maxzoom:Number,before:String,layout:Object,paint:Object},emits:[...b],setup(e){const a=t.inject(h),r=t.inject(B);return E(e.layerId),t.watch(()=>e.layout,n=>{if(n)for(const[o,u]of Object.entries(n))a.value.setLayoutProperty(e.layerId,o,u)}),t.watch(()=>e.paint,n=>{if(n)for(const[o,u]of Object.entries(n))a.value.setPaintProperty(e.layerId,o,u)}),t.watch(r,n=>{n&&a.value.addLayer({id:e.layerId,type:"background",metadata:e.metadata,minzoom:e.minzoom,maxzoom:e.maxzoom,layout:e.layout,paint:e.paint},e.before||void 0)},{immediate:!0}),()=>t.createCommentVNode("Background Layer")}});function I(e,a){const r=t.inject(M);if(!r&&!a.source){t.warn(`${e} Layer: layer must be used inside source tag or source prop must be set`);return}const n=t.getCurrentInstance(),o=t.inject(h),u=t.inject(B),f=t.inject(S),l=p.getSourceRef(f,a.source||r);return E(a.layerId,n),t.watch(()=>a.minzoom,()=>o.value.setLayerZoomRange(a.layerId,a.minzoom||0,a.maxzoom||24)),t.watch(()=>a.maxzoom,()=>o.value.setLayerZoomRange(a.layerId,a.minzoom||0,a.maxzoom||24)),t.watch(()=>a.layout,g=>{if(g)for(const[i,d]of Object.entries(g))o.value.setLayoutProperty(a.layerId,i,d)},{deep:!0}),t.watch(()=>a.paint,g=>{if(g)for(const[i,d]of Object.entries(g))o.value.setPaintProperty(a.layerId,i,d)},{deep:!0}),t.watch(()=>a.filter,g=>o.value.setFilter(a.layerId,g),{deep:!0}),t.watch([u,l],([g,i])=>{g&&(i||i===void 0)&&(o.value.addLayer(ve(a.layerId,e,a,r),a.before||void 0),Oe(o.value,a.layerId,n.vnode))},{immediate:!0}),()=>t.createCommentVNode(`${e} Layer`)}const ue=t.defineComponent({name:"MglCircleLayer",props:j(),emits:[...b],setup(e){return I("circle",e)}}),se=t.defineComponent({name:"MglFillLayer",props:j(),emits:[...b],setup(e){return I("fill",e)}}),de=t.defineComponent({name:"MglFillExtrusionLayer",props:j(),emits:[...b],setup(e){return I("fill-extrusion",e)}}),me=t.defineComponent({name:"MglHeatmapLayer",props:j(),emits:[...b],setup(e){return I("heatmap",e)}}),fe=t.defineComponent({name:"MglHillshadeLayer",props:j(),emits:[...b],setup(e){return I("hillshade",e)}}),ge=t.defineComponent({name:"MglLineLayer",props:j(),emits:[...b],setup(e){return I("line",e)}}),ye=t.defineComponent({name:"MglRasterLayer",props:j(),emits:[...b],setup(e){return I("raster",e)}}),pe=t.defineComponent({name:"MglSymbolLayer",props:j(),emits:[...b],setup(e){return I("symbol",e)}}),Ie=Object.freeze(Object.defineProperty({__proto__:null,MglAttributionControl:H,MglBackgroundLayer:ce,MglCanvasSource:te,MglCircleLayer:ue,MglCustomControl:W,MglFillExtrusionLayer:de,MglFillLayer:se,MglFullscreenControl:D,MglGeoJsonSource:oe,MglGeolocateControl:G,MglHeatmapLayer:me,MglHillshadeLayer:fe,MglImage:ee,MglImageSource:ae,MglLineLayer:ge,MglLogoControl:Y,MglMap:U,MglMarker:Q,MglNavigationControl:J,MglPopup:X,MglRasterDemSource:re,MglRasterLayer:ye,MglRasterSource:ne,MglScaleControl:K,MglSymbolLayer:pe,MglVectorSource:ie,MglVideoSource:le},Symbol.toStringTag,{value:"Module"})),Ne=function(a){Object.entries(Ie).forEach(([r,n])=>{a.component(r,n)})};c.MglAttributionControl=H,c.MglBackgroundLayer=ce,c.MglCanvasSource=te,c.MglCircleLayer=ue,c.MglCustomControl=W,c.MglFillExtrusionLayer=de,c.MglFillLayer=se,c.MglFullscreenControl=D,c.MglGeoJsonSource=oe,c.MglGeolocateControl=G,c.MglHeatmapLayer=me,c.MglHillshadeLayer=fe,c.MglImage=ee,c.MglImageSource=ae,c.MglLineLayer=ge,c.MglLogoControl=Y,c.MglMap=U,c.MglMarker=Q,c.MglNavigationControl=J,c.MglPopup=X,c.MglRasterDemSource=re,c.MglRasterLayer=ye,c.MglRasterSource=ne,c.MglScaleControl=K,c.MglSymbolLayer=pe,c.MglVectorSource=ie,c.MglVideoSource=le,c.Position=z,c.componentIdSymbol=S,c.default=Ne,c.isInitialized=F,c.isInitializedSymbol=T,c.isLoadedSymbol=B,c.map=q,c.mapSymbol=h,c.markerSymbol=x,c.sourceIdSymbol=M,c.sourceLayerRegistry=w,c.useControl=v,c.useDisposableLayer=E,c.useMap=Me,c.usePositionWatcher=Z,c.useSource=O,Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}); //# sourceMappingURL=vue-maplibre-gl.umd.js.map