1import{m as s}from"./BkakuSTo.js";import{D as y,a as z,s as M,B as _,c as b}from"./BIhTPyY3.js";import{G as v,N as B,p as E,w as u,as as L,ak as A,r as C}from"./BA2cZanY.js";import"./DyfadX0W.js";const S=v({__name:"Basemap",props:{center:{type:Object,required:!1,default:()=>({...z})},zoom:{type:Number,required:!1,default:13},markers:{type:Array,required:!1,default:()=>[]},fitMarkers:{type:Boolean,required:!1,default:!0},pick:{type:Boolean,required:!1,default:!1},lang:{type:String,required:!1,default:"en"},tileUrl:{type:String,required:!1,default:y},color:{type:String,required:!1},fullscreen:{type:Boolean,required:!1,default:!0}},emits:["pick","markerClick","markerDrag","ready"],setup(p,{expose:d,emit:g}){const e=p,i=g,l=C(null);let r=null,n=[],c=null;const f=()=>{if(!r)return;for(const t of n)t.remove();n=[];const a=e.color||M(l.value);for(const t of e.markers){if(!t.lat||!t.lng)continue;const o=new s.Marker({color:a,draggable:e.pick}).setLngLat([t.lng,t.lat]).addTo(r);t.title&&(o.getElement().setAttribute("title",t.title),o.getElement().setAttribute("aria-label",t.title)),o.getElement().style.cursor="pointer",o.getElement().addEventListener("click",m=>{m.stopPropagation(),i("markerClick",t)}),e.pick&&o.on("dragend",()=>{const m=o.getLngLat();i("markerDrag",{lat:m.lat,lng:m.lng})}),n.push(o)}if(e.fitMarkers&&e.markers.length>1){const t=new s.LngLatBounds;for(const o of e.markers)t.extend([o.lng,o.lat]);r.fitBounds(t,{padding:48,maxZoom:13,duration:0})}else e.fitMarkers&&e.markers.length===1&&r.jumpTo({center:[e.markers[0].lng,e.markers[0].lat],zoom:e.zoom})},k=()=>{!l.value||r||(r=new s.Map({container:l.value,style:b({tileUrl:e.tileUrl,lang:e.lang}),center:[e.center.lng,e.center.lat],zoom:e.zoom,maxZoom:_,attributionControl:{compact:!0}}),r.addControl(new s.NavigationControl({showCompass:!1}),"top-right"),e.fullscreen&&r.addControl(new s.FullscreenControl,"top-right"),e.pick&&r.on("click",a=>{i("pick",{lat:a.lngLat.lat,lng:a.lngLat.lng})}),r.on("load",()=>{f(),i("ready",r)}))};return B(()=>{k(),l.value&&typeof ResizeObserver<"u"&&(c=new ResizeObserver(()=>{r?.resize()}),c.observe(l.value))}),E(()=>{c?.disconnect(),c=null;for(const a of n)a.remove();n=[],r?.remove(),r=null}),u(()=>e.markers,()=>{f()},{deep:!0}),u(()=>e.color,()=>{f()}),u(()=>[e.center.lat,e.center.lng,e.zoom],()=>{!r||e.fitMarkers&&e.markers.length||r.jumpTo({center:[e.center.lng,e.center.lat],zoom:e.zoom})}),d({flyTo(a){r?.flyTo({center:[a.lng,a.lat],zoom:a.zoom??r.getZoom()})},resize(){r?.resize()}}),(a,t)=>(L(),A("div",{ref_key:"container",ref:l,class:"basemap","aria-role":"application"},null,512))}});export{S as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.