@opengis/gis 0.1.74 → 0.1.76

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.
@@ -1,7 +1,7 @@
1
- (function(q,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@opengis/filter")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/filter"],e):(q=typeof globalThis<"u"?globalThis:q||self,e(q.MapCustom={},q.Vue,q.openGISfilter))})(this,(function(q,e,je){"use strict";const P=(t,o)=>{const r=t.__vccOpts||t;for(const[n,a]of o)r[n]=a;return r},Pe={key:0,class:"p-5 pb-0 flex justify-between items-center"},De={class:"inline-block font-semibold text-lg text-gray-800"},Me={class:"flex flex-col gap-1 p-5"},Te={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},ze={key:0,class:"ms-2 text-xs text-gray-500"},Ae=P({__name:"vs-legend-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,r=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.items)||[]}),n=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.title)||""});return(a,l)=>(e.openBlock(),e.createElementBlock("div",{class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative",style:e.normalizeStyle({width:t.config.width||"100%"})},[n.value?(e.openBlock(),e.createElementBlock("div",Pe,[e.createElementVNode("h2",De,e.toDisplayString(n.value),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Me,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,g=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center",key:g.label},[e.createElementVNode("span",{class:e.normalizeClass(["shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px]",[g.shape==="square"?"rounded-sm":"",g.shape==="circle"?"rounded-full":"",g.shape==="line"?"w-6 h-0.5":"",g.shape==="dashed-line"?"w-6 h-0.5 dashed-line":""]]),style:e.normalizeStyle({backgroundColor:g.color})},null,6),e.createElementVNode("span",Te,[e.createElementVNode("span",null,e.toDisplayString(g.label),1),g.count!==void 0?(e.openBlock(),e.createElementBlock("span",ze," ("+e.toDisplayString(g.count)+") ",1)):e.createCommentVNode("",!0)])]))),128))])],4))}},[["__scopeId","data-v-dd12cf90"]]),Oe={class:"flex flex-row gap-x-3 z-10 relative"},Ue=["onClick"],Re=["src","alt"],He={__name:"vs-basemaps-widget",props:{map:{type:Object,required:!0},config:{type:Object,default:()=>({})},position:{type:String,default:"bottom-left"}},setup(t){const o=t,r=e.ref("voyager"),n=e.computed(()=>{var h;if(!((h=o.config)!=null&&h.layers))return[];const p=o.config.layers.map(s=>({id:s.id,title:s.label||s.title,url:s.url,service:s.type,category:"Базові карти",attribution:s.attribution,image:s.image,enabled:!0,owner:s.owner||"Unknown"}));return p.push({id:"__none__",title:"Без підложки",url:"",service:"",category:"Базові карти",attribution:"",enabled:!0,owner:""}),p});function a(p){return{version:8,sources:{[p.id]:{type:"raster",tiles:[p.url],tileSize:256,attribution:p.attribution||""}},layers:[{id:p.id,type:"raster",source:p.id}]}}const l=p=>{if(!o.map)return;const h=o.map.getStyle(),s=n.value.map(d=>d.id),c=h.layers.filter(d=>!s.includes(d.id)),u={};for(const d in h.sources)s.includes(d)||(u[d]=h.sources[d]);if(p.id==="__none__"){const d={version:8,sources:{...u},layers:[...c]};o.map.setStyle(d);return}const i=a(p);o.map.setStyle(i),o.map.once("styledata",()=>{for(const[d,m]of Object.entries(u))o.map.getSource(d)||o.map.addSource(d,m);for(const d of c)o.map.getLayer(d.id)||o.map.addLayer(d)})},g=p=>{r.value=p;const h=n.value.find(s=>s.id===p);h&&o.map&&l(h)};return e.onMounted(()=>{var p;(p=o.config)!=null&&p.default&&(r.value=o.config.default),g(r.value)}),(p,h)=>{const s=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",Oe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,c=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{trigger:"hover",placement:"top",key:c.id},[e.createElementVNode("div",{class:e.normalizeClass(["w-14 h-14 flex items-center justify-center bg-gray-200 rounded-xl shadow-2xs cursor-pointer transition-all border-4",r.value===c.id?"border-blue-400":"border-transparent"]),onClick:u=>g(c.id)},[c.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:c.image,alt:c.title,class:e.normalizeClass(["object-cover rounded-lg",c.id==="__none__"?"w-10 h-10":"w-12 h-12"])},null,10,Re)):e.createCommentVNode("",!0)],10,Ue)])),[[s,c.title]])),128))])}}};function ae(t){if(!t.attrType||!t.attribute||!t.rules)return t.color||"#ccc";const o=t.rules.map(r=>[["==",["get",t.attribute],r.id||r.value],r.color]);return o.push(t.color||"#ccc"),["case",...o.flat()]}function Ze(t){if(!t.attrType||t.attrType!=="icon-by-attribute"||!t.attribute||!t.rules)return t.default_icon||null;const o=t.rules.map(r=>[["==",["get",t.attribute],r.value],r.icon]);return o.push(t.default_icon||"marker.svg"),["case",...o.flat()]}function Ee(t){if(!t.attrType||t.attrType!=="attribute-pattern"||!t.attribute||!t.rules)return t.fillPattern||"";const o=t.rules.map(r=>[["==",["get",t.attribute],r.value],r.fillPattern||""]);return o.push(t.fillPattern||""),["case",...o.flat()]}function G(t,o="stroke",r="#ccc"){return["case",["boolean",["feature-state","hovered"],!1],"#ff0000",["boolean",["feature-state","selected"],!1],"#ff0000",t[o]||r]}function We(t){const o=[{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":ae(t),"fill-outline-color":G(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":Ee(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",paint:{"line-color":G(t,"stroke","#ccc"),"line-width":t.width||2,"line-opacity":t.lineOpacity||t.opacity||1}}];return t.pointZoom&&o.push({type:"circle",maxzoom:t.pointZoom,paint:{"circle-color":t.color||"#ccc","circle-stroke-color":G(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-opacity":t.opacity||1}}),o}function qe(t){return[{type:"line",paint:{"line-color":G(t,"color",ae(t)),"line-width":t.width||2,"line-opacity":t.opacity||1,...t.dashArray&&{"line-dasharray":t.dashArray}},layout:{...t.lineCap&&{"line-cap":t.lineCap},...t.lineJoin&&{"line-join":t.lineJoin}}}]}function Ge(t){const o=[{type:"circle",maxzoom:t.icon&&+t.iconZoom||22,paint:{"circle-radius":t.radius||6,"circle-stroke-color":G(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":ae(t),"circle-opacity":t.opacity||1}}];return t!=null&&t.clusterZoom?(o.push({type:"circle",filter:["has","point_count"],paint:{"circle-color":["step",["get","point_count"],"#51bbd6",100,"#f1f075",750,"#f28cb1"],"circle-radius":["step",["get","point_count"],20,100,30,750,40]}}),o.push({type:"symbol",filter:["has","point_count"],layout:{"text-field":["get","point_count"],"text-font":["Open Sans Regular"],"text-size":12}})):t.icon&&o.push({type:"symbol",minzoom:+t.iconZoom||16,layout:{"icon-image":t.icon,"icon-allow-overlap":!0}}),o}function Je(t,o,r){const n=t.type||"point";return n==="polygon"?[{type:"fill",...r!==void 0?{maxzoom:r}:{},paint:{"fill-color":ae(t),"fill-outline-color":G(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":Ee(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",...r!==void 0?{maxzoom:r}:{},paint:{"line-color":G(t,"stroke","#ccc"),"line-width":t.width||2,"line-opacity":t.lineOpacity||t.opacity||1}}]:n==="line"?[{type:"line",...r!==void 0?{maxzoom:r}:{},paint:{"line-color":G(t,"color",ae(t)),"line-width":t.width||2,"line-opacity":t.opacity||1,...t.dashArray&&{"line-dasharray":t.dashArray}},layout:{...t.lineCap&&{"line-cap":t.lineCap},...t.lineJoin&&{"line-join":t.lineJoin}}}]:[{type:"circle",...r!==void 0?{maxzoom:r}:{},paint:{"circle-radius":t.radius||6,"circle-stroke-color":G(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":ae(t),"circle-opacity":t.opacity||1}}]}function Ce(t){var r,n;if(!t)return null;if(t.attrType==="icon-by-attribute"&&t.iconZoom){const a=Ze(t),l=Array.isArray(a)&&a[0]==="case"?a:["case",["==",["get",t.attribute],((n=(r=t.rules)==null?void 0:r[0])==null?void 0:n.value)||""],a,a],g=Je(t,void 0,+t.iconZoom),p={type:"symbol",minzoom:+t.iconZoom,layout:{"icon-image":l,"icon-size":(t==null?void 0:t.icon_size)||1,"icon-allow-overlap":!0,"icon-anchor":(t==null?void 0:t.icon_anchor)||"bottom"},paint:{"icon-opacity":t.opacity||1}};return[...g,p]}const o=t.type||"point";return o==="polygon"?We(t):o==="line"?qe(t):Ge(t)}function Qe(t){return t.startsWith("http")?t:`${window.location.origin}${t}`}function Ye(t){const{id:o,sourceLayer:r,url:n,bounds:a,title:l,style:g,service:p,service_type:h,source_type:s,data:c}=t,u=Qe(n),i=h||p||s||"vector";switch(i){case"vtile":case"vector":return Xe(o,r,u,a,l,g);case"raster":return et(o,u,a,l,g);case"geojson":return tt(o,c||u,a,l,g);default:throw new Error(`Unsupported layer service type: ${i}`)}}function Ke(t){switch(t){case"polygon":return{type:"polygon",color:"#3388ff",opacity:.5};case"line":return{type:"line",color:"#3388ff",opacity:1};case"point":default:return{type:"point",color:"#3388ff",radius:6,opacity:1}}}function Xe(t,o,r,n,a,l){const g=o||(r.match(/\/vtile\/([^/]+)/)||[])[1]||t,p={type:"vector",tiles:[r],...n&&{bounds:n}},c=Ce(l||{}).map((u,i)=>({...u,id:`${t}-${i}`,"source-layer":g,source:t}));return{id:t,title:a,source:p,layers:c,visible:!0}}function et(t,o,r,n,a){const l={type:"raster",tiles:[o],tileSize:256,...r&&{bounds:r}},g=a||{},p={id:t,type:"raster",source:t,layout:{visibility:"visible"},...g&&{paint:g}};return{id:t,title:n,source:l,layers:[p],visible:!0}}function tt(t,o,r,n,a){var c;const l={type:"geojson",data:o,...r&&{bounds:r}};let g="point";if(o&&o.features&&o.features.length>0){const u=(c=o.features[0].geometry)==null?void 0:c.type;u==="Polygon"||u==="MultiPolygon"?g="polygon":u==="LineString"||u==="MultiLineString"?g="line":g="point"}const p=a||Ke(g),s=Ce(p).map((u,i)=>({...u,id:`${t}-${i}`,source:t}));return{id:t,title:n,source:l,layers:s,visible:!0}}function ot(t){if(!t||t.attrType!=="icon-by-attribute")return[];const o=new Set;return t.default_icon&&o.add(t.default_icon),Array.isArray(t.rules)&&t.rules.forEach(r=>{r.icon&&o.add(r.icon)}),Array.from(o).map(r=>({name:r,url:(t.icon_base_url||"")+r}))}function nt(t){const o=new Set;function r(n){typeof n=="string"?o.add(n):Array.isArray(n)&&n.forEach(r)}return t&&t["icon-image"]&&r(t["icon-image"]),Array.from(o)}async function Be(t,o){const r=o.map(async({name:n,url:a})=>{const l=await t.loadImage(a);return{name:n,data:l.data}});try{const n=await Promise.all(r);for(const{name:a,data:l}of n)t.hasImage(a)||t.addImage(a,l)}catch(n){console.error("Failed to load icons:",n)}}function rt(t,o,r="/icons/"){const a=nt(o).map(l=>({name:l,url:r+l}));return Be(t,a)}async function X(t,o){const r=Ye(o),n=ot(o.style);n.length>0&&await Be(t,n),o.layout&&o.layout["icon-image"]&&await rt(t,o.layout),t.getSource(r.id)||t.addSource(r.id,r.source);for(const a of r.layers)o.visible!==void 0&&(a.layout={...a.layout,visibility:o.visible?"visible":"none"}),t.getLayer(a.id)?t.setLayoutProperty(a.id,"visibility",o.visible?"visible":"none"):await t.addLayer(a);return r}function ie(t,o){t.getStyle().layers.filter(a=>a.source===o).forEach(a=>{t.removeLayer(a.id)}),t.getSource(o)&&t.removeSource(o)}const lt={},at={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function it(t,o){return e.openBlock(),e.createElementBlock("svg",at,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M11 19C15.4183 19 19 15.4183 19 11C19 6.58172 15.4183 3 11 3C6.58172 3 3 6.58172 3 11C3 15.4183 6.58172 19 11 19Z",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M21.0002 21L16.7002 16.7",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const Le=P(lt,[["render",it]]),st={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},ct={class:"flex flex-col justify-between h-full pb-5 px-5"},dt={key:0,class:"relative mb-[10px]"},pt={key:1,class:"mb-4"},mt={class:""},ht={class:"space-y-2"},ut={class:"flex items-center gap-[10px] text-gray-500"},gt={class:"dataset-checkbox-container flex"},ft=["onUpdate:modelValue","onChange"],yt={class:"text-sm"},bt=["onClick"],wt=["innerHTML"],xt={key:0,class:"text-sm text-gray-500 text-center py-2"},kt={__name:"vs-layers-widget",props:{map:{type:Object,required:!0},history:{type:Boolean,default:!1},config:{type:Object,default:()=>({layers:[],search:!1,allow_toggle_all:!1})},position:{type:String,default:"bottom-left"},hasFilters:{type:Boolean,default:!1}},emits:["set-filter-layer","update:enabledLayerIds"],setup(t,{emit:o}){const r=t,n=o,a=e.ref(""),l=e.ref([]);function g(){const m=new URLSearchParams(window.location.search).get("layers");return m?m.split(","):[]}function p(d){const m=new URLSearchParams(window.location.search);d.length>0?m.set("layers",d.join(",")):m.delete("layers");const _=`${window.location.pathname}?${m.toString()}`;window.history.replaceState({},"",_)}e.onMounted(()=>{let d=[];r.history&&(d=g()),d.length>0?l.value=r.config.layers.map(m=>({...m,visible:d.includes(String(m.id))})):l.value=r.config.layers.map(m=>({...m,visible:m.visible??!1})),l.value.forEach(m=>{m.visible&&X(r.map,m)}),n("update:enabledLayerIds",c())});const h=e.computed(()=>{if(!a.value)return l.value;const d=a.value.toLowerCase();return l.value.filter(m=>(m.title||m.name||m.label||"").toLowerCase().includes(d))}),s=e.computed(()=>l.value.every(d=>d.visible)),c=()=>l.value.filter(d=>d.visible).map(d=>d.id),u=d=>{d.visible?X(r.map,d):(ie(r.map,d.id),n("set-filter-layer",null)),r.map.getStyle().layers.filter(L=>L.source===d.id).forEach(L=>{r.map.setLayoutProperty(L.id,"visibility",d.visible?"visible":"none")}),n("update:enabledLayerIds",c())},i=()=>{const d=!s.value;l.value.forEach(m=>{m.visible=d,d?X(r.map,m):ie(r.map,m.id)}),d||n("set-filter-layer",null),n("update:enabledLayerIds",c())};return e.watch(()=>c(),d=>{r.history&&p(d)},{deep:!0}),(d,m)=>(e.openBlock(),e.createElementBlock("div",st,[m[1]||(m[1]=e.createElementVNode("div",{class:"p-5 pb-3 flex justify-between items-center"},[e.createElementVNode("h2",{class:"inline-block font-semibold text-lg text-gray-800"},"Шари")],-1)),e.createElementVNode("div",ct,[t.config.search?(e.openBlock(),e.createElementBlock("div",dt,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":m[0]||(m[0]=_=>a.value=_),placeholder:"Введіть назву шару...",class:"py-[7px] ps-8 pl-8 pe-8 block w-full bg-gray-100 border-transparent rounded-lg text-sm focus:bg-white focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none"},null,512),[[e.vModelText,a.value]]),e.createVNode(Le)])):e.createCommentVNode("",!0),t.config.allow_toggle_all?(e.openBlock(),e.createElementBlock("div",pt,[e.createElementVNode("button",{onClick:i,class:"w-full py-[7px] bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors"},e.toDisplayString(s.value?"Вимкнути всі":"Увімкнути всі"),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",mt,[e.createElementVNode("ul",ht,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,_=>(e.openBlock(),e.createElementBlock("li",{key:_.id,class:"flex flex-wrap justify-between items-center gap-x-2"},[e.createElementVNode("label",ut,[e.createElementVNode("span",gt,[e.withDirectives(e.createElementVNode("input",{class:"dataset-checkbox",type:"checkbox","onUpdate:modelValue":L=>_.visible=L,onChange:()=>u(_)},null,40,ft),[[e.vModelCheckbox,_.visible]])]),e.createElementVNode("span",yt,e.toDisplayString(_.title||_.name||_.label),1)]),_.actions&&_.visible?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(_.actions,L=>(e.openBlock(),e.createElementBlock("div",{key:L.id},[e.createElementVNode("button",{class:"text-sm text-gray-500",onClick:I=>d.$emit("show-widget",L.widget)},[e.createElementVNode("div",{innerHTML:L.icon},null,8,wt)],8,bt)]))),128)):e.createCommentVNode("",!0)]))),128)),a.value&&h.value.length===0?(e.openBlock(),e.createElementBlock("li",xt," Шарів не знайдено ")):e.createCommentVNode("",!0)])])])]))}};e.defineComponent({props:{modelValue:{type:Boolean,default:()=>!1},title:{type:String,default:()=>""},disabled:{type:Boolean,default:()=>!1}},data(){return{}},mounted(){this.modelValue||this.$emit("update:modelValue",!1)},computed:{modelState:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},labelCursorClasses(){return[{"cursor-not-allowed":this.disabled},{"cursor-pointer":!this.disabled}]}},methods:{handleEnterDown(t){const{keyCode:o}=t;o===13&&(this.modelState=!this.modelState)},addKeyHandler(){window.addEventListener("keydown",this.handleEnterDown)},removeKeyHandler(){window.removeEventListener("keydown",this.handleEnterDown)}}});const he=async(t,o,r,n=10)=>{var _,L,I,k;if(!o||!r)return;await e.nextTick();const a=await(r==null?void 0:r.getBoundingClientRect()),l=await(o==null?void 0:o.getBoundingClientRect());if(!l||!a)return;const g=await parseInt((_=o==null?void 0:o.getBoundingClientRect())==null?void 0:_.height),p=await parseInt((L=o==null?void 0:o.getBoundingClientRect())==null?void 0:L.width),h=await parseInt((I=r==null?void 0:r.getBoundingClientRect())==null?void 0:I.height),s=await parseInt((k=r==null?void 0:r.getBoundingClientRect())==null?void 0:k.width),c=await window.innerHeight,u=await window.innerWidth;let i=0,d=0;const m=l.bottom+n+h;switch(t){case"top":l.top-a.height-n<0?i=l.top-a.height+n+h+g:i=l.top-a.height-n,u>s+l.right+30?d=l.left-a.width/2+l.width/2:d=u-30-s;break;case"bottom":c>m?i=l.bottom+n:i=l.bottom-n-h-g,d=l.left-a.width/2+l.width/2;break;case"left":i=l.top-a.height/2+l.height/2,l.left-a.width-n>0?d=l.left-a.width-n:d=10;break;case"right":i=l.top-a.height/2+l.height/2,u-p>s?d=l.right+n:d=u-30-s;break;case"top-right":l.top-a.height-n<0?i=l.top-a.height+n+h+g:i=l.top-a.height-n,u-p>s?d=l.right+n:d=u-30-s;break;case"top-left":l.top-a.height-n<0?i=l.top-a.height+n+h+g:i=l.top-a.height-n,l.left-a.width-n>0?d=l.left-a.width-n:d=10;break;case"top-start":l.top-a.height-n<0?i=l.top-a.height+n+h+g:i=l.top-a.height-n,l.left>0?d=l.left:d=10;break;case"bottom-right":c>m?i=l.bottom+n:i=l.bottom-n-h-g,u-p>s?d=l.left:d=u-30-s;break;case"bottom-left":c>m?i=l.bottom+n:i=l.bottom-n-h-g,l.left>0?d=l.right-s:d=10;break;case"bottom-start":c>m?i=l.bottom+n:i=l.bottom-n-h-g,l.left>0?d=l.left:d=10;break}i+h>c?i=c-h-n:i<0&&(i=n),d+s>u?d=u-s-n:d<0&&(d=n),r instanceof HTMLElement&&(r.style.top=`${i}px`,r.style.left=`${d}px`,r.style.position="fixed")},_t={class:"text-center"},Vt={class:"py-2 px-4 w-full text-sm text-stone-800 bg-white shadow-[0_10px_40px_10px_rgba(0,0,0,0.08)] rounded-lg focus:outline-none focus:bg-stone-100 dark:bg-neutral-900 dark:text-neutral-200 dark:focus:bg-neutral-800 after:h-4 after:absolute after:-bottom-4 after:start-0 after:w-full before:h-4 before:absolute before:-top-4 before:start-0 before:w-full"},se=e.defineComponent({__name:"vs-popover",props:{isOpen:{type:Boolean,default:!1},placement:{default:"top"},gap:{default:8},width:{default:""},disabled:{type:Boolean,default:!1},trigger:{default:"click"},teleport:{default:"body"}},emits:["isvisible"],setup(t,{expose:o,emit:r}){const n=t,a=r,l=e.ref(!1),g=e.ref([]),p=e.ref(null),h=e.ref(null),s=e.ref(null),c=x=>{var $,Z;if(!x){l.value=!1;return}($=h.value)!=null&&$.contains(x.target)||(Z=s.value)!=null&&Z.contains(x.target)||(l.value=!1)},u=x=>{l.value&&s.value&&!s.value.contains(x.target)&&(l.value=!1)},i=()=>{l.value=!1},d=()=>{l.value&&(l.value=!1)},m=()=>{let x=p.value;for(;x&&x!==document.body;)(x.scrollHeight>x.clientHeight||x.scrollWidth>x.clientWidth)&&(x.addEventListener("scroll",i),g.value.push(x)),x=x.parentElement;document.body&&(document.body.addEventListener("scroll",i),g.value.push(document.body))},_=()=>{g.value.forEach(x=>{x.removeEventListener("scroll",i)}),g.value=[]};e.watch(l,x=>{x?(m(),window.addEventListener("resize",()=>he(n.placement,h.value,s.value)),he(n.placement,h.value,s.value)):window.removeEventListener("resize",()=>he(n.placement,h.value,s.value)),a("isvisible",x)}),e.onMounted(()=>{window.addEventListener("click",c),window.addEventListener("popstate",d),window.addEventListener("scroll",u,!0),m()}),e.onBeforeUnmount(()=>{window.removeEventListener("click",c),window.removeEventListener("popstate",d),_()});const L=()=>{l.value=!0,he(n.placement,h.value,s.value)},I=()=>{l.value=!1},k=async()=>{await he(n.placement,h.value,s.value),l.value=!l.value};return o({togglePopover:k}),(x,$)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"popover",ref:p,class:"vs-popover inline-block"},[e.createElementVNode("div",_t,[x.trigger==="click"?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popoverRef",ref:h,onClick:k,class:e.normalizeClass({"pointer-events-none":x.disabled})},[e.renderSlot(x.$slots,"reference",{},()=>[$[0]||($[0]=e.createElementVNode("button",null,"Click me!",-1))])],2)):e.createCommentVNode("",!0),x.trigger==="hover"?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"popoverRef",ref:h,onMouseover:L,onMouseleave:I,class:e.normalizeClass({"pointer-events-none":x.disabled})},[e.renderSlot(x.$slots,"reference",{},()=>[$[1]||($[1]=e.createElementVNode("button",null,"Click me!",-1))])],34)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:x.teleport},[e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["vsTailwind vs-popover__content",x.placement]),ref_key:"contentPop",ref:s,style:e.normalizeStyle({width:x.width?x.width+"px":"fit-content",zIndex:10002})},[e.createElementVNode("div",Vt,[e.renderSlot(x.$slots,"default",{},()=>[$[2]||($[2]=e.createElementVNode("span",null,"Popover content",-1))])])],6),[[e.vShow,l.value]])]),_:3})],8,["to"]))])],512))}});e.reactive({visible:!0});const Et={class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},Ct={key:0,class:"p-5 pb-3 flex justify-between items-start gap-[30px]"},Bt={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Lt={class:"flex flex-col gap-1"},Nt={class:"flex flex-col gap-1 p-5 pt-0"},vt=["innerHTML"],$t=P({__name:"vs-info-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,r=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.title)||""}),n=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.content)||""}),a=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.goTo)||[]});return(l,g)=>{var h,s;const p=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",Et,[r.value||(h=a.value)!=null&&h.length?(e.openBlock(),e.createElementBlock("div",Ct,[e.createElementVNode("h2",Bt,e.toDisplayString(r.value),1),(s=a.value)!=null&&s.length?(e.openBlock(),e.createBlock(e.unref(se),{key:0,placement:"bottom"},{reference:e.withCtx(()=>[e.createVNode(e.unref(se),{trigger:"hover",placement:"right"},{reference:e.withCtx(()=>[...g[0]||(g[0]=[e.createElementVNode("div",{class:"flex items-center justify-center h-8 w-8 transition-colors rounded-full hover:bg-gray-100 cursor-pointer"},[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M4 12H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M4 6H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M4 18H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)])]),default:e.withCtx(()=>[g[1]||(g[1]=e.createTextVNode(" Перейти на карту ",-1))]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",Lt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,c=>(e.openBlock(),e.createElementBlock("div",{key:c.label},[c.url?(e.openBlock(),e.createBlock(p,{key:0,to:c.url,class:"text-sm text-gray-800 dark:text-neutral-200 hover:bg-gray-100 hover:text-blue-600 transition-colors rounded px-2 py-1 block"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.label),1)]),_:2},1032,["to"])):e.createCommentVNode("",!0)]))),128))])]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Nt,[e.createElementVNode("div",{innerHTML:n.value},null,8,vt)])])}}},[["__scopeId","data-v-629caa82"]]),St={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative overflow-hidden"},It={key:0,class:"p-5 pb-3 flex justify-between items-center"},Ft={class:"inline-block font-semibold text-lg text-gray-800"},jt={key:1,class:"flex"},Pt={class:"flex items-center mx-[8px]"},Dt={class:"min-h-[34px] max-h-[34px] overflow-hidden min-w-[34px] flex justify-center items-center bg-stone-100 text-stone-800 py-2 px-3 text-sm rounded-lg"},Mt={class:"min-h-[34px] flex justify-center items-center text-stone-500 py-2 px-1.5 text-sm"},Tt={class:"flex flex-col justify-between pb-5 px-5 h-full overflow-y-auto flex-1 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-300 [&::-webkit-scrollbar-track]:bg-transparent"},zt={key:0,class:"text-center"},At={key:1,class:"text-red-500"},Ot={key:2},Ut=["innerHTML"],Rt={key:1,class:"flow-root"},Ht={class:"-my-3 divide-y divide-gray-100 text-sm"},Zt={class:"font-medium text-gray-900"},Wt={class:"text-gray-700 sm:col-span-2"},qt={key:2,class:"vs-map-card-info__nodata"},Gt={key:3,class:"pt-4 flex justify-end"},Jt=["href"],Ne={__name:"vs-card-widget",props:{config:{type:Object,required:!0},cardValues:{type:Object,required:!0}},emits:["close","content-resize"],setup(t,{emit:o}){const r=t,n=o,a=e.computed(()=>{var I;return((I=r.config)==null?void 0:I.title)||""}),l=e.computed(()=>!!(typeof window.app=="object"&&window.app&&window.app.config)),g=e.ref([]),p=e.ref(!1),h=e.ref(null),s=e.ref(0),c=e.computed(()=>s.value+1),u=e.computed(()=>{var I;return((I=r.info)==null?void 0:I.length)||0}),i=e.computed(()=>g.value[s.value]),d=e.computed(()=>{if(!i.value)return{};const{rows:I,columns:k}=i.value;return!I||!k?{}:k.reduce((x,$)=>(!$.hide&&!["geom","geodata","id"].includes($.name)&&(x[$.ua]=I[$.name]??"-"),x),{})});async function m(){var I,k,x,$,Z,ee;p.value=!0,h.value=null;try{const K={id:(I=r.cardValues)==null?void 0:I.id,layer:typeof((k=r.cardValues)==null?void 0:k.layer)=="object"?($=(x=r.cardValues)==null?void 0:x.layer)==null?void 0:$.id:(Z=r.cardValues)==null?void 0:Z.layer,map:(ee=r.cardValues)==null?void 0:ee.map},J=await fetch("/api/map-format?"+new URLSearchParams(K)).then(ke=>ke.json());g.value[s.value]=J}catch(K){h.value=(K==null?void 0:K.message)||"Помилка запиту"}finally{p.value=!1,await e.nextTick(),n("content-resize")}}function _(){s.value<r.info.length-1&&(s.value+=1,g.value[s.value]||m())}function L(){s.value>0&&(s.value-=1,g.value[s.value]||m())}return e.onMounted(async()=>{await e.nextTick(),m()}),e.watch(()=>r.info,()=>{s.value=0,m(),n("content-resize")},{deep:!0}),e.watch([()=>r.cardValues,()=>r.config],async()=>{await e.nextTick(),m(),n("content-resize")}),(I,k)=>{var x,$;return e.openBlock(),e.createElementBlock("div",St,[a.value?(e.openBlock(),e.createElementBlock("div",It,[e.createElementVNode("h2",Ft,e.toDisplayString(a.value),1),e.createElementVNode("button",{type:"button",class:"size-8 inline-flex justify-center items-center gap-x-2 rounded-full border border-transparent bg-gray-100 text-gray-800 hover:bg-gray-200 focus:outline-none focus:bg-gray-200 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-700 dark:hover:bg-neutral-600 dark:text-neutral-400 dark:focus:bg-neutral-600 ml-2",onClick:k[0]||(k[0]=Z=>n("close"))},[...k[1]||(k[1]=[e.createElementVNode("svg",{class:"shrink-0 size-4 cursor-pointer",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M18 6 6 18"}),e.createElementVNode("path",{d:"m6 6 12 12"})],-1)])])])):e.createCommentVNode("",!0),u.value>1?(e.openBlock(),e.createElementBlock("div",jt,[e.createElementVNode("button",{type:"button",class:e.normalizeClass([{"opacity-flex items-center justify-between border-b px-[16px] py-[8px]50 pointer-events-none":c.value===1},"min-h-[34px] min-w-[34px] py-2 px-2.5 inline-flex justify-center items-center gap-x-2 text-sm rounded-lg text-stone-800 hover:bg-stone-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-stone-100"]),onClick:L}," ◀ ",2),e.createElementVNode("div",Pt,[e.createElementVNode("span",Dt,e.toDisplayString(c.value),1),k[2]||(k[2]=e.createElementVNode("span",{class:"min-h-[34px] flex justify-center items-center text-stone-500 py-2 px-1.5 text-sm"},"з",-1)),e.createElementVNode("span",Mt,e.toDisplayString(u.value),1)]),e.createElementVNode("button",{type:"button",onClick:_,class:e.normalizeClass([{"opacity-50 pointer-events-none":c.value===u.value},"min-h-[34px] min-w-[34px] py-2 px-2.5 inline-flex justify-center items-center gap-x-2 text-sm rounded-lg text-stone-800 hover:bg-stone-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-stone-100"])}," ▶ ",2)])):e.createCommentVNode("",!0),e.createElementVNode("div",Tt,[p.value?(e.openBlock(),e.createElementBlock("div",zt,"Завантаження даних...")):h.value?(e.openBlock(),e.createElementBlock("div",At," Помилка завантаження даних ")):(e.openBlock(),e.createElementBlock("div",Ot,[(x=i.value)!=null&&x.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:i.value.html,class:"custom-table-html border-b"},null,8,Ut)):Object.keys(d.value).length?(e.openBlock(),e.createElementBlock("div",Rt,[e.createElementVNode("dl",Ht,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(Z,ee)=>(e.openBlock(),e.createElementBlock("div",{key:ee,class:"grid grid-cols-1 gap-1 py-3 even:bg-gray-50 sm:grid-cols-3 sm:gap-4"},[e.createElementVNode("dt",Zt,e.toDisplayString(ee),1),e.createElementVNode("dd",Wt,e.toDisplayString(Z),1)]))),128))])])):(e.openBlock(),e.createElementBlock("div",qt,"Даних не знайдено."))])),($=i.value)!=null&&$.cardInterface&&l.value?(e.openBlock(),e.createElementBlock("div",Gt,[e.createElementVNode("a",{href:`/card/${i.value.cardInterface}/${i.value.id}`,target:"_blank",class:"w-full !cursor-pointer text-center gap-2 px-3 py-1.5 bg-blue-600 text-white rounded hover:bg-blue-700 transition text-sm font-medium"}," Перейти в реєстр ",8,Jt)])):e.createCommentVNode("",!0)])])}}},Qt={class:"size-full flex flex-col bg-white border border-gray-200 shadow-2xs rounded-xl dark:bg-neutral-800 dark:border-neutral-700"},Yt={key:0,class:"p-5 pb-0 items-center"},Kt={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Xt={class:"h-full p-5"},eo={class:"h-full flex flex-col justify-between space-y-4"},to={class:"space-y-4"},oo={key:0,class:"flex gap-x-1 w-full h-2.5 rounded-full overflow-hidden"},no=["aria-valuenow"],ro={class:"text-sm text-gray-500 px-2 w-full py-2 cursor-pointer !flex flex-row items-center rounded-lg group hover:bg-gray-100"},lo=["for"],ao={key:0,width:"16",height:"auto",src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J3doaXRlJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00xMi4yMDcgNC43OTNhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMGwtMi0yYTEgMSAwIDAxMS40MTQtMS40MTRMNi41IDkuMDg2bDQuMjkzLTQuMjkzYTEgMSAwIDAxMS40MTQgMHonLz48L3N2Zz4="},io=["id","onUpdate:modelValue"],so={class:"ml-2 text-gray-800 dark:text-neutral-200"},co={key:0,class:"ms-auto text-xs text-gray-500 dark:text-neutral-500"},po={__name:"vs-attributre-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0}},setup(t){const o=t,r=e.computed(()=>{var h;return((h=o.config)==null?void 0:h.title)||""}),n=e.ref([]),a=e.computed(()=>o.config.layer.style.rules.some(h=>h.count!==void 0)),l=e.computed(()=>o.config.layer.style.rules.reduce((h,s)=>h+(s.count||0),0)),g=h=>!h||l.value===0?0:Math.round(h/l.value*100),p=()=>{const s=o.config.layer.style.rules.filter((c,u)=>n.value[u]).map(c=>c.id||c.value).join(",");if(o.config.layer.id){const c=o.map.getSource(o.config.layer.id);if(c){const i=c.tiles[0].split("?filter=")[0],d=s?`${i}?filter=${o.config.layer.style.attribute}=${s}`:i;c.setTiles([d])}}};return e.onMounted(()=>{var h;(h=o.config)!=null&&h.layer&&(X(o.map,o.config.layer),n.value=new Array(o.config.layer.style.rules.length).fill(!1))}),(h,s)=>(e.openBlock(),e.createElementBlock("div",Qt,[r.value?(e.openBlock(),e.createElementBlock("div",Yt,[e.createElementVNode("div",null,[e.createElementVNode("h2",Kt,e.toDisplayString(r.value),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Xt,[e.createElementVNode("div",eo,[e.createElementVNode("div",to,[a.value?(e.openBlock(),e.createElementBlock("div",oo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(c,u)=>(e.openBlock(),e.createElementBlock("div",{key:u,class:"flex flex-col justify-center overflow-hidden text-xs text-white text-center whitespace-nowrap",style:e.normalizeStyle({width:`${g(c.count)}%`,backgroundColor:c.color}),role:"progressbar","aria-valuenow":g(c.count),"aria-valuemin":"0","aria-valuemax":"100"},null,12,no))),128))])):e.createCommentVNode("",!0),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(c,u)=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createElementVNode("div",ro,[e.createElementVNode("label",{for:`filter-${u}`,class:"flex items-center w-full cursor-pointer"},[e.createElementVNode("div",{class:"w-[18px] h-[18px] border rounded-[4px] flex items-center justify-center",style:e.normalizeStyle({background:n.value[u]?c.color||"#2563eb":"#fff",borderColor:n.value[u]?c.color||"#2563eb":c.color||"#d9d9d9"})},[n.value[u]?(e.openBlock(),e.createElementBlock("img",ao)):e.createCommentVNode("",!0)],4),e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:`filter-${u}`,"onUpdate:modelValue":i=>n.value[u]=i,onChange:p,class:"hidden",disabled:!1},null,40,io),[[e.vModelCheckbox,n.value[u]]]),e.createElementVNode("span",so,e.toDisplayString(c.label||c.text),1),a.value?(e.openBlock(),e.createElementBlock("span",co,"("+e.toDisplayString(c.count)+")",1)):e.createCommentVNode("",!0)],8,lo)])]))),128))])])])])]))}},mo={},ho={class:"shrink-0 size-4",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"};function uo(t,o){return e.openBlock(),e.createElementBlock("svg",ho,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M18 6 6 18"},null,-1),e.createElementVNode("path",{d:"m6 6 12 12"},null,-1)])])}const ve=P(mo,[["render",uo]]),go={class:"hover:bg-gray-100 rounded-lg flex items-center ml-[20px] py-[8px] px-[8px]"},fo=["for"],yo={class:"custom-checkbox-wrapper"},bo=["id","checked"],wo={class:"custom-checkbox"},xo={key:0,xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},ko={class:"flex items-center justify-between ml-2 w-full"},_o=["title"],Vo={key:0,class:"text-xs opacity-60 text-[#4b5563]"},Eo=P({__name:"vs-map-catalog-item",props:{layer:{type:Object,required:!0},map:{type:Object,default:()=>null},selectedLayers:{type:Array,default:()=>[]}},emits:["select","remove"],setup(t,{emit:o}){const r=t,n=o,a=e.computed(()=>r.selectedLayers.some(p=>p.id===r.layer.id)),l=p=>Intl.NumberFormat("uk",{notation:"compact"}).format(p),g=p=>{n(p?"select":"remove",r.layer)};return(p,h)=>{var s,c,u,i,d;return e.openBlock(),e.createElementBlock("div",go,[e.createElementVNode("label",{class:"flex items-center w-full cursor-pointer",for:t.layer.id},[e.createElementVNode("div",yo,[e.createElementVNode("input",{id:t.layer.id,type:"checkbox",checked:a.value,onChange:h[0]||(h[0]=m=>g(m.target.checked)),class:"custom-checkbox-input"},null,40,bo),e.createElementVNode("div",wo,[a.value?(e.openBlock(),e.createElementBlock("svg",xo,[...h[1]||(h[1]=[e.createElementVNode("path",{d:"M10.6663 1L4.24967 7.41667L1.33301 4.5",stroke:"#fff","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ko,[e.createElementVNode("div",{class:"whitespace-nowrap text text-ellipsis max-w-[260px] overflow-hidden text-[13px] text-[#4b5563]",title:(s=t.layer)==null?void 0:s.name},e.toDisplayString(((c=t.layer)==null?void 0:c.name)||((u=t.layer)==null?void 0:u.title)),9,_o),isNaN(l((i=t.layer)==null?void 0:i.count))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Vo,e.toDisplayString(l((d=t.layer)==null?void 0:d.count)),1))])],8,fo)])}}},[["__scopeId","data-v-b96f3537"]]),Co={},Bo={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-zoom-in"};function Lo(t,o){return e.openBlock(),e.createElementBlock("svg",Bo,[...o[0]||(o[0]=[e.createElementVNode("circle",{cx:"11",cy:"11",r:"8"},null,-1),e.createElementVNode("line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"},null,-1),e.createElementVNode("line",{x1:"11",x2:"11",y1:"8",y2:"14"},null,-1),e.createElementVNode("line",{x1:"8",x2:"14",y1:"11",y2:"11"},null,-1)])])}const No=P(Co,[["render",Lo]]),vo={},$o={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-info"};function So(t,o){return e.openBlock(),e.createElementBlock("svg",$o,[...o[0]||(o[0]=[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"},null,-1),e.createElementVNode("path",{d:"M12 16v-4"},null,-1),e.createElementVNode("path",{d:"M12 8h.01"},null,-1)])])}const Io=P(vo,[["render",So]]),Fo={},jo={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-table"};function Po(t,o){return e.openBlock(),e.createElementBlock("svg",jo,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M12 3v18"},null,-1),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"},null,-1),e.createElementVNode("path",{d:"M3 9h18"},null,-1),e.createElementVNode("path",{d:"M3 15h18"},null,-1)])])}const Do=P(Fo,[["render",Po]]),Mo={},To={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-trash2"};function zo(t,o){return e.openBlock(),e.createElementBlock("svg",To,[...o[0]||(o[0]=[e.createStaticVNode('<path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1="10" x2="10" y1="11" y2="17"></line><line x1="14" x2="14" y1="11" y2="17"></line>',5)])])}const Ao=P(Mo,[["render",zo]]),Oo={},Uo={xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-more-vertical text-gray-600"};function Ro(t,o){return e.openBlock(),e.createElementBlock("svg",Uo,[...o[0]||(o[0]=[e.createElementVNode("circle",{cx:"12",cy:"12",r:"1"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"5",r:"1"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1"},null,-1)])])}const Ho=P(Oo,[["render",Ro]]),Zo={},Wo={width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function qo(t,o){return e.openBlock(),e.createElementBlock("svg",Wo,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const Go=P(Zo,[["render",qo]]),Jo={},Qo={width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Yo(t,o){return e.openBlock(),e.createElementBlock("svg",Qo,[...o[0]||(o[0]=[e.createStaticVNode('<g clip-path="url(#clip0_231_103)"><path d="M12 20L9 21V12.5L4.52 7.572C4.18545 7.20393 4.00005 6.7244 4 6.227V4H20V6.172C19.9999 6.70239 19.7891 7.21101 19.414 7.586L15 12" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path><path d="M21.121 20.1209C21.5406 19.7014 21.8265 19.1668 21.9423 18.5849C22.0581 18.0029 21.9988 17.3997 21.7717 16.8514C21.5447 16.3032 21.1602 15.8346 20.6668 15.5049C20.1734 15.1752 19.5934 14.9993 19 14.9993C18.4066 14.9993 17.8266 15.1752 17.3332 15.5049C16.8398 15.8346 16.4553 16.3032 16.2283 16.8514C16.0012 17.3997 15.9419 18.0029 16.0577 18.5849C16.1735 19.1668 16.4594 19.7014 16.879 20.1209C17.297 20.5399 18.004 21.1659 19 21.9999C20.051 21.1099 20.759 20.4839 21.121 20.1209Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path><path d="M19 18V18.01" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path></g><defs><clipPath id="clip0_231_103"><rect width="24" height="24" fill="white"></rect></clipPath></defs>',2)])])}const Ko=P(Jo,[["render",Yo]]);function Xo(){const o=new URLSearchParams(window.location.search).get("layers");return o?o.split(","):[]}function en(t){const o=new URLSearchParams(window.location.search);t.length>0?o.set("layers",t.join(",")):o.delete("layers");const r=`${window.location.pathname}?${o.toString()}`;window.history.replaceState({},"",r)}const tn={components:{VsPopover:se,VsLayersItem:Eo,ZoomInIcon:No,InfoIcon:Io,TableIcon:Do,TrashIcon:Ao,DotsIcon:Ho,ChevronRightIcon:Go,FilterIcon:Ko,closeIcon:ve,searchIcon:Le},props:{center:{type:Array,default:()=>[26.2516,50.6199]},zoom:{type:Number,default:12},map:{type:Object,default:()=>null},history:{type:Boolean,default:!1}},emits:["content-resize"],data(){return{layers:null,rawCatalog:null,categories:null,selectedCategory:"",search:"",activeView:"catalog",selectedLayers:[],mounted:!1,draggedLayerIndex:null,filterType:"",filterCategory:""}},computed:{searchedLayers(){return this.layers.filter(({name:t})=>t==null?void 0:t.toLowerCase().match(this.search.toLowerCase()))}},async mounted(){if(this.mounted=!0,await this.getLayers(),this.categories=this.layersCategories(),this.history){const t=Xo();t.length>0&&this.layers&&(t.forEach(o=>{const r=this.layers.find(n=>String(n.id)===o);if(r&&!this.selectedLayers.find(n=>n.id===r.id)){const n={...r,visible:!0,opacity:100,showFilters:!1};this.selectedLayers.push(n),X(this.map,n)}}),this.activeView="selected")}this._resizeObserver=new window.ResizeObserver(()=>{this.$emit("content-resize")}),this.$nextTick(()=>{const t=this.$el;t&&this._resizeObserver.observe(t)})},beforeUnmount(){this._resizeObserver&&this._resizeObserver.disconnect()},watch:{selectedLayers:{handler(t){this.history&&en(t.map(o=>o.id))},deep:!0}},methods:{async getLayers(){try{const t=await fetch("/api/map-catalog").then(r=>r.json()),o=(t.services||[]).filter(r=>r.service_type!=="other");this.layers=[...o,...t.rasters||[]],this.rawCatalog={...t,services:o}}catch(t){console.error("Помилка завантаження шарів:",t)}},layersCategories(){return this.rawCatalog?{Сервіси:this.rawCatalog.services||[],Растри:this.rawCatalog.rasters||[]}:{}},selectCategory(t){this.selectedCategory=this.selectedCategory===t?"":t},formatNumber(t){return Intl.NumberFormat("uk",{notation:"compact"}).format(t)},onEnter(){this.layers.filter(({name:t})=>t==null?void 0:t.toLowerCase().match(this.search.toLowerCase()))},clearSearch(){this.search=""},addToSelected(t){if(!this.selectedLayers.find(o=>o.id===t.id)){const o={...t,visible:!0,opacity:100,showFilters:!1};this.selectedLayers.unshift(o),X(this.map,o)}},deleteLayer(t){const o=this.selectedLayers.findIndex(r=>r.id===t.id);o!==-1&&this.selectedLayers.splice(o,1),ie(this.map,t.id)},async toggleLayerVisibility(t){try{t.visible?(await X(this.map,t),this.updateLayerOpacity(t)):await ie(this.map,t.id)}catch(o){console.error("Error toggling layer visibility:",o),t.visible=!t.visible}},onLayerOpacityChange(t){this.updateLayerOpacity(t)},updateLayerOpacity(t){if(this.map){const o=this.map.getStyle().layers.filter(n=>n.id.includes(t.id)),r=t.opacity/100;o.forEach(n=>{n.type==="fill"?(t.originalFillOpacity||(t.originalFillOpacity=this.map.getPaintProperty(n.id,"fill-opacity")||1),this.map.setPaintProperty(n.id,"fill-opacity",t.originalFillOpacity*r)):n.type==="raster"?this.map.setPaintProperty(n.id,"raster-opacity",r):n.type==="line"?this.map.setPaintProperty(n.id,"line-opacity",r):n.type==="circle"?(this.map.setPaintProperty(n.id,"circle-opacity",r),this.map.setPaintProperty(n.id,"circle-stroke-opacity",r)):n.type==="symbol"&&(this.map.setPaintProperty(n.id,"icon-opacity",r),this.map.setPaintProperty(n.id,"text-opacity",r))})}},async handleRemoveFromCatalog(t){const o=this.selectedLayers.find(r=>r.id===t.id);o!=null&&o.visible&&await ie(this.map,t.id),this.deleteLayer(t)},clearSelectedLayers(){this.selectedLayers.forEach(async t=>{t.visible&&await ie(this.map,t.id)}),this.selectedLayers=[]},zoomToLayer(t){this.fitBoundsByLayer(t)},showLayerInfo(t){},showLayerTable(t){},showLayerFilter(t){t.showFilters=!t.showFilters},fitBoundsByLayer(t){t&&t.bbox&&Array.isArray(t.bbox)&&t.bbox.length===4&&this.map&&this.map.fitBounds([[t.bbox[0],t.bbox[1]],[t.bbox[2],t.bbox[3]]],{padding:50,duration:0})},async handleFilterChange({url:t},o){const r=this.map.getSource(o.id);if(r){const a=r.tiles[0].split("?filter=")[0],l=t?`${a}?filter=${t}`:a;r.setTiles([l])}},popoverActions(t){return[{label:"Збільшити до шару",icon:"ZoomInIcon",class:Array.isArray(t.bbox)&&t.bbox.length===4?"text-gray-700 hover:bg-gray-100":"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"zoomToLayer"},{label:"Інформація про шар",icon:"InfoIcon",class:"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"showLayerInfo"},{label:"Таблиця шару",icon:"TableIcon",class:"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"showLayerTable"},{divider:!0},{label:"Видалити шар",icon:"TrashIcon",class:"text-red-600 hover:bg-red-50",handler:"deleteLayer"}]},onDragStart(t){this.draggedLayerIndex=t},onDragOver(t){},onDrop(t){if(this.draggedLayerIndex===null||this.draggedLayerIndex===t)return;const o=this.selectedLayers[this.draggedLayerIndex];if(this.selectedLayers.splice(this.draggedLayerIndex,1),this.selectedLayers.splice(t,0,o),this.draggedLayerIndex=null,this.map&&this.selectedLayers.length>1)for(let r=this.selectedLayers.length-1;r>=0;r--){const n=this.selectedLayers[r];n.visible&&this.map.getStyle().layers.find(a=>a.id.includes(n.id))&&this.map.getStyle().layers.forEach(a=>{a.id.includes(n.id)&&this.map.moveLayer(a.id)})}},onDragEnd(){this.draggedLayerIndex=null}}},on={class:"w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm"},nn={class:"flex items-center justify-between mb-4"},rn={class:"flex items-center gap-2"},ln={class:"text-lg font-semibold text-gray-800"},an={key:0},sn={key:1},cn={class:"flex mb-4 border-b border-gray-200"},dn={key:0},pn={class:"mb-4"},mn={key:0,class:"space-y-2 max-h-[400px] overflow-y-auto pr-1 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-300 [&::-webkit-scrollbar-track]:bg-transparent"},hn=["onDragstart","onDragover","onDrop"],un={class:"flex items-center justify-between"},gn={class:"flex items-center gap-2 cursor-move"},fn=["onUpdate:modelValue","onChange"],yn={class:"text-gray-800"},bn={class:"flex items-center gap-2"},wn={class:"relative"},xn={class:"flex items-center gap-2"},kn=["onUpdate:modelValue","onInput"],_n={class:"text-xs text-gray-600 whitespace-nowrap"},Vn=["onClick"],En={class:"relative"},Cn={class:"w-48"},Bn={key:0,class:"my-1 border-gray-200"},Ln=["disabled","onClick"],Nn={class:"p-1 rounded-full hover:bg-gray-100 transition-colors","aria-label":"Layer actions"},vn={key:0,class:"bg-blue-50 rounded-md mt-2"},$n={class:"px-2 pt-2 text-blue-600 hover:text-blue-700 transition-colors"},Sn={key:0,class:"text-center text-[14px] text-[#4b5563]"},In={class:"relative mt-[10px]"},Fn={key:0,class:"vs-layers-catalog__list flex-1 scrollable-container overflow-auto mt-2 catalog-list"},jn={key:0,class:"text-center text-[14px] text-[#4b5563]"},Pn={key:0,class:"text-center text-[14px] text-[#4b5563]"},Dn=["onClick"],Mn={class:"flex items-center gap-x-3"},Tn=["title"],zn={class:"text-xs opacity-60 text-[#4b5563]"};function An(t,o,r,n,a,l){var d;const g=e.resolveComponent("VsPopover"),p=e.resolveComponent("DotsIcon"),h=e.resolveComponent("VsFilter"),s=e.resolveComponent("searchIcon"),c=e.resolveComponent("closeIcon"),u=e.resolveComponent("VsLayersItem"),i=e.resolveComponent("chevronRightIcon");return e.openBlock(),e.createElementBlock("div",on,[e.createElementVNode("div",nn,[e.createElementVNode("div",rn,[o[7]||(o[7]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-layers text-blue-600"},[e.createElementVNode("path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z"}),e.createElementVNode("path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65"}),e.createElementVNode("path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65"})],-1)),e.createElementVNode("h2",ln,[e.createTextVNode(e.toDisplayString(a.activeView==="catalog"?"Каталог":"Вибрані шари")+" ",1),a.activeView==="catalog"?(e.openBlock(),e.createElementBlock("span",an,"("+e.toDisplayString(((d=a.layers)==null?void 0:d.length)||0)+")",1)):(e.openBlock(),e.createElementBlock("span",sn,"("+e.toDisplayString(a.selectedLayers.length)+")",1))])]),e.createElementVNode("button",{class:"p-1 rounded-full hover:bg-gray-200 transition-colors","aria-label":"Reset layers",onClick:o[0]||(o[0]=(...m)=>l.clearSelectedLayers&&l.clearSelectedLayers(...m))},[...o[8]||(o[8]=[e.createStaticVNode('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw text-gray-600" data-v-e9e7021a><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-e9e7021a></path><path d="M21 3v5h-5" data-v-e9e7021a></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" data-v-e9e7021a></path><path d="M8 16H3v5" data-v-e9e7021a></path></svg>',1)])])]),e.createElementVNode("div",cn,[e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",a.activeView==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[1]||(o[1]=m=>a.activeView="catalog")}," Каталог ",2),e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",a.activeView==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[2]||(o[2]=m=>a.activeView="selected")}," Вибрані шари ",2)]),a.activeView==="selected"?(e.openBlock(),e.createElementBlock("div",dn,[e.createElementVNode("div",pn,[e.createElementVNode("button",{class:"flex items-center gap-2 text-blue-600 hover:text-blue-700 transition-colors px-3 py-2 rounded-md bg-blue-50 hover:bg-blue-100 w-full justify-center",onClick:o[3]||(o[3]=m=>a.activeView="catalog")},[...o[9]||(o[9]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-plus"},[e.createElementVNode("path",{d:"M5 12h14"}),e.createElementVNode("path",{d:"M12 5v14"})],-1),e.createElementVNode("span",null,"Вибрати шар",-1)])])]),a.mounted?(e.openBlock(),e.createElementBlock("div",mn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.selectedLayers,(m,_)=>{var L,I;return e.openBlock(),e.createElementBlock("div",{key:m.id||_,class:e.normalizeClass(["border border-gray-200 rounded-md p-3 mb-2 bg-white shadow-sm text-[13px] text-[#4b5563]",{dragging:a.draggedLayerIndex===_}]),draggable:"true",onDragstart:k=>l.onDragStart(_),onDragover:e.withModifiers(k=>l.onDragOver(_),["prevent"]),onDrop:k=>l.onDrop(_),onDragend:o[4]||(o[4]=(...k)=>l.onDragEnd&&l.onDragEnd(...k))},[e.createElementVNode("div",un,[e.createElementVNode("div",gn,[o[10]||(o[10]=e.createStaticVNode('<svg width="16" height="16" fill="none" stroke="#9ca3af" stroke-width="2" viewBox="0 0 24 24" class="mr-1 shrink-0" data-v-e9e7021a><circle cx="5" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="5" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="5" cy="19" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="19" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="19" r="1.5" data-v-e9e7021a></circle></svg>',1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"w-4 h-4 text-blue-600 rounded focus:ring-blue-500","onUpdate:modelValue":k=>m.visible=k,onChange:k=>l.toggleLayerVisibility(m)},null,40,fn),[[e.vModelCheckbox,m.visible]]),e.createElementVNode("span",yn,e.toDisplayString(m.name||m.title||m.label),1)]),e.createElementVNode("div",bn,[e.createElementVNode("div",wn,[e.createVNode(g,{placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("div",{class:"text-sm text-gray-600 hover:text-gray-800 transition-colors px-2 py-1 rounded hover:bg-gray-100 cursor-pointer",onClick:k=>l.updateLayerOpacity(m)},e.toDisplayString(m.opacity||100)+"% ",9,Vn)]),default:e.withCtx(()=>[e.createElementVNode("div",xn,[o[11]||(o[11]=e.createElementVNode("label",{class:"text-gray-600 whitespace-nowrap"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":k=>m.opacity=k,onInput:k=>l.onLayerOpacityChange(m),class:"h-2 w-full accent-blue-600 rounded-lg cursor-pointer bg-gray-200"},null,40,kn),[[e.vModelText,m.opacity]]),e.createElementVNode("span",_n,e.toDisplayString(Math.round(m.opacity))+"% ",1)])]),_:2},1024)]),e.createElementVNode("div",En,[e.createVNode(g,{placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("div",Nn,[e.createVNode(p)])]),default:e.withCtx(()=>[e.createElementVNode("div",Cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.popoverActions(m),(k,x)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:x},[k.divider?(e.openBlock(),e.createElementBlock("hr",Bn)):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass("w-full p-2 text-left text-sm flex items-center gap-2 "+(k.class||"")),disabled:k.disabled,onClick:$=>!k.disabled&&t.$options.methods[k.handler].call(this,m)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(k.icon),{class:"lucide"})),e.createTextVNode(" "+e.toDisplayString(k.label),1)],10,Ln))],64))),128))])]),_:2},1024)])])]),m.showFilters?(e.openBlock(),e.createElementBlock("div",vn,[e.createElementVNode("div",$n," Фільтри для шару: "+e.toDisplayString(m.name||m.title||m.label),1),e.withDirectives(e.createVNode(h,{ref_for:!0,ref:"filter",scheme:m.filters,header:!1,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:k=>l.handleFilterChange(k,m)},null,8,["scheme","onFilterChange"]),[[e.vShow,(L=m.filters)==null?void 0:L.length]]),e.withDirectives(e.createElementVNode("div",null,[...o[12]||(o[12]=[e.createElementVNode("div",{class:"px-2 text-[14px] text-[#4b5563]"}," Фільтри для шару відсутні ",-1)])],512),[[e.vShow,!((I=m.filters)!=null&&I.length)]])])):e.createCommentVNode("",!0)],42,hn)}),128)),a.selectedLayers.length===0?(e.openBlock(),e.createElementBlock("div",Sn,[...o[13]||(o[13]=[e.createElementVNode("p",null,'Щоб додати шар, натисніть на кнопку "Вибрати шар".',-1)])])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",In,[e.withDirectives(e.createElementVNode("input",{title:"value",placeholder:"Введіть назву шару...","onUpdate:modelValue":o[5]||(o[5]=m=>a.search=m),type:"text",class:"py-[7px] pl-8 pe-8 block w-full bg-gray-100 border-transparent rounded-lg text-sm focus:bg-white focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-700 dark:border-transparent dark:text-neutral-400 dark:placeholder:text-neutral-400 dark:focus:bg-neutral-800 dark:focus:ring-neutral-600",onKeyup:o[6]||(o[6]=e.withKeys((...m)=>l.onEnter&&l.onEnter(...m),["enter"]))},null,544),[[e.vModelText,a.search]]),e.createVNode(s,{class:"absolute top-1/2 left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0, -50%)"}}),a.search?(e.openBlock(),e.createBlock(c,{key:0,class:"absolute top-1/2 right-[10px] w-[16px] h-[16px] cursor-pointer",style:{transform:"translate(0, -50%)"},onClick:l.clearSearch},null,8,["onClick"])):e.createCommentVNode("",!0)]),a.categories?(e.openBlock(),e.createElementBlock("div",Fn,[a.search?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.searchedLayers,(m,_)=>(e.openBlock(),e.createBlock(u,{key:_,layer:m,map:r.map,selectedLayers:a.selectedLayers,onSelect:l.addToSelected,onRemove:l.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128)),l.searchedLayers.length===0?(e.openBlock(),e.createElementBlock("div",jn," Нічого не знайдено ")):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[!a.categories||Object.keys(a.categories).length===0?(e.openBlock(),e.createElementBlock("div",Pn," Каталог порожній ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(Object.keys(a.categories),m=>(e.openBlock(),e.createElementBlock("div",{key:m},[e.createElementVNode("div",{class:"hover:bg-gray-100 focus:bg-gray-100 px-2.5 cursor-pointer p-[8px] rounded-lg flex justify-between items-center",onClick:_=>l.selectCategory(m)},[e.createElementVNode("div",Mn,[e.createVNode(i,{class:e.normalizeClass({"rotate-up":m===a.selectedCategory,"rotate-down":m!==a.selectedCategory})},null,8,["class"]),e.createElementVNode("div",{class:"max-w-[260px] text-[14px] text-[#4b5563]",title:m},e.toDisplayString(m),9,Tn)]),e.createElementVNode("div",zn,e.toDisplayString(l.formatNumber(a.categories[m].length)),1)],8,Dn),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.categories[m],(_,L)=>(e.openBlock(),e.createBlock(u,{key:L,layer:_,map:r.map,selectedLayers:a.selectedLayers,onSelect:l.addToSelected,onRemove:l.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128))],512),[[e.vShow,m===a.selectedCategory]])]))),128))],64))])):e.createCommentVNode("",!0)],64))])}const On=P(tn,[["render",An],["__scopeId","data-v-e9e7021a"]]),Un={key:0,class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},Rn={key:0,class:"p-5 pb-3 flex justify-between items-center"},Hn={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Zn={class:"flex flex-col justify-between h-full"},Wn={__name:"vs-filters-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0},enabledLayerIds:{type:Array,default:()=>[]}},setup(t){const o=t,r=e.computed(()=>{var g;return((g=o.config)==null?void 0:g.filters)||[]}),n=e.computed(()=>r.value),a=e.computed(()=>{var p;const g=(p=o.config)==null?void 0:p.conditions;return!g||!g.layers?!0:o.enabledLayerIds.some(h=>g.layers.includes(h))}),l=async({data:g})=>{var u;const p=Object.entries(g).map(i=>i.join("=")).join("|"),h=(u=o.config)==null?void 0:u.conditions,s=(h==null?void 0:h.layers)||[],c=o.enabledLayerIds.filter(i=>s.includes(i));c.length&&c.forEach(i=>{const d=o.map.getSource(i);if(d){const _=d.tiles[0].split("?filter=")[0],L=p?`${_}?filter=${p}`:_;d.setTiles([L])}})};return(g,p)=>a.value?(e.openBlock(),e.createElementBlock("div",Un,[t.config.title?(e.openBlock(),e.createElementBlock("div",Rn,[e.createElementVNode("h2",Hn,e.toDisplayString(t.config.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Zn,[e.createVNode(e.unref(je),{ref:"filter",schema:n.value,view:"vertical",onChange:l},null,8,["schema"])])])):e.createCommentVNode("",!0)}},qn={type:"button",class:"py-2 px-2.5 inline-flex items-center gap-x-1.5 text-sm font-medium rounded-lg bg-white text-gray-800 hover:bg-gray-50 focus:outline-none focus:bg-gray-49 h-[38px] shadow-md"},Gn={class:"flex gap-[5px] items-center"},Jn={class:"text-gray-600"},Qn={key:0,class:"w-[16px] h-[16px] font-medium bg-gray-800 text-white rounded-full flex items-center justify-center text-[10px]"},Yn={__name:"vs-inline-filters-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0},enabledLayerIds:{type:Array,default:()=>[]}},setup(t){const o=t,r=e.ref(0),n=e.ref(null),a=e.computed(()=>{var s;return((s=o.config)==null?void 0:s.filters)||[]}),l=e.computed(()=>a.value.map(s=>({...s,id:s.name}))),g=e.computed(()=>{var c;const s=(c=o.config)==null?void 0:c.conditions;return!s||!s.layers?!0:o.enabledLayerIds.some(u=>s.layers.includes(u))}),p=e.computed(()=>{var s;if(o.enabledLayerIds&&o.enabledLayerIds.length){const u=(((s=o.config)==null?void 0:s.layers)||[]).find(i=>i.id===o.enabledLayerIds[0]);return(u==null?void 0:u.title)||(u==null?void 0:u.name)||(u==null?void 0:u.label)||o.enabledLayerIds[0]}return""}),h=async({url:s})=>{var d,m;const c=(d=o.config)==null?void 0:d.conditions;if(!c){const _=(m=o.config)==null?void 0:m.layer_id;if(!_)return;const L=o.map.getSource(_);if(L){const k=L.tiles[0].split("?filter=")[0],x=s?`${k}?filter=${s}`:k;L.setTiles([x])}return}const u=(c==null?void 0:c.layers)||[],i=o.enabledLayerIds.filter(_=>u.includes(_));i.length&&i.forEach(_=>{const L=o.map.getSource(_);if(L){const k=L.tiles[0].split("?filter=")[0],x=s?`${k}?filter=${s}`:k;L.setTiles([x])}})};return e.watch(()=>o.enabledLayerIds,s=>{(!s||!s.length)&&n.value&&(n.value.activeFilters={},r.value=0)}),e.watch(()=>{var s;return(s=n.value)==null?void 0:s.activeFilters},s=>{r.value=Object.keys(s||{}).length},{deep:!0}),(s,c)=>{const u=e.resolveComponent("VsPopover"),i=e.resolveComponent("VsFilterList");return g.value&&l.value.length?(e.openBlock(),e.createBlock(i,{key:0,ref_key:"filter",ref:n,isDialog:t.config.dialog??!0,scheme:l.value,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:h},{button:e.withCtx(({visible:d})=>[e.createVNode(u,{teleport:"body",trigger:"hover",placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("button",qn,[e.createElementVNode("div",Gn,[c[0]||(c[0]=e.createElementVNode("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M12 20L9 21V12.5L4.52 7.572C4.18545 7.20393 4.00005 6.7244 4 6.227V4H20V6.172C19.9999 6.70239 19.7891 7.21101 19.414 7.586L15 12",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M21.121 20.1209C21.5406 19.7014 21.8265 19.1668 21.9423 18.5849C22.0581 18.0029 21.9988 17.3997 21.7717 16.8514C21.5447 16.3032 21.1602 15.8346 20.6668 15.5049C20.1734 15.1752 19.5934 14.9993 19 14.9993C18.4066 14.9993 17.8266 15.1752 17.3332 15.5049C16.8398 15.8346 16.4553 16.3032 16.2283 16.8514C16.0012 17.3997 15.9419 18.0029 16.0577 18.5849C16.1735 19.1668 16.4594 19.7014 16.879 20.1209C17.297 20.5399 18.004 21.1659 19 21.9999C20.051 21.1099 20.759 20.4839 21.121 20.1209Z",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M19 18V18.01",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),e.createElementVNode("span",Jn,e.toDisplayString(p.value),1),r.value?(e.openBlock(),e.createElementBlock("span",Qn,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)])])]),default:e.withCtx(()=>[c[1]||(c[1]=e.createTextVNode(" Відкрити бокову панель ",-1))]),_:1})]),_:1},8,["isDialog","scheme"])):e.createCommentVNode("",!0)}}},Kn={name:"VsListWidget",props:{config:{type:Object,required:!0}},data(){return{items:[],total:0,currentPage:1,limit:16,rootEl:null,resizeObserver:null}},methods:{async fetchData(){const t={page:this.currentPage,limit:this.limit};try{const o=await fetch(this.config.api+"?"+new URLSearchParams(t)).then(r=>r.json());this.items=o.rows,this.total=o.total,this.$emit("content-resize")}catch(o){console.error("Error fetching data:",o)}},handlePageChange(t){this.currentPage=t,this.fetchData()},changeLimit(t){this.limit=t,this.currentPage=1,this.fetchData()}},mounted(){this.fetchData(),this.resizeObserver=new ResizeObserver(()=>{this.$emit("content-resize")}),this.$nextTick(()=>{this.$refs.rootEl&&this.resizeObserver.observe(this.$refs.rootEl)})},beforeUnmount(){this.resizeObserver&&this.$refs.rootEl&&(this.resizeObserver.unobserve(this.$refs.rootEl),this.resizeObserver.disconnect())}},Xn={class:"bg-white p-4 rounded-lg h-full flex flex-col overflow-hidden",ref:"rootEl"},er={key:0,class:"flex flex-col flex-1 overflow-hidden"},tr={class:"space-y-0 overflow-y-auto flex-1 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-300 [&::-webkit-scrollbar-track]:bg-transparent"},or=["onClick"],nr={class:"text-base font-medium"},rr={class:"mt-2 flex flex-wrap gap-2"},lr={key:1,class:"px-2 py-1 text-sm bg-gray-100 rounded-full"},ar={key:0,class:"my-5 pr-2"},ir={class:"paginationWrapper relative flex justify-center"},sr={key:1,class:"text-center text-slate-400"};function cr(t,o,r,n,a,l){var p;const g=e.resolveComponent("VsPagination");return e.openBlock(),e.createElementBlock("div",Xn,[o[0]||(o[0]=e.createElementVNode("h2",{class:"text-xl font-semibold mb-4"},"Список",-1)),((p=a.items)==null?void 0:p.length)>0?(e.openBlock(),e.createElementBlock("div",er,[e.createElementVNode("div",tr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,h=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:"py-4 border-b last:border-b-0 hover:bg-gray-50",onClick:s=>t.$emit("cardValuesId",h.id)},[e.createElementVNode("h3",nr,e.toDisplayString(h.name),1),e.createElementVNode("div",rr,[h.status_data?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["px-2 py-1 text-sm rounded-full",{"bg-green-100 text-green-800":h.status_data.color==="green","bg-red-100 text-red-800":h.status_data.color==="red"}])},e.toDisplayString(h.status_data.text),3)):e.createCommentVNode("",!0),h.class_mbd_id_data?(e.openBlock(),e.createElementBlock("span",lr,e.toDisplayString(h.class_mbd_id_data.text),1)):e.createCommentVNode("",!0)])],8,or))),128))]),a.total>a.limit?(e.openBlock(),e.createElementBlock("div",ar,[e.createElementVNode("div",ir,[e.createVNode(g,{total:a.total,maxPages:4,defaultPage:a.currentPage,pageSize:a.limit,goTo:!1,size:"medium",onPageChange:l.handlePageChange,backgroundColor:"#e5e7eb",borderedCellSelected:!0,pageSizes:[16,32,48,64],onPageSizeChange:l.changeLimit},null,8,["total","defaultPage","pageSize","onPageChange","onPageSizeChange"])])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",sr,"Немає даних"))],512)}const dr=P(Kn,[["render",cr]]),pr={class:"map-skeleton-loader"},mr=P({__name:"vs-skeleton-loader",setup(t){return(o,r)=>(e.openBlock(),e.createElementBlock("div",pr,[...r[0]||(r[0]=[e.createElementVNode("div",{class:"dot-pulse"},null,-1)])]))}},[["__scopeId","data-v-954c1e03"]]),hr={},ur={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function gr(t,o){return e.openBlock(),e.createElementBlock("svg",ur,[...o[0]||(o[0]=[e.createElementVNode("title",null,"Globe Icon",-1),e.createElementVNode("desc",null," A circular representation of a globe with horizontal and vertical lines ",-1),e.createElementVNode("path",{d:"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M2 12H22",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M12 2C14.5013 4.73835 15.9228 8.29203 16 12C15.9228 15.708 14.5013 19.2616 12 22C9.49872 19.2616 8.07725 15.708 8 12C8.07725 8.29203 9.49872 4.73835 12 2Z",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const fr={components:{homeIcon:P(hr,[["render",gr]])},name:"vs-homezoom",props:{map:{type:Object},initialView:{type:Object,default:()=>({})}},methods:{homeZoom(){!this.map||!this.initialView||(this.initialView.bbox?this.map.fitBounds(this.initialView.bbox,{duration:0,padding:10}):this.initialView.center&&this.initialView.zoom!==void 0&&(this.map.setCenter(this.initialView.center),this.map.setZoom(this.initialView.zoom)),this.initialView.pitch!==void 0&&this.map.setPitch(this.initialView.pitch),this.initialView.bearing!==void 0&&this.map.setBearing(this.initialView.bearing))}},computed:{}};function yr(t,o,r,n,a,l){const g=e.resolveComponent("homeIcon"),p=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(p,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(g,{onClick:l.homeZoom,class:"w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"},null,8,["onClick"])]),default:e.withCtx(()=>[o[0]||(o[0]=e.createElementVNode("div",null,"Повернутися до початкових налаштувань",-1))]),_:1})])}const br=P(fr,[["render",yr]]),wr={},xr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function kr(t,o){return e.openBlock(),e.createElementBlock("svg",xr,[...o[0]||(o[0]=[e.createElementVNode("title",null,"Document with Two Sections Icon",-1),e.createElementVNode("desc",null,"A document icon with a split design indicating two sections",-1),e.createElementVNode("path",{d:"M6 9V2H18V9",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M6 18H4C3.46957 18 2.96086 17.7893 2.58579 17.4142C2.21071 17.0391 2 16.5304 2 16V11C2 10.4696 2.21071 9.96086 2.58579 9.58579C2.96086 9.21071 3.46957 9 4 9H20C20.5304 9 21.0391 9.21071 21.4142 9.58579C21.7893 9.96086 22 10.4696 22 11V16C22 16.5304 21.7893 17.0391 21.4142 17.4142C21.0391 17.7893 20.5304 18 20 18H18",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M18 14H6V22H18V14Z",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const _r={components:{printIcon:P(wr,[["render",kr]]),VsPopover:se},props:{map:{type:Object},activeTool:String,setActiveTool:Function},data(){return{printVisible:!1,scriptElements:[],styleElements:[],resourcesLoaded:!1}},watch:{activeTool(t){t!=="print"?this.printVisible=!1:this.init()},async printVisible(t){!this.resourcesLoaded&&t?(await this.loadResources(),this.init(),this.simulateClick()):this.removeResources()},activeTool(t,o){t!=="print"&&o==="print"&&(this.closePrint&&this.closePrint(),this.printVisible=!1),t==="print"&&!this.printVisible&&(this.printVisible=!0,this.init())}},computed:{modalButtonClasses(){return{"!bg-[#DBEAFE]":this.printVisible,"bg-white":!this.printVisible}}},mounted(){document.addEventListener("click",t=>{const o=document.querySelector(".mapboxgl-export-list");if(o&&o.contains(t.target)){t.stopPropagation();return}!t.target.classList.contains("mapboxgl-export-list")&&!t.target.classList.contains("print-button")&&!t.target.classList.contains("mapboxgl-export-control")&&!t.target.id.includes("mapbox-gl-export")&&(this.printVisible=!1)})},methods:{addScript(t){return new Promise((o,r)=>{const n=document.createElement("script");n.src=t,n.async=!0,n.onload=o,n.onerror=r,document.head.appendChild(n),this.scriptElements.push(n)})},addStyle(t){return new Promise((o,r)=>{const n=document.createElement("link");n.href=t,n.rel="stylesheet",n.type="text/css",n.onload=o,n.onerror=r,document.head.appendChild(n),this.styleElements.push(n)})},async loadResources(){try{await this.addStyle("https://cdn.jsdelivr.net/npm/@watergis/mapbox-gl-export@3.5.4/dist/mapbox-gl-export.min.css"),await this.addScript("https://cdn.jsdelivr.net/npm/@watergis/mapbox-gl-export@3.5.4/dist/mapbox-gl-export.umd.min.js"),this.resourcesLoaded=!0}catch(t){console.error("Failed to load resources:",t)}},removeResources(){this.scriptElements.forEach(t=>{t.parentNode&&t.parentNode.removeChild(t)}),this.scriptElements=[],this.styleElements.forEach(t=>{t.parentNode&&t.parentNode.removeChild(t)}),this.styleElements=[],this.resourcesLoaded=!1},async toggleResources(){this.printVisible=!this.printVisible},init(){if(!window.MapboxExportControl){console.error("MapboxExportControl is not loaded.");return}window.mapboxgl.accessToken="pk.eyJ1Ijoia3Jpemhhbm92c2t5IiwiYSI6ImNsemkxNWtkODA5dDcycnNhMWZzYWM0MTAifQ.6fEpgfd_2mA4UYuflDewpQ";const{MapboxExportControl:t,Size:o,PageOrientation:r,Format:n,DPI:a}=window.MapboxExportControl;this.map.addControl(new t({PageSize:o.A3,PageOrientation:r.Portrait,Format:n.PNG,DPI:a[96],Crosshair:!0,PrintableArea:!0,Local:"uk"}))},simulateClick(){new Promise(o=>{const r=setTimeout(()=>{const n=document.querySelector(".mapboxgl-export-control");n&&(clearInterval(r),o(n))},100)}).then(o=>{o.click()}).catch(()=>{console.error("Print button not found.")})},togglePrint(){!this.activeTool||this.activeTool!=="print"?this.setActiveTool&&this.setActiveTool("print"):this.setActiveTool&&this.setActiveTool(null),this.printVisible=!this.printVisible,this.printVisible?this.init():this.removeResources()}}};function Vr(t,o,r,n,a,l){const g=e.resolveComponent("printIcon"),p=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(p,{trigger:"hover",placement:"left",teleport:"body"},{reference:e.withCtx(()=>[e.createVNode(g,{onClick:l.togglePrint,class:e.normalizeClass([l.modalButtonClasses,"print-button w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"])},null,8,["onClick","class"])]),default:e.withCtx(()=>[o[0]||(o[0]=e.createElementVNode("div",null,"Надрукувати",-1))]),_:1})}const Er=P(_r,[["render",Vr]]),Cr={props:{map:{type:Object,required:!0}},data(){return{is3D:!1}},components:{VsPopover:se},mounted(){this.map.on("move",this.updateViewStatus),this.updateViewStatus()},beforeUnmount(){this.map.off("move",this.updateViewStatus)},methods:{toggleView(){this.is3D?this.map.easeTo({pitch:0,bearing:0,duration:1e3}):this.map.easeTo({pitch:60,bearing:-29.6,duration:1e3})},updateViewStatus(){this.is3D=this.map.getPitch()!==0}}};function Br(t,o,r,n,a,l){const g=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(g,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createElementVNode("div",{class:"font-light w-full h-[44px] p-[9px] [transition:.3s] hover:[transition:.3s] text-[19px] hover:bg-[#DBEAFE] flex cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]",onClick:o[0]||(o[0]=(...p)=>l.toggleView&&l.toggleView(...p))},e.toDisplayString(a.is3D?"2D":"3D"),1)]),default:e.withCtx(()=>[o[1]||(o[1]=e.createElementVNode("div",null,"Перемикач виду",-1))]),_:1})}const Lr=P(Cr,[["render",Br]]),Nr={props:{bgColor:{type:String,default:"#1E40AF"}}},vr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},$r=["stroke"],Sr=["stroke"],Ir=["stroke"],Fr=["stroke"],jr=["stroke"],Pr=["stroke"];function Dr(t,o,r,n,a,l){return e.openBlock(),e.createElementBlock("svg",vr,[o[0]||(o[0]=e.createElementVNode("title",null,"Target Icon",-1)),o[1]||(o[1]=e.createElementVNode("desc",null,"A target icon with a circular pattern inside a rounded square",-1)),e.createElementVNode("path",{d:"M2 12H5",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,$r),e.createElementVNode("path",{d:"M19 12H22",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Sr),e.createElementVNode("path",{d:"M12 2V5",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Ir),e.createElementVNode("path",{d:"M12 19V22",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Fr),e.createElementVNode("path",{d:"M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19Z",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,jr),e.createElementVNode("path",{d:"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Pr)])}const Mr={components:{geoIcon:P(Nr,[["render",Dr]]),VsPopover:se,closeIcon:ve},data(){return{location:null,data:null,marker:null,showLocation:!1}},computed:{modalButtonClasses(){return{"!bg-[#DBEAFE]":this.showLocation,"bg-white":!this.showLocation}}},props:{map:{type:Object}},beforeUnmount(){var t;(t=this.marker)==null||t.remove()},watch:{activeControl(t,o){t!=="geolocation"&&o==="geolocation"&&(this.showLocation=!1,this.closeGeolocation())}},methods:{togleGeolocation(){this.showLocation=!this.showLocation,this.showLocation?this.getUserLocation():(this.closeGeolocation(),this.activeControl="no")},getUserLocation(){navigator.geolocation?navigator.geolocation.getCurrentPosition(this.onGeolocationSuccess,this.onGeolocationError):(this.showLocation=!1,this.activeControl="no",this.$notify({type:"error",title:"Помилка",message:"Цей браузер не підтримує геолокацію"}),this.$emit("close"))},async onGeolocationSuccess(t){this.location={latitude:t.coords.latitude,longitude:t.coords.longitude};const r=await(await fetch(`https://nominatim.openstreetmap.org/reverse?format=json&lat=${this.location.latitude}&lon=${this.location.longitude}`)).json();this.data=r.address;const n=[this.location.longitude,this.location.latitude],a=[[parseFloat(r.boundingbox[2]),parseFloat(r.boundingbox[0])],[parseFloat(r.boundingbox[3]),parseFloat(r.boundingbox[1])]];this.map.fitBounds(a,{padding:200,maxZoom:16}),this.marker||(this.marker=new Marker({color:"var(--primary)"})),this.marker.setLngLat(n).addTo(this.map),this.activeControl="geolocation"},closeGeolocation(){this.showLocation=!1,this.marker&&(this.marker.remove(),this.marker=null),this.location=null,this.data=null},onGeolocationError(){this.showLocation=!1,this.activeControl="no",this.$notify({type:"error",title:"Помилка",message:"Для визначення геолокації потрібен HTTPS протокол"}),this.$emit("close")}}},Tr={key:0,class:"max-w-[412px] absolute w-full top-[20px] right-[70px] bg-white border rounded-[15px] p-4 z-10"},zr={class:"flex justify-between items-center border-b pb-[16px]"},Ar={class:"d-flex"},Or={class:"pt-[16px]"};function Ur(t,o,r,n,a,l){var s,c,u,i,d,m;const g=e.resolveComponent("closeIcon"),p=e.resolveComponent("geoIcon"),h=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[(e.openBlock(),e.createBlock(e.Teleport,{to:"#maplibre-demo-map"},[a.location?(e.openBlock(),e.createElementBlock("div",Tr,[e.createElementVNode("div",zr,[o[0]||(o[0]=e.createElementVNode("div",{class:"text-lg font-semibold"},"Ваша геолокація",-1)),e.createElementVNode("div",Ar,[e.createVNode(g,{onClick:l.closeGeolocation},null,8,["onClick"])])]),e.createElementVNode("div",Or,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("strong",null,"Широта:",-1)),e.createTextVNode(" "+e.toDisplayString((s=a.location)==null?void 0:s.latitude),1)]),e.createElementVNode("div",null,[o[2]||(o[2]=e.createElementVNode("strong",null,"Довгота:",-1)),e.createTextVNode(" "+e.toDisplayString((c=a.location)==null?void 0:c.longitude),1)]),e.createElementVNode("div",null,[o[3]||(o[3]=e.createElementVNode("strong",null,"КраЇна:",-1)),e.createTextVNode(" "+e.toDisplayString((u=a.data)==null?void 0:u.country),1)]),e.createElementVNode("div",null,[o[4]||(o[4]=e.createElementVNode("strong",null,"Код країни:",-1)),e.createTextVNode(" "+e.toDisplayString((i=a.data)==null?void 0:i.country_code),1)]),e.createElementVNode("div",null,[o[5]||(o[5]=e.createElementVNode("strong",null,"Місто:",-1)),e.createTextVNode(" "+e.toDisplayString((d=a.data)==null?void 0:d.city),1)]),e.createElementVNode("div",null,[o[6]||(o[6]=e.createElementVNode("strong",null,"Поштовий індекс:",-1)),e.createTextVNode(" "+e.toDisplayString((m=a.data)==null?void 0:m.postcode),1)])])])):e.createCommentVNode("",!0)])),e.createVNode(h,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(p,{onClick:l.togleGeolocation,class:e.normalizeClass([l.modalButtonClasses,"w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"])},null,8,["onClick","class"])]),default:e.withCtx(()=>[o[7]||(o[7]=e.createElementVNode("div",null,"Дізнатися геолокацію",-1))]),_:1})])}const Rr=P(Mr,[["render",Ur]]),fe={__name:"vs-map-widget-column",props:{position:String,widgets:Array,map:Object,mapLoaded:Boolean,cardValues:Object,hasFilters:Boolean,currentFilterLayer:Object,enabledLayerIds:Array,getWidgetComponent:Function,getColumnWidth:Function,rightColumnOffset:[String,Number],maxHeight:Number,history:Boolean},emits:["set-filter-layer","update:enabledLayerIds","cardValuesId","closeCard","content-resize"],setup(t,{expose:o,emit:r}){const n=r,a=t,l=e.ref(a.widgets.map(s=>{var c;return{...s,config:{...s.config,visible:((c=s.config)==null?void 0:c.visible)!==!1}}}));e.watch(()=>a.widgets.map(s=>s.id||s.type).join(","),()=>{l.value=a.widgets.map(s=>{var c;return{...s,config:{...s.config,visible:((c=s.config)==null?void 0:c.visible)!==!1}}})});function g(s){const c=l.value.find(u=>u.id===s);c&&c.config&&(c.config.visible=!c.config.visible,setTimeout(()=>{n("content-resize")},30))}const p=e.ref(null);o({columnRef:p});let h=null;return e.onMounted(()=>{h=new MutationObserver(()=>{var s;clearTimeout((s=p.value)==null?void 0:s._resizeTimeout),p.value._resizeTimeout=setTimeout(()=>{n("content-resize")},30)}),p.value&&h.observe(p.value,{childList:!0,subtree:!0,characterData:!0})}),e.onUnmounted(()=>{h&&h.disconnect()}),(s,c)=>t.mapLoaded?(e.openBlock(),e.createElementBlock("div",{key:0,class:"widget-column",ref_key:"columnRef",ref:p,style:e.normalizeStyle({width:t.getColumnWidth(t.position),paddingRight:t.rightColumnOffset})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,u=>{var i;return e.openBlock(),e.createElementBlock(e.Fragment,{key:u.id||u.type},[u.type!=="card"?e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.getWidgetComponent(u.type)),{key:0,map:t.map,config:u.config,hasFilters:t.hasFilters,currentLayer:t.currentFilterLayer,enabledLayerIds:t.enabledLayerIds,history:t.history,onSetFilterLayer:c[0]||(c[0]=d=>s.$emit("set-filter-layer",d)),"onUpdate:enabledLayerIds":c[1]||(c[1]=d=>s.$emit("update:enabledLayerIds",d)),onCardValuesId:c[2]||(c[2]=d=>s.$emit("cardValuesId",d)),onShowWidget:g,onCatalogLayers:c[3]||(c[3]=d=>s.$emit("catalog-layers",d)),class:"widget"},null,40,["map","config","hasFilters","currentLayer","enabledLayerIds","history"])),[[e.vShow,((i=u.config)==null?void 0:i.visible)!==!1]]):e.createCommentVNode("",!0),t.cardValues&&u.type==="card"?(e.openBlock(),e.createBlock(Ne,{key:1,config:u.config,cardValues:t.cardValues,class:"widget",onClose:c[4]||(c[4]=d=>s.$emit("closeCard"))},null,8,["config","cardValues"])):e.createCommentVNode("",!0)],64)}),128))],4)):e.createCommentVNode("",!0)}},Hr={class:"map-widgets-flex"},Zr={class:"widgets-left"},Wr={class:"widgets-top"},qr={class:"widgets-bottom"},Gr={class:"widgets-right"},Jr={class:"widgets-top"},Qr={class:"widgets-bottom"},Yr={class:"absolute top-[180px] right-2 z-10 flex flex-col gap-[5px]"},xe=P(e.defineComponent({__name:"vs-map",props:{table:{},name:{},height:{}},setup(t){const o=e.getCurrentInstance(),r=t,n=e.ref(null),a=e.ref(!1);let l=null;const g=e.ref(null),p=e.ref(null),h=e.ref([]),s=e.ref([]),c=e.ref(null),u=e.ref(null),i=e.ref(null),d=e.ref([]);let m=null;function _(y){return!i.value||!i.value.widgets?[]:y==="center"?[...i.value.widgets.filter(w=>(w.position||{})==="center")||[],...s.value.filter(w=>w.position==="center")]:i.value.widgets.filter(f=>(f.position||{})===y)||[]}const L=(y,f,w)=>f[y]||y,I=(y,f,w,C,b)=>{const V=L(y,C),N=f?L(f,C):"";let B="";return w!=null&&w.length&&(B=w.map(D=>{const S=L(D.value,C);return`
1
+ (function(W,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@opengis/filter")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/filter"],e):(W=typeof globalThis<"u"?globalThis:W||self,e(W.MapCustom={},W.Vue,W.openGISfilter))})(this,(function(W,e,Se){"use strict";const P=(t,o)=>{const r=t.__vccOpts||t;for(const[n,a]of o)r[n]=a;return r},Ie={key:0,class:"p-5 pb-0 flex justify-between items-center"},Fe={class:"inline-block font-semibold text-lg text-gray-800"},je={class:"flex flex-col gap-1 p-5"},De={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},Pe={key:0,class:"ms-2 text-xs text-gray-500"},Me=P({__name:"vs-legend-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,r=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.items)||[]}),n=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.title)||""});return(a,l)=>(e.openBlock(),e.createElementBlock("div",{class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative",style:e.normalizeStyle({width:t.config.width||"100%"})},[n.value?(e.openBlock(),e.createElementBlock("div",Ie,[e.createElementVNode("h2",Fe,e.toDisplayString(n.value),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,g=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center",key:g.label},[e.createElementVNode("span",{class:e.normalizeClass(["shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px]",[g.shape==="square"?"rounded-sm":"",g.shape==="circle"?"rounded-full":"",g.shape==="line"?"w-6 h-0.5":"",g.shape==="dashed-line"?"w-6 h-0.5 dashed-line":""]]),style:e.normalizeStyle({backgroundColor:g.color})},null,6),e.createElementVNode("span",De,[e.createElementVNode("span",null,e.toDisplayString(g.label),1),g.count!==void 0?(e.openBlock(),e.createElementBlock("span",Pe," ("+e.toDisplayString(g.count)+") ",1)):e.createCommentVNode("",!0)])]))),128))])],4))}},[["__scopeId","data-v-dd12cf90"]]),Te={class:"flex flex-row gap-x-3 z-10 relative"},ze=["onClick"],Ae=["src","alt"],Oe={__name:"vs-basemaps-widget",props:{map:{type:Object,required:!0},config:{type:Object,default:()=>({})},position:{type:String,default:"bottom-left"}},setup(t){const o=t,r=e.ref("voyager"),n=e.computed(()=>{var h;if(!((h=o.config)!=null&&h.layers))return[];const p=o.config.layers.map(s=>({id:s.id,title:s.label||s.title,url:s.url,service:s.type,category:"Базові карти",attribution:s.attribution,image:s.image,enabled:!0,owner:s.owner||"Unknown"}));return p.push({id:"__none__",title:"Без підложки",url:"",service:"",category:"Базові карти",attribution:"",enabled:!0,owner:""}),p});function a(p){return{version:8,sources:{[p.id]:{type:"raster",tiles:[p.url],tileSize:256,attribution:p.attribution||""}},layers:[{id:p.id,type:"raster",source:p.id}]}}const l=p=>{if(!o.map)return;const h=o.map.getStyle(),s=n.value.map(d=>d.id),c=h.layers.filter(d=>!s.includes(d.id)),u={};for(const d in h.sources)s.includes(d)||(u[d]=h.sources[d]);if(p.id==="__none__"){const d={version:8,sources:{...u},layers:[...c]};o.map.setStyle(d);return}const i=a(p);o.map.setStyle(i),o.map.once("styledata",()=>{for(const[d,m]of Object.entries(u))o.map.getSource(d)||o.map.addSource(d,m);for(const d of c)o.map.getLayer(d.id)||o.map.addLayer(d)})},g=p=>{r.value=p;const h=n.value.find(s=>s.id===p);h&&o.map&&l(h)};return e.onMounted(()=>{var p;(p=o.config)!=null&&p.default&&(r.value=o.config.default),g(r.value)}),(p,h)=>{const s=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",Te,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,c=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{trigger:"hover",placement:"top",key:c.id},[e.createElementVNode("div",{class:e.normalizeClass(["w-14 h-14 flex items-center justify-center bg-gray-200 rounded-xl shadow-2xs cursor-pointer transition-all border-4",r.value===c.id?"border-blue-400":"border-transparent"]),onClick:u=>g(c.id)},[c.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:c.image,alt:c.title,class:e.normalizeClass(["object-cover rounded-lg",c.id==="__none__"?"w-10 h-10":"w-12 h-12"])},null,10,Ae)):e.createCommentVNode("",!0)],10,ze)])),[[s,c.title]])),128))])}}};function ie(t){if(!t.attrType||!t.attribute||!t.rules)return t.color||"#ccc";const o=t.rules.map(r=>[["==",["get",t.attribute],r.id||r.value],r.color]);return o.push(t.color||"#ccc"),["case",...o.flat()]}function Ue(t){if(!t.attrType||t.attrType!=="icon-by-attribute"||!t.attribute||!t.rules)return t.default_icon||null;const o=t.rules.map(r=>[["==",["get",t.attribute],r.value],r.icon]);return o.push(t.default_icon||"marker.svg"),["case",...o.flat()]}function _e(t){if(!t.attrType||t.attrType!=="attribute-pattern"||!t.attribute||!t.rules)return t.fillPattern||"";const o=t.rules.map(r=>[["==",["get",t.attribute],r.value],r.fillPattern||""]);return o.push(t.fillPattern||""),["case",...o.flat()]}function G(t,o="stroke",r="#ccc"){return["case",["boolean",["feature-state","hovered"],!1],"#ff0000",["boolean",["feature-state","selected"],!1],"#ff0000",t[o]||r]}function Re(t){const o=[{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":ie(t),"fill-outline-color":G(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":_e(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",paint:{"line-color":G(t,"stroke","#ccc"),"line-width":t.width||2,"line-opacity":t.lineOpacity||t.opacity||1}}];return t.pointZoom&&o.push({type:"circle",maxzoom:t.pointZoom,paint:{"circle-color":t.color||"#ccc","circle-stroke-color":G(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-opacity":t.opacity||1}}),o}function He(t){return[{type:"line",paint:{"line-color":G(t,"color",ie(t)),"line-width":t.width||2,"line-opacity":t.opacity||1,...t.dashArray&&{"line-dasharray":t.dashArray}},layout:{...t.lineCap&&{"line-cap":t.lineCap},...t.lineJoin&&{"line-join":t.lineJoin}}}]}function Ze(t){const o=[{type:"circle",maxzoom:t.icon&&+t.iconZoom||22,paint:{"circle-radius":t.radius||6,"circle-stroke-color":G(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":ie(t),"circle-opacity":t.opacity||1}}];return t!=null&&t.clusterZoom?(o.push({type:"circle",filter:["has","point_count"],paint:{"circle-color":["step",["get","point_count"],"#51bbd6",100,"#f1f075",750,"#f28cb1"],"circle-radius":["step",["get","point_count"],20,100,30,750,40]}}),o.push({type:"symbol",filter:["has","point_count"],layout:{"text-field":["get","point_count"],"text-font":["Open Sans Regular"],"text-size":12}})):t.icon&&o.push({type:"symbol",minzoom:+t.iconZoom||16,layout:{"icon-image":t.icon,"icon-allow-overlap":!0}}),o}function We(t,o,r){const n=t.type||"point";return n==="polygon"?[{type:"fill",...r!==void 0?{maxzoom:r}:{},paint:{"fill-color":ie(t),"fill-outline-color":G(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":_e(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",...r!==void 0?{maxzoom:r}:{},paint:{"line-color":G(t,"stroke","#ccc"),"line-width":t.width||2,"line-opacity":t.lineOpacity||t.opacity||1}}]:n==="line"?[{type:"line",...r!==void 0?{maxzoom:r}:{},paint:{"line-color":G(t,"color",ie(t)),"line-width":t.width||2,"line-opacity":t.opacity||1,...t.dashArray&&{"line-dasharray":t.dashArray}},layout:{...t.lineCap&&{"line-cap":t.lineCap},...t.lineJoin&&{"line-join":t.lineJoin}}}]:[{type:"circle",...r!==void 0?{maxzoom:r}:{},paint:{"circle-radius":t.radius||6,"circle-stroke-color":G(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":ie(t),"circle-opacity":t.opacity||1}}]}function Ve(t){var r,n;if(!t)return null;if(t.attrType==="icon-by-attribute"&&t.iconZoom){const a=Ue(t),l=Array.isArray(a)&&a[0]==="case"?a:["case",["==",["get",t.attribute],((n=(r=t.rules)==null?void 0:r[0])==null?void 0:n.value)||""],a,a],g=We(t,void 0,+t.iconZoom),p={type:"symbol",minzoom:+t.iconZoom,layout:{"icon-image":l,"icon-size":(t==null?void 0:t.icon_size)||1,"icon-allow-overlap":!0,"icon-anchor":(t==null?void 0:t.icon_anchor)||"bottom"},paint:{"icon-opacity":t.opacity||1}};return[...g,p]}const o=t.type||"point";return o==="polygon"?Re(t):o==="line"?He(t):Ze(t)}function qe(t){return t.startsWith("http")?t:`${window.location.origin}${t}`}function Ge(t){const{id:o,sourceLayer:r,url:n,bounds:a,title:l,style:g,service:p,service_type:h,source_type:s,data:c}=t,u=qe(n),i=h||p||s||"vector";switch(i){case"vtile":case"vector":return Qe(o,r,u,a,l,g);case"raster":return Ye(o,u,a,l,g);case"geojson":return Ke(o,c||u,a,l,g);default:throw new Error(`Unsupported layer service type: ${i}`)}}function Je(t){switch(t){case"polygon":return{type:"polygon",color:"#3388ff",opacity:.5};case"line":return{type:"line",color:"#3388ff",opacity:1};case"point":default:return{type:"point",color:"#3388ff",radius:6,opacity:1}}}function Qe(t,o,r,n,a,l){const g=o||(r.match(/\/vtile\/([^/]+)/)||[])[1]||t,p={type:"vector",tiles:[r],...n&&{bounds:n}},c=Ve(l||{}).map((u,i)=>({...u,id:`${t}-${i}`,"source-layer":g,source:t}));return{id:t,title:a,source:p,layers:c,visible:!0}}function Ye(t,o,r,n,a){const l={type:"raster",tiles:[o],tileSize:256,...r&&{bounds:r}},g=a||{},p={id:t,type:"raster",source:t,layout:{visibility:"visible"},...g&&{paint:g}};return{id:t,title:n,source:l,layers:[p],visible:!0}}function Ke(t,o,r,n,a){var c;const l={type:"geojson",data:o,...r&&{bounds:r}};let g="point";if(o&&o.features&&o.features.length>0){const u=(c=o.features[0].geometry)==null?void 0:c.type;u==="Polygon"||u==="MultiPolygon"?g="polygon":u==="LineString"||u==="MultiLineString"?g="line":g="point"}const p=a||Je(g),s=Ve(p).map((u,i)=>({...u,id:`${t}-${i}`,source:t}));return{id:t,title:n,source:l,layers:s,visible:!0}}function Xe(t){if(!t||t.attrType!=="icon-by-attribute")return[];const o=new Set;return t.default_icon&&o.add(t.default_icon),Array.isArray(t.rules)&&t.rules.forEach(r=>{r.icon&&o.add(r.icon)}),Array.from(o).map(r=>({name:r,url:(t.icon_base_url||"")+r}))}function et(t){const o=new Set;function r(n){typeof n=="string"?o.add(n):Array.isArray(n)&&n.forEach(r)}return t&&t["icon-image"]&&r(t["icon-image"]),Array.from(o)}async function Ee(t,o){const r=o.map(async({name:n,url:a})=>{const l=await t.loadImage(a);return{name:n,data:l.data}});try{const n=await Promise.all(r);for(const{name:a,data:l}of n)t.hasImage(a)||t.addImage(a,l)}catch(n){console.error("Failed to load icons:",n)}}function tt(t,o,r="/icons/"){const a=et(o).map(l=>({name:l,url:r+l}));return Ee(t,a)}async function X(t,o){const r=Ge(o),n=Xe(o.style);n.length>0&&await Ee(t,n),o.layout&&o.layout["icon-image"]&&await tt(t,o.layout),t.getSource(r.id)||t.addSource(r.id,r.source);for(const a of r.layers)o.visible!==void 0&&(a.layout={...a.layout,visibility:o.visible?"visible":"none"}),t.getLayer(a.id)?t.setLayoutProperty(a.id,"visibility",o.visible?"visible":"none"):await t.addLayer(a);return r}function se(t,o){t.getStyle().layers.filter(a=>a.source===o).forEach(a=>{t.removeLayer(a.id)}),t.getSource(o)&&t.removeSource(o)}const ot={},nt={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function rt(t,o){return e.openBlock(),e.createElementBlock("svg",nt,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M11 19C15.4183 19 19 15.4183 19 11C19 6.58172 15.4183 3 11 3C6.58172 3 3 6.58172 3 11C3 15.4183 6.58172 19 11 19Z",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M21.0002 21L16.7002 16.7",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const Ce=P(ot,[["render",rt]]),lt={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},at={class:"flex flex-col justify-between h-full pb-5 px-5"},it={key:0,class:"relative mb-[10px]"},st={key:1,class:"mb-4"},ct={class:""},dt={class:"space-y-2"},pt={class:"flex items-center gap-[10px] text-gray-500"},mt={class:"dataset-checkbox-container flex"},ht=["onUpdate:modelValue","onChange"],ut={class:"text-sm"},gt=["onClick"],ft=["innerHTML"],yt={key:0,class:"text-sm text-gray-500 text-center py-2"},bt={__name:"vs-layers-widget",props:{map:{type:Object,required:!0},history:{type:Boolean,default:!1},config:{type:Object,default:()=>({layers:[],search:!1,allow_toggle_all:!1})},position:{type:String,default:"bottom-left"},hasFilters:{type:Boolean,default:!1}},emits:["set-filter-layer","update:enabledLayerIds"],setup(t,{emit:o}){const r=t,n=o,a=e.ref(""),l=e.ref([]);function g(){const m=new URLSearchParams(window.location.search).get("layers");return m?m.split(","):[]}function p(d){const m=new URLSearchParams(window.location.search);d.length>0?m.set("layers",d.join(",")):m.delete("layers");const _=`${window.location.pathname}?${m.toString()}`;window.history.replaceState({},"",_)}e.onMounted(()=>{let d=[];r.history&&(d=g()),d.length>0?l.value=r.config.layers.map(m=>({...m,visible:d.includes(String(m.id))})):l.value=r.config.layers.map(m=>({...m,visible:m.visible??!1})),l.value.forEach(m=>{m.visible&&X(r.map,m)}),n("update:enabledLayerIds",c())});const h=e.computed(()=>{if(!a.value)return l.value;const d=a.value.toLowerCase();return l.value.filter(m=>(m.title||m.name||m.label||"").toLowerCase().includes(d))}),s=e.computed(()=>l.value.every(d=>d.visible)),c=()=>l.value.filter(d=>d.visible).map(d=>d.id),u=d=>{d.visible?X(r.map,d):(se(r.map,d.id),n("set-filter-layer",null)),r.map.getStyle().layers.filter(L=>L.source===d.id).forEach(L=>{r.map.setLayoutProperty(L.id,"visibility",d.visible?"visible":"none")}),n("update:enabledLayerIds",c())},i=()=>{const d=!s.value;l.value.forEach(m=>{m.visible=d,d?X(r.map,m):se(r.map,m.id)}),d||n("set-filter-layer",null),n("update:enabledLayerIds",c())};return e.watch(()=>c(),d=>{r.history&&p(d)},{deep:!0}),(d,m)=>(e.openBlock(),e.createElementBlock("div",lt,[m[1]||(m[1]=e.createElementVNode("div",{class:"p-5 pb-3 flex justify-between items-center"},[e.createElementVNode("h2",{class:"inline-block font-semibold text-lg text-gray-800"},"Шари")],-1)),e.createElementVNode("div",at,[t.config.search?(e.openBlock(),e.createElementBlock("div",it,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":m[0]||(m[0]=_=>a.value=_),placeholder:"Введіть назву шару...",class:"py-[7px] ps-8 pl-8 pe-8 block w-full bg-gray-100 border-transparent rounded-lg text-sm focus:bg-white focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none"},null,512),[[e.vModelText,a.value]]),e.createVNode(Ce)])):e.createCommentVNode("",!0),t.config.allow_toggle_all?(e.openBlock(),e.createElementBlock("div",st,[e.createElementVNode("button",{onClick:i,class:"w-full py-[7px] bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors"},e.toDisplayString(s.value?"Вимкнути всі":"Увімкнути всі"),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",ct,[e.createElementVNode("ul",dt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,_=>(e.openBlock(),e.createElementBlock("li",{key:_.id,class:"flex flex-wrap justify-between items-center gap-x-2"},[e.createElementVNode("label",pt,[e.createElementVNode("span",mt,[e.withDirectives(e.createElementVNode("input",{class:"dataset-checkbox",type:"checkbox","onUpdate:modelValue":L=>_.visible=L,onChange:()=>u(_)},null,40,ht),[[e.vModelCheckbox,_.visible]])]),e.createElementVNode("span",ut,e.toDisplayString(_.title||_.name||_.label),1)]),_.actions&&_.visible?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(_.actions,L=>(e.openBlock(),e.createElementBlock("div",{key:L.id},[e.createElementVNode("button",{class:"text-sm text-gray-500",onClick:S=>d.$emit("show-widget",L.widget)},[e.createElementVNode("div",{innerHTML:L.icon},null,8,ft)],8,gt)]))),128)):e.createCommentVNode("",!0)]))),128)),a.value&&h.value.length===0?(e.openBlock(),e.createElementBlock("li",yt," Шарів не знайдено ")):e.createCommentVNode("",!0)])])])]))}};e.defineComponent({props:{modelValue:{type:Boolean,default:()=>!1},title:{type:String,default:()=>""},disabled:{type:Boolean,default:()=>!1}},data(){return{}},mounted(){this.modelValue||this.$emit("update:modelValue",!1)},computed:{modelState:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},labelCursorClasses(){return[{"cursor-not-allowed":this.disabled},{"cursor-pointer":!this.disabled}]}},methods:{handleEnterDown(t){const{keyCode:o}=t;o===13&&(this.modelState=!this.modelState)},addKeyHandler(){window.addEventListener("keydown",this.handleEnterDown)},removeKeyHandler(){window.removeEventListener("keydown",this.handleEnterDown)}}});const me=async(t,o,r,n=10)=>{var _,L,S,k;if(!o||!r)return;await e.nextTick();const a=await(r==null?void 0:r.getBoundingClientRect()),l=await(o==null?void 0:o.getBoundingClientRect());if(!l||!a)return;const g=await parseInt((_=o==null?void 0:o.getBoundingClientRect())==null?void 0:_.height),p=await parseInt((L=o==null?void 0:o.getBoundingClientRect())==null?void 0:L.width),h=await parseInt((S=r==null?void 0:r.getBoundingClientRect())==null?void 0:S.height),s=await parseInt((k=r==null?void 0:r.getBoundingClientRect())==null?void 0:k.width),c=await window.innerHeight,u=await window.innerWidth;let i=0,d=0;const m=l.bottom+n+h;switch(t){case"top":l.top-a.height-n<0?i=l.top-a.height+n+h+g:i=l.top-a.height-n,u>s+l.right+30?d=l.left-a.width/2+l.width/2:d=u-30-s;break;case"bottom":c>m?i=l.bottom+n:i=l.bottom-n-h-g,d=l.left-a.width/2+l.width/2;break;case"left":i=l.top-a.height/2+l.height/2,l.left-a.width-n>0?d=l.left-a.width-n:d=10;break;case"right":i=l.top-a.height/2+l.height/2,u-p>s?d=l.right+n:d=u-30-s;break;case"top-right":l.top-a.height-n<0?i=l.top-a.height+n+h+g:i=l.top-a.height-n,u-p>s?d=l.right+n:d=u-30-s;break;case"top-left":l.top-a.height-n<0?i=l.top-a.height+n+h+g:i=l.top-a.height-n,l.left-a.width-n>0?d=l.left-a.width-n:d=10;break;case"top-start":l.top-a.height-n<0?i=l.top-a.height+n+h+g:i=l.top-a.height-n,l.left>0?d=l.left:d=10;break;case"bottom-right":c>m?i=l.bottom+n:i=l.bottom-n-h-g,u-p>s?d=l.left:d=u-30-s;break;case"bottom-left":c>m?i=l.bottom+n:i=l.bottom-n-h-g,l.left>0?d=l.right-s:d=10;break;case"bottom-start":c>m?i=l.bottom+n:i=l.bottom-n-h-g,l.left>0?d=l.left:d=10;break}i+h>c?i=c-h-n:i<0&&(i=n),d+s>u?d=u-s-n:d<0&&(d=n),r instanceof HTMLElement&&(r.style.top=`${i}px`,r.style.left=`${d}px`,r.style.position="fixed")},wt={class:"text-center"},xt={class:"py-2 px-4 w-full text-sm text-stone-800 bg-white shadow-[0_10px_40px_10px_rgba(0,0,0,0.08)] rounded-lg focus:outline-none focus:bg-stone-100 dark:bg-neutral-900 dark:text-neutral-200 dark:focus:bg-neutral-800 after:h-4 after:absolute after:-bottom-4 after:start-0 after:w-full before:h-4 before:absolute before:-top-4 before:start-0 before:w-full"},ce=e.defineComponent({__name:"vs-popover",props:{isOpen:{type:Boolean,default:!1},placement:{default:"top"},gap:{default:8},width:{default:""},disabled:{type:Boolean,default:!1},trigger:{default:"click"},teleport:{default:"body"}},emits:["isvisible"],setup(t,{expose:o,emit:r}){const n=t,a=r,l=e.ref(!1),g=e.ref([]),p=e.ref(null),h=e.ref(null),s=e.ref(null),c=x=>{var $,q;if(!x){l.value=!1;return}($=h.value)!=null&&$.contains(x.target)||(q=s.value)!=null&&q.contains(x.target)||(l.value=!1)},u=x=>{l.value&&s.value&&!s.value.contains(x.target)&&(l.value=!1)},i=()=>{l.value=!1},d=()=>{l.value&&(l.value=!1)},m=()=>{let x=p.value;for(;x&&x!==document.body;)(x.scrollHeight>x.clientHeight||x.scrollWidth>x.clientWidth)&&(x.addEventListener("scroll",i),g.value.push(x)),x=x.parentElement;document.body&&(document.body.addEventListener("scroll",i),g.value.push(document.body))},_=()=>{g.value.forEach(x=>{x.removeEventListener("scroll",i)}),g.value=[]};e.watch(l,x=>{x?(m(),window.addEventListener("resize",()=>me(n.placement,h.value,s.value)),me(n.placement,h.value,s.value)):window.removeEventListener("resize",()=>me(n.placement,h.value,s.value)),a("isvisible",x)}),e.onMounted(()=>{window.addEventListener("click",c),window.addEventListener("popstate",d),window.addEventListener("scroll",u,!0),m()}),e.onBeforeUnmount(()=>{window.removeEventListener("click",c),window.removeEventListener("popstate",d),_()});const L=()=>{l.value=!0,me(n.placement,h.value,s.value)},S=()=>{l.value=!1},k=async()=>{await me(n.placement,h.value,s.value),l.value=!l.value};return o({togglePopover:k}),(x,$)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"popover",ref:p,class:"vs-popover inline-block"},[e.createElementVNode("div",wt,[x.trigger==="click"?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popoverRef",ref:h,onClick:k,class:e.normalizeClass({"pointer-events-none":x.disabled})},[e.renderSlot(x.$slots,"reference",{},()=>[$[0]||($[0]=e.createElementVNode("button",null,"Click me!",-1))])],2)):e.createCommentVNode("",!0),x.trigger==="hover"?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"popoverRef",ref:h,onMouseover:L,onMouseleave:S,class:e.normalizeClass({"pointer-events-none":x.disabled})},[e.renderSlot(x.$slots,"reference",{},()=>[$[1]||($[1]=e.createElementVNode("button",null,"Click me!",-1))])],34)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:x.teleport},[e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["vsTailwind vs-popover__content",x.placement]),ref_key:"contentPop",ref:s,style:e.normalizeStyle({width:x.width?x.width+"px":"fit-content",zIndex:10002})},[e.createElementVNode("div",xt,[e.renderSlot(x.$slots,"default",{},()=>[$[2]||($[2]=e.createElementVNode("span",null,"Popover content",-1))])])],6),[[e.vShow,l.value]])]),_:3})],8,["to"]))])],512))}});e.reactive({visible:!0});const kt={class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},_t={key:0,class:"p-5 pb-3 flex justify-between items-start gap-[30px]"},Vt={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Et={class:"flex flex-col gap-1"},Ct={class:"flex flex-col gap-1 p-5 pt-0"},Bt=["innerHTML"],Lt=P({__name:"vs-info-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,r=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.title)||""}),n=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.content)||""}),a=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.goTo)||[]});return(l,g)=>{var h,s;const p=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",kt,[r.value||(h=a.value)!=null&&h.length?(e.openBlock(),e.createElementBlock("div",_t,[e.createElementVNode("h2",Vt,e.toDisplayString(r.value),1),(s=a.value)!=null&&s.length?(e.openBlock(),e.createBlock(e.unref(ce),{key:0,placement:"bottom"},{reference:e.withCtx(()=>[e.createVNode(e.unref(ce),{trigger:"hover",placement:"right"},{reference:e.withCtx(()=>[...g[0]||(g[0]=[e.createElementVNode("div",{class:"flex items-center justify-center h-8 w-8 transition-colors rounded-full hover:bg-gray-100 cursor-pointer"},[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M4 12H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M4 6H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M4 18H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)])]),default:e.withCtx(()=>[g[1]||(g[1]=e.createTextVNode(" Перейти на карту ",-1))]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",Et,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,c=>(e.openBlock(),e.createElementBlock("div",{key:c.label},[c.url?(e.openBlock(),e.createBlock(p,{key:0,to:c.url,class:"text-sm text-gray-800 dark:text-neutral-200 hover:bg-gray-100 hover:text-blue-600 transition-colors rounded px-2 py-1 block"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.label),1)]),_:2},1032,["to"])):e.createCommentVNode("",!0)]))),128))])]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Ct,[e.createElementVNode("div",{innerHTML:n.value},null,8,Bt)])])}}},[["__scopeId","data-v-629caa82"]]),Nt={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative overflow-hidden"},vt={key:0,class:"p-5 pb-3 flex justify-between items-center"},$t={class:"inline-block font-semibold text-lg text-gray-800"},St={key:1,class:"flex"},It={class:"flex items-center mx-[8px]"},Ft={class:"min-h-[34px] max-h-[34px] overflow-hidden min-w-[34px] flex justify-center items-center bg-stone-100 text-stone-800 py-2 px-3 text-sm rounded-lg"},jt={class:"min-h-[34px] flex justify-center items-center text-stone-500 py-2 px-1.5 text-sm"},Dt={class:"flex flex-col justify-between pb-5 px-5 h-full overflow-y-auto flex-1 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-300 [&::-webkit-scrollbar-track]:bg-transparent"},Pt={key:0,class:"text-center"},Mt={key:1,class:"text-red-500"},Tt={key:2},zt=["innerHTML"],At={key:1,class:"flow-root"},Ot={class:"-my-3 divide-y divide-gray-100 text-sm"},Ut={class:"font-medium text-gray-900"},Rt={class:"text-gray-700 sm:col-span-2"},Ht={key:2,class:"vs-map-card-info__nodata"},Zt={key:3,class:"pt-4 flex justify-end"},Wt=["href"],Be={__name:"vs-card-widget",props:{config:{type:Object,required:!0},cardValues:{type:Object,required:!0}},emits:["close","content-resize"],setup(t,{emit:o}){const r=t,n=o,a=e.computed(()=>{var S;return((S=r.config)==null?void 0:S.title)||""}),l=e.computed(()=>!!(typeof window.app=="object"&&window.app&&window.app.config)),g=e.ref([]),p=e.ref(!1),h=e.ref(null),s=e.ref(0),c=e.computed(()=>s.value+1),u=e.computed(()=>{var S;return((S=r.info)==null?void 0:S.length)||0}),i=e.computed(()=>g.value[s.value]),d=e.computed(()=>{if(!i.value)return{};const{rows:S,columns:k}=i.value;return!S||!k?{}:k.reduce((x,$)=>(!$.hide&&!["geom","geodata","id"].includes($.name)&&(x[$.ua]=S[$.name]??"-"),x),{})});async function m(){var S,k,x,$,q,ee;p.value=!0,h.value=null;try{const K={id:(S=r.cardValues)==null?void 0:S.id,layer:typeof((k=r.cardValues)==null?void 0:k.layer)=="object"?($=(x=r.cardValues)==null?void 0:x.layer)==null?void 0:$.id:(q=r.cardValues)==null?void 0:q.layer,map:(ee=r.cardValues)==null?void 0:ee.map},J=await fetch("/api/map-format?"+new URLSearchParams(K)).then(we=>we.json());g.value[s.value]=J}catch(K){h.value=(K==null?void 0:K.message)||"Помилка запиту"}finally{p.value=!1,await e.nextTick(),n("content-resize")}}function _(){s.value<r.info.length-1&&(s.value+=1,g.value[s.value]||m())}function L(){s.value>0&&(s.value-=1,g.value[s.value]||m())}return e.onMounted(async()=>{await e.nextTick(),m()}),e.watch(()=>r.info,()=>{s.value=0,m(),n("content-resize")},{deep:!0}),e.watch([()=>r.cardValues,()=>r.config],async()=>{await e.nextTick(),m(),n("content-resize")}),(S,k)=>{var x,$;return e.openBlock(),e.createElementBlock("div",Nt,[a.value?(e.openBlock(),e.createElementBlock("div",vt,[e.createElementVNode("h2",$t,e.toDisplayString(a.value),1),e.createElementVNode("button",{type:"button",class:"size-8 inline-flex justify-center items-center gap-x-2 rounded-full border border-transparent bg-gray-100 text-gray-800 hover:bg-gray-200 focus:outline-none focus:bg-gray-200 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-700 dark:hover:bg-neutral-600 dark:text-neutral-400 dark:focus:bg-neutral-600 ml-2",onClick:k[0]||(k[0]=q=>n("close"))},[...k[1]||(k[1]=[e.createElementVNode("svg",{class:"shrink-0 size-4 cursor-pointer",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M18 6 6 18"}),e.createElementVNode("path",{d:"m6 6 12 12"})],-1)])])])):e.createCommentVNode("",!0),u.value>1?(e.openBlock(),e.createElementBlock("div",St,[e.createElementVNode("button",{type:"button",class:e.normalizeClass([{"opacity-flex items-center justify-between border-b px-[16px] py-[8px]50 pointer-events-none":c.value===1},"min-h-[34px] min-w-[34px] py-2 px-2.5 inline-flex justify-center items-center gap-x-2 text-sm rounded-lg text-stone-800 hover:bg-stone-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-stone-100"]),onClick:L}," ◀ ",2),e.createElementVNode("div",It,[e.createElementVNode("span",Ft,e.toDisplayString(c.value),1),k[2]||(k[2]=e.createElementVNode("span",{class:"min-h-[34px] flex justify-center items-center text-stone-500 py-2 px-1.5 text-sm"},"з",-1)),e.createElementVNode("span",jt,e.toDisplayString(u.value),1)]),e.createElementVNode("button",{type:"button",onClick:_,class:e.normalizeClass([{"opacity-50 pointer-events-none":c.value===u.value},"min-h-[34px] min-w-[34px] py-2 px-2.5 inline-flex justify-center items-center gap-x-2 text-sm rounded-lg text-stone-800 hover:bg-stone-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-stone-100"])}," ▶ ",2)])):e.createCommentVNode("",!0),e.createElementVNode("div",Dt,[p.value?(e.openBlock(),e.createElementBlock("div",Pt,"Завантаження даних...")):h.value?(e.openBlock(),e.createElementBlock("div",Mt," Помилка завантаження даних ")):(e.openBlock(),e.createElementBlock("div",Tt,[(x=i.value)!=null&&x.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:i.value.html,class:"custom-table-html border-b"},null,8,zt)):Object.keys(d.value).length?(e.openBlock(),e.createElementBlock("div",At,[e.createElementVNode("dl",Ot,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(q,ee)=>(e.openBlock(),e.createElementBlock("div",{key:ee,class:"grid grid-cols-1 gap-1 py-3 even:bg-gray-50 sm:grid-cols-3 sm:gap-4"},[e.createElementVNode("dt",Ut,e.toDisplayString(ee),1),e.createElementVNode("dd",Rt,e.toDisplayString(q),1)]))),128))])])):(e.openBlock(),e.createElementBlock("div",Ht,"Даних не знайдено."))])),($=i.value)!=null&&$.cardInterface&&l.value?(e.openBlock(),e.createElementBlock("div",Zt,[e.createElementVNode("a",{href:`/card/${i.value.cardInterface}/${i.value.id}`,target:"_blank",class:"w-full !cursor-pointer text-center gap-2 px-3 py-1.5 bg-blue-600 text-white rounded hover:bg-blue-700 transition text-sm font-medium"}," Перейти в реєстр ",8,Wt)])):e.createCommentVNode("",!0)])])}}},qt={class:"size-full flex flex-col bg-white border border-gray-200 shadow-2xs rounded-xl dark:bg-neutral-800 dark:border-neutral-700"},Gt={key:0,class:"p-5 pb-0 items-center"},Jt={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Qt={class:"h-full p-5"},Yt={class:"h-full flex flex-col justify-between space-y-4"},Kt={class:"space-y-4"},Xt={key:0,class:"flex gap-x-1 w-full h-2.5 rounded-full overflow-hidden"},eo=["aria-valuenow"],to={class:"text-sm text-gray-500 px-2 w-full py-2 cursor-pointer !flex flex-row items-center rounded-lg group hover:bg-gray-100"},oo=["for"],no={key:0,width:"16",height:"auto",src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J3doaXRlJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00xMi4yMDcgNC43OTNhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMGwtMi0yYTEgMSAwIDAxMS40MTQtMS40MTRMNi41IDkuMDg2bDQuMjkzLTQuMjkzYTEgMSAwIDAxMS40MTQgMHonLz48L3N2Zz4="},ro=["id","onUpdate:modelValue"],lo={class:"ml-2 text-gray-800 dark:text-neutral-200"},ao={key:0,class:"ms-auto text-xs text-gray-500 dark:text-neutral-500"},io={__name:"vs-attributre-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0}},setup(t){const o=t,r=e.computed(()=>{var h;return((h=o.config)==null?void 0:h.title)||""}),n=e.ref([]),a=e.computed(()=>o.config.layer.style.rules.some(h=>h.count!==void 0)),l=e.computed(()=>o.config.layer.style.rules.reduce((h,s)=>h+(s.count||0),0)),g=h=>!h||l.value===0?0:Math.round(h/l.value*100),p=()=>{const s=o.config.layer.style.rules.filter((c,u)=>n.value[u]).map(c=>c.id||c.value).join(",");if(o.config.layer.id){const c=o.map.getSource(o.config.layer.id);if(c){const i=c.tiles[0].split("?filter=")[0],d=s?`${i}?filter=${o.config.layer.style.attribute}=${s}`:i;c.setTiles([d])}}};return e.onMounted(()=>{var h;(h=o.config)!=null&&h.layer&&(X(o.map,o.config.layer),n.value=new Array(o.config.layer.style.rules.length).fill(!1))}),(h,s)=>(e.openBlock(),e.createElementBlock("div",qt,[r.value?(e.openBlock(),e.createElementBlock("div",Gt,[e.createElementVNode("div",null,[e.createElementVNode("h2",Jt,e.toDisplayString(r.value),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Qt,[e.createElementVNode("div",Yt,[e.createElementVNode("div",Kt,[a.value?(e.openBlock(),e.createElementBlock("div",Xt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(c,u)=>(e.openBlock(),e.createElementBlock("div",{key:u,class:"flex flex-col justify-center overflow-hidden text-xs text-white text-center whitespace-nowrap",style:e.normalizeStyle({width:`${g(c.count)}%`,backgroundColor:c.color}),role:"progressbar","aria-valuenow":g(c.count),"aria-valuemin":"0","aria-valuemax":"100"},null,12,eo))),128))])):e.createCommentVNode("",!0),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(c,u)=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createElementVNode("div",to,[e.createElementVNode("label",{for:`filter-${u}`,class:"flex items-center w-full cursor-pointer"},[e.createElementVNode("div",{class:"w-[18px] h-[18px] border rounded-[4px] flex items-center justify-center",style:e.normalizeStyle({background:n.value[u]?c.color||"#2563eb":"#fff",borderColor:n.value[u]?c.color||"#2563eb":c.color||"#d9d9d9"})},[n.value[u]?(e.openBlock(),e.createElementBlock("img",no)):e.createCommentVNode("",!0)],4),e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:`filter-${u}`,"onUpdate:modelValue":i=>n.value[u]=i,onChange:p,class:"hidden",disabled:!1},null,40,ro),[[e.vModelCheckbox,n.value[u]]]),e.createElementVNode("span",lo,e.toDisplayString(c.label||c.text),1),a.value?(e.openBlock(),e.createElementBlock("span",ao,"("+e.toDisplayString(c.count)+")",1)):e.createCommentVNode("",!0)],8,oo)])]))),128))])])])])]))}},so={},co={class:"shrink-0 size-4",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"};function po(t,o){return e.openBlock(),e.createElementBlock("svg",co,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M18 6 6 18"},null,-1),e.createElementVNode("path",{d:"m6 6 12 12"},null,-1)])])}const Le=P(so,[["render",po]]),mo={class:"hover:bg-gray-100 rounded-lg flex items-center ml-[20px] py-[8px] px-[8px]"},ho=["for"],uo={class:"custom-checkbox-wrapper"},go=["id","checked"],fo={class:"custom-checkbox"},yo={key:0,xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},bo={class:"flex items-center justify-between ml-2 w-full"},wo=["title"],xo={key:0,class:"text-xs opacity-60 text-[#4b5563]"},ko=P({__name:"vs-map-catalog-item",props:{layer:{type:Object,required:!0},map:{type:Object,default:()=>null},selectedLayers:{type:Array,default:()=>[]}},emits:["select","remove"],setup(t,{emit:o}){const r=t,n=o,a=e.computed(()=>r.selectedLayers.some(p=>p.id===r.layer.id)),l=p=>Intl.NumberFormat("uk",{notation:"compact"}).format(p),g=p=>{n(p?"select":"remove",r.layer)};return(p,h)=>{var s,c,u,i,d;return e.openBlock(),e.createElementBlock("div",mo,[e.createElementVNode("label",{class:"flex items-center w-full cursor-pointer",for:t.layer.id},[e.createElementVNode("div",uo,[e.createElementVNode("input",{id:t.layer.id,type:"checkbox",checked:a.value,onChange:h[0]||(h[0]=m=>g(m.target.checked)),class:"custom-checkbox-input"},null,40,go),e.createElementVNode("div",fo,[a.value?(e.openBlock(),e.createElementBlock("svg",yo,[...h[1]||(h[1]=[e.createElementVNode("path",{d:"M10.6663 1L4.24967 7.41667L1.33301 4.5",stroke:"#fff","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",bo,[e.createElementVNode("div",{class:"whitespace-nowrap text text-ellipsis max-w-[260px] overflow-hidden text-[13px] text-[#4b5563]",title:(s=t.layer)==null?void 0:s.name},e.toDisplayString(((c=t.layer)==null?void 0:c.name)||((u=t.layer)==null?void 0:u.title)),9,wo),isNaN(l((i=t.layer)==null?void 0:i.count))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",xo,e.toDisplayString(l((d=t.layer)==null?void 0:d.count)),1))])],8,ho)])}}},[["__scopeId","data-v-b96f3537"]]),_o={},Vo={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-zoom-in"};function Eo(t,o){return e.openBlock(),e.createElementBlock("svg",Vo,[...o[0]||(o[0]=[e.createElementVNode("circle",{cx:"11",cy:"11",r:"8"},null,-1),e.createElementVNode("line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"},null,-1),e.createElementVNode("line",{x1:"11",x2:"11",y1:"8",y2:"14"},null,-1),e.createElementVNode("line",{x1:"8",x2:"14",y1:"11",y2:"11"},null,-1)])])}const Co=P(_o,[["render",Eo]]),Bo={},Lo={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-info"};function No(t,o){return e.openBlock(),e.createElementBlock("svg",Lo,[...o[0]||(o[0]=[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"},null,-1),e.createElementVNode("path",{d:"M12 16v-4"},null,-1),e.createElementVNode("path",{d:"M12 8h.01"},null,-1)])])}const vo=P(Bo,[["render",No]]),$o={},So={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-table"};function Io(t,o){return e.openBlock(),e.createElementBlock("svg",So,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M12 3v18"},null,-1),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"},null,-1),e.createElementVNode("path",{d:"M3 9h18"},null,-1),e.createElementVNode("path",{d:"M3 15h18"},null,-1)])])}const Fo=P($o,[["render",Io]]),jo={},Do={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-trash2"};function Po(t,o){return e.openBlock(),e.createElementBlock("svg",Do,[...o[0]||(o[0]=[e.createStaticVNode('<path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1="10" x2="10" y1="11" y2="17"></line><line x1="14" x2="14" y1="11" y2="17"></line>',5)])])}const Mo=P(jo,[["render",Po]]),To={},zo={xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-more-vertical text-gray-600"};function Ao(t,o){return e.openBlock(),e.createElementBlock("svg",zo,[...o[0]||(o[0]=[e.createElementVNode("circle",{cx:"12",cy:"12",r:"1"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"5",r:"1"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1"},null,-1)])])}const Oo=P(To,[["render",Ao]]),Uo={},Ro={width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Ho(t,o){return e.openBlock(),e.createElementBlock("svg",Ro,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const Zo=P(Uo,[["render",Ho]]),Wo={},qo={width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Go(t,o){return e.openBlock(),e.createElementBlock("svg",qo,[...o[0]||(o[0]=[e.createStaticVNode('<g clip-path="url(#clip0_231_103)"><path d="M12 20L9 21V12.5L4.52 7.572C4.18545 7.20393 4.00005 6.7244 4 6.227V4H20V6.172C19.9999 6.70239 19.7891 7.21101 19.414 7.586L15 12" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path><path d="M21.121 20.1209C21.5406 19.7014 21.8265 19.1668 21.9423 18.5849C22.0581 18.0029 21.9988 17.3997 21.7717 16.8514C21.5447 16.3032 21.1602 15.8346 20.6668 15.5049C20.1734 15.1752 19.5934 14.9993 19 14.9993C18.4066 14.9993 17.8266 15.1752 17.3332 15.5049C16.8398 15.8346 16.4553 16.3032 16.2283 16.8514C16.0012 17.3997 15.9419 18.0029 16.0577 18.5849C16.1735 19.1668 16.4594 19.7014 16.879 20.1209C17.297 20.5399 18.004 21.1659 19 21.9999C20.051 21.1099 20.759 20.4839 21.121 20.1209Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path><path d="M19 18V18.01" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path></g><defs><clipPath id="clip0_231_103"><rect width="24" height="24" fill="white"></rect></clipPath></defs>',2)])])}const Jo=P(Wo,[["render",Go]]);function Qo(){const o=new URLSearchParams(window.location.search).get("layers");return o?o.split(","):[]}function Yo(t){const o=new URLSearchParams(window.location.search);t.length>0?o.set("layers",t.join(",")):o.delete("layers");const r=`${window.location.pathname}?${o.toString()}`;window.history.replaceState({},"",r)}const Ko={components:{VsPopover:ce,VsLayersItem:ko,ZoomInIcon:Co,InfoIcon:vo,TableIcon:Fo,TrashIcon:Mo,DotsIcon:Oo,ChevronRightIcon:Zo,FilterIcon:Jo,closeIcon:Le,searchIcon:Ce},props:{center:{type:Array,default:()=>[26.2516,50.6199]},zoom:{type:Number,default:12},map:{type:Object,default:()=>null},history:{type:Boolean,default:!1}},emits:["content-resize"],data(){return{layers:null,rawCatalog:null,categories:null,selectedCategory:"",search:"",activeView:"catalog",selectedLayers:[],mounted:!1,draggedLayerIndex:null,filterType:"",filterCategory:""}},computed:{searchedLayers(){return this.layers.filter(({name:t})=>t==null?void 0:t.toLowerCase().match(this.search.toLowerCase()))}},async mounted(){if(this.mounted=!0,await this.getLayers(),this.categories=this.layersCategories(),this.history){const t=Qo();t.length>0&&this.layers&&(t.forEach(o=>{const r=this.layers.find(n=>String(n.id)===o);if(r&&!this.selectedLayers.find(n=>n.id===r.id)){const n={...r,visible:!0,opacity:100,showFilters:!1};this.selectedLayers.push(n),X(this.map,n)}}),this.activeView="selected")}this._resizeObserver=new window.ResizeObserver(()=>{this.$emit("content-resize")}),this.$nextTick(()=>{const t=this.$el;t&&this._resizeObserver.observe(t)})},beforeUnmount(){this._resizeObserver&&this._resizeObserver.disconnect()},watch:{selectedLayers:{handler(t){this.history&&Yo(t.map(o=>o.id))},deep:!0}},methods:{async getLayers(){try{const t=await fetch("/api/map-catalog").then(r=>r.json()),o=(t.services||[]).filter(r=>r.service_type!=="other");this.layers=[...o,...t.rasters||[]],this.rawCatalog={...t,services:o}}catch(t){console.error("Помилка завантаження шарів:",t)}},layersCategories(){return this.rawCatalog?{Сервіси:this.rawCatalog.services||[],Растри:this.rawCatalog.rasters||[]}:{}},selectCategory(t){this.selectedCategory=this.selectedCategory===t?"":t},formatNumber(t){return Intl.NumberFormat("uk",{notation:"compact"}).format(t)},onEnter(){this.layers.filter(({name:t})=>t==null?void 0:t.toLowerCase().match(this.search.toLowerCase()))},clearSearch(){this.search=""},addToSelected(t){if(!this.selectedLayers.find(o=>o.id===t.id)){const o={...t,visible:!0,opacity:100,showFilters:!1};this.selectedLayers.unshift(o),X(this.map,o)}},deleteLayer(t){const o=this.selectedLayers.findIndex(r=>r.id===t.id);o!==-1&&this.selectedLayers.splice(o,1),se(this.map,t.id)},async toggleLayerVisibility(t){try{t.visible?(await X(this.map,t),this.updateLayerOpacity(t)):await se(this.map,t.id)}catch(o){console.error("Error toggling layer visibility:",o),t.visible=!t.visible}},onLayerOpacityChange(t){this.updateLayerOpacity(t)},updateLayerOpacity(t){if(this.map){const o=this.map.getStyle().layers.filter(n=>n.id.includes(t.id)),r=t.opacity/100;o.forEach(n=>{n.type==="fill"?(t.originalFillOpacity||(t.originalFillOpacity=this.map.getPaintProperty(n.id,"fill-opacity")||1),this.map.setPaintProperty(n.id,"fill-opacity",t.originalFillOpacity*r)):n.type==="raster"?this.map.setPaintProperty(n.id,"raster-opacity",r):n.type==="line"?this.map.setPaintProperty(n.id,"line-opacity",r):n.type==="circle"?(this.map.setPaintProperty(n.id,"circle-opacity",r),this.map.setPaintProperty(n.id,"circle-stroke-opacity",r)):n.type==="symbol"&&(this.map.setPaintProperty(n.id,"icon-opacity",r),this.map.setPaintProperty(n.id,"text-opacity",r))})}},async handleRemoveFromCatalog(t){const o=this.selectedLayers.find(r=>r.id===t.id);o!=null&&o.visible&&await se(this.map,t.id),this.deleteLayer(t)},clearSelectedLayers(){this.selectedLayers.forEach(async t=>{t.visible&&await se(this.map,t.id)}),this.selectedLayers=[]},zoomToLayer(t){this.fitBoundsByLayer(t)},showLayerInfo(t){},showLayerTable(t){},showLayerFilter(t){t.showFilters=!t.showFilters},fitBoundsByLayer(t){t&&t.bbox&&Array.isArray(t.bbox)&&t.bbox.length===4&&this.map&&this.map.fitBounds([[t.bbox[0],t.bbox[1]],[t.bbox[2],t.bbox[3]]],{padding:50,duration:0})},async handleFilterChange({url:t},o){const r=this.map.getSource(o.id);if(r){const a=r.tiles[0].split("?filter=")[0],l=t?`${a}?filter=${t}`:a;r.setTiles([l])}},popoverActions(t){return[{label:"Збільшити до шару",icon:"ZoomInIcon",class:Array.isArray(t.bbox)&&t.bbox.length===4?"text-gray-700 hover:bg-gray-100":"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"zoomToLayer"},{label:"Інформація про шар",icon:"InfoIcon",class:"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"showLayerInfo"},{label:"Таблиця шару",icon:"TableIcon",class:"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"showLayerTable"},{divider:!0},{label:"Видалити шар",icon:"TrashIcon",class:"text-red-600 hover:bg-red-50",handler:"deleteLayer"}]},onDragStart(t){this.draggedLayerIndex=t},onDragOver(t){},onDrop(t){if(this.draggedLayerIndex===null||this.draggedLayerIndex===t)return;const o=this.selectedLayers[this.draggedLayerIndex];if(this.selectedLayers.splice(this.draggedLayerIndex,1),this.selectedLayers.splice(t,0,o),this.draggedLayerIndex=null,this.map&&this.selectedLayers.length>1)for(let r=this.selectedLayers.length-1;r>=0;r--){const n=this.selectedLayers[r];n.visible&&this.map.getStyle().layers.find(a=>a.id.includes(n.id))&&this.map.getStyle().layers.forEach(a=>{a.id.includes(n.id)&&this.map.moveLayer(a.id)})}},onDragEnd(){this.draggedLayerIndex=null}}},Xo={class:"w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm"},en={class:"flex items-center justify-between mb-4"},tn={class:"flex items-center gap-2"},on={class:"text-lg font-semibold text-gray-800"},nn={key:0},rn={key:1},ln={class:"flex mb-4 border-b border-gray-200"},an={key:0},sn={class:"mb-4"},cn={key:0,class:"space-y-2 max-h-[400px] overflow-y-auto pr-1 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-300 [&::-webkit-scrollbar-track]:bg-transparent"},dn=["onDragstart","onDragover","onDrop"],pn={class:"flex items-center justify-between"},mn={class:"flex items-center gap-2 cursor-move"},hn=["onUpdate:modelValue","onChange"],un={class:"text-gray-800"},gn={class:"flex items-center gap-2"},fn={class:"relative"},yn={class:"flex items-center gap-2"},bn=["onUpdate:modelValue","onInput"],wn={class:"text-xs text-gray-600 whitespace-nowrap"},xn=["onClick"],kn={class:"relative"},_n={class:"w-48"},Vn={key:0,class:"my-1 border-gray-200"},En=["disabled","onClick"],Cn={class:"p-1 rounded-full hover:bg-gray-100 transition-colors","aria-label":"Layer actions"},Bn={key:0,class:"bg-blue-50 rounded-md mt-2"},Ln={class:"px-2 pt-2 text-blue-600 hover:text-blue-700 transition-colors"},Nn={key:0,class:"text-center text-[14px] text-[#4b5563]"},vn={class:"relative mt-[10px]"},$n={key:0,class:"vs-layers-catalog__list flex-1 scrollable-container overflow-auto mt-2 catalog-list"},Sn={key:0,class:"text-center text-[14px] text-[#4b5563]"},In={key:0,class:"text-center text-[14px] text-[#4b5563]"},Fn=["onClick"],jn={class:"flex items-center gap-x-3"},Dn=["title"],Pn={class:"text-xs opacity-60 text-[#4b5563]"};function Mn(t,o,r,n,a,l){var d;const g=e.resolveComponent("VsPopover"),p=e.resolveComponent("DotsIcon"),h=e.resolveComponent("VsFilter"),s=e.resolveComponent("searchIcon"),c=e.resolveComponent("closeIcon"),u=e.resolveComponent("VsLayersItem"),i=e.resolveComponent("chevronRightIcon");return e.openBlock(),e.createElementBlock("div",Xo,[e.createElementVNode("div",en,[e.createElementVNode("div",tn,[o[7]||(o[7]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-layers text-blue-600"},[e.createElementVNode("path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z"}),e.createElementVNode("path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65"}),e.createElementVNode("path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65"})],-1)),e.createElementVNode("h2",on,[e.createTextVNode(e.toDisplayString(a.activeView==="catalog"?"Каталог":"Вибрані шари")+" ",1),a.activeView==="catalog"?(e.openBlock(),e.createElementBlock("span",nn,"("+e.toDisplayString(((d=a.layers)==null?void 0:d.length)||0)+")",1)):(e.openBlock(),e.createElementBlock("span",rn,"("+e.toDisplayString(a.selectedLayers.length)+")",1))])]),e.createElementVNode("button",{class:"p-1 rounded-full hover:bg-gray-200 transition-colors","aria-label":"Reset layers",onClick:o[0]||(o[0]=(...m)=>l.clearSelectedLayers&&l.clearSelectedLayers(...m))},[...o[8]||(o[8]=[e.createStaticVNode('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw text-gray-600" data-v-e9e7021a><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-e9e7021a></path><path d="M21 3v5h-5" data-v-e9e7021a></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" data-v-e9e7021a></path><path d="M8 16H3v5" data-v-e9e7021a></path></svg>',1)])])]),e.createElementVNode("div",ln,[e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",a.activeView==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[1]||(o[1]=m=>a.activeView="catalog")}," Каталог ",2),e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",a.activeView==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[2]||(o[2]=m=>a.activeView="selected")}," Вибрані шари ",2)]),a.activeView==="selected"?(e.openBlock(),e.createElementBlock("div",an,[e.createElementVNode("div",sn,[e.createElementVNode("button",{class:"flex items-center gap-2 text-blue-600 hover:text-blue-700 transition-colors px-3 py-2 rounded-md bg-blue-50 hover:bg-blue-100 w-full justify-center",onClick:o[3]||(o[3]=m=>a.activeView="catalog")},[...o[9]||(o[9]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-plus"},[e.createElementVNode("path",{d:"M5 12h14"}),e.createElementVNode("path",{d:"M12 5v14"})],-1),e.createElementVNode("span",null,"Вибрати шар",-1)])])]),a.mounted?(e.openBlock(),e.createElementBlock("div",cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.selectedLayers,(m,_)=>{var L,S;return e.openBlock(),e.createElementBlock("div",{key:m.id||_,class:e.normalizeClass(["border border-gray-200 rounded-md p-3 mb-2 bg-white shadow-sm text-[13px] text-[#4b5563]",{dragging:a.draggedLayerIndex===_}]),draggable:"true",onDragstart:k=>l.onDragStart(_),onDragover:e.withModifiers(k=>l.onDragOver(_),["prevent"]),onDrop:k=>l.onDrop(_),onDragend:o[4]||(o[4]=(...k)=>l.onDragEnd&&l.onDragEnd(...k))},[e.createElementVNode("div",pn,[e.createElementVNode("div",mn,[o[10]||(o[10]=e.createStaticVNode('<svg width="16" height="16" fill="none" stroke="#9ca3af" stroke-width="2" viewBox="0 0 24 24" class="mr-1 shrink-0" data-v-e9e7021a><circle cx="5" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="5" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="5" cy="19" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="19" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="19" r="1.5" data-v-e9e7021a></circle></svg>',1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"w-4 h-4 text-blue-600 rounded focus:ring-blue-500","onUpdate:modelValue":k=>m.visible=k,onChange:k=>l.toggleLayerVisibility(m)},null,40,hn),[[e.vModelCheckbox,m.visible]]),e.createElementVNode("span",un,e.toDisplayString(m.name||m.title||m.label),1)]),e.createElementVNode("div",gn,[e.createElementVNode("div",fn,[e.createVNode(g,{placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("div",{class:"text-sm text-gray-600 hover:text-gray-800 transition-colors px-2 py-1 rounded hover:bg-gray-100 cursor-pointer",onClick:k=>l.updateLayerOpacity(m)},e.toDisplayString(m.opacity||100)+"% ",9,xn)]),default:e.withCtx(()=>[e.createElementVNode("div",yn,[o[11]||(o[11]=e.createElementVNode("label",{class:"text-gray-600 whitespace-nowrap"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":k=>m.opacity=k,onInput:k=>l.onLayerOpacityChange(m),class:"h-2 w-full accent-blue-600 rounded-lg cursor-pointer bg-gray-200"},null,40,bn),[[e.vModelText,m.opacity]]),e.createElementVNode("span",wn,e.toDisplayString(Math.round(m.opacity))+"% ",1)])]),_:2},1024)]),e.createElementVNode("div",kn,[e.createVNode(g,{placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("div",Cn,[e.createVNode(p)])]),default:e.withCtx(()=>[e.createElementVNode("div",_n,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.popoverActions(m),(k,x)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:x},[k.divider?(e.openBlock(),e.createElementBlock("hr",Vn)):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass("w-full p-2 text-left text-sm flex items-center gap-2 "+(k.class||"")),disabled:k.disabled,onClick:$=>!k.disabled&&t.$options.methods[k.handler].call(this,m)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(k.icon),{class:"lucide"})),e.createTextVNode(" "+e.toDisplayString(k.label),1)],10,En))],64))),128))])]),_:2},1024)])])]),m.showFilters?(e.openBlock(),e.createElementBlock("div",Bn,[e.createElementVNode("div",Ln," Фільтри для шару: "+e.toDisplayString(m.name||m.title||m.label),1),e.withDirectives(e.createVNode(h,{ref_for:!0,ref:"filter",scheme:m.filters,header:!1,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:k=>l.handleFilterChange(k,m)},null,8,["scheme","onFilterChange"]),[[e.vShow,(L=m.filters)==null?void 0:L.length]]),e.withDirectives(e.createElementVNode("div",null,[...o[12]||(o[12]=[e.createElementVNode("div",{class:"px-2 text-[14px] text-[#4b5563]"}," Фільтри для шару відсутні ",-1)])],512),[[e.vShow,!((S=m.filters)!=null&&S.length)]])])):e.createCommentVNode("",!0)],42,dn)}),128)),a.selectedLayers.length===0?(e.openBlock(),e.createElementBlock("div",Nn,[...o[13]||(o[13]=[e.createElementVNode("p",null,'Щоб додати шар, натисніть на кнопку "Вибрати шар".',-1)])])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",vn,[e.withDirectives(e.createElementVNode("input",{title:"value",placeholder:"Введіть назву шару...","onUpdate:modelValue":o[5]||(o[5]=m=>a.search=m),type:"text",class:"py-[7px] pl-8 pe-8 block w-full bg-gray-100 border-transparent rounded-lg text-sm focus:bg-white focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-700 dark:border-transparent dark:text-neutral-400 dark:placeholder:text-neutral-400 dark:focus:bg-neutral-800 dark:focus:ring-neutral-600",onKeyup:o[6]||(o[6]=e.withKeys((...m)=>l.onEnter&&l.onEnter(...m),["enter"]))},null,544),[[e.vModelText,a.search]]),e.createVNode(s,{class:"absolute top-1/2 left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0, -50%)"}}),a.search?(e.openBlock(),e.createBlock(c,{key:0,class:"absolute top-1/2 right-[10px] w-[16px] h-[16px] cursor-pointer",style:{transform:"translate(0, -50%)"},onClick:l.clearSearch},null,8,["onClick"])):e.createCommentVNode("",!0)]),a.categories?(e.openBlock(),e.createElementBlock("div",$n,[a.search?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.searchedLayers,(m,_)=>(e.openBlock(),e.createBlock(u,{key:_,layer:m,map:r.map,selectedLayers:a.selectedLayers,onSelect:l.addToSelected,onRemove:l.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128)),l.searchedLayers.length===0?(e.openBlock(),e.createElementBlock("div",Sn," Нічого не знайдено ")):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[!a.categories||Object.keys(a.categories).length===0?(e.openBlock(),e.createElementBlock("div",In," Каталог порожній ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(Object.keys(a.categories),m=>(e.openBlock(),e.createElementBlock("div",{key:m},[e.createElementVNode("div",{class:"hover:bg-gray-100 focus:bg-gray-100 px-2.5 cursor-pointer p-[8px] rounded-lg flex justify-between items-center",onClick:_=>l.selectCategory(m)},[e.createElementVNode("div",jn,[e.createVNode(i,{class:e.normalizeClass({"rotate-up":m===a.selectedCategory,"rotate-down":m!==a.selectedCategory})},null,8,["class"]),e.createElementVNode("div",{class:"max-w-[260px] text-[14px] text-[#4b5563]",title:m},e.toDisplayString(m),9,Dn)]),e.createElementVNode("div",Pn,e.toDisplayString(l.formatNumber(a.categories[m].length)),1)],8,Fn),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.categories[m],(_,L)=>(e.openBlock(),e.createBlock(u,{key:L,layer:_,map:r.map,selectedLayers:a.selectedLayers,onSelect:l.addToSelected,onRemove:l.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128))],512),[[e.vShow,m===a.selectedCategory]])]))),128))],64))])):e.createCommentVNode("",!0)],64))])}const Tn=P(Ko,[["render",Mn],["__scopeId","data-v-e9e7021a"]]),zn={key:0,class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},An={key:0,class:"p-5 pb-3 flex justify-between items-center"},On={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Un={class:"flex flex-col justify-between h-full"},Rn={__name:"vs-filters-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0},enabledLayerIds:{type:Array,default:()=>[]}},setup(t){const o=t,r=e.computed(()=>{var g;return((g=o.config)==null?void 0:g.filters)||[]}),n=e.computed(()=>r.value),a=e.computed(()=>{var p;const g=(p=o.config)==null?void 0:p.conditions;return!g||!g.layers?!0:o.enabledLayerIds.some(h=>g.layers.includes(h))}),l=async({data:g})=>{var u;const p=Object.entries(g).map(i=>i.join("=")).join("|"),h=(u=o.config)==null?void 0:u.conditions,s=(h==null?void 0:h.layers)||[],c=o.enabledLayerIds.filter(i=>s.includes(i));c.length&&c.forEach(i=>{const d=o.map.getSource(i);if(d){const _=d.tiles[0].split("?filter=")[0],L=p?`${_}?filter=${p}`:_;d.setTiles([L])}})};return(g,p)=>a.value?(e.openBlock(),e.createElementBlock("div",zn,[t.config.title?(e.openBlock(),e.createElementBlock("div",An,[e.createElementVNode("h2",On,e.toDisplayString(t.config.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Un,[e.createVNode(e.unref(Se),{ref:"filter",schema:n.value,view:"vertical",onChange:l},null,8,["schema"])])])):e.createCommentVNode("",!0)}},Hn={type:"button",class:"py-2 px-2.5 inline-flex items-center gap-x-1.5 text-sm font-medium rounded-lg bg-white text-gray-800 hover:bg-gray-50 focus:outline-none focus:bg-gray-49 h-[38px] shadow-md"},Zn={class:"flex gap-[5px] items-center"},Wn={class:"text-gray-600"},qn={key:0,class:"w-[16px] h-[16px] font-medium bg-gray-800 text-white rounded-full flex items-center justify-center text-[10px]"},Gn={__name:"vs-inline-filters-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0},enabledLayerIds:{type:Array,default:()=>[]}},setup(t){const o=t,r=e.ref(0),n=e.ref(null),a=e.computed(()=>{var s;return((s=o.config)==null?void 0:s.filters)||[]}),l=e.computed(()=>a.value.map(s=>({...s,id:s.name}))),g=e.computed(()=>{var c;const s=(c=o.config)==null?void 0:c.conditions;return!s||!s.layers?!0:o.enabledLayerIds.some(u=>s.layers.includes(u))}),p=e.computed(()=>{var s;if(o.enabledLayerIds&&o.enabledLayerIds.length){const u=(((s=o.config)==null?void 0:s.layers)||[]).find(i=>i.id===o.enabledLayerIds[0]);return(u==null?void 0:u.title)||(u==null?void 0:u.name)||(u==null?void 0:u.label)||o.enabledLayerIds[0]}return""}),h=async({url:s})=>{var d,m;const c=(d=o.config)==null?void 0:d.conditions;if(!c){const _=(m=o.config)==null?void 0:m.layer_id;if(!_)return;const L=o.map.getSource(_);if(L){const k=L.tiles[0].split("?filter=")[0],x=s?`${k}?filter=${s}`:k;L.setTiles([x])}return}const u=(c==null?void 0:c.layers)||[],i=o.enabledLayerIds.filter(_=>u.includes(_));i.length&&i.forEach(_=>{const L=o.map.getSource(_);if(L){const k=L.tiles[0].split("?filter=")[0],x=s?`${k}?filter=${s}`:k;L.setTiles([x])}})};return e.watch(()=>o.enabledLayerIds,s=>{(!s||!s.length)&&n.value&&(n.value.activeFilters={},r.value=0)}),e.watch(()=>{var s;return(s=n.value)==null?void 0:s.activeFilters},s=>{r.value=Object.keys(s||{}).length},{deep:!0}),(s,c)=>{const u=e.resolveComponent("VsPopover"),i=e.resolveComponent("VsFilterList");return g.value&&l.value.length?(e.openBlock(),e.createBlock(i,{key:0,ref_key:"filter",ref:n,isDialog:t.config.dialog??!0,scheme:l.value,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:h},{button:e.withCtx(({visible:d})=>[e.createVNode(u,{teleport:"body",trigger:"hover",placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("button",Hn,[e.createElementVNode("div",Zn,[c[0]||(c[0]=e.createElementVNode("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M12 20L9 21V12.5L4.52 7.572C4.18545 7.20393 4.00005 6.7244 4 6.227V4H20V6.172C19.9999 6.70239 19.7891 7.21101 19.414 7.586L15 12",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M21.121 20.1209C21.5406 19.7014 21.8265 19.1668 21.9423 18.5849C22.0581 18.0029 21.9988 17.3997 21.7717 16.8514C21.5447 16.3032 21.1602 15.8346 20.6668 15.5049C20.1734 15.1752 19.5934 14.9993 19 14.9993C18.4066 14.9993 17.8266 15.1752 17.3332 15.5049C16.8398 15.8346 16.4553 16.3032 16.2283 16.8514C16.0012 17.3997 15.9419 18.0029 16.0577 18.5849C16.1735 19.1668 16.4594 19.7014 16.879 20.1209C17.297 20.5399 18.004 21.1659 19 21.9999C20.051 21.1099 20.759 20.4839 21.121 20.1209Z",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M19 18V18.01",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),e.createElementVNode("span",Wn,e.toDisplayString(p.value),1),r.value?(e.openBlock(),e.createElementBlock("span",qn,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)])])]),default:e.withCtx(()=>[c[1]||(c[1]=e.createTextVNode(" Відкрити бокову панель ",-1))]),_:1})]),_:1},8,["isDialog","scheme"])):e.createCommentVNode("",!0)}}},Jn={name:"VsListWidget",props:{config:{type:Object,required:!0}},data(){return{items:[],total:0,currentPage:1,limit:16,rootEl:null,resizeObserver:null}},methods:{async fetchData(){const t={page:this.currentPage,limit:this.limit};try{const o=await fetch(this.config.api+"?"+new URLSearchParams(t)).then(r=>r.json());this.items=o.rows,this.total=o.total,this.$emit("content-resize")}catch(o){console.error("Error fetching data:",o)}},handlePageChange(t){this.currentPage=t,this.fetchData()},changeLimit(t){this.limit=t,this.currentPage=1,this.fetchData()}},mounted(){this.fetchData(),this.resizeObserver=new ResizeObserver(()=>{this.$emit("content-resize")}),this.$nextTick(()=>{this.$refs.rootEl&&this.resizeObserver.observe(this.$refs.rootEl)})},beforeUnmount(){this.resizeObserver&&this.$refs.rootEl&&(this.resizeObserver.unobserve(this.$refs.rootEl),this.resizeObserver.disconnect())}},Qn={class:"bg-white p-4 rounded-lg h-full flex flex-col overflow-hidden",ref:"rootEl"},Yn={key:0,class:"flex flex-col flex-1 overflow-hidden"},Kn={class:"space-y-0 overflow-y-auto flex-1 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-300 [&::-webkit-scrollbar-track]:bg-transparent"},Xn=["onClick"],er={class:"text-base font-medium"},tr={class:"mt-2 flex flex-wrap gap-2"},or={key:1,class:"px-2 py-1 text-sm bg-gray-100 rounded-full"},nr={key:0,class:"my-5 pr-2"},rr={class:"paginationWrapper relative flex justify-center"},lr={key:1,class:"text-center text-slate-400"};function ar(t,o,r,n,a,l){var p;const g=e.resolveComponent("VsPagination");return e.openBlock(),e.createElementBlock("div",Qn,[o[0]||(o[0]=e.createElementVNode("h2",{class:"text-xl font-semibold mb-4"},"Список",-1)),((p=a.items)==null?void 0:p.length)>0?(e.openBlock(),e.createElementBlock("div",Yn,[e.createElementVNode("div",Kn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,h=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:"py-4 border-b last:border-b-0 hover:bg-gray-50",onClick:s=>t.$emit("cardValuesId",h.id)},[e.createElementVNode("h3",er,e.toDisplayString(h.name),1),e.createElementVNode("div",tr,[h.status_data?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["px-2 py-1 text-sm rounded-full",{"bg-green-100 text-green-800":h.status_data.color==="green","bg-red-100 text-red-800":h.status_data.color==="red"}])},e.toDisplayString(h.status_data.text),3)):e.createCommentVNode("",!0),h.class_mbd_id_data?(e.openBlock(),e.createElementBlock("span",or,e.toDisplayString(h.class_mbd_id_data.text),1)):e.createCommentVNode("",!0)])],8,Xn))),128))]),a.total>a.limit?(e.openBlock(),e.createElementBlock("div",nr,[e.createElementVNode("div",rr,[e.createVNode(g,{total:a.total,maxPages:4,defaultPage:a.currentPage,pageSize:a.limit,goTo:!1,size:"medium",onPageChange:l.handlePageChange,backgroundColor:"#e5e7eb",borderedCellSelected:!0,pageSizes:[16,32,48,64],onPageSizeChange:l.changeLimit},null,8,["total","defaultPage","pageSize","onPageChange","onPageSizeChange"])])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",lr,"Немає даних"))],512)}const ir=P(Jn,[["render",ar]]),sr={class:"map-skeleton-loader"},cr=P({__name:"vs-skeleton-loader",setup(t){return(o,r)=>(e.openBlock(),e.createElementBlock("div",sr,[...r[0]||(r[0]=[e.createElementVNode("div",{class:"dot-pulse"},null,-1)])]))}},[["__scopeId","data-v-954c1e03"]]),dr={},pr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function mr(t,o){return e.openBlock(),e.createElementBlock("svg",pr,[...o[0]||(o[0]=[e.createElementVNode("title",null,"Globe Icon",-1),e.createElementVNode("desc",null," A circular representation of a globe with horizontal and vertical lines ",-1),e.createElementVNode("path",{d:"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M2 12H22",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M12 2C14.5013 4.73835 15.9228 8.29203 16 12C15.9228 15.708 14.5013 19.2616 12 22C9.49872 19.2616 8.07725 15.708 8 12C8.07725 8.29203 9.49872 4.73835 12 2Z",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const hr={components:{homeIcon:P(dr,[["render",mr]])},name:"vs-homezoom",props:{map:{type:Object},initialView:{type:Object,default:()=>({})}},methods:{homeZoom(){!this.map||!this.initialView||(this.initialView.bbox?this.map.fitBounds(this.initialView.bbox,{duration:0,padding:10}):this.initialView.center&&this.initialView.zoom!==void 0&&(this.map.setCenter(this.initialView.center),this.map.setZoom(this.initialView.zoom)),this.initialView.pitch!==void 0&&this.map.setPitch(this.initialView.pitch),this.initialView.bearing!==void 0&&this.map.setBearing(this.initialView.bearing))}},computed:{}};function ur(t,o,r,n,a,l){const g=e.resolveComponent("homeIcon"),p=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(p,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(g,{onClick:l.homeZoom,class:"w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"},null,8,["onClick"])]),default:e.withCtx(()=>[o[0]||(o[0]=e.createElementVNode("div",null,"Повернутися до початкових налаштувань",-1))]),_:1})])}const gr=P(hr,[["render",ur]]),fr={},yr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function br(t,o){return e.openBlock(),e.createElementBlock("svg",yr,[...o[0]||(o[0]=[e.createElementVNode("title",null,"Document with Two Sections Icon",-1),e.createElementVNode("desc",null,"A document icon with a split design indicating two sections",-1),e.createElementVNode("path",{d:"M6 9V2H18V9",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M6 18H4C3.46957 18 2.96086 17.7893 2.58579 17.4142C2.21071 17.0391 2 16.5304 2 16V11C2 10.4696 2.21071 9.96086 2.58579 9.58579C2.96086 9.21071 3.46957 9 4 9H20C20.5304 9 21.0391 9.21071 21.4142 9.58579C21.7893 9.96086 22 10.4696 22 11V16C22 16.5304 21.7893 17.0391 21.4142 17.4142C21.0391 17.7893 20.5304 18 20 18H18",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M18 14H6V22H18V14Z",stroke:"#1E40AF","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const wr={components:{printIcon:P(fr,[["render",br]]),VsPopover:ce},props:{map:{type:Object},activeTool:String,setActiveTool:Function},data(){return{printVisible:!1,scriptElements:[],styleElements:[],resourcesLoaded:!1}},watch:{activeTool(t){t!=="print"?this.printVisible=!1:this.init()},async printVisible(t){!this.resourcesLoaded&&t?(await this.loadResources(),this.init(),this.simulateClick()):this.removeResources()},activeTool(t,o){t!=="print"&&o==="print"&&(this.closePrint&&this.closePrint(),this.printVisible=!1),t==="print"&&!this.printVisible&&(this.printVisible=!0,this.init())}},computed:{modalButtonClasses(){return{"!bg-[#DBEAFE]":this.printVisible,"bg-white":!this.printVisible}}},mounted(){document.addEventListener("click",t=>{const o=document.querySelector(".mapboxgl-export-list");if(o&&o.contains(t.target)){t.stopPropagation();return}!t.target.classList.contains("mapboxgl-export-list")&&!t.target.classList.contains("print-button")&&!t.target.classList.contains("mapboxgl-export-control")&&!t.target.id.includes("mapbox-gl-export")&&(this.printVisible=!1)})},methods:{addScript(t){return new Promise((o,r)=>{const n=document.createElement("script");n.src=t,n.async=!0,n.onload=o,n.onerror=r,document.head.appendChild(n),this.scriptElements.push(n)})},addStyle(t){return new Promise((o,r)=>{const n=document.createElement("link");n.href=t,n.rel="stylesheet",n.type="text/css",n.onload=o,n.onerror=r,document.head.appendChild(n),this.styleElements.push(n)})},async loadResources(){try{await this.addStyle("https://cdn.jsdelivr.net/npm/@watergis/mapbox-gl-export@3.5.4/dist/mapbox-gl-export.min.css"),await this.addScript("https://cdn.jsdelivr.net/npm/@watergis/mapbox-gl-export@3.5.4/dist/mapbox-gl-export.umd.min.js"),this.resourcesLoaded=!0}catch(t){console.error("Failed to load resources:",t)}},removeResources(){this.scriptElements.forEach(t=>{t.parentNode&&t.parentNode.removeChild(t)}),this.scriptElements=[],this.styleElements.forEach(t=>{t.parentNode&&t.parentNode.removeChild(t)}),this.styleElements=[],this.resourcesLoaded=!1},async toggleResources(){this.printVisible=!this.printVisible},init(){if(!window.MapboxExportControl){console.error("MapboxExportControl is not loaded.");return}window.mapboxgl.accessToken="pk.eyJ1Ijoia3Jpemhhbm92c2t5IiwiYSI6ImNsemkxNWtkODA5dDcycnNhMWZzYWM0MTAifQ.6fEpgfd_2mA4UYuflDewpQ";const{MapboxExportControl:t,Size:o,PageOrientation:r,Format:n,DPI:a}=window.MapboxExportControl;this.map.addControl(new t({PageSize:o.A3,PageOrientation:r.Portrait,Format:n.PNG,DPI:a[96],Crosshair:!0,PrintableArea:!0,Local:"uk"}))},simulateClick(){new Promise(o=>{const r=setTimeout(()=>{const n=document.querySelector(".mapboxgl-export-control");n&&(clearInterval(r),o(n))},100)}).then(o=>{o.click()}).catch(()=>{console.error("Print button not found.")})},togglePrint(){!this.activeTool||this.activeTool!=="print"?this.setActiveTool&&this.setActiveTool("print"):this.setActiveTool&&this.setActiveTool(null),this.printVisible=!this.printVisible,this.printVisible?this.init():this.removeResources()}}};function xr(t,o,r,n,a,l){const g=e.resolveComponent("printIcon"),p=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(p,{trigger:"hover",placement:"left",teleport:"body"},{reference:e.withCtx(()=>[e.createVNode(g,{onClick:l.togglePrint,class:e.normalizeClass([l.modalButtonClasses,"print-button w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"])},null,8,["onClick","class"])]),default:e.withCtx(()=>[o[0]||(o[0]=e.createElementVNode("div",null,"Надрукувати",-1))]),_:1})}const kr=P(wr,[["render",xr]]),_r={props:{map:{type:Object,required:!0}},data(){return{is3D:!1}},components:{VsPopover:ce},mounted(){this.map.on("move",this.updateViewStatus),this.updateViewStatus()},beforeUnmount(){this.map.off("move",this.updateViewStatus)},methods:{toggleView(){this.is3D?this.map.easeTo({pitch:0,bearing:0,duration:1e3}):this.map.easeTo({pitch:60,bearing:-29.6,duration:1e3})},updateViewStatus(){this.is3D=this.map.getPitch()!==0}}};function Vr(t,o,r,n,a,l){const g=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(g,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createElementVNode("div",{class:"font-light w-full h-[44px] p-[9px] [transition:.3s] hover:[transition:.3s] text-[19px] hover:bg-[#DBEAFE] flex cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]",onClick:o[0]||(o[0]=(...p)=>l.toggleView&&l.toggleView(...p))},e.toDisplayString(a.is3D?"2D":"3D"),1)]),default:e.withCtx(()=>[o[1]||(o[1]=e.createElementVNode("div",null,"Перемикач виду",-1))]),_:1})}const Er=P(_r,[["render",Vr]]),Cr={props:{bgColor:{type:String,default:"#1E40AF"}}},Br={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Lr=["stroke"],Nr=["stroke"],vr=["stroke"],$r=["stroke"],Sr=["stroke"],Ir=["stroke"];function Fr(t,o,r,n,a,l){return e.openBlock(),e.createElementBlock("svg",Br,[o[0]||(o[0]=e.createElementVNode("title",null,"Target Icon",-1)),o[1]||(o[1]=e.createElementVNode("desc",null,"A target icon with a circular pattern inside a rounded square",-1)),e.createElementVNode("path",{d:"M2 12H5",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Lr),e.createElementVNode("path",{d:"M19 12H22",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Nr),e.createElementVNode("path",{d:"M12 2V5",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,vr),e.createElementVNode("path",{d:"M12 19V22",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,$r),e.createElementVNode("path",{d:"M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19Z",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Sr),e.createElementVNode("path",{d:"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z",stroke:r.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Ir)])}const jr={components:{geoIcon:P(Cr,[["render",Fr]]),VsPopover:ce,closeIcon:Le},data(){return{location:null,data:null,marker:null,showLocation:!1}},computed:{modalButtonClasses(){return{"!bg-[#DBEAFE]":this.showLocation,"bg-white":!this.showLocation}}},props:{map:{type:Object}},beforeUnmount(){var t;(t=this.marker)==null||t.remove()},watch:{activeControl(t,o){t!=="geolocation"&&o==="geolocation"&&(this.showLocation=!1,this.closeGeolocation())}},methods:{togleGeolocation(){this.showLocation=!this.showLocation,this.showLocation?this.getUserLocation():(this.closeGeolocation(),this.activeControl="no")},getUserLocation(){navigator.geolocation?navigator.geolocation.getCurrentPosition(this.onGeolocationSuccess,this.onGeolocationError):(this.showLocation=!1,this.activeControl="no",this.$notify({type:"error",title:"Помилка",message:"Цей браузер не підтримує геолокацію"}),this.$emit("close"))},async onGeolocationSuccess(t){this.location={latitude:t.coords.latitude,longitude:t.coords.longitude};const r=await(await fetch(`https://nominatim.openstreetmap.org/reverse?format=json&lat=${this.location.latitude}&lon=${this.location.longitude}`)).json();this.data=r.address;const n=[this.location.longitude,this.location.latitude],a=[[parseFloat(r.boundingbox[2]),parseFloat(r.boundingbox[0])],[parseFloat(r.boundingbox[3]),parseFloat(r.boundingbox[1])]];this.map.fitBounds(a,{padding:200,maxZoom:16}),this.marker||(this.marker=new Marker({color:"var(--primary)"})),this.marker.setLngLat(n).addTo(this.map),this.activeControl="geolocation"},closeGeolocation(){this.showLocation=!1,this.marker&&(this.marker.remove(),this.marker=null),this.location=null,this.data=null},onGeolocationError(){this.showLocation=!1,this.activeControl="no",this.$notify({type:"error",title:"Помилка",message:"Для визначення геолокації потрібен HTTPS протокол"}),this.$emit("close")}}},Dr={key:0,class:"max-w-[412px] absolute w-full top-[20px] right-[70px] bg-white border rounded-[15px] p-4 z-10"},Pr={class:"flex justify-between items-center border-b pb-[16px]"},Mr={class:"d-flex"},Tr={class:"pt-[16px]"};function zr(t,o,r,n,a,l){var s,c,u,i,d,m;const g=e.resolveComponent("closeIcon"),p=e.resolveComponent("geoIcon"),h=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[(e.openBlock(),e.createBlock(e.Teleport,{to:"#maplibre-demo-map"},[a.location?(e.openBlock(),e.createElementBlock("div",Dr,[e.createElementVNode("div",Pr,[o[0]||(o[0]=e.createElementVNode("div",{class:"text-lg font-semibold"},"Ваша геолокація",-1)),e.createElementVNode("div",Mr,[e.createVNode(g,{onClick:l.closeGeolocation},null,8,["onClick"])])]),e.createElementVNode("div",Tr,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("strong",null,"Широта:",-1)),e.createTextVNode(" "+e.toDisplayString((s=a.location)==null?void 0:s.latitude),1)]),e.createElementVNode("div",null,[o[2]||(o[2]=e.createElementVNode("strong",null,"Довгота:",-1)),e.createTextVNode(" "+e.toDisplayString((c=a.location)==null?void 0:c.longitude),1)]),e.createElementVNode("div",null,[o[3]||(o[3]=e.createElementVNode("strong",null,"КраЇна:",-1)),e.createTextVNode(" "+e.toDisplayString((u=a.data)==null?void 0:u.country),1)]),e.createElementVNode("div",null,[o[4]||(o[4]=e.createElementVNode("strong",null,"Код країни:",-1)),e.createTextVNode(" "+e.toDisplayString((i=a.data)==null?void 0:i.country_code),1)]),e.createElementVNode("div",null,[o[5]||(o[5]=e.createElementVNode("strong",null,"Місто:",-1)),e.createTextVNode(" "+e.toDisplayString((d=a.data)==null?void 0:d.city),1)]),e.createElementVNode("div",null,[o[6]||(o[6]=e.createElementVNode("strong",null,"Поштовий індекс:",-1)),e.createTextVNode(" "+e.toDisplayString((m=a.data)==null?void 0:m.postcode),1)])])])):e.createCommentVNode("",!0)])),e.createVNode(h,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(p,{onClick:l.togleGeolocation,class:e.normalizeClass([l.modalButtonClasses,"w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"])},null,8,["onClick","class"])]),default:e.withCtx(()=>[o[7]||(o[7]=e.createElementVNode("div",null,"Дізнатися геолокацію",-1))]),_:1})])}const Ar=P(jr,[["render",zr]]),ue={__name:"vs-map-widget-column",props:{position:String,widgets:Array,map:Object,mapLoaded:Boolean,cardValues:Object,hasFilters:Boolean,currentFilterLayer:Object,enabledLayerIds:Array,getWidgetComponent:Function,getColumnWidth:Function,rightColumnOffset:[String,Number],maxHeight:Number,history:Boolean},emits:["set-filter-layer","update:enabledLayerIds","cardValuesId","closeCard","content-resize"],setup(t,{expose:o,emit:r}){const n=r,a=t,l=e.ref(a.widgets.map(s=>{var c;return{...s,config:{...s.config,visible:((c=s.config)==null?void 0:c.visible)!==!1}}}));e.watch(()=>a.widgets.map(s=>s.id||s.type).join(","),()=>{l.value=a.widgets.map(s=>{var c;return{...s,config:{...s.config,visible:((c=s.config)==null?void 0:c.visible)!==!1}}})});function g(s){const c=l.value.find(u=>u.id===s);c&&c.config&&(c.config.visible=!c.config.visible,setTimeout(()=>{n("content-resize")},30))}const p=e.ref(null);o({columnRef:p});let h=null;return e.onMounted(()=>{h=new MutationObserver(()=>{var s;clearTimeout((s=p.value)==null?void 0:s._resizeTimeout),p.value._resizeTimeout=setTimeout(()=>{n("content-resize")},30)}),p.value&&h.observe(p.value,{childList:!0,subtree:!0,characterData:!0})}),e.onUnmounted(()=>{h&&h.disconnect()}),(s,c)=>t.mapLoaded?(e.openBlock(),e.createElementBlock("div",{key:0,class:"widget-column",ref_key:"columnRef",ref:p,style:e.normalizeStyle({width:t.getColumnWidth(t.position),paddingRight:t.rightColumnOffset})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,u=>{var i;return e.openBlock(),e.createElementBlock(e.Fragment,{key:u.id||u.type},[u.type!=="card"?e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.getWidgetComponent(u.type)),{key:0,map:t.map,config:u.config,hasFilters:t.hasFilters,currentLayer:t.currentFilterLayer,enabledLayerIds:t.enabledLayerIds,history:t.history,onSetFilterLayer:c[0]||(c[0]=d=>s.$emit("set-filter-layer",d)),"onUpdate:enabledLayerIds":c[1]||(c[1]=d=>s.$emit("update:enabledLayerIds",d)),onCardValuesId:c[2]||(c[2]=d=>s.$emit("cardValuesId",d)),onShowWidget:g,onCatalogLayers:c[3]||(c[3]=d=>s.$emit("catalog-layers",d)),class:"widget"},null,40,["map","config","hasFilters","currentLayer","enabledLayerIds","history"])),[[e.vShow,((i=u.config)==null?void 0:i.visible)!==!1]]):e.createCommentVNode("",!0),t.cardValues&&u.type==="card"?(e.openBlock(),e.createBlock(Be,{key:1,config:u.config,cardValues:t.cardValues,class:"widget",onClose:c[4]||(c[4]=d=>s.$emit("closeCard"))},null,8,["config","cardValues"])):e.createCommentVNode("",!0)],64)}),128))],4)):e.createCommentVNode("",!0)}},Or={class:"map-widgets-flex"},Ur={class:"widgets-left"},Rr={class:"widgets-top"},Hr={class:"widgets-bottom"},Zr={class:"widgets-right"},Wr={class:"widgets-top"},qr={class:"widgets-bottom"},Gr={class:"absolute top-[180px] right-2 z-10 flex flex-col gap-[5px]"},be=P(e.defineComponent({__name:"vs-map",props:{table:{},name:{},height:{}},setup(t){const o=e.getCurrentInstance(),r=t,n=e.ref(null),a=e.ref(!1);let l=null;const g=e.ref(null),p=e.ref(null),h=e.ref([]),s=e.ref([]),c=e.ref(null),u=e.ref(null),i=e.ref(null),d=e.ref([]);let m=null;function _(y){return!i.value||!i.value.widgets?[]:y==="center"?[...i.value.widgets.filter(w=>(w.position||{})==="center")||[],...s.value.filter(w=>w.position==="center")]:i.value.widgets.filter(f=>(f.position||{})===y)||[]}const L=(y,f,w)=>f[y]||y,S=(y,f,w,E,b)=>{const V=L(y,E),N=f?L(f,E):"";let B="";return w!=null&&w.length&&(B=w.map(M=>{const I=L(M.value,E);return`
2
2
  <tr class="flex justify-between items-center">
3
- <td class="font-medium mr-1.5 flex items-center">${D.label}</td>
4
- <td class="text-right">${S}</td>
3
+ <td class="font-medium mr-1.5 flex items-center">${M.label}</td>
4
+ <td class="text-right">${I}</td>
5
5
  </tr>
6
6
  `}).join("")),`
7
7
  <div class="absolute min-w-[250px] max-w-[350px] bg-white/90 border border-gray-200 rounded-lg shadow-md text-gray-800 pointer-events-none">
@@ -19,30 +19,30 @@
19
19
  </div>
20
20
  `:""}
21
21
  </div>
22
- `},k=y=>({legend:Ae,basemaps:He,layers:kt,info:$t,attribute:po,catalog:On,filters:Wn,"inline-filters":Yn,list:dr,card:Ne})[y],x=e.computed(()=>!!i.value&&Array.isArray(i.value.widgets)&&i.value.widgets.some(y=>y.type==="filters")),$=y=>{g.value=y};function Z(){const y=new URLSearchParams(window.location.search),f=parseFloat(y.get("x")),w=parseFloat(y.get("y")),C=parseFloat(y.get("z")),b=parseFloat(y.get("bearing")),V=parseFloat(y.get("pitch"));return{center:isFinite(f)&&isFinite(w)?[f,w]:null,zoom:isFinite(C)?C:null,bearing:isFinite(b)?b:null,pitch:isFinite(V)?V:null}}function ee({center:y,zoom:f,bearing:w,pitch:C}){const b=new URLSearchParams(window.location.search);b.set("x",y[0].toFixed(5)),b.set("y",y[1].toFixed(5)),b.set("z",f.toFixed(2)),b.set("bearing",w.toFixed(2)),b.set("pitch",C.toFixed(2));const V=`${window.location.pathname}?${b.toString()}`;window.history.replaceState({},"",V)}const K=()=>{var N,B,D;if(!i.value||!i.value.map)return;const y={version:8,glyphs:"https://cdn.softpro.ua/data/fonts/{fontstack}/{range}.pbf",sources:{},layers:[]},f=(o==null?void 0:o.appContext.config.globalProperties.$settings)||{};let w=i.value.map.center||f.center||[50,30],C=i.value.map.zoom||f.zoom||10,b=i.value.map.bearing||0,V=i.value.map.pitch||0;if(i.value.history){const S=Z();S.center&&(w=S.center),S.zoom!==null&&(C=S.zoom),S.bearing!==null&&(b=S.bearing),S.pitch!==null&&(V=S.pitch)}n.value=new maplibregl.Map({container:"maplibre-demo-map",style:y,center:w,zoom:C,bearing:b,pitch:V,maxZoom:19,minZoom:5}),console.log({center:w,zoom:C}),(D=(B=(N=i==null?void 0:i.value)==null?void 0:N.interactions)==null?void 0:B.navigation)!=null&&D.enabled&&!m&&(m=new maplibregl.NavigationControl,n.value.addControl(m,"top-right")),n.value.on("load",async()=>{var pe,j,me,ue,Fe;a.value=!0;const S=Z(),de=S.center&&S.zoom!==null;if((pe=i.value.map)!=null&&pe.bbox&&!de){const[T,M,E,U]=i.value.map.bbox;n.value.fitBounds([[T,M],[E,U]],{padding:50,duration:0})}if(await(async()=>{var M,E,U,R,A;const T=((A=(R=(U=(E=(M=i.value)==null?void 0:M.widgets)==null?void 0:E.find(v=>v.type==="layers"))==null?void 0:U.config)==null?void 0:R.layers)==null?void 0:A.filter(v=>{var Q;return((Q=v.style)==null?void 0:Q.attrType)==="icon-by-attribute"}))||[];for(const v of T){const{rules:Q,default_icon:oe,icon_base_url:ne}=v.style,re=[...Q.map(H=>H.icon),oe].filter(Boolean);for(const H of re)try{const Y=`${ne}${H}`,le=await n.value.loadImage(Y);n.value.hasImage(H)||n.value.addImage(H,le.data)}catch(Y){console.error(`Failed to load icon: ${H}`,Y)}}})(),(ue=(me=(j=i.value)==null?void 0:j.interactions)==null?void 0:me.hover)!=null&&ue.enabled&&(n.value.on("mousemove",T=>{var Q,oe,ne,re,H,Y,le,ge,z,we;const M=n.value.queryRenderedFeatures(T.point);if(n.value&&n.value.getCanvas&&(n.value.getCanvas().style.cursor=M.length?"pointer":""),!M.length){if(p.value){const F=(Q=n.value.getSource(p.value.source))==null?void 0:Q.type;p.value.source,p.value.id,F==="vector"&&p.value.source,te(n.value,p.value.source,p.value.id,{hovered:!1}),p.value=null}l&&(l.remove(),l=null);return}const E=M[0];if(!p.value||p.value.id!==E.id||p.value.source!==E.layer.source){if(p.value){const _e=(oe=n.value.getSource(p.value.source))==null?void 0:oe.type;p.value.source,p.value.id,_e==="vector"&&p.value.source,te(n.value,p.value.source,p.value.id,{hovered:!1})}const F=(ne=n.value.getSource(E.layer.source))==null?void 0:ne.type;E.layer.source,E.id,F==="vector"&&E.layer.source,te(n.value,E.layer.source,E.id,{hovered:!0}),p.value={source:E.layer.source,id:E.id}}const U=(H=(re=i.value)==null?void 0:re.widgets)==null?void 0:H.find(F=>F.type==="layers"),R=(le=(Y=i.value)==null?void 0:Y.widgets)==null?void 0:le.find(F=>F.type==="attribute");let A=null;if(U&&(A=U.config.layers.find(F=>F.id===E.layer.source)),(z=(ge=i.value)==null?void 0:ge.widgets)==null?void 0:z.find(F=>F.type==="catalog")){if(!M.length){l&&(l.style.display="none");return}const F=M[0];l=il(F,T,l);return}if(!A&&R&&R.config.layer.id===E.layer.source&&(A=R.config.layer),(we=A==null?void 0:A.style)!=null&&we.popup){const F=A.style.popup;let _e=F.title,Ve="";F.mode==="markdown"?Ve=Array.isArray(F.content)?F.content.join(`
22
+ `},k=y=>({legend:Me,basemaps:Oe,layers:bt,info:Lt,attribute:io,catalog:Tn,filters:Rn,"inline-filters":Gn,list:ir,card:Be})[y],x=e.computed(()=>!!i.value&&Array.isArray(i.value.widgets)&&i.value.widgets.some(y=>y.type==="filters")),$=y=>{g.value=y};function q(){const y=new URLSearchParams(window.location.search),f=parseFloat(y.get("x")),w=parseFloat(y.get("y")),E=parseFloat(y.get("z")),b=parseFloat(y.get("bearing")),V=parseFloat(y.get("pitch"));return{center:isFinite(f)&&isFinite(w)?[f,w]:null,zoom:isFinite(E)?E:null,bearing:isFinite(b)?b:null,pitch:isFinite(V)?V:null}}function ee({center:y,zoom:f,bearing:w,pitch:E}){const b=new URLSearchParams(window.location.search);b.set("x",y[0].toFixed(5)),b.set("y",y[1].toFixed(5)),b.set("z",f.toFixed(2)),b.set("bearing",w.toFixed(2)),b.set("pitch",E.toFixed(2));const V=`${window.location.pathname}?${b.toString()}`;window.history.replaceState({},"",V)}const K=()=>{var N,B,M;if(!i.value||!i.value.map)return;const y={version:8,glyphs:"https://cdn.softpro.ua/data/fonts/{fontstack}/{range}.pbf",sources:{},layers:[]},f=(o==null?void 0:o.appContext.config.globalProperties.$settings)||{};let w=i.value.map.center||f.center||[50,30],E=i.value.map.zoom||f.zoom||10,b=i.value.map.bearing||0,V=i.value.map.pitch||0;if(i.value.history){const I=q();I.center&&(w=I.center),I.zoom!==null&&(E=I.zoom),I.bearing!==null&&(b=I.bearing),I.pitch!==null&&(V=I.pitch)}n.value=new maplibregl.Map({container:"maplibre-demo-map",style:y,center:w,zoom:E,bearing:b,pitch:V,maxZoom:19,minZoom:5}),console.log({center:w,zoom:E}),(M=(B=(N=i==null?void 0:i.value)==null?void 0:N.interactions)==null?void 0:B.navigation)!=null&&M.enabled&&!m&&(m=new maplibregl.NavigationControl,n.value.addControl(m,"top-right")),n.value.on("load",async()=>{var oe,A,pe,j;if(a.value=!0,await(async()=>{var D,C,R,U,O;const T=((O=(U=(R=(C=(D=i.value)==null?void 0:D.widgets)==null?void 0:C.find(v=>v.type==="layers"))==null?void 0:R.config)==null?void 0:U.layers)==null?void 0:O.filter(v=>{var Q;return((Q=v.style)==null?void 0:Q.attrType)==="icon-by-attribute"}))||[];for(const v of T){const{rules:Q,default_icon:ne,icon_base_url:re}=v.style,le=[...Q.map(H=>H.icon),ne].filter(Boolean);for(const H of le)try{const Y=`${re}${H}`,ae=await n.value.loadImage(Y);n.value.hasImage(H)||n.value.addImage(H,ae.data)}catch(Y){console.error(`Failed to load icon: ${H}`,Y)}}})(),(pe=(A=(oe=i.value)==null?void 0:oe.interactions)==null?void 0:A.hover)!=null&&pe.enabled&&(n.value.on("mousemove",T=>{var Q,ne,re,le,H,Y,ae,he,z,ye;const D=n.value.queryRenderedFeatures(T.point);if(n.value&&n.value.getCanvas&&(n.value.getCanvas().style.cursor=D.length?"pointer":""),!D.length){if(p.value){const F=(Q=n.value.getSource(p.value.source))==null?void 0:Q.type;p.value.source,p.value.id,F==="vector"&&p.value.source,te(n.value,p.value.source,p.value.id,{hovered:!1}),p.value=null}l&&(l.remove(),l=null);return}const C=D[0];if(!p.value||p.value.id!==C.id||p.value.source!==C.layer.source){if(p.value){const xe=(ne=n.value.getSource(p.value.source))==null?void 0:ne.type;p.value.source,p.value.id,xe==="vector"&&p.value.source,te(n.value,p.value.source,p.value.id,{hovered:!1})}const F=(re=n.value.getSource(C.layer.source))==null?void 0:re.type;C.layer.source,C.id,F==="vector"&&C.layer.source,te(n.value,C.layer.source,C.id,{hovered:!0}),p.value={source:C.layer.source,id:C.id}}const R=(H=(le=i.value)==null?void 0:le.widgets)==null?void 0:H.find(F=>F.type==="layers"),U=(ae=(Y=i.value)==null?void 0:Y.widgets)==null?void 0:ae.find(F=>F.type==="attribute");let O=null;if(R&&(O=R.config.layers.find(F=>F.id===C.layer.source)),(z=(he=i.value)==null?void 0:he.widgets)==null?void 0:z.find(F=>F.type==="catalog")){if(!D.length){l&&(l.style.display="none");return}const F=D[0];l=rl(F,T,l);return}if(!O&&U&&U.config.layer.id===C.layer.source&&(O=U.config.layer),(ye=O==null?void 0:O.style)!=null&&ye.popup){const F=O.style.popup;let xe=F.title,ke="";F.mode==="markdown"?ke=Array.isArray(F.content)?F.content.join(`
23
23
 
24
- `):"":Ve=Array.isArray(F.content)?F.content.join(""):"",l||(l=document.createElement("div"),n.value.getContainer().appendChild(l)),l.innerHTML=I(_e,Ve,F.fields,E.properties,F.mode),Ie(l,T)}}),n.value.on("mouseleave",()=>{var T;if(l&&(l.remove(),l=null),p.value){const M=(T=n.value.getSource(p.value.source))==null?void 0:T.type;p.value.source,p.value.id,M==="vector"&&p.value.source,te(n.value,p.value.source,p.value.id,{hovered:!1}),p.value=null}n.value&&n.value.getCanvas&&(n.value.getCanvas().style.cursor="")})),n.value.on("click",async T=>{var oe,ne,re,H,Y,le,ge;if(J(),["length","area","print"].includes(u.value))return;const M=n.value.queryRenderedFeatures(T.point);if(!M.length)return;const E=M[0],U=(ne=(oe=i.value)==null?void 0:oe.widgets)==null?void 0:ne.find(z=>z.type==="layers"),R=(H=(re=i.value)==null?void 0:re.widgets)==null?void 0:H.find(z=>z.type==="attribute"),A=(le=(Y=i.value)==null?void 0:Y.widgets)==null?void 0:le.find(z=>z.type==="catalog");let v;if(A?v=E.layer.source:v=(R==null?void 0:R.config.layer)||(U==null?void 0:U.config.layers.find(z=>z.id===E.layer.source)),v!=null&&v.noCard)return;h.value.forEach(z=>{var F;const we=(F=n.value.getSource(z.source))==null?void 0:F.type;z.source,z.id,we==="vector"&&z.source,te(n.value,z.source,z.id,{selected:!1})}),h.value=[];const Q=(ge=n.value.getSource(E.layer.source))==null?void 0:ge.type;E.layer.source,E.id,Q==="vector"&&E.layer.source,te(n.value,E.layer.source,E.id,{selected:!0}),h.value.push({source:E.layer.source,id:E.id}),c.value={layer:(v==null?void 0:v.service_key)||v||"",map:(v==null?void 0:v.map_key)||"",id:E.properties.id,title:(v==null?void 0:v.title)||""}}),n.value.on("dblclick",T=>{var U,R,A;if(J(),["length","area","print"].includes(u.value))return;nl([T.lngLat.lng,T.lngLat.lat]);const M=(R=(U=i.value)==null?void 0:U.widgets)==null?void 0:R.find(v=>v.type==="layers");let E=null;(A=M==null?void 0:M.config)!=null&&A.layers&&(E=M.config.layers.find(v=>v.visible!==!1&&["tms","wms","raster"].includes((v.service_type||v.service||"").toLowerCase()))),!(E!=null&&E.noCard)&&(c.value={layer:(E==null?void 0:E.map_key)||"",map:(E==null?void 0:E.service_key)||"",id:"",title:(E==null?void 0:E.title)||""})}),n.value.resize(),(Fe=i==null?void 0:i.value)!=null&&Fe.history){const T=()=>{const M=n.value.getCenter();ee({center:[M.lng,M.lat],zoom:n.value.getZoom(),bearing:n.value.getBearing(),pitch:n.value.getPitch()})};n.value.on("moveend",T),n.value.on("rotate",T),n.value.on("pitch",T)}})},J=()=>{$e(),h.value.forEach(y=>{n.value&&te(n.value,y.source,y.id,{selected:!1})}),h.value=[],c.value=null};e.onMounted(async()=>{await Xr(),await e.nextTick(),K();const y=document.getElementById("maplibre-demo-map");y&&y.addEventListener("mouseleave",()=>{l&&(l.remove(),l=null)})});const ke=e.computed(()=>({height:(r==null?void 0:r.height)||"100vh",width:"100%"})),Xr=async()=>{const y=await fetch(`/api/map/${r.name||r.table||"main"}`).then(f=>f.json());i.value=y},ye=y=>{if(!i.value||!i.value.widgets)return"400px";const f=i.value.widgets.find(w=>w.position===y);return(f==null?void 0:f.width)||"400px"},W=e.ref([]);e.watch(()=>i.value,y=>{y&&y.map&&(W.value=el(),K())});const el=()=>{var f;if(!i.value||!i.value.widgets)return[];const y=i.value.widgets.find(w=>w.type==="layers");return(f=y==null?void 0:y.config)!=null&&f.layers?y.config.layers.map(w=>({...w,visible:w.visible??!1})).filter(w=>w.visible).map(w=>w.id):[]};function te(y,f,w,C){y.getStyle().layers.filter(V=>V.source===f).forEach(V=>{var B;const N={source:f,id:w};((B=y.getSource(f))==null?void 0:B.type)==="vector"&&V["source-layer"]&&(N.sourceLayer=V["source-layer"]),y.setFeatureState(N,C)})}const tl=e.computed(()=>!!i.value&&!!i.value.interactions&&!!i.value.interactions.navigation&&i.value.interactions.navigation.enabled),ol=e.computed(()=>!!i.value&&Array.isArray(i.value.tools)&&i.value.tools.length>0),be=e.computed(()=>tl.value||ol.value?"40px":"20px");function $e(){n.value&&(n.value.getLayer("layer-with-pulsing-dot")&&n.value.removeLayer("layer-with-pulsing-dot"),n.value.getSource("dot-point")&&n.value.removeSource("dot-point"),n.value.hasImage&&n.value.hasImage("pulsing-dot")&&n.value.removeImage("pulsing-dot"))}function nl(y){var C,b,V,N;$e();const f=80,w={width:f,height:f,data:new Uint8Array(f*f*4),onAdd(){const B=document.createElement("canvas");B.width=this.width,B.height=this.height,this.context=B.getContext("2d",{willReadFrequently:!0})},render(){var j;const D=performance.now()%2e3/2e3,S=f/2*.3,de=f/2*.7*D+S,{context:O}=this;O.clearRect(0,0,this.width,this.height),O.beginPath(),O.arc(this.width/2,this.height/2,de,0,Math.PI*2),O.fillStyle=`rgba(255, 100, 100, ${1-D})`,O.fill();const pe=f/2*.7*(D-.5<0?D-.5+1:D-.5)+S;return O.beginPath(),O.arc(this.width/2,this.height/2,pe,0,Math.PI*2),O.fillStyle=`rgba(255, 100, 100, ${1-(D-.5<0?D-.5+1:D-.5)})`,O.fill(),this.data=O.getImageData(0,0,this.width,this.height).data,(j=n.value)==null||j.triggerRepaint(),!0}};(C=n.value)!=null&&C.hasImage("pulsing-dot")||(b=n.value)==null||b.addImage("pulsing-dot",w,{pixelRatio:2}),(V=n.value)==null||V.addSource("dot-point",{type:"geojson",data:{type:"Feature",geometry:{type:"Point",coordinates:y}}}),(N=n.value)==null||N.addLayer({id:"layer-with-pulsing-dot",type:"symbol",source:"dot-point",layout:{"icon-image":"pulsing-dot"},paint:{"icon-opacity":.6}})}const rl=e.computed(()=>{var y,f,w,C,b,V,N,B,D,S;return{center:(f=(y=i==null?void 0:i.value)==null?void 0:y.map)==null?void 0:f.center,zoom:(C=(w=i==null?void 0:i.value)==null?void 0:w.map)==null?void 0:C.zoom,pitch:((V=(b=i==null?void 0:i.value)==null?void 0:b.map)==null?void 0:V.pitch)||0,bearing:((B=(N=i==null?void 0:i.value)==null?void 0:N.map)==null?void 0:B.bearing)||0,bbox:((S=(D=i==null?void 0:i.value)==null?void 0:D.map)==null?void 0:S.bbox)||null}}),Se={home:br,print:Er,geolocation:Rr,pitch:Lr},ll=y=>{u.value=y};function ce(y){if(!i.value||!i.value.widgets)return;const f=i.value.widgets.find(b=>b.type==="list");if(!f||!f.config)return;const{map_key:w,service_key:C}=f.config;w&&C&&(c.value={id:y,map:w,layer:C})}const al=e.computed(()=>i.value&&i.value.widgets?i.value.widgets.filter(y=>y.position==="absolute"):[]);function il(y,f,w){const C=y.properties,b=d.value.find(j=>String(j.id)===String(y.source)),V=Array.isArray(b==null?void 0:b.popup)?b.popup:[],B=V.filter(j=>j.meta==="image").map(j=>C==null?void 0:C[j.name]).filter(Boolean),D=B.length>0?`
24
+ `):"":ke=Array.isArray(F.content)?F.content.join(""):"",l||(l=document.createElement("div"),n.value.getContainer().appendChild(l)),l.innerHTML=S(xe,ke,F.fields,C.properties,F.mode),$e(l,T)}}),n.value.on("mouseleave",()=>{var T;if(l&&(l.remove(),l=null),p.value){const D=(T=n.value.getSource(p.value.source))==null?void 0:T.type;p.value.source,p.value.id,D==="vector"&&p.value.source,te(n.value,p.value.source,p.value.id,{hovered:!1}),p.value=null}n.value&&n.value.getCanvas&&(n.value.getCanvas().style.cursor="")})),n.value.on("click",async T=>{var ne,re,le,H,Y,ae,he;if(J(),["length","area","print"].includes(u.value))return;const D=n.value.queryRenderedFeatures(T.point);if(!D.length)return;const C=D[0],R=(re=(ne=i.value)==null?void 0:ne.widgets)==null?void 0:re.find(z=>z.type==="layers"),U=(H=(le=i.value)==null?void 0:le.widgets)==null?void 0:H.find(z=>z.type==="attribute"),O=(ae=(Y=i.value)==null?void 0:Y.widgets)==null?void 0:ae.find(z=>z.type==="catalog");let v;if(O?v=C.layer.source:v=(U==null?void 0:U.config.layer)||(R==null?void 0:R.config.layers.find(z=>z.id===C.layer.source)),v!=null&&v.noCard)return;h.value.forEach(z=>{var F;const ye=(F=n.value.getSource(z.source))==null?void 0:F.type;z.source,z.id,ye==="vector"&&z.source,te(n.value,z.source,z.id,{selected:!1})}),h.value=[];const Q=(he=n.value.getSource(C.layer.source))==null?void 0:he.type;C.layer.source,C.id,Q==="vector"&&C.layer.source,te(n.value,C.layer.source,C.id,{selected:!0}),h.value.push({source:C.layer.source,id:C.id}),c.value={layer:(v==null?void 0:v.service_key)||v||"",map:(v==null?void 0:v.map_key)||"",id:C.properties.id,title:(v==null?void 0:v.title)||""}}),n.value.on("dblclick",T=>{var R,U,O;if(J(),["length","area","print"].includes(u.value))return;el([T.lngLat.lng,T.lngLat.lat]);const D=(U=(R=i.value)==null?void 0:R.widgets)==null?void 0:U.find(v=>v.type==="layers");let C=null;(O=D==null?void 0:D.config)!=null&&O.layers&&(C=D.config.layers.find(v=>v.visible!==!1&&["tms","wms","raster"].includes((v.service_type||v.service||"").toLowerCase()))),!(C!=null&&C.noCard)&&(c.value={layer:(C==null?void 0:C.map_key)||"",map:(C==null?void 0:C.service_key)||"",id:"",title:(C==null?void 0:C.title)||""})}),n.value.resize(),(j=i==null?void 0:i.value)!=null&&j.history){const T=()=>{const D=n.value.getCenter();ee({center:[D.lng,D.lat],zoom:n.value.getZoom(),bearing:n.value.getBearing(),pitch:n.value.getPitch()})};n.value.on("moveend",T),n.value.on("rotate",T),n.value.on("pitch",T)}})},J=()=>{Ne(),h.value.forEach(y=>{n.value&&te(n.value,y.source,y.id,{selected:!1})}),h.value=[],c.value=null};e.onMounted(async()=>{await Qr(),await e.nextTick(),K();const y=document.getElementById("maplibre-demo-map");y&&y.addEventListener("mouseleave",()=>{l&&(l.remove(),l=null)})});const we=e.computed(()=>({height:(r==null?void 0:r.height)||"100vh",width:"100%"})),Qr=async()=>{const y=await fetch(`/api/map/${r.name||r.table||"main"}`).then(f=>f.json());i.value=y},ge=y=>{if(!i.value||!i.value.widgets)return"400px";const f=i.value.widgets.find(w=>w.position===y);return(f==null?void 0:f.width)||"400px"},Z=e.ref([]);e.watch(()=>i.value,y=>{y&&y.map&&(Z.value=Yr(),K())});const Yr=()=>{var f;if(!i.value||!i.value.widgets)return[];const y=i.value.widgets.find(w=>w.type==="layers");return(f=y==null?void 0:y.config)!=null&&f.layers?y.config.layers.map(w=>({...w,visible:w.visible??!1})).filter(w=>w.visible).map(w=>w.id):[]};function te(y,f,w,E){y.getStyle().layers.filter(V=>V.source===f).forEach(V=>{var B;const N={source:f,id:w};((B=y.getSource(f))==null?void 0:B.type)==="vector"&&V["source-layer"]&&(N.sourceLayer=V["source-layer"]),y.setFeatureState(N,E)})}const Kr=e.computed(()=>!!i.value&&!!i.value.interactions&&!!i.value.interactions.navigation&&i.value.interactions.navigation.enabled),Xr=e.computed(()=>!!i.value&&Array.isArray(i.value.tools)&&i.value.tools.length>0),fe=e.computed(()=>Kr.value||Xr.value?"40px":"20px");function Ne(){n.value&&(n.value.getLayer("layer-with-pulsing-dot")&&n.value.removeLayer("layer-with-pulsing-dot"),n.value.getSource("dot-point")&&n.value.removeSource("dot-point"),n.value.hasImage&&n.value.hasImage("pulsing-dot")&&n.value.removeImage("pulsing-dot"))}function el(y){var E,b,V,N;Ne();const f=80,w={width:f,height:f,data:new Uint8Array(f*f*4),onAdd(){const B=document.createElement("canvas");B.width=this.width,B.height=this.height,this.context=B.getContext("2d",{willReadFrequently:!0})},render(){var j;const M=performance.now()%2e3/2e3,I=f/2*.3,oe=f/2*.7*M+I,{context:A}=this;A.clearRect(0,0,this.width,this.height),A.beginPath(),A.arc(this.width/2,this.height/2,oe,0,Math.PI*2),A.fillStyle=`rgba(255, 100, 100, ${1-M})`,A.fill();const pe=f/2*.7*(M-.5<0?M-.5+1:M-.5)+I;return A.beginPath(),A.arc(this.width/2,this.height/2,pe,0,Math.PI*2),A.fillStyle=`rgba(255, 100, 100, ${1-(M-.5<0?M-.5+1:M-.5)})`,A.fill(),this.data=A.getImageData(0,0,this.width,this.height).data,(j=n.value)==null||j.triggerRepaint(),!0}};(E=n.value)!=null&&E.hasImage("pulsing-dot")||(b=n.value)==null||b.addImage("pulsing-dot",w,{pixelRatio:2}),(V=n.value)==null||V.addSource("dot-point",{type:"geojson",data:{type:"Feature",geometry:{type:"Point",coordinates:y}}}),(N=n.value)==null||N.addLayer({id:"layer-with-pulsing-dot",type:"symbol",source:"dot-point",layout:{"icon-image":"pulsing-dot"},paint:{"icon-opacity":.6}})}const tl=e.computed(()=>{var y,f,w,E,b,V,N,B,M,I;return{center:(f=(y=i==null?void 0:i.value)==null?void 0:y.map)==null?void 0:f.center,zoom:(E=(w=i==null?void 0:i.value)==null?void 0:w.map)==null?void 0:E.zoom,pitch:((V=(b=i==null?void 0:i.value)==null?void 0:b.map)==null?void 0:V.pitch)||0,bearing:((B=(N=i==null?void 0:i.value)==null?void 0:N.map)==null?void 0:B.bearing)||0,bbox:((I=(M=i==null?void 0:i.value)==null?void 0:M.map)==null?void 0:I.bbox)||null}}),ve={home:gr,print:kr,geolocation:Ar,pitch:Er},ol=y=>{u.value=y};function de(y){if(!i.value||!i.value.widgets)return;const f=i.value.widgets.find(b=>b.type==="list");if(!f||!f.config)return;const{map_key:w,service_key:E}=f.config;w&&E&&(c.value={id:y,map:w,layer:E})}const nl=e.computed(()=>i.value&&i.value.widgets?i.value.widgets.filter(y=>y.position==="absolute"):[]);function rl(y,f,w){const E=y.properties,b=d.value.find(j=>String(j.id)===String(y.source)),V=Array.isArray(b==null?void 0:b.popup)?b.popup:[],B=V.filter(j=>j.meta==="image").map(j=>E==null?void 0:E[j.name]).filter(Boolean),M=B.length>0?`
25
25
  <div class="popup-image-single overflow-hidden rounded-t-xl" style="width:260px;height:160px;margin:0 auto 0 auto;">
26
26
  <img src="${B[0]}" style="width:100%;height:100%;object-fit:cover;border-radius:12px 12px 0 0;display:block;" />
27
27
  </div>
28
- `:"",S=V.find(j=>j.meta==="title"),de=S?C==null?void 0:C[S.name]:"";let O=V.filter(j=>j.meta!=="title"&&j.meta!=="image").map(j=>{const me=C==null?void 0:C[j.name];let ue=me??"-";switch(j.meta){case"badge":ue=me?`<span class="inline-block rounded px-2 py-0.5 text-xs bg-yellow-100 text-yellow-800 ">${me}</span>`:"-";break}return`
28
+ `:"",I=V.find(j=>j.meta==="title"),oe=I?E==null?void 0:E[I.name]:"";let A=V.filter(j=>j.meta!=="title"&&j.meta!=="image").map(j=>{const T=E==null?void 0:E[j.name];let D=T??"-";switch(j.meta){case"badge":D=T?`<span class="inline-block rounded px-2 py-0.5 text-xs bg-yellow-100 text-yellow-800 ">${T}</span>`:"-";break}return`
29
29
  <tr style="display: table-row;">
30
30
  <td style="display: table-cell; padding: 2px 8px 2px 0; vertical-align: middle; font-weight: 500; width: 50%; text-align: left;">${j.ua||j.name}</td>
31
- <td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${ue}</td>
31
+ <td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${D}</td>
32
32
  </tr>
33
- `}).join("");V.length||(O=Object.keys(C).map(j=>`
33
+ `}).join("");V.length||(A=Object.keys(E).map(j=>`
34
34
  <tr style="display: table-row;">
35
35
  <td style="display: table-cell; padding: 2px 8px 2px 0; vertical-align: middle; font-weight: 500; width: 50%; text-align: left;">${j}</td>
36
- <td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${C[j]||"-"}</td>
36
+ <td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${E[j]||"-"}</td>
37
37
  </tr>
38
38
  `).join(""));const pe=`
39
39
  <div class="absolute min-w-[250px] max-w-[300px] bg-white/90 border border-gray-200 rounded-lg shadow-md text-gray-800 pointer-events-none" style="display: flex; flex-direction: column; justify-content: center;">
40
- ${D}
41
- ${de?`<div class="font-semibold text-sm border-b border-solid border-gray-200 text-gray-800 px-2 py-1">${de}</div>`:""}
40
+ ${M}
41
+ ${oe?`<div class="font-semibold text-sm border-b border-solid border-gray-200 text-gray-800 px-2 py-1">${oe}</div>`:""}
42
42
  <div class="text-xs px-2 py-0.5 text-gray-500" style="display: flex; justify-content: center; align-items: center; flex: 1;">
43
43
  <table class="w-full" style="border-collapse: collapse; border: none; margin: 0 auto;">
44
- <tbody>${O}</tbody>
44
+ <tbody>${A}</tbody>
45
45
  </table>
46
46
  </div>
47
47
  </div>
48
- `;return w||(w=document.createElement("div"),w.className="custom-popup absolute z-50",document.body.appendChild(w)),w.innerHTML=pe,Ie(w,f),w}function Ie(y,f){const w=y.offsetWidth,C=y.offsetHeight,b=document.getElementById("maplibre-demo-map"),V=b.getBoundingClientRect(),N=f.originalEvent.clientX-V.left,B=f.originalEvent.clientY-V.top;let D=N-w/2;D=Math.max(10,Math.min(D,V.width-w-10));let S;B-C-10>0?S=B-C-5:B+C+10<V.height?S=B+10:S=Math.max(10,V.height-C-10),y.style.position="absolute",y.style.left=`${D+20}px`,y.style.top=`${S+10}px`,y.parentNode!==b&&b.appendChild(y)}return(y,f)=>{var w,C;return e.openBlock(),e.createElementBlock("div",{class:"maplibre-demo-map-container",style:e.normalizeStyle(ke.value)},[f[10]||(f[10]=e.createElementVNode("div",{id:"maplibre-demo-map"},null,-1)),a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Hr,[e.createElementVNode("div",Zr,[e.createElementVNode("div",Wr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["top-left"],b=>{var V,N;return e.createVNode(fe,{key:b,position:b,widgets:_(b),map:n.value,mapLoaded:a.value,cardValues:c.value,hasFilters:x.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:g.value,enabledLayerIds:W.value,getWidgetComponent:k,getColumnWidth:ye,rightColumnOffset:b==="top-right"?be.value:void 0,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[0]||(f[0]=B=>W.value=B),onCardValuesId:ce,onCloseCard:J,onCatalogLayers:f[1]||(f[1]=B=>d.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))]),e.createElementVNode("div",qr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["bottom-left"],b=>{var V,N;return e.createVNode(fe,{key:b,position:b,widgets:_(b),map:n.value,mapLoaded:a.value,cardValues:c.value,hasFilters:x.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:g.value,enabledLayerIds:W.value,getWidgetComponent:k,getColumnWidth:ye,rightColumnOffset:b==="top-right"?be.value:void 0,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[2]||(f[2]=B=>W.value=B),onCardValuesId:ce,onCloseCard:J,onCatalogLayers:f[3]||(f[3]=B=>d.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))])]),e.createElementVNode("div",Gr,[e.createElementVNode("div",Jr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["top-right"],b=>{var V,N;return e.createVNode(fe,{key:b,position:b,widgets:_(b),map:n.value,mapLoaded:a.value,cardValues:c.value,hasFilters:x.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:g.value,enabledLayerIds:W.value,getWidgetComponent:k,getColumnWidth:ye,rightColumnOffset:b==="top-right"?be.value:void 0,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[4]||(f[4]=B=>W.value=B),onCardValuesId:ce,onCloseCard:J,onCatalogLayers:f[5]||(f[5]=B=>d.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))]),e.createElementVNode("div",Qr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["bottom-right"],b=>{var V,N;return e.createVNode(fe,{key:b,position:b,widgets:_(b),map:n.value,mapLoaded:a.value,cardValues:c.value,hasFilters:x.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:g.value,enabledLayerIds:W.value,getWidgetComponent:k,getColumnWidth:ye,rightColumnOffset:b==="top-right"?be.value:void 0,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[6]||(f[6]=B=>W.value=B),onCardValuesId:ce,onCloseCard:J,onCatalogLayers:f[7]||(f[7]=B=>d.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))])])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(al.value,(b,V)=>(e.openBlock(),e.createElementBlock("div",{key:"abs-"+(b.id||b.type||V),class:"absolute z-20",style:e.normalizeStyle(b.style)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(k(b.type)),{map:n.value,config:b.config,hasFilters:x.value,currentFilterLayer:g.value,enabledLayerIds:W.value,cardValues:c.value,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[8]||(f[8]=N=>W.value=N),onCardValuesId:ce,onCloseCard:J,onCatalogLayers:f[9]||(f[9]=N=>d.value=N)},null,40,["map","config","hasFilters","currentFilterLayer","enabledLayerIds","cardValues"]))],4))),128)),e.createElementVNode("div",Yr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList((C=(w=i.value)==null?void 0:w.value)==null?void 0:C.tools,b=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:b},[a.value&&Se[b]?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(Se[b]),e.mergeProps({key:0,map:n.value,activeTool:u.value,setActiveTool:ll},{ref_for:!0},b==="home"?{initialView:rl.value}:{},{onCardValuesId:ce}),null,16,["map","activeTool"])):e.createCommentVNode("",!0)],64))),128))])],64)):(e.openBlock(),e.createBlock(mr,{key:0}))],4)}}}),[["__scopeId","data-v-c37c9f40"]]);function Kr(t){t.component("MapCustom",xe)}q.MapCustom=xe,q.default=xe,q.install=Kr,Object.defineProperties(q,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
48
+ `;return w||(w=document.createElement("div"),w.className="custom-popup absolute z-50",document.body.appendChild(w)),w.innerHTML=pe,$e(w,f),w}function $e(y,f){const w=y.offsetWidth,E=y.offsetHeight,b=document.getElementById("maplibre-demo-map"),V=b.getBoundingClientRect(),N=f.originalEvent.clientX-V.left,B=f.originalEvent.clientY-V.top;let M=N-w/2;M=Math.max(10,Math.min(M,V.width-w-10));let I;B-E-10>0?I=B-E-5:B+E+10<V.height?I=B+10:I=Math.max(10,V.height-E-10),y.style.position="absolute",y.style.left=`${M+20}px`,y.style.top=`${I+10}px`,y.parentNode!==b&&b.appendChild(y)}return(y,f)=>{var w,E;return e.openBlock(),e.createElementBlock("div",{class:"maplibre-demo-map-container",style:e.normalizeStyle(we.value)},[f[10]||(f[10]=e.createElementVNode("div",{id:"maplibre-demo-map"},null,-1)),a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Or,[e.createElementVNode("div",Ur,[e.createElementVNode("div",Rr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["top-left"],b=>{var V,N;return e.createVNode(ue,{key:b,position:b,widgets:_(b),map:n.value,mapLoaded:a.value,cardValues:c.value,hasFilters:x.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:g.value,enabledLayerIds:Z.value,getWidgetComponent:k,getColumnWidth:ge,rightColumnOffset:b==="top-right"?fe.value:void 0,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[0]||(f[0]=B=>Z.value=B),onCardValuesId:de,onCloseCard:J,onCatalogLayers:f[1]||(f[1]=B=>d.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))]),e.createElementVNode("div",Hr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["bottom-left"],b=>{var V,N;return e.createVNode(ue,{key:b,position:b,widgets:_(b),map:n.value,mapLoaded:a.value,cardValues:c.value,hasFilters:x.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:g.value,enabledLayerIds:Z.value,getWidgetComponent:k,getColumnWidth:ge,rightColumnOffset:b==="top-right"?fe.value:void 0,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[2]||(f[2]=B=>Z.value=B),onCardValuesId:de,onCloseCard:J,onCatalogLayers:f[3]||(f[3]=B=>d.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))])]),e.createElementVNode("div",Zr,[e.createElementVNode("div",Wr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["top-right"],b=>{var V,N;return e.createVNode(ue,{key:b,position:b,widgets:_(b),map:n.value,mapLoaded:a.value,cardValues:c.value,hasFilters:x.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:g.value,enabledLayerIds:Z.value,getWidgetComponent:k,getColumnWidth:ge,rightColumnOffset:b==="top-right"?fe.value:void 0,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[4]||(f[4]=B=>Z.value=B),onCardValuesId:de,onCloseCard:J,onCatalogLayers:f[5]||(f[5]=B=>d.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))]),e.createElementVNode("div",qr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["bottom-right"],b=>{var V,N;return e.createVNode(ue,{key:b,position:b,widgets:_(b),map:n.value,mapLoaded:a.value,cardValues:c.value,hasFilters:x.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:g.value,enabledLayerIds:Z.value,getWidgetComponent:k,getColumnWidth:ge,rightColumnOffset:b==="top-right"?fe.value:void 0,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[6]||(f[6]=B=>Z.value=B),onCardValuesId:de,onCloseCard:J,onCatalogLayers:f[7]||(f[7]=B=>d.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))])])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(nl.value,(b,V)=>(e.openBlock(),e.createElementBlock("div",{key:"abs-"+(b.id||b.type||V),class:"absolute z-20",style:e.normalizeStyle(b.style)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(k(b.type)),{map:n.value,config:b.config,hasFilters:x.value,currentFilterLayer:g.value,enabledLayerIds:Z.value,cardValues:c.value,onSetFilterLayer:$,"onUpdate:enabledLayerIds":f[8]||(f[8]=N=>Z.value=N),onCardValuesId:de,onCloseCard:J,onCatalogLayers:f[9]||(f[9]=N=>d.value=N)},null,40,["map","config","hasFilters","currentFilterLayer","enabledLayerIds","cardValues"]))],4))),128)),e.createElementVNode("div",Gr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList((E=(w=i.value)==null?void 0:w.value)==null?void 0:E.tools,b=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:b},[a.value&&ve[b]?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(ve[b]),e.mergeProps({key:0,map:n.value,activeTool:u.value,setActiveTool:ol},{ref_for:!0},b==="home"?{initialView:tl.value}:{},{onCardValuesId:de}),null,16,["map","activeTool"])):e.createCommentVNode("",!0)],64))),128))])],64)):(e.openBlock(),e.createBlock(cr,{key:0}))],4)}}}),[["__scopeId","data-v-22436345"]]);function Jr(t){t.component("MapCustom",be)}W.MapCustom=be,W.default=be,W.install=Jr,Object.defineProperties(W,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));