@opengis/gis 0.1.69 → 0.1.70

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,13 +1,13 @@
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,Ie){"use strict";const D=(t,o)=>{const n=t.__vccOpts||t;for(const[r,l]of o)n[r]=l;return n},Fe={key:0,class:"p-5 pb-0 flex justify-between items-center"},je={class:"inline-block font-semibold text-lg text-gray-800"},De={class:"flex flex-col gap-1 p-5"},Me={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"},Te=D({__name:"vs-legend-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.items)||[]}),r=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.title)||""});return(l,a)=>(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%"})},[r.value?(e.openBlock(),e.createElementBlock("div",Fe,[e.createElementVNode("h2",je,e.toDisplayString(r.value),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",De,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,c=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center",key:c.label},[e.createElementVNode("span",{class:e.normalizeClass(["shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px]",[c.shape==="square"?"rounded-sm":"",c.shape==="circle"?"rounded-full":"",c.shape==="line"?"w-6 h-0.5":"",c.shape==="dashed-line"?"w-6 h-0.5 dashed-line":""]]),style:e.normalizeStyle({backgroundColor:c.color})},null,6),e.createElementVNode("span",Me,[e.createElementVNode("span",null,e.toDisplayString(c.label),1),c.count!==void 0?(e.openBlock(),e.createElementBlock("span",Pe," ("+e.toDisplayString(c.count)+") ",1)):e.createCommentVNode("",!0)])]))),128))])],4))}},[["__scopeId","data-v-dd12cf90"]]),ze={class:"flex flex-row gap-x-3 z-10 relative"},Ae=["onClick"],Oe=["src","alt"],Ue={__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,n=e.ref("voyager"),r=e.computed(()=>{var h;if(!((h=o.config)!=null&&h.layers))return[];const u=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 u.push({id:"__none__",title:"Без підложки",url:"",service:"",category:"Базові карти",attribution:"",enabled:!0,owner:""}),u});function l(u){return{version:8,sources:{[u.id]:{type:"raster",tiles:[u.url],tileSize:256,attribution:u.attribution||""}},layers:[{id:u.id,type:"raster",source:u.id}]}}const a=u=>{if(!o.map)return;const h=o.map.getStyle(),s=r.value.map(p=>p.id),d=h.layers.filter(p=>!s.includes(p.id)),i={};for(const p in h.sources)s.includes(p)||(i[p]=h.sources[p]);if(u.id==="__none__"){const p={version:8,sources:{...i},layers:[...d]};o.map.setStyle(p);return}const g=l(u);o.map.setStyle(g),o.map.once("styledata",()=>{for(const[p,m]of Object.entries(i))o.map.getSource(p)||o.map.addSource(p,m);for(const p of d)o.map.getLayer(p.id)||o.map.addLayer(p)})},c=u=>{n.value=u;const h=r.value.find(s=>s.id===u);h&&o.map&&a(h)};return e.onMounted(()=>{var u;(u=o.config)!=null&&u.default&&(n.value=o.config.default),c(n.value)}),(u,h)=>{const s=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",ze,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,d=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{trigger:"hover",placement:"top",key:d.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",n.value===d.id?"border-blue-400":"border-transparent"]),onClick:i=>c(d.id)},[d.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:d.image,alt:d.title,class:e.normalizeClass(["object-cover rounded-lg",d.id==="__none__"?"w-10 h-10":"w-12 h-12"])},null,10,Oe)):e.createCommentVNode("",!0)],10,Ae)])),[[s,d.title]])),128))])}}};function le(t){if(!t.attrType||!t.attribute||!t.rules)return t.color||"#ccc";const o=t.rules.map(n=>[["==",["get",t.attribute],n.id||n.value],n.color]);return o.push(t.color||"#ccc"),["case",...o.flat()]}function Re(t){if(!t.attrType||t.attrType!=="icon-by-attribute"||!t.attribute||!t.rules)return t.default_icon||null;const o=t.rules.map(n=>[["==",["get",t.attribute],n.value],n.icon]);return o.push(t.default_icon||"marker.svg"),["case",...o.flat()]}function Ve(t){if(!t.attrType||t.attrType!=="attribute-pattern"||!t.attribute||!t.rules)return t.fillPattern||"";const o=t.rules.map(n=>[["==",["get",t.attribute],n.value],n.fillPattern||""]);return o.push(t.fillPattern||""),["case",...o.flat()]}function J(t,o="stroke",n="#ccc"){return["case",["boolean",["feature-state","hovered"],!1],"#ff0000",["boolean",["feature-state","selected"],!1],"#ff0000",t[o]||n]}function He(t){const o=[{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":le(t),"fill-outline-color":J(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":Ve(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",paint:{"line-color":J(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":J(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-opacity":t.opacity||1}}),o}function Ze(t){return[{type:"line",paint:{"line-color":J(t,"color",le(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 We(t){const o=[{type:"circle",maxzoom:t.icon&&+t.iconZoom||22,paint:{"circle-radius":t.radius||6,"circle-stroke-color":J(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":le(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 qe(t,o,n){const r=t.type||"point";return r==="polygon"?[{type:"fill",...n!==void 0?{maxzoom:n}:{},paint:{"fill-color":le(t),"fill-outline-color":J(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":Ve(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",...n!==void 0?{maxzoom:n}:{},paint:{"line-color":J(t,"stroke","#ccc"),"line-width":t.width||2,"line-opacity":t.lineOpacity||t.opacity||1}}]:r==="line"?[{type:"line",...n!==void 0?{maxzoom:n}:{},paint:{"line-color":J(t,"color",le(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",...n!==void 0?{maxzoom:n}:{},paint:{"circle-radius":t.radius||6,"circle-stroke-color":J(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":le(t),"circle-opacity":t.opacity||1}}]}function Ce(t){var n,r;if(!t)return null;if(t.attrType==="icon-by-attribute"&&t.iconZoom){const l=Re(t),a=Array.isArray(l)&&l[0]==="case"?l:["case",["==",["get",t.attribute],((r=(n=t.rules)==null?void 0:n[0])==null?void 0:r.value)||""],l,l],c=qe(t,void 0,+t.iconZoom),u={type:"symbol",minzoom:+t.iconZoom,layout:{"icon-image":a,"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[...c,u]}const o=t.type||"point";return o==="polygon"?He(t):o==="line"?Ze(t):We(t)}function Ge(t){return t.startsWith("http")?t:`${window.location.origin}${t}`}function Je(t){const{id:o,sourceLayer:n,url:r,bounds:l,title:a,style:c,service:u,service_type:h,source_type:s,data:d}=t,i=Ge(r),g=h||u||s||"vector";switch(g){case"vtile":case"vector":return Ye(o,n,i,l,a,c);case"raster":return Ke(o,i,l,a,c);case"geojson":return Xe(o,d||i,l,a,c);default:throw new Error(`Unsupported layer service type: ${g}`)}}function Qe(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 Ye(t,o,n,r,l,a){const c=o||(n.match(/\/vtile\/([^/]+)/)||[])[1]||t,u={type:"vector",tiles:[n],...r&&{bounds:r}},d=Ce(a||{}).map((i,g)=>({...i,id:`${t}-${g}`,"source-layer":c,source:t}));return{id:t,title:l,source:u,layers:d,visible:!0}}function Ke(t,o,n,r,l){const a={type:"raster",tiles:[o],tileSize:256,...n&&{bounds:n}},c=l||{},u={id:t,type:"raster",source:t,layout:{visibility:"visible"},...c&&{paint:c}};return{id:t,title:r,source:a,layers:[u],visible:!0}}function Xe(t,o,n,r,l){var d;const a={type:"geojson",data:o,...n&&{bounds:n}};let c="point";if(o&&o.features&&o.features.length>0){const i=(d=o.features[0].geometry)==null?void 0:d.type;i==="Polygon"||i==="MultiPolygon"?c="polygon":i==="LineString"||i==="MultiLineString"?c="line":c="point"}const u=l||Qe(c),s=Ce(u).map((i,g)=>({...i,id:`${t}-${g}`,source:t}));return{id:t,title:r,source:a,layers:s,visible:!0}}function et(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(n=>{n.icon&&o.add(n.icon)}),Array.from(o).map(n=>({name:n,url:(t.icon_base_url||"")+n}))}function tt(t){const o=new Set;function n(r){typeof r=="string"?o.add(r):Array.isArray(r)&&r.forEach(n)}return t&&t["icon-image"]&&n(t["icon-image"]),Array.from(o)}async function Be(t,o){const n=o.map(async({name:r,url:l})=>{const a=await t.loadImage(l);return{name:r,data:a.data}});try{const r=await Promise.all(n);for(const{name:l,data:a}of r)t.hasImage(l)||t.addImage(l,a)}catch(r){console.error("Failed to load icons:",r)}}function ot(t,o,n="/icons/"){const l=tt(o).map(a=>({name:a,url:n+a}));return Be(t,l)}async function X(t,o){const n=Je(o),r=et(o.style);r.length>0&&await Be(t,r),o.layout&&o.layout["icon-image"]&&await ot(t,o.layout),t.getSource(n.id)||t.addSource(n.id,n.source);for(const l of n.layers)o.visible!==void 0&&(l.layout={...l.layout,visibility:o.visible?"visible":"none"}),t.getLayer(l.id)?t.setLayoutProperty(l.id,"visibility",o.visible?"visible":"none"):await t.addLayer(l);return n}function ae(t,o){t.getStyle().layers.filter(l=>l.source===o).forEach(l=>{t.removeLayer(l.id)}),t.getSource(o)&&t.removeSource(o)}const nt={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},rt={class:"flex flex-col justify-between h-full pb-5 px-5"},lt={key:0,class:"relative mb-[10px]"},at={width:"16",height:"17",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:"absolute top-1/2 left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0px, -50%)"}},it={key:1,class:"mb-4"},st={class:""},ct={class:"space-y-2"},dt={class:"flex items-center gap-[10px] text-gray-500"},pt={class:"dataset-checkbox-container flex"},mt=["onUpdate:modelValue","onChange"],ht={class:"text-sm"},ut=["onClick"],gt=["innerHTML"],ft={key:0,class:"text-sm text-gray-500 text-center py-2"},yt={__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 n=t,r=o,l=e.ref(""),a=e.ref([]);function c(){const m=new URLSearchParams(window.location.search).get("layers");return m?m.split(","):[]}function u(p){const m=new URLSearchParams(window.location.search);p.length>0?m.set("layers",p.join(",")):m.delete("layers");const _=`${window.location.pathname}?${m.toString()}`;window.history.replaceState({},"",_)}e.onMounted(()=>{let p=[];n.history&&(p=c()),p.length>0?a.value=n.config.layers.map(m=>({...m,visible:p.includes(String(m.id))})):a.value=n.config.layers.map(m=>({...m,visible:m.visible??!1})),a.value.forEach(m=>{m.visible&&X(n.map,m)}),r("update:enabledLayerIds",d())});const h=e.computed(()=>{if(!l.value)return a.value;const p=l.value.toLowerCase();return a.value.filter(m=>(m.title||m.name||m.label||"").toLowerCase().includes(p))}),s=e.computed(()=>a.value.every(p=>p.visible)),d=()=>a.value.filter(p=>p.visible).map(p=>p.id),i=p=>{p.visible?X(n.map,p):(ae(n.map,p.id),r("set-filter-layer",null)),n.map.getStyle().layers.filter(L=>L.source===p.id).forEach(L=>{n.map.setLayoutProperty(L.id,"visibility",p.visible?"visible":"none")}),r("update:enabledLayerIds",d())},g=()=>{const p=!s.value;a.value.forEach(m=>{m.visible=p,p?X(n.map,m):ae(n.map,m.id)}),p||r("set-filter-layer",null),r("update:enabledLayerIds",d())};return e.watch(()=>d(),p=>{n.history&&u(p)},{deep:!0}),(p,m)=>(e.openBlock(),e.createElementBlock("div",nt,[m[2]||(m[2]=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",rt,[t.config.search?(e.openBlock(),e.createElementBlock("div",lt,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":m[0]||(m[0]=_=>l.value=_),placeholder:"Введіть назву шару...",class:"py-[7px] ps-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,l.value]]),(e.openBlock(),e.createElementBlock("svg",at,[...m[1]||(m[1]=[e.createElementVNode("path",{d:"M7.33333 13.1667C10.2789 13.1667 12.6667 10.7789 12.6667 7.83333C12.6667 4.88781 10.2789 2.5 7.33333 2.5C4.38781 2.5 2 4.88781 2 7.83333C2 10.7789 4.38781 13.1667 7.33333 13.1667Z",stroke:"#6B7280","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M13.9995 14.5L11.1328 11.6333",stroke:"#6B7280","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])]))])):e.createCommentVNode("",!0),t.config.allow_toggle_all?(e.openBlock(),e.createElementBlock("div",it,[e.createElementVNode("button",{onClick:g,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",st,[e.createElementVNode("ul",ct,[(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",dt,[e.createElementVNode("span",pt,[e.withDirectives(e.createElementVNode("input",{class:"dataset-checkbox",type:"checkbox","onUpdate:modelValue":L=>_.visible=L,onChange:()=>i(_)},null,40,mt),[[e.vModelCheckbox,_.visible]])]),e.createElementVNode("span",ht,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:$=>p.$emit("show-widget",L.widget)},[e.createElementVNode("div",{innerHTML:L.icon},null,8,gt)],8,ut)]))),128)):e.createCommentVNode("",!0)]))),128)),l.value&&h.value.length===0?(e.openBlock(),e.createElementBlock("li",ft," Шарів не знайдено ")):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 pe=async(t,o,n,r=10)=>{var _,L,$,k;if(!o||!n)return;await e.nextTick();const l=await(n==null?void 0:n.getBoundingClientRect()),a=await(o==null?void 0:o.getBoundingClientRect());if(!a||!l)return;const c=await parseInt((_=o==null?void 0:o.getBoundingClientRect())==null?void 0:_.height),u=await parseInt((L=o==null?void 0:o.getBoundingClientRect())==null?void 0:L.width),h=await parseInt(($=n==null?void 0:n.getBoundingClientRect())==null?void 0:$.height),s=await parseInt((k=n==null?void 0:n.getBoundingClientRect())==null?void 0:k.width),d=await window.innerHeight,i=await window.innerWidth;let g=0,p=0;const m=a.bottom+r+h;switch(t){case"top":a.top-l.height-r<0?g=a.top-l.height+r+h+c:g=a.top-l.height-r,i>s+a.right+30?p=a.left-l.width/2+a.width/2:p=i-30-s;break;case"bottom":d>m?g=a.bottom+r:g=a.bottom-r-h-c,p=a.left-l.width/2+a.width/2;break;case"left":g=a.top-l.height/2+a.height/2,a.left-l.width-r>0?p=a.left-l.width-r:p=10;break;case"right":g=a.top-l.height/2+a.height/2,i-u>s?p=a.right+r:p=i-30-s;break;case"top-right":a.top-l.height-r<0?g=a.top-l.height+r+h+c:g=a.top-l.height-r,i-u>s?p=a.right+r:p=i-30-s;break;case"top-left":a.top-l.height-r<0?g=a.top-l.height+r+h+c:g=a.top-l.height-r,a.left-l.width-r>0?p=a.left-l.width-r:p=10;break;case"top-start":a.top-l.height-r<0?g=a.top-l.height+r+h+c:g=a.top-l.height-r,a.left>0?p=a.left:p=10;break;case"bottom-right":d>m?g=a.bottom+r:g=a.bottom-r-h-c,i-u>s?p=a.left:p=i-30-s;break;case"bottom-left":d>m?g=a.bottom+r:g=a.bottom-r-h-c,a.left>0?p=a.right-s:p=10;break;case"bottom-start":d>m?g=a.bottom+r:g=a.bottom-r-h-c,a.left>0?p=a.left:p=10;break}g+h>d?g=d-h-r:g<0&&(g=r),p+s>i?p=i-s-r:p<0&&(p=r),n instanceof HTMLElement&&(n.style.top=`${g}px`,n.style.left=`${p}px`,n.style.position="fixed")},bt={class:"text-center"},wt={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"},ie=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:n}){const r=t,l=n,a=e.ref(!1),c=e.ref([]),u=e.ref(null),h=e.ref(null),s=e.ref(null),d=x=>{var F,G;if(!x){a.value=!1;return}(F=h.value)!=null&&F.contains(x.target)||(G=s.value)!=null&&G.contains(x.target)||(a.value=!1)},i=x=>{a.value&&s.value&&!s.value.contains(x.target)&&(a.value=!1)},g=()=>{a.value=!1},p=()=>{a.value&&(a.value=!1)},m=()=>{let x=u.value;for(;x&&x!==document.body;)(x.scrollHeight>x.clientHeight||x.scrollWidth>x.clientWidth)&&(x.addEventListener("scroll",g),c.value.push(x)),x=x.parentElement;document.body&&(document.body.addEventListener("scroll",g),c.value.push(document.body))},_=()=>{c.value.forEach(x=>{x.removeEventListener("scroll",g)}),c.value=[]};e.watch(a,x=>{x?(m(),window.addEventListener("resize",()=>pe(r.placement,h.value,s.value)),pe(r.placement,h.value,s.value)):window.removeEventListener("resize",()=>pe(r.placement,h.value,s.value)),l("isvisible",x)}),e.onMounted(()=>{window.addEventListener("click",d),window.addEventListener("popstate",p),window.addEventListener("scroll",i,!0),m()}),e.onBeforeUnmount(()=>{window.removeEventListener("click",d),window.removeEventListener("popstate",p),_()});const L=()=>{a.value=!0,pe(r.placement,h.value,s.value)},$=()=>{a.value=!1},k=async()=>{await pe(r.placement,h.value,s.value),a.value=!a.value};return o({togglePopover:k}),(x,F)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"popover",ref:u,class:"vs-popover inline-block"},[e.createElementVNode("div",bt,[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",{},()=>[F[0]||(F[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:$,class:e.normalizeClass({"pointer-events-none":x.disabled})},[e.renderSlot(x.$slots,"reference",{},()=>[F[1]||(F[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",wt,[e.renderSlot(x.$slots,"default",{},()=>[F[2]||(F[2]=e.createElementVNode("span",null,"Popover content",-1))])])],6),[[e.vShow,a.value]])]),_:3})],8,["to"]))])],512))}});e.reactive({visible:!0});const xt={class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},kt={key:0,class:"p-5 pb-3 flex justify-between items-start gap-[30px]"},_t={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Et={class:"flex flex-col gap-1"},Vt={class:"flex flex-col gap-1 p-5 pt-0"},Ct=["innerHTML"],Bt=D({__name:"vs-info-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.title)||""}),r=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.content)||""}),l=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.goTo)||[]});return(a,c)=>{var h,s;const u=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",xt,[n.value||(h=l.value)!=null&&h.length?(e.openBlock(),e.createElementBlock("div",kt,[e.createElementVNode("h2",_t,e.toDisplayString(n.value),1),(s=l.value)!=null&&s.length?(e.openBlock(),e.createBlock(e.unref(ie),{key:0,placement:"bottom"},{reference:e.withCtx(()=>[e.createVNode(e.unref(ie),{trigger:"hover",placement:"right"},{reference:e.withCtx(()=>[...c[0]||(c[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(()=>[c[1]||(c[1]=e.createTextVNode(" Перейти на карту ",-1))]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",Et,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.label},[d.url?(e.openBlock(),e.createBlock(u,{key:0,to:d.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(d.label),1)]),_:2},1032,["to"])):e.createCommentVNode("",!0)]))),128))])]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Vt,[e.createElementVNode("div",{innerHTML:r.value},null,8,Ct)])])}}},[["__scopeId","data-v-629caa82"]]),Lt={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative overflow-hidden"},Nt={key:0,class:"p-5 pb-3 flex justify-between items-center"},vt={class:"inline-block font-semibold text-lg text-gray-800"},$t={key:1,class:"flex"},St={class:"flex items-center mx-[8px]"},It={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"},Ft={class:"min-h-[34px] flex justify-center items-center text-stone-500 py-2 px-1.5 text-sm"},jt={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"},Dt={key:0,class:"text-center"},Mt={key:1,class:"text-red-500"},Pt={key:2},Tt=["innerHTML"],zt={key:1,class:"flow-root"},At={class:"-my-3 divide-y divide-gray-100 text-sm"},Ot={class:"font-medium text-gray-900"},Ut={class:"text-gray-700 sm:col-span-2"},Rt={key:2,class:"vs-map-card-info__nodata"},Ht={key:3,class:"pt-4 flex justify-end"},Zt=["href"],Le={__name:"vs-card-widget",props:{config:{type:Object,required:!0},cardValues:{type:Object,required:!0}},emits:["close","content-resize"],setup(t,{emit:o}){const n=t,r=o,l=e.computed(()=>{var $;return(($=n.config)==null?void 0:$.title)||""}),a=e.computed(()=>!!(typeof window.app=="object"&&window.app&&window.app.config)),c=e.ref([]),u=e.ref(!1),h=e.ref(null),s=e.ref(0),d=e.computed(()=>s.value+1),i=e.computed(()=>{var $;return(($=n.info)==null?void 0:$.length)||0}),g=e.computed(()=>c.value[s.value]),p=e.computed(()=>{if(!g.value)return{};const{rows:$,columns:k}=g.value;return!$||!k?{}:k.reduce((x,F)=>(!F.hide&&!["geom","geodata","id"].includes(F.name)&&(x[F.ua]=$[F.name]??"-"),x),{})});async function m(){var $,k,x,F,G,K;u.value=!0,h.value=null;try{const R={id:($=n.cardValues)==null?void 0:$.id,layer:typeof((k=n.cardValues)==null?void 0:k.layer)=="object"?(F=(x=n.cardValues)==null?void 0:x.layer)==null?void 0:F.id:(G=n.cardValues)==null?void 0:G.layer,map:(K=n.cardValues)==null?void 0:K.map},xe=await fetch("/api/map-format?"+new URLSearchParams(R)).then(ke=>ke.json());c.value[s.value]=xe}catch(R){h.value=(R==null?void 0:R.message)||"Помилка запиту"}finally{u.value=!1,await e.nextTick(),r("content-resize")}}function _(){s.value<n.info.length-1&&(s.value+=1,c.value[s.value]||m())}function L(){s.value>0&&(s.value-=1,c.value[s.value]||m())}return e.onMounted(async()=>{await e.nextTick(),m()}),e.watch(()=>n.info,()=>{s.value=0,m(),r("content-resize")},{deep:!0}),e.watch([()=>n.cardValues,()=>n.config],async()=>{await e.nextTick(),m(),r("content-resize")}),($,k)=>{var x,F;return e.openBlock(),e.createElementBlock("div",Lt,[l.value?(e.openBlock(),e.createElementBlock("div",Nt,[e.createElementVNode("h2",vt,e.toDisplayString(l.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]=G=>r("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),i.value>1?(e.openBlock(),e.createElementBlock("div",$t,[e.createElementVNode("button",{type:"button",class:e.normalizeClass([{"opacity-flex items-center justify-between border-b px-[16px] py-[8px]50 pointer-events-none":d.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",St,[e.createElementVNode("span",It,e.toDisplayString(d.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",Ft,e.toDisplayString(i.value),1)]),e.createElementVNode("button",{type:"button",onClick:_,class:e.normalizeClass([{"opacity-50 pointer-events-none":d.value===i.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",jt,[u.value?(e.openBlock(),e.createElementBlock("div",Dt,"Завантаження даних...")):h.value?(e.openBlock(),e.createElementBlock("div",Mt," Помилка завантаження даних ")):(e.openBlock(),e.createElementBlock("div",Pt,[(x=g.value)!=null&&x.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:g.value.html,class:"custom-table-html border-b"},null,8,Tt)):Object.keys(p.value).length?(e.openBlock(),e.createElementBlock("div",zt,[e.createElementVNode("dl",At,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(G,K)=>(e.openBlock(),e.createElementBlock("div",{key:K,class:"grid grid-cols-1 gap-1 py-3 even:bg-gray-50 sm:grid-cols-3 sm:gap-4"},[e.createElementVNode("dt",Ot,e.toDisplayString(K),1),e.createElementVNode("dd",Ut,e.toDisplayString(G),1)]))),128))])])):(e.openBlock(),e.createElementBlock("div",Rt,"Даних не знайдено."))])),(F=g.value)!=null&&F.cardInterface&&a.value?(e.openBlock(),e.createElementBlock("div",Ht,[e.createElementVNode("a",{href:`/card/${g.value.cardInterface}/${g.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,Zt)])):e.createCommentVNode("",!0)])])}}},Wt={class:"size-full flex flex-col bg-white border border-gray-200 shadow-2xs rounded-xl dark:bg-neutral-800 dark:border-neutral-700"},qt={key:0,class:"p-5 pb-0 items-center"},Gt={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Jt={class:"h-full p-5"},Qt={class:"h-full flex flex-col justify-between space-y-4"},Yt={class:"space-y-4"},Kt={key:0,class:"flex gap-x-1 w-full h-2.5 rounded-full overflow-hidden"},Xt=["aria-valuenow"],eo={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"},to=["for"],oo={key:0,width:"16",height:"auto",src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J3doaXRlJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00xMi4yMDcgNC43OTNhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMGwtMi0yYTEgMSAwIDAxMS40MTQtMS40MTRMNi41IDkuMDg2bDQuMjkzLTQuMjkzYTEgMSAwIDAxMS40MTQgMHonLz48L3N2Zz4="},no=["id","onUpdate:modelValue"],ro={class:"ml-2 text-gray-800 dark:text-neutral-200"},lo={key:0,class:"ms-auto text-xs text-gray-500 dark:text-neutral-500"},ao={__name:"vs-attributre-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var h;return((h=o.config)==null?void 0:h.title)||""}),r=e.ref([]),l=e.computed(()=>o.config.layer.style.rules.some(h=>h.count!==void 0)),a=e.computed(()=>o.config.layer.style.rules.reduce((h,s)=>h+(s.count||0),0)),c=h=>!h||a.value===0?0:Math.round(h/a.value*100),u=()=>{const s=o.config.layer.style.rules.filter((d,i)=>r.value[i]).map(d=>d.id||d.value).join(",");if(o.config.layer.id){const d=o.map.getSource(o.config.layer.id);if(d){const g=d.tiles[0].split("?filter=")[0],p=s?`${g}?filter=${o.config.layer.style.attribute}=${s}`:g;d.setTiles([p])}}};return e.onMounted(()=>{var h;(h=o.config)!=null&&h.layer&&(X(o.map,o.config.layer),r.value=new Array(o.config.layer.style.rules.length).fill(!1))}),(h,s)=>(e.openBlock(),e.createElementBlock("div",Wt,[n.value?(e.openBlock(),e.createElementBlock("div",qt,[e.createElementVNode("div",null,[e.createElementVNode("h2",Gt,e.toDisplayString(n.value),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Jt,[e.createElementVNode("div",Qt,[e.createElementVNode("div",Yt,[l.value?(e.openBlock(),e.createElementBlock("div",Kt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(d,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"flex flex-col justify-center overflow-hidden text-xs text-white text-center whitespace-nowrap",style:e.normalizeStyle({width:`${c(d.count)}%`,backgroundColor:d.color}),role:"progressbar","aria-valuenow":c(d.count),"aria-valuemin":"0","aria-valuemax":"100"},null,12,Xt))),128))])):e.createCommentVNode("",!0),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(d,i)=>(e.openBlock(),e.createElementBlock("li",{key:i},[e.createElementVNode("div",eo,[e.createElementVNode("label",{for:`filter-${i}`,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:r.value[i]?d.color||"#2563eb":"#fff",borderColor:r.value[i]?d.color||"#2563eb":d.color||"#d9d9d9"})},[r.value[i]?(e.openBlock(),e.createElementBlock("img",oo)):e.createCommentVNode("",!0)],4),e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:`filter-${i}`,"onUpdate:modelValue":g=>r.value[i]=g,onChange:u,class:"hidden",disabled:!1},null,40,no),[[e.vModelCheckbox,r.value[i]]]),e.createElementVNode("span",ro,e.toDisplayString(d.label||d.text),1),l.value?(e.openBlock(),e.createElementBlock("span",lo,"("+e.toDisplayString(d.count)+")",1)):e.createCommentVNode("",!0)],8,to)])]))),128))])])])])]))}},io={},so={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function co(t,o){return e.openBlock(),e.createElementBlock("svg",so,[...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 po=D(io,[["render",co]]),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 Ne=D(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"],Eo={key:0,class:"text-xs opacity-60 text-[#4b5563]"},Vo=D({__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 n=t,r=o,l=e.computed(()=>n.selectedLayers.some(u=>u.id===n.layer.id)),a=u=>Intl.NumberFormat("uk",{notation:"compact"}).format(u),c=u=>{r(u?"select":"remove",n.layer)};return(u,h)=>{var s,d,i,g,p;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:l.value,onChange:h[0]||(h[0]=m=>c(m.target.checked)),class:"custom-checkbox-input"},null,40,bo),e.createElementVNode("div",wo,[l.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(((d=t.layer)==null?void 0:d.name)||((i=t.layer)==null?void 0:i.title)),9,_o),isNaN(a((g=t.layer)==null?void 0:g.count))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Eo,e.toDisplayString(a((p=t.layer)==null?void 0:p.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=D(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=D(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 Do(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 Mo=D(Fo,[["render",Do]]),Po={},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=D(Po,[["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=D(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=D(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=D(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 n=`${window.location.pathname}?${o.toString()}`;window.history.replaceState({},"",n)}const tn={components:{VsPopover:ie,VsLayersItem:Vo,ZoomInIcon:No,InfoIcon:Io,TableIcon:Mo,TrashIcon:Ao,DotsIcon:Ho,ChevronRightIcon:Go,FilterIcon:Ko,closeIcon:Ne,searchIcon:po},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 n=this.layers.find(r=>String(r.id)===o);if(n&&!this.selectedLayers.find(r=>r.id===n.id)){const r={...n,visible:!0,opacity:100,showFilters:!1};this.selectedLayers.push(r),X(this.map,r)}}),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(n=>n.json()),o=(t.services||[]).filter(n=>n.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(n=>n.id===t.id);o!==-1&&this.selectedLayers.splice(o,1),ae(this.map,t.id)},async toggleLayerVisibility(t){try{t.visible?(await X(this.map,t),this.updateLayerOpacity(t)):await ae(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(r=>r.id.includes(t.id)),n=t.opacity/100;o.forEach(r=>{r.type==="fill"?(t.originalFillOpacity||(t.originalFillOpacity=this.map.getPaintProperty(r.id,"fill-opacity")||1),this.map.setPaintProperty(r.id,"fill-opacity",t.originalFillOpacity*n)):r.type==="raster"?this.map.setPaintProperty(r.id,"raster-opacity",n):r.type==="line"?this.map.setPaintProperty(r.id,"line-opacity",n):r.type==="circle"?(this.map.setPaintProperty(r.id,"circle-opacity",n),this.map.setPaintProperty(r.id,"circle-stroke-opacity",n)):r.type==="symbol"&&(this.map.setPaintProperty(r.id,"icon-opacity",n),this.map.setPaintProperty(r.id,"text-opacity",n))})}},async handleRemoveFromCatalog(t){const o=this.selectedLayers.find(n=>n.id===t.id);o!=null&&o.visible&&await ae(this.map,t.id),this.deleteLayer(t)},clearSelectedLayers(){this.selectedLayers.forEach(async t=>{t.visible&&await ae(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 n=this.map.getSource(o.id);if(n){const l=n.tiles[0].split("?filter=")[0],a=t?`${l}?filter=${t}`:l;n.setTiles([a])}},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 n=this.selectedLayers.length-1;n>=0;n--){const r=this.selectedLayers[n];r.visible&&this.map.getStyle().layers.find(l=>l.id.includes(r.id))&&this.map.getStyle().layers.forEach(l=>{l.id.includes(r.id)&&this.map.moveLayer(l.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"},En=["onClick"],Vn={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]"},Dn={key:0,class:"text-center text-[14px] text-[#4b5563]"},Mn=["onClick"],Pn={class:"flex items-center gap-x-3"},Tn=["title"],zn={class:"text-xs opacity-60 text-[#4b5563]"};function An(t,o,n,r,l,a){var p;const c=e.resolveComponent("VsPopover"),u=e.resolveComponent("DotsIcon"),h=e.resolveComponent("VsFilter"),s=e.resolveComponent("searchIcon"),d=e.resolveComponent("closeIcon"),i=e.resolveComponent("VsLayersItem"),g=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(l.activeView==="catalog"?"Каталог":"Вибрані шари")+" ",1),l.activeView==="catalog"?(e.openBlock(),e.createElementBlock("span",an,"("+e.toDisplayString(((p=l.layers)==null?void 0:p.length)||0)+")",1)):(e.openBlock(),e.createElementBlock("span",sn,"("+e.toDisplayString(l.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)=>a.clearSelectedLayers&&a.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-1b8b657a><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-1b8b657a></path><path d="M21 3v5h-5" data-v-1b8b657a></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-1b8b657a></path><path d="M8 16H3v5" data-v-1b8b657a></path></svg>',1)])])]),e.createElementVNode("div",cn,[e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",l.activeView==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[1]||(o[1]=m=>l.activeView="catalog")}," Каталог ",2),e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",l.activeView==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[2]||(o[2]=m=>l.activeView="selected")}," Вибрані шари ",2)]),l.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=>l.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)])])]),l.mounted?(e.openBlock(),e.createElementBlock("div",mn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.selectedLayers,(m,_)=>{var L,$;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:l.draggedLayerIndex===_}]),draggable:"true",onDragstart:k=>a.onDragStart(_),onDragover:e.withModifiers(k=>a.onDragOver(_),["prevent"]),onDrop:k=>a.onDrop(_),onDragend:o[4]||(o[4]=(...k)=>a.onDragEnd&&a.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-1b8b657a><circle cx="5" cy="5" r="1.5" data-v-1b8b657a></circle><circle cx="5" cy="12" r="1.5" data-v-1b8b657a></circle><circle cx="5" cy="19" r="1.5" data-v-1b8b657a></circle><circle cx="12" cy="5" r="1.5" data-v-1b8b657a></circle><circle cx="12" cy="12" r="1.5" data-v-1b8b657a></circle><circle cx="12" cy="19" r="1.5" data-v-1b8b657a></circle><circle cx="19" cy="5" r="1.5" data-v-1b8b657a></circle><circle cx="19" cy="12" r="1.5" data-v-1b8b657a></circle><circle cx="19" cy="19" r="1.5" data-v-1b8b657a></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=>a.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(c,{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=>a.updateLayerOpacity(m)},e.toDisplayString(m.opacity||100)+"% ",9,En)]),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=>a.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",Vn,[e.createVNode(c,{placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("div",Nn,[e.createVNode(u)])]),default:e.withCtx(()=>[e.createElementVNode("div",Cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.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:F=>!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=>a.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,!(($=m.filters)!=null&&$.length)]])])):e.createCommentVNode("",!0)],42,hn)}),128)),l.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=>l.search=m),type:"text",class:"py-[7px] pl-2 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)=>a.onEnter&&a.onEnter(...m),["enter"]))},null,544),[[e.vModelText,l.search]]),e.createVNode(s,{class:"absolute top-1/2 left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0, -50%)"}}),l.search?(e.openBlock(),e.createBlock(d,{key:0,class:"absolute top-1/2 right-[10px] w-[16px] h-[16px] cursor-pointer",style:{transform:"translate(0, -50%)"},onClick:a.clearSearch},null,8,["onClick"])):e.createCommentVNode("",!0)]),l.categories?(e.openBlock(),e.createElementBlock("div",Fn,[l.search?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.searchedLayers,(m,_)=>(e.openBlock(),e.createBlock(i,{key:_,layer:m,map:n.map,selectedLayers:l.selectedLayers,onSelect:a.addToSelected,onRemove:a.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128)),a.searchedLayers.length===0?(e.openBlock(),e.createElementBlock("div",jn," Нічого не знайдено ")):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[!l.categories||Object.keys(l.categories).length===0?(e.openBlock(),e.createElementBlock("div",Dn," Каталог порожній ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(Object.keys(l.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:_=>a.selectCategory(m)},[e.createElementVNode("div",Pn,[e.createVNode(g,{class:e.normalizeClass({"rotate-up":m===l.selectedCategory,"rotate-down":m!==l.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(a.formatNumber(l.categories[m].length)),1)],8,Mn),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.categories[m],(_,L)=>(e.openBlock(),e.createBlock(i,{key:L,layer:_,map:n.map,selectedLayers:l.selectedLayers,onSelect:a.addToSelected,onRemove:a.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128))],512),[[e.vShow,m===l.selectedCategory]])]))),128))],64))])):e.createCommentVNode("",!0)],64))])}const On=D(tn,[["render",An],["__scopeId","data-v-1b8b657a"]]),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,n=e.computed(()=>{var c;return((c=o.config)==null?void 0:c.filters)||[]}),r=e.computed(()=>n.value),l=e.computed(()=>{var u;const c=(u=o.config)==null?void 0:u.conditions;return!c||!c.layers?!0:o.enabledLayerIds.some(h=>c.layers.includes(h))}),a=async({data:c})=>{var i;const u=Object.entries(c).map(g=>g.join("=")).join("|"),h=(i=o.config)==null?void 0:i.conditions,s=(h==null?void 0:h.layers)||[],d=o.enabledLayerIds.filter(g=>s.includes(g));d.length&&d.forEach(g=>{const p=o.map.getSource(g);if(p){const _=p.tiles[0].split("?filter=")[0],L=u?`${_}?filter=${u}`:_;p.setTiles([L])}})};return(c,u)=>l.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(Ie),{ref:"filter",schema:r.value,view:"vertical",onChange:a},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,n=e.ref(0),r=e.ref(null),l=e.computed(()=>{var s;return((s=o.config)==null?void 0:s.filters)||[]}),a=e.computed(()=>l.value.map(s=>({...s,id:s.name}))),c=e.computed(()=>{var d;const s=(d=o.config)==null?void 0:d.conditions;return!s||!s.layers?!0:o.enabledLayerIds.some(i=>s.layers.includes(i))}),u=e.computed(()=>{var s;if(o.enabledLayerIds&&o.enabledLayerIds.length){const i=(((s=o.config)==null?void 0:s.layers)||[]).find(g=>g.id===o.enabledLayerIds[0]);return(i==null?void 0:i.title)||(i==null?void 0:i.name)||(i==null?void 0:i.label)||o.enabledLayerIds[0]}return""}),h=async({url:s})=>{var p,m;const d=(p=o.config)==null?void 0:p.conditions;if(!d){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 i=(d==null?void 0:d.layers)||[],g=o.enabledLayerIds.filter(_=>i.includes(_));g.length&&g.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)&&r.value&&(r.value.activeFilters={},n.value=0)}),e.watch(()=>{var s;return(s=r.value)==null?void 0:s.activeFilters},s=>{n.value=Object.keys(s||{}).length},{deep:!0}),(s,d)=>{const i=e.resolveComponent("VsPopover"),g=e.resolveComponent("VsFilterList");return c.value&&a.value.length?(e.openBlock(),e.createBlock(g,{key:0,ref_key:"filter",ref:r,isDialog:t.config.dialog??!0,scheme:a.value,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:h},{button:e.withCtx(({visible:p})=>[e.createVNode(i,{teleport:"body",trigger:"hover",placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("button",qn,[e.createElementVNode("div",Gn,[d[0]||(d[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(u.value),1),n.value?(e.openBlock(),e.createElementBlock("span",Qn,e.toDisplayString(n.value),1)):e.createCommentVNode("",!0)])])]),default:e.withCtx(()=>[d[1]||(d[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(n=>n.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,n,r,l,a){var u;const c=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)),((u=l.items)==null?void 0:u.length)>0?(e.openBlock(),e.createElementBlock("div",er,[e.createElementVNode("div",tr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.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))]),l.total>l.limit?(e.openBlock(),e.createElementBlock("div",ar,[e.createElementVNode("div",ir,[e.createVNode(c,{total:l.total,maxPages:4,defaultPage:l.currentPage,pageSize:l.limit,goTo:!1,size:"medium",onPageChange:a.handlePageChange,backgroundColor:"#e5e7eb",borderedCellSelected:!0,pageSizes:[16,32,48,64],onPageSizeChange:a.changeLimit},null,8,["total","defaultPage","pageSize","onPageChange","onPageSizeChange"])])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",sr,"Немає даних"))],512)}const dr=D(Kn,[["render",cr]]),pr={class:"map-skeleton-loader"},mr=D({__name:"vs-skeleton-loader",setup(t){return(o,n)=>(e.openBlock(),e.createElementBlock("div",pr,[...n[0]||(n[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:D(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,n,r,l,a){const c=e.resolveComponent("homeIcon"),u=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(u,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(c,{onClick:a.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=D(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:D(wr,[["render",kr]]),VsPopover:ie},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,n)=>{const r=document.createElement("script");r.src=t,r.async=!0,r.onload=o,r.onerror=n,document.head.appendChild(r),this.scriptElements.push(r)})},addStyle(t){return new Promise((o,n)=>{const r=document.createElement("link");r.href=t,r.rel="stylesheet",r.type="text/css",r.onload=o,r.onerror=n,document.head.appendChild(r),this.styleElements.push(r)})},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:n,Format:r,DPI:l}=window.MapboxExportControl;this.map.addControl(new t({PageSize:o.A3,PageOrientation:n.Portrait,Format:r.PNG,DPI:l[96],Crosshair:!0,PrintableArea:!0,Local:"uk"}))},simulateClick(){new Promise(o=>{const n=setTimeout(()=>{const r=document.querySelector(".mapboxgl-export-control");r&&(clearInterval(n),o(r))},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 Er(t,o,n,r,l,a){const c=e.resolveComponent("printIcon"),u=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(u,{trigger:"hover",placement:"left",teleport:"body"},{reference:e.withCtx(()=>[e.createVNode(c,{onClick:a.togglePrint,class:e.normalizeClass([a.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 Vr=D(_r,[["render",Er]]),Cr={props:{map:{type:Object,required:!0}},data(){return{is3D:!1}},components:{VsPopover:ie},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,n,r,l,a){const c=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(c,{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]=(...u)=>a.toggleView&&a.toggleView(...u))},e.toDisplayString(l.is3D?"2D":"3D"),1)]),default:e.withCtx(()=>[o[1]||(o[1]=e.createElementVNode("div",null,"Перемикач виду",-1))]),_:1})}const Lr=D(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"],Dr=["stroke"];function Mr(t,o,n,r,l,a){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:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,$r),e.createElementVNode("path",{d:"M19 12H22",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Sr),e.createElementVNode("path",{d:"M12 2V5",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Ir),e.createElementVNode("path",{d:"M12 19V22",stroke:n.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:n.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:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Dr)])}const Pr={components:{geoIcon:D(Nr,[["render",Mr]]),VsPopover:ie,closeIcon:Ne},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 n=await(await fetch(`https://nominatim.openstreetmap.org/reverse?format=json&lat=${this.location.latitude}&lon=${this.location.longitude}`)).json();this.data=n.address;const r=[this.location.longitude,this.location.latitude],l=[[parseFloat(n.boundingbox[2]),parseFloat(n.boundingbox[0])],[parseFloat(n.boundingbox[3]),parseFloat(n.boundingbox[1])]];this.map.fitBounds(l,{padding:200,maxZoom:16}),this.marker||(this.marker=new Marker({color:"var(--primary)"})),this.marker.setLngLat(r).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,n,r,l,a){var s,d,i,g,p,m;const c=e.resolveComponent("closeIcon"),u=e.resolveComponent("geoIcon"),h=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[(e.openBlock(),e.createBlock(e.Teleport,{to:"#maplibre-demo-map"},[l.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(c,{onClick:a.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=l.location)==null?void 0:s.latitude),1)]),e.createElementVNode("div",null,[o[2]||(o[2]=e.createElementVNode("strong",null,"Довгота:",-1)),e.createTextVNode(" "+e.toDisplayString((d=l.location)==null?void 0:d.longitude),1)]),e.createElementVNode("div",null,[o[3]||(o[3]=e.createElementVNode("strong",null,"КраЇна:",-1)),e.createTextVNode(" "+e.toDisplayString((i=l.data)==null?void 0:i.country),1)]),e.createElementVNode("div",null,[o[4]||(o[4]=e.createElementVNode("strong",null,"Код країни:",-1)),e.createTextVNode(" "+e.toDisplayString((g=l.data)==null?void 0:g.country_code),1)]),e.createElementVNode("div",null,[o[5]||(o[5]=e.createElementVNode("strong",null,"Місто:",-1)),e.createTextVNode(" "+e.toDisplayString((p=l.data)==null?void 0:p.city),1)]),e.createElementVNode("div",null,[o[6]||(o[6]=e.createElementVNode("strong",null,"Поштовий індекс:",-1)),e.createTextVNode(" "+e.toDisplayString((m=l.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(u,{onClick:a.togleGeolocation,class:e.normalizeClass([a.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=D(Pr,[["render",Ur]]),ge={__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:n}){const r=n,l=t,a=e.ref(l.widgets.map(s=>{var d;return{...s,config:{...s.config,visible:((d=s.config)==null?void 0:d.visible)!==!1}}}));e.watch(()=>l.widgets.map(s=>s.id||s.type).join(","),()=>{a.value=l.widgets.map(s=>{var d;return{...s,config:{...s.config,visible:((d=s.config)==null?void 0:d.visible)!==!1}}})});function c(s){const d=a.value.find(i=>i.id===s);d&&d.config&&(d.config.visible=!d.config.visible,setTimeout(()=>{r("content-resize")},30))}const u=e.ref(null);o({columnRef:u});let h=null;return e.onMounted(()=>{h=new MutationObserver(()=>{var s;clearTimeout((s=u.value)==null?void 0:s._resizeTimeout),u.value._resizeTimeout=setTimeout(()=>{r("content-resize")},30)}),u.value&&h.observe(u.value,{childList:!0,subtree:!0,characterData:!0})}),e.onUnmounted(()=>{h&&h.disconnect()}),(s,d)=>t.mapLoaded?(e.openBlock(),e.createElementBlock("div",{key:0,class:"widget-column",ref_key:"columnRef",ref:u,style:e.normalizeStyle({width:t.getColumnWidth(t.position),paddingRight:t.rightColumnOffset})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,i=>{var g;return e.openBlock(),e.createElementBlock(e.Fragment,{key:i.id||i.type},[i.type!=="card"?e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.getWidgetComponent(i.type)),{key:0,map:t.map,config:i.config,hasFilters:t.hasFilters,currentLayer:t.currentFilterLayer,enabledLayerIds:t.enabledLayerIds,history:t.history,onSetFilterLayer:d[0]||(d[0]=p=>s.$emit("set-filter-layer",p)),"onUpdate:enabledLayerIds":d[1]||(d[1]=p=>s.$emit("update:enabledLayerIds",p)),onCardValuesId:d[2]||(d[2]=p=>s.$emit("cardValuesId",p)),onShowWidget:c,onCatalogLayers:d[3]||(d[3]=p=>s.$emit("catalog-layers",p)),class:"widget"},null,40,["map","config","hasFilters","currentLayer","enabledLayerIds","history"])),[[e.vShow,((g=i.config)==null?void 0:g.visible)!==!1]]):e.createCommentVNode("",!0),t.cardValues&&i.type==="card"?(e.openBlock(),e.createBlock(Le,{key:1,config:i.config,cardValues:t.cardValues,class:"widget",onClose:d[4]||(d[4]=p=>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]"},we=D(e.defineComponent({__name:"vs-map",props:{table:{},name:{},height:{}},setup(t){const o=t,n=e.ref(null),r=e.ref(!1);let l=null;const a=e.ref(null),c=e.ref(null),u=e.ref([]),h=e.ref([]),s=e.ref(null),d=e.ref(null),i=e.ref(null),g=e.ref([]);let p=null;function m(y){return!i.value||!i.value.widgets?[]:y==="center"?[...i.value.widgets.filter(w=>(w.position||{})==="center")||[],...h.value.filter(w=>w.position==="center")]:i.value.widgets.filter(f=>(f.position||{})===y)||[]}const _=(y,f,w)=>f[y]||y,L=(y,f,w,C,b)=>{const E=_(y,C),N=f?_(f,C):"";let B="";return w!=null&&w.length&&(B=w.map(v=>{const T=_(v.value,C);return`
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,Fe){"use strict";const D=(t,o)=>{const n=t.__vccOpts||t;for(const[r,l]of o)n[r]=l;return n},je={key:0,class:"p-5 pb-0 flex justify-between items-center"},De={class:"inline-block font-semibold text-lg text-gray-800"},Pe={class:"flex flex-col gap-1 p-5"},Me={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},Te={key:0,class:"ms-2 text-xs text-gray-500"},ze=D({__name:"vs-legend-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.items)||[]}),r=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.title)||""});return(l,a)=>(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%"})},[r.value?(e.openBlock(),e.createElementBlock("div",je,[e.createElementVNode("h2",De,e.toDisplayString(r.value),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Pe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,c=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center",key:c.label},[e.createElementVNode("span",{class:e.normalizeClass(["shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px]",[c.shape==="square"?"rounded-sm":"",c.shape==="circle"?"rounded-full":"",c.shape==="line"?"w-6 h-0.5":"",c.shape==="dashed-line"?"w-6 h-0.5 dashed-line":""]]),style:e.normalizeStyle({backgroundColor:c.color})},null,6),e.createElementVNode("span",Me,[e.createElementVNode("span",null,e.toDisplayString(c.label),1),c.count!==void 0?(e.openBlock(),e.createElementBlock("span",Te," ("+e.toDisplayString(c.count)+") ",1)):e.createCommentVNode("",!0)])]))),128))])],4))}},[["__scopeId","data-v-dd12cf90"]]),Ae={class:"flex flex-row gap-x-3 z-10 relative"},Oe=["onClick"],Ue=["src","alt"],Re={__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,n=e.ref("voyager"),r=e.computed(()=>{var h;if(!((h=o.config)!=null&&h.layers))return[];const u=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 u.push({id:"__none__",title:"Без підложки",url:"",service:"",category:"Базові карти",attribution:"",enabled:!0,owner:""}),u});function l(u){return{version:8,sources:{[u.id]:{type:"raster",tiles:[u.url],tileSize:256,attribution:u.attribution||""}},layers:[{id:u.id,type:"raster",source:u.id}]}}const a=u=>{if(!o.map)return;const h=o.map.getStyle(),s=r.value.map(p=>p.id),d=h.layers.filter(p=>!s.includes(p.id)),i={};for(const p in h.sources)s.includes(p)||(i[p]=h.sources[p]);if(u.id==="__none__"){const p={version:8,sources:{...i},layers:[...d]};o.map.setStyle(p);return}const g=l(u);o.map.setStyle(g),o.map.once("styledata",()=>{for(const[p,m]of Object.entries(i))o.map.getSource(p)||o.map.addSource(p,m);for(const p of d)o.map.getLayer(p.id)||o.map.addLayer(p)})},c=u=>{n.value=u;const h=r.value.find(s=>s.id===u);h&&o.map&&a(h)};return e.onMounted(()=>{var u;(u=o.config)!=null&&u.default&&(n.value=o.config.default),c(n.value)}),(u,h)=>{const s=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",Ae,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,d=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{trigger:"hover",placement:"top",key:d.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",n.value===d.id?"border-blue-400":"border-transparent"]),onClick:i=>c(d.id)},[d.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:d.image,alt:d.title,class:e.normalizeClass(["object-cover rounded-lg",d.id==="__none__"?"w-10 h-10":"w-12 h-12"])},null,10,Ue)):e.createCommentVNode("",!0)],10,Oe)])),[[s,d.title]])),128))])}}};function le(t){if(!t.attrType||!t.attribute||!t.rules)return t.color||"#ccc";const o=t.rules.map(n=>[["==",["get",t.attribute],n.id||n.value],n.color]);return o.push(t.color||"#ccc"),["case",...o.flat()]}function He(t){if(!t.attrType||t.attrType!=="icon-by-attribute"||!t.attribute||!t.rules)return t.default_icon||null;const o=t.rules.map(n=>[["==",["get",t.attribute],n.value],n.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(n=>[["==",["get",t.attribute],n.value],n.fillPattern||""]);return o.push(t.fillPattern||""),["case",...o.flat()]}function J(t,o="stroke",n="#ccc"){return["case",["boolean",["feature-state","hovered"],!1],"#ff0000",["boolean",["feature-state","selected"],!1],"#ff0000",t[o]||n]}function We(t){const o=[{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":le(t),"fill-outline-color":J(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":J(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":J(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-opacity":t.opacity||1}}),o}function Ze(t){return[{type:"line",paint:{"line-color":J(t,"color",le(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 qe(t){const o=[{type:"circle",maxzoom:t.icon&&+t.iconZoom||22,paint:{"circle-radius":t.radius||6,"circle-stroke-color":J(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":le(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 Ge(t,o,n){const r=t.type||"point";return r==="polygon"?[{type:"fill",...n!==void 0?{maxzoom:n}:{},paint:{"fill-color":le(t),"fill-outline-color":J(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",...n!==void 0?{maxzoom:n}:{},paint:{"line-color":J(t,"stroke","#ccc"),"line-width":t.width||2,"line-opacity":t.lineOpacity||t.opacity||1}}]:r==="line"?[{type:"line",...n!==void 0?{maxzoom:n}:{},paint:{"line-color":J(t,"color",le(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",...n!==void 0?{maxzoom:n}:{},paint:{"circle-radius":t.radius||6,"circle-stroke-color":J(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":le(t),"circle-opacity":t.opacity||1}}]}function Ce(t){var n,r;if(!t)return null;if(t.attrType==="icon-by-attribute"&&t.iconZoom){const l=He(t),a=Array.isArray(l)&&l[0]==="case"?l:["case",["==",["get",t.attribute],((r=(n=t.rules)==null?void 0:n[0])==null?void 0:r.value)||""],l,l],c=Ge(t,void 0,+t.iconZoom),u={type:"symbol",minzoom:+t.iconZoom,layout:{"icon-image":a,"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[...c,u]}const o=t.type||"point";return o==="polygon"?We(t):o==="line"?Ze(t):qe(t)}function Je(t){return t.startsWith("http")?t:`${window.location.origin}${t}`}function Qe(t){const{id:o,sourceLayer:n,url:r,bounds:l,title:a,style:c,service:u,service_type:h,source_type:s,data:d}=t,i=Je(r),g=h||u||s||"vector";switch(g){case"vtile":case"vector":return Ke(o,n,i,l,a,c);case"raster":return Xe(o,i,l,a,c);case"geojson":return et(o,d||i,l,a,c);default:throw new Error(`Unsupported layer service type: ${g}`)}}function Ye(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 Ke(t,o,n,r,l,a){const c=o||(n.match(/\/vtile\/([^/]+)/)||[])[1]||t,u={type:"vector",tiles:[n],...r&&{bounds:r}},d=Ce(a||{}).map((i,g)=>({...i,id:`${t}-${g}`,"source-layer":c,source:t}));return{id:t,title:l,source:u,layers:d,visible:!0}}function Xe(t,o,n,r,l){const a={type:"raster",tiles:[o],tileSize:256,...n&&{bounds:n}},c=l||{},u={id:t,type:"raster",source:t,layout:{visibility:"visible"},...c&&{paint:c}};return{id:t,title:r,source:a,layers:[u],visible:!0}}function et(t,o,n,r,l){var d;const a={type:"geojson",data:o,...n&&{bounds:n}};let c="point";if(o&&o.features&&o.features.length>0){const i=(d=o.features[0].geometry)==null?void 0:d.type;i==="Polygon"||i==="MultiPolygon"?c="polygon":i==="LineString"||i==="MultiLineString"?c="line":c="point"}const u=l||Ye(c),s=Ce(u).map((i,g)=>({...i,id:`${t}-${g}`,source:t}));return{id:t,title:r,source:a,layers:s,visible:!0}}function tt(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(n=>{n.icon&&o.add(n.icon)}),Array.from(o).map(n=>({name:n,url:(t.icon_base_url||"")+n}))}function ot(t){const o=new Set;function n(r){typeof r=="string"?o.add(r):Array.isArray(r)&&r.forEach(n)}return t&&t["icon-image"]&&n(t["icon-image"]),Array.from(o)}async function Be(t,o){const n=o.map(async({name:r,url:l})=>{const a=await t.loadImage(l);return{name:r,data:a.data}});try{const r=await Promise.all(n);for(const{name:l,data:a}of r)t.hasImage(l)||t.addImage(l,a)}catch(r){console.error("Failed to load icons:",r)}}function nt(t,o,n="/icons/"){const l=ot(o).map(a=>({name:a,url:n+a}));return Be(t,l)}async function X(t,o){const n=Qe(o),r=tt(o.style);r.length>0&&await Be(t,r),o.layout&&o.layout["icon-image"]&&await nt(t,o.layout),t.getSource(n.id)||t.addSource(n.id,n.source);for(const l of n.layers)o.visible!==void 0&&(l.layout={...l.layout,visibility:o.visible?"visible":"none"}),t.getLayer(l.id)?t.setLayoutProperty(l.id,"visibility",o.visible?"visible":"none"):await t.addLayer(l);return n}function ae(t,o){t.getStyle().layers.filter(l=>l.source===o).forEach(l=>{t.removeLayer(l.id)}),t.getSource(o)&&t.removeSource(o)}const rt={},lt={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function at(t,o){return e.openBlock(),e.createElementBlock("svg",lt,[...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=D(rt,[["render",at]]),it={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},st={class:"flex flex-col justify-between h-full pb-5 px-5"},ct={key:0,class:"relative mb-[10px]"},dt={key:1,class:"mb-4"},pt={class:""},mt={class:"space-y-2"},ht={class:"flex items-center gap-[10px] text-gray-500"},ut={class:"dataset-checkbox-container flex"},gt=["onUpdate:modelValue","onChange"],ft={class:"text-sm"},yt=["onClick"],bt=["innerHTML"],wt={key:0,class:"text-sm text-gray-500 text-center py-2"},xt={__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 n=t,r=o,l=e.ref(""),a=e.ref([]);function c(){const m=new URLSearchParams(window.location.search).get("layers");return m?m.split(","):[]}function u(p){const m=new URLSearchParams(window.location.search);p.length>0?m.set("layers",p.join(",")):m.delete("layers");const _=`${window.location.pathname}?${m.toString()}`;window.history.replaceState({},"",_)}e.onMounted(()=>{let p=[];n.history&&(p=c()),p.length>0?a.value=n.config.layers.map(m=>({...m,visible:p.includes(String(m.id))})):a.value=n.config.layers.map(m=>({...m,visible:m.visible??!1})),a.value.forEach(m=>{m.visible&&X(n.map,m)}),r("update:enabledLayerIds",d())});const h=e.computed(()=>{if(!l.value)return a.value;const p=l.value.toLowerCase();return a.value.filter(m=>(m.title||m.name||m.label||"").toLowerCase().includes(p))}),s=e.computed(()=>a.value.every(p=>p.visible)),d=()=>a.value.filter(p=>p.visible).map(p=>p.id),i=p=>{p.visible?X(n.map,p):(ae(n.map,p.id),r("set-filter-layer",null)),n.map.getStyle().layers.filter(L=>L.source===p.id).forEach(L=>{n.map.setLayoutProperty(L.id,"visibility",p.visible?"visible":"none")}),r("update:enabledLayerIds",d())},g=()=>{const p=!s.value;a.value.forEach(m=>{m.visible=p,p?X(n.map,m):ae(n.map,m.id)}),p||r("set-filter-layer",null),r("update:enabledLayerIds",d())};return e.watch(()=>d(),p=>{n.history&&u(p)},{deep:!0}),(p,m)=>(e.openBlock(),e.createElementBlock("div",it,[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",st,[t.config.search?(e.openBlock(),e.createElementBlock("div",ct,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":m[0]||(m[0]=_=>l.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,l.value]]),e.createVNode(Le)])):e.createCommentVNode("",!0),t.config.allow_toggle_all?(e.openBlock(),e.createElementBlock("div",dt,[e.createElementVNode("button",{onClick:g,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",pt,[e.createElementVNode("ul",mt,[(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",ht,[e.createElementVNode("span",ut,[e.withDirectives(e.createElementVNode("input",{class:"dataset-checkbox",type:"checkbox","onUpdate:modelValue":L=>_.visible=L,onChange:()=>i(_)},null,40,gt),[[e.vModelCheckbox,_.visible]])]),e.createElementVNode("span",ft,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:$=>p.$emit("show-widget",L.widget)},[e.createElementVNode("div",{innerHTML:L.icon},null,8,bt)],8,yt)]))),128)):e.createCommentVNode("",!0)]))),128)),l.value&&h.value.length===0?(e.openBlock(),e.createElementBlock("li",wt," Шарів не знайдено ")):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 pe=async(t,o,n,r=10)=>{var _,L,$,k;if(!o||!n)return;await e.nextTick();const l=await(n==null?void 0:n.getBoundingClientRect()),a=await(o==null?void 0:o.getBoundingClientRect());if(!a||!l)return;const c=await parseInt((_=o==null?void 0:o.getBoundingClientRect())==null?void 0:_.height),u=await parseInt((L=o==null?void 0:o.getBoundingClientRect())==null?void 0:L.width),h=await parseInt(($=n==null?void 0:n.getBoundingClientRect())==null?void 0:$.height),s=await parseInt((k=n==null?void 0:n.getBoundingClientRect())==null?void 0:k.width),d=await window.innerHeight,i=await window.innerWidth;let g=0,p=0;const m=a.bottom+r+h;switch(t){case"top":a.top-l.height-r<0?g=a.top-l.height+r+h+c:g=a.top-l.height-r,i>s+a.right+30?p=a.left-l.width/2+a.width/2:p=i-30-s;break;case"bottom":d>m?g=a.bottom+r:g=a.bottom-r-h-c,p=a.left-l.width/2+a.width/2;break;case"left":g=a.top-l.height/2+a.height/2,a.left-l.width-r>0?p=a.left-l.width-r:p=10;break;case"right":g=a.top-l.height/2+a.height/2,i-u>s?p=a.right+r:p=i-30-s;break;case"top-right":a.top-l.height-r<0?g=a.top-l.height+r+h+c:g=a.top-l.height-r,i-u>s?p=a.right+r:p=i-30-s;break;case"top-left":a.top-l.height-r<0?g=a.top-l.height+r+h+c:g=a.top-l.height-r,a.left-l.width-r>0?p=a.left-l.width-r:p=10;break;case"top-start":a.top-l.height-r<0?g=a.top-l.height+r+h+c:g=a.top-l.height-r,a.left>0?p=a.left:p=10;break;case"bottom-right":d>m?g=a.bottom+r:g=a.bottom-r-h-c,i-u>s?p=a.left:p=i-30-s;break;case"bottom-left":d>m?g=a.bottom+r:g=a.bottom-r-h-c,a.left>0?p=a.right-s:p=10;break;case"bottom-start":d>m?g=a.bottom+r:g=a.bottom-r-h-c,a.left>0?p=a.left:p=10;break}g+h>d?g=d-h-r:g<0&&(g=r),p+s>i?p=i-s-r:p<0&&(p=r),n instanceof HTMLElement&&(n.style.top=`${g}px`,n.style.left=`${p}px`,n.style.position="fixed")},kt={class:"text-center"},_t={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"},ie=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:n}){const r=t,l=n,a=e.ref(!1),c=e.ref([]),u=e.ref(null),h=e.ref(null),s=e.ref(null),d=x=>{var F,G;if(!x){a.value=!1;return}(F=h.value)!=null&&F.contains(x.target)||(G=s.value)!=null&&G.contains(x.target)||(a.value=!1)},i=x=>{a.value&&s.value&&!s.value.contains(x.target)&&(a.value=!1)},g=()=>{a.value=!1},p=()=>{a.value&&(a.value=!1)},m=()=>{let x=u.value;for(;x&&x!==document.body;)(x.scrollHeight>x.clientHeight||x.scrollWidth>x.clientWidth)&&(x.addEventListener("scroll",g),c.value.push(x)),x=x.parentElement;document.body&&(document.body.addEventListener("scroll",g),c.value.push(document.body))},_=()=>{c.value.forEach(x=>{x.removeEventListener("scroll",g)}),c.value=[]};e.watch(a,x=>{x?(m(),window.addEventListener("resize",()=>pe(r.placement,h.value,s.value)),pe(r.placement,h.value,s.value)):window.removeEventListener("resize",()=>pe(r.placement,h.value,s.value)),l("isvisible",x)}),e.onMounted(()=>{window.addEventListener("click",d),window.addEventListener("popstate",p),window.addEventListener("scroll",i,!0),m()}),e.onBeforeUnmount(()=>{window.removeEventListener("click",d),window.removeEventListener("popstate",p),_()});const L=()=>{a.value=!0,pe(r.placement,h.value,s.value)},$=()=>{a.value=!1},k=async()=>{await pe(r.placement,h.value,s.value),a.value=!a.value};return o({togglePopover:k}),(x,F)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"popover",ref:u,class:"vs-popover inline-block"},[e.createElementVNode("div",kt,[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",{},()=>[F[0]||(F[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:$,class:e.normalizeClass({"pointer-events-none":x.disabled})},[e.renderSlot(x.$slots,"reference",{},()=>[F[1]||(F[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",_t,[e.renderSlot(x.$slots,"default",{},()=>[F[2]||(F[2]=e.createElementVNode("span",null,"Popover content",-1))])])],6),[[e.vShow,a.value]])]),_:3})],8,["to"]))])],512))}});e.reactive({visible:!0});const Vt={class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},Et={key:0,class:"p-5 pb-3 flex justify-between items-start gap-[30px]"},Ct={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Bt={class:"flex flex-col gap-1"},Lt={class:"flex flex-col gap-1 p-5 pt-0"},Nt=["innerHTML"],vt=D({__name:"vs-info-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.title)||""}),r=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.content)||""}),l=e.computed(()=>{var a;return((a=o.config)==null?void 0:a.goTo)||[]});return(a,c)=>{var h,s;const u=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",Vt,[n.value||(h=l.value)!=null&&h.length?(e.openBlock(),e.createElementBlock("div",Et,[e.createElementVNode("h2",Ct,e.toDisplayString(n.value),1),(s=l.value)!=null&&s.length?(e.openBlock(),e.createBlock(e.unref(ie),{key:0,placement:"bottom"},{reference:e.withCtx(()=>[e.createVNode(e.unref(ie),{trigger:"hover",placement:"right"},{reference:e.withCtx(()=>[...c[0]||(c[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(()=>[c[1]||(c[1]=e.createTextVNode(" Перейти на карту ",-1))]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",Bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.label},[d.url?(e.openBlock(),e.createBlock(u,{key:0,to:d.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(d.label),1)]),_:2},1032,["to"])):e.createCommentVNode("",!0)]))),128))])]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Lt,[e.createElementVNode("div",{innerHTML:r.value},null,8,Nt)])])}}},[["__scopeId","data-v-629caa82"]]),$t={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative overflow-hidden"},St={key:0,class:"p-5 pb-3 flex justify-between items-center"},It={class:"inline-block font-semibold text-lg text-gray-800"},Ft={key:1,class:"flex"},jt={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"},Pt={class:"min-h-[34px] flex justify-center items-center text-stone-500 py-2 px-1.5 text-sm"},Mt={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"},Tt={key:0,class:"text-center"},zt={key:1,class:"text-red-500"},At={key:2},Ot=["innerHTML"],Ut={key:1,class:"flow-root"},Rt={class:"-my-3 divide-y divide-gray-100 text-sm"},Ht={class:"font-medium text-gray-900"},Wt={class:"text-gray-700 sm:col-span-2"},Zt={key:2,class:"vs-map-card-info__nodata"},qt={key:3,class:"pt-4 flex justify-end"},Gt=["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 n=t,r=o,l=e.computed(()=>{var $;return(($=n.config)==null?void 0:$.title)||""}),a=e.computed(()=>!!(typeof window.app=="object"&&window.app&&window.app.config)),c=e.ref([]),u=e.ref(!1),h=e.ref(null),s=e.ref(0),d=e.computed(()=>s.value+1),i=e.computed(()=>{var $;return(($=n.info)==null?void 0:$.length)||0}),g=e.computed(()=>c.value[s.value]),p=e.computed(()=>{if(!g.value)return{};const{rows:$,columns:k}=g.value;return!$||!k?{}:k.reduce((x,F)=>(!F.hide&&!["geom","geodata","id"].includes(F.name)&&(x[F.ua]=$[F.name]??"-"),x),{})});async function m(){var $,k,x,F,G,K;u.value=!0,h.value=null;try{const R={id:($=n.cardValues)==null?void 0:$.id,layer:typeof((k=n.cardValues)==null?void 0:k.layer)=="object"?(F=(x=n.cardValues)==null?void 0:x.layer)==null?void 0:F.id:(G=n.cardValues)==null?void 0:G.layer,map:(K=n.cardValues)==null?void 0:K.map},xe=await fetch("/api/map-format?"+new URLSearchParams(R)).then(ke=>ke.json());c.value[s.value]=xe}catch(R){h.value=(R==null?void 0:R.message)||"Помилка запиту"}finally{u.value=!1,await e.nextTick(),r("content-resize")}}function _(){s.value<n.info.length-1&&(s.value+=1,c.value[s.value]||m())}function L(){s.value>0&&(s.value-=1,c.value[s.value]||m())}return e.onMounted(async()=>{await e.nextTick(),m()}),e.watch(()=>n.info,()=>{s.value=0,m(),r("content-resize")},{deep:!0}),e.watch([()=>n.cardValues,()=>n.config],async()=>{await e.nextTick(),m(),r("content-resize")}),($,k)=>{var x,F;return e.openBlock(),e.createElementBlock("div",$t,[l.value?(e.openBlock(),e.createElementBlock("div",St,[e.createElementVNode("h2",It,e.toDisplayString(l.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]=G=>r("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),i.value>1?(e.openBlock(),e.createElementBlock("div",Ft,[e.createElementVNode("button",{type:"button",class:e.normalizeClass([{"opacity-flex items-center justify-between border-b px-[16px] py-[8px]50 pointer-events-none":d.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",jt,[e.createElementVNode("span",Dt,e.toDisplayString(d.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",Pt,e.toDisplayString(i.value),1)]),e.createElementVNode("button",{type:"button",onClick:_,class:e.normalizeClass([{"opacity-50 pointer-events-none":d.value===i.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",Mt,[u.value?(e.openBlock(),e.createElementBlock("div",Tt,"Завантаження даних...")):h.value?(e.openBlock(),e.createElementBlock("div",zt," Помилка завантаження даних ")):(e.openBlock(),e.createElementBlock("div",At,[(x=g.value)!=null&&x.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:g.value.html,class:"custom-table-html border-b"},null,8,Ot)):Object.keys(p.value).length?(e.openBlock(),e.createElementBlock("div",Ut,[e.createElementVNode("dl",Rt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(G,K)=>(e.openBlock(),e.createElementBlock("div",{key:K,class:"grid grid-cols-1 gap-1 py-3 even:bg-gray-50 sm:grid-cols-3 sm:gap-4"},[e.createElementVNode("dt",Ht,e.toDisplayString(K),1),e.createElementVNode("dd",Wt,e.toDisplayString(G),1)]))),128))])])):(e.openBlock(),e.createElementBlock("div",Zt,"Даних не знайдено."))])),(F=g.value)!=null&&F.cardInterface&&a.value?(e.openBlock(),e.createElementBlock("div",qt,[e.createElementVNode("a",{href:`/card/${g.value.cardInterface}/${g.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,Gt)])):e.createCommentVNode("",!0)])])}}},Jt={class:"size-full flex flex-col bg-white border border-gray-200 shadow-2xs rounded-xl dark:bg-neutral-800 dark:border-neutral-700"},Qt={key:0,class:"p-5 pb-0 items-center"},Yt={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Kt={class:"h-full p-5"},Xt={class:"h-full flex flex-col justify-between space-y-4"},eo={class:"space-y-4"},to={key:0,class:"flex gap-x-1 w-full h-2.5 rounded-full overflow-hidden"},oo=["aria-valuenow"],no={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"},ro=["for"],lo={key:0,width:"16",height:"auto",src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J3doaXRlJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00xMi4yMDcgNC43OTNhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMGwtMi0yYTEgMSAwIDAxMS40MTQtMS40MTRMNi41IDkuMDg2bDQuMjkzLTQuMjkzYTEgMSAwIDAxMS40MTQgMHonLz48L3N2Zz4="},ao=["id","onUpdate:modelValue"],io={class:"ml-2 text-gray-800 dark:text-neutral-200"},so={key:0,class:"ms-auto text-xs text-gray-500 dark:text-neutral-500"},co={__name:"vs-attributre-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var h;return((h=o.config)==null?void 0:h.title)||""}),r=e.ref([]),l=e.computed(()=>o.config.layer.style.rules.some(h=>h.count!==void 0)),a=e.computed(()=>o.config.layer.style.rules.reduce((h,s)=>h+(s.count||0),0)),c=h=>!h||a.value===0?0:Math.round(h/a.value*100),u=()=>{const s=o.config.layer.style.rules.filter((d,i)=>r.value[i]).map(d=>d.id||d.value).join(",");if(o.config.layer.id){const d=o.map.getSource(o.config.layer.id);if(d){const g=d.tiles[0].split("?filter=")[0],p=s?`${g}?filter=${o.config.layer.style.attribute}=${s}`:g;d.setTiles([p])}}};return e.onMounted(()=>{var h;(h=o.config)!=null&&h.layer&&(X(o.map,o.config.layer),r.value=new Array(o.config.layer.style.rules.length).fill(!1))}),(h,s)=>(e.openBlock(),e.createElementBlock("div",Jt,[n.value?(e.openBlock(),e.createElementBlock("div",Qt,[e.createElementVNode("div",null,[e.createElementVNode("h2",Yt,e.toDisplayString(n.value),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Kt,[e.createElementVNode("div",Xt,[e.createElementVNode("div",eo,[l.value?(e.openBlock(),e.createElementBlock("div",to,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(d,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"flex flex-col justify-center overflow-hidden text-xs text-white text-center whitespace-nowrap",style:e.normalizeStyle({width:`${c(d.count)}%`,backgroundColor:d.color}),role:"progressbar","aria-valuenow":c(d.count),"aria-valuemin":"0","aria-valuemax":"100"},null,12,oo))),128))])):e.createCommentVNode("",!0),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(d,i)=>(e.openBlock(),e.createElementBlock("li",{key:i},[e.createElementVNode("div",no,[e.createElementVNode("label",{for:`filter-${i}`,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:r.value[i]?d.color||"#2563eb":"#fff",borderColor:r.value[i]?d.color||"#2563eb":d.color||"#d9d9d9"})},[r.value[i]?(e.openBlock(),e.createElementBlock("img",lo)):e.createCommentVNode("",!0)],4),e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:`filter-${i}`,"onUpdate:modelValue":g=>r.value[i]=g,onChange:u,class:"hidden",disabled:!1},null,40,ao),[[e.vModelCheckbox,r.value[i]]]),e.createElementVNode("span",io,e.toDisplayString(d.label||d.text),1),l.value?(e.openBlock(),e.createElementBlock("span",so,"("+e.toDisplayString(d.count)+")",1)):e.createCommentVNode("",!0)],8,ro)])]))),128))])])])])]))}},po={},mo={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 ho(t,o){return e.openBlock(),e.createElementBlock("svg",mo,[...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=D(po,[["render",ho]]),uo={class:"hover:bg-gray-100 rounded-lg flex items-center ml-[20px] py-[8px] px-[8px]"},go=["for"],fo={class:"custom-checkbox-wrapper"},yo=["id","checked"],bo={class:"custom-checkbox"},wo={key:0,xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},xo={class:"flex items-center justify-between ml-2 w-full"},ko=["title"],_o={key:0,class:"text-xs opacity-60 text-[#4b5563]"},Vo=D({__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 n=t,r=o,l=e.computed(()=>n.selectedLayers.some(u=>u.id===n.layer.id)),a=u=>Intl.NumberFormat("uk",{notation:"compact"}).format(u),c=u=>{r(u?"select":"remove",n.layer)};return(u,h)=>{var s,d,i,g,p;return e.openBlock(),e.createElementBlock("div",uo,[e.createElementVNode("label",{class:"flex items-center w-full cursor-pointer",for:t.layer.id},[e.createElementVNode("div",fo,[e.createElementVNode("input",{id:t.layer.id,type:"checkbox",checked:l.value,onChange:h[0]||(h[0]=m=>c(m.target.checked)),class:"custom-checkbox-input"},null,40,yo),e.createElementVNode("div",bo,[l.value?(e.openBlock(),e.createElementBlock("svg",wo,[...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",xo,[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(((d=t.layer)==null?void 0:d.name)||((i=t.layer)==null?void 0:i.title)),9,ko),isNaN(a((g=t.layer)==null?void 0:g.count))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",_o,e.toDisplayString(a((p=t.layer)==null?void 0:p.count)),1))])],8,go)])}}},[["__scopeId","data-v-b96f3537"]]),Eo={},Co={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 Bo(t,o){return e.openBlock(),e.createElementBlock("svg",Co,[...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 Lo=D(Eo,[["render",Bo]]),No={},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-info"};function $o(t,o){return e.openBlock(),e.createElementBlock("svg",vo,[...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 So=D(No,[["render",$o]]),Io={},Fo={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 jo(t,o){return e.openBlock(),e.createElementBlock("svg",Fo,[...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=D(Io,[["render",jo]]),Po={},Mo={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 To(t,o){return e.openBlock(),e.createElementBlock("svg",Mo,[...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 zo=D(Po,[["render",To]]),Ao={},Oo={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 Uo(t,o){return e.openBlock(),e.createElementBlock("svg",Oo,[...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 Ro=D(Ao,[["render",Uo]]),Ho={},Wo={width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Zo(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 qo=D(Ho,[["render",Zo]]),Go={},Jo={width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Qo(t,o){return e.openBlock(),e.createElementBlock("svg",Jo,[...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 Yo=D(Go,[["render",Qo]]);function Ko(){const o=new URLSearchParams(window.location.search).get("layers");return o?o.split(","):[]}function Xo(t){const o=new URLSearchParams(window.location.search);t.length>0?o.set("layers",t.join(",")):o.delete("layers");const n=`${window.location.pathname}?${o.toString()}`;window.history.replaceState({},"",n)}const en={components:{VsPopover:ie,VsLayersItem:Vo,ZoomInIcon:Lo,InfoIcon:So,TableIcon:Do,TrashIcon:zo,DotsIcon:Ro,ChevronRightIcon:qo,FilterIcon:Yo,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=Ko();t.length>0&&this.layers&&(t.forEach(o=>{const n=this.layers.find(r=>String(r.id)===o);if(n&&!this.selectedLayers.find(r=>r.id===n.id)){const r={...n,visible:!0,opacity:100,showFilters:!1};this.selectedLayers.push(r),X(this.map,r)}}),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&&Xo(t.map(o=>o.id))},deep:!0}},methods:{async getLayers(){try{const t=await fetch("/api/map-catalog").then(n=>n.json()),o=(t.services||[]).filter(n=>n.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(n=>n.id===t.id);o!==-1&&this.selectedLayers.splice(o,1),ae(this.map,t.id)},async toggleLayerVisibility(t){try{t.visible?(await X(this.map,t),this.updateLayerOpacity(t)):await ae(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(r=>r.id.includes(t.id)),n=t.opacity/100;o.forEach(r=>{r.type==="fill"?(t.originalFillOpacity||(t.originalFillOpacity=this.map.getPaintProperty(r.id,"fill-opacity")||1),this.map.setPaintProperty(r.id,"fill-opacity",t.originalFillOpacity*n)):r.type==="raster"?this.map.setPaintProperty(r.id,"raster-opacity",n):r.type==="line"?this.map.setPaintProperty(r.id,"line-opacity",n):r.type==="circle"?(this.map.setPaintProperty(r.id,"circle-opacity",n),this.map.setPaintProperty(r.id,"circle-stroke-opacity",n)):r.type==="symbol"&&(this.map.setPaintProperty(r.id,"icon-opacity",n),this.map.setPaintProperty(r.id,"text-opacity",n))})}},async handleRemoveFromCatalog(t){const o=this.selectedLayers.find(n=>n.id===t.id);o!=null&&o.visible&&await ae(this.map,t.id),this.deleteLayer(t)},clearSelectedLayers(){this.selectedLayers.forEach(async t=>{t.visible&&await ae(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 n=this.map.getSource(o.id);if(n){const l=n.tiles[0].split("?filter=")[0],a=t?`${l}?filter=${t}`:l;n.setTiles([a])}},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 n=this.selectedLayers.length-1;n>=0;n--){const r=this.selectedLayers[n];r.visible&&this.map.getStyle().layers.find(l=>l.id.includes(r.id))&&this.map.getStyle().layers.forEach(l=>{l.id.includes(r.id)&&this.map.moveLayer(l.id)})}},onDragEnd(){this.draggedLayerIndex=null}}},tn={class:"w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm"},on={class:"flex items-center justify-between mb-4"},nn={class:"flex items-center gap-2"},rn={class:"text-lg font-semibold text-gray-800"},ln={key:0},an={key:1},sn={class:"flex mb-4 border-b border-gray-200"},cn={key:0},dn={class:"mb-4"},pn={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"},mn=["onDragstart","onDragover","onDrop"],hn={class:"flex items-center justify-between"},un={class:"flex items-center gap-2 cursor-move"},gn=["onUpdate:modelValue","onChange"],fn={class:"text-gray-800"},yn={class:"flex items-center gap-2"},bn={class:"relative"},wn={class:"flex items-center gap-2"},xn=["onUpdate:modelValue","onInput"],kn={class:"text-xs text-gray-600 whitespace-nowrap"},_n=["onClick"],Vn={class:"relative"},En={class:"w-48"},Cn={key:0,class:"my-1 border-gray-200"},Bn=["disabled","onClick"],Ln={class:"p-1 rounded-full hover:bg-gray-100 transition-colors","aria-label":"Layer actions"},Nn={key:0,class:"bg-blue-50 rounded-md mt-2"},vn={class:"px-2 pt-2 text-blue-600 hover:text-blue-700 transition-colors"},$n={key:0,class:"text-center text-[14px] text-[#4b5563]"},Sn={class:"relative mt-[10px]"},In={key:0,class:"vs-layers-catalog__list flex-1 scrollable-container overflow-auto mt-2 catalog-list"},Fn={key:0,class:"text-center text-[14px] text-[#4b5563]"},jn={key:0,class:"text-center text-[14px] text-[#4b5563]"},Dn=["onClick"],Pn={class:"flex items-center gap-x-3"},Mn=["title"],Tn={class:"text-xs opacity-60 text-[#4b5563]"};function zn(t,o,n,r,l,a){var p;const c=e.resolveComponent("VsPopover"),u=e.resolveComponent("DotsIcon"),h=e.resolveComponent("VsFilter"),s=e.resolveComponent("searchIcon"),d=e.resolveComponent("closeIcon"),i=e.resolveComponent("VsLayersItem"),g=e.resolveComponent("chevronRightIcon");return e.openBlock(),e.createElementBlock("div",tn,[e.createElementVNode("div",on,[e.createElementVNode("div",nn,[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",rn,[e.createTextVNode(e.toDisplayString(l.activeView==="catalog"?"Каталог":"Вибрані шари")+" ",1),l.activeView==="catalog"?(e.openBlock(),e.createElementBlock("span",ln,"("+e.toDisplayString(((p=l.layers)==null?void 0:p.length)||0)+")",1)):(e.openBlock(),e.createElementBlock("span",an,"("+e.toDisplayString(l.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)=>a.clearSelectedLayers&&a.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",sn,[e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",l.activeView==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[1]||(o[1]=m=>l.activeView="catalog")}," Каталог ",2),e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",l.activeView==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[2]||(o[2]=m=>l.activeView="selected")}," Вибрані шари ",2)]),l.activeView==="selected"?(e.openBlock(),e.createElementBlock("div",cn,[e.createElementVNode("div",dn,[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=>l.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)])])]),l.mounted?(e.openBlock(),e.createElementBlock("div",pn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.selectedLayers,(m,_)=>{var L,$;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:l.draggedLayerIndex===_}]),draggable:"true",onDragstart:k=>a.onDragStart(_),onDragover:e.withModifiers(k=>a.onDragOver(_),["prevent"]),onDrop:k=>a.onDrop(_),onDragend:o[4]||(o[4]=(...k)=>a.onDragEnd&&a.onDragEnd(...k))},[e.createElementVNode("div",hn,[e.createElementVNode("div",un,[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=>a.toggleLayerVisibility(m)},null,40,gn),[[e.vModelCheckbox,m.visible]]),e.createElementVNode("span",fn,e.toDisplayString(m.name||m.title||m.label),1)]),e.createElementVNode("div",yn,[e.createElementVNode("div",bn,[e.createVNode(c,{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=>a.updateLayerOpacity(m)},e.toDisplayString(m.opacity||100)+"% ",9,_n)]),default:e.withCtx(()=>[e.createElementVNode("div",wn,[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=>a.onLayerOpacityChange(m),class:"h-2 w-full accent-blue-600 rounded-lg cursor-pointer bg-gray-200"},null,40,xn),[[e.vModelText,m.opacity]]),e.createElementVNode("span",kn,e.toDisplayString(Math.round(m.opacity))+"% ",1)])]),_:2},1024)]),e.createElementVNode("div",Vn,[e.createVNode(c,{placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("div",Ln,[e.createVNode(u)])]),default:e.withCtx(()=>[e.createElementVNode("div",En,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.popoverActions(m),(k,x)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:x},[k.divider?(e.openBlock(),e.createElementBlock("hr",Cn)):(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:F=>!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,Bn))],64))),128))])]),_:2},1024)])])]),m.showFilters?(e.openBlock(),e.createElementBlock("div",Nn,[e.createElementVNode("div",vn," Фільтри для шару: "+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=>a.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,!(($=m.filters)!=null&&$.length)]])])):e.createCommentVNode("",!0)],42,mn)}),128)),l.selectedLayers.length===0?(e.openBlock(),e.createElementBlock("div",$n,[...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",Sn,[e.withDirectives(e.createElementVNode("input",{title:"value",placeholder:"Введіть назву шару...","onUpdate:modelValue":o[5]||(o[5]=m=>l.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)=>a.onEnter&&a.onEnter(...m),["enter"]))},null,544),[[e.vModelText,l.search]]),e.createVNode(s,{class:"absolute top-1/2 left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0, -50%)"}}),l.search?(e.openBlock(),e.createBlock(d,{key:0,class:"absolute top-1/2 right-[10px] w-[16px] h-[16px] cursor-pointer",style:{transform:"translate(0, -50%)"},onClick:a.clearSearch},null,8,["onClick"])):e.createCommentVNode("",!0)]),l.categories?(e.openBlock(),e.createElementBlock("div",In,[l.search?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.searchedLayers,(m,_)=>(e.openBlock(),e.createBlock(i,{key:_,layer:m,map:n.map,selectedLayers:l.selectedLayers,onSelect:a.addToSelected,onRemove:a.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128)),a.searchedLayers.length===0?(e.openBlock(),e.createElementBlock("div",Fn," Нічого не знайдено ")):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[!l.categories||Object.keys(l.categories).length===0?(e.openBlock(),e.createElementBlock("div",jn," Каталог порожній ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(Object.keys(l.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:_=>a.selectCategory(m)},[e.createElementVNode("div",Pn,[e.createVNode(g,{class:e.normalizeClass({"rotate-up":m===l.selectedCategory,"rotate-down":m!==l.selectedCategory})},null,8,["class"]),e.createElementVNode("div",{class:"max-w-[260px] text-[14px] text-[#4b5563]",title:m},e.toDisplayString(m),9,Mn)]),e.createElementVNode("div",Tn,e.toDisplayString(a.formatNumber(l.categories[m].length)),1)],8,Dn),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.categories[m],(_,L)=>(e.openBlock(),e.createBlock(i,{key:L,layer:_,map:n.map,selectedLayers:l.selectedLayers,onSelect:a.addToSelected,onRemove:a.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128))],512),[[e.vShow,m===l.selectedCategory]])]))),128))],64))])):e.createCommentVNode("",!0)],64))])}const An=D(en,[["render",zn],["__scopeId","data-v-e9e7021a"]]),On={key:0,class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},Un={key:0,class:"p-5 pb-3 flex justify-between items-center"},Rn={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Hn={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,n=e.computed(()=>{var c;return((c=o.config)==null?void 0:c.filters)||[]}),r=e.computed(()=>n.value),l=e.computed(()=>{var u;const c=(u=o.config)==null?void 0:u.conditions;return!c||!c.layers?!0:o.enabledLayerIds.some(h=>c.layers.includes(h))}),a=async({data:c})=>{var i;const u=Object.entries(c).map(g=>g.join("=")).join("|"),h=(i=o.config)==null?void 0:i.conditions,s=(h==null?void 0:h.layers)||[],d=o.enabledLayerIds.filter(g=>s.includes(g));d.length&&d.forEach(g=>{const p=o.map.getSource(g);if(p){const _=p.tiles[0].split("?filter=")[0],L=u?`${_}?filter=${u}`:_;p.setTiles([L])}})};return(c,u)=>l.value?(e.openBlock(),e.createElementBlock("div",On,[t.config.title?(e.openBlock(),e.createElementBlock("div",Un,[e.createElementVNode("h2",Rn,e.toDisplayString(t.config.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Hn,[e.createVNode(e.unref(Fe),{ref:"filter",schema:r.value,view:"vertical",onChange:a},null,8,["schema"])])])):e.createCommentVNode("",!0)}},Zn={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"},qn={class:"flex gap-[5px] items-center"},Gn={class:"text-gray-600"},Jn={key:0,class:"w-[16px] h-[16px] font-medium bg-gray-800 text-white rounded-full flex items-center justify-center text-[10px]"},Qn={__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,n=e.ref(0),r=e.ref(null),l=e.computed(()=>{var s;return((s=o.config)==null?void 0:s.filters)||[]}),a=e.computed(()=>l.value.map(s=>({...s,id:s.name}))),c=e.computed(()=>{var d;const s=(d=o.config)==null?void 0:d.conditions;return!s||!s.layers?!0:o.enabledLayerIds.some(i=>s.layers.includes(i))}),u=e.computed(()=>{var s;if(o.enabledLayerIds&&o.enabledLayerIds.length){const i=(((s=o.config)==null?void 0:s.layers)||[]).find(g=>g.id===o.enabledLayerIds[0]);return(i==null?void 0:i.title)||(i==null?void 0:i.name)||(i==null?void 0:i.label)||o.enabledLayerIds[0]}return""}),h=async({url:s})=>{var p,m;const d=(p=o.config)==null?void 0:p.conditions;if(!d){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 i=(d==null?void 0:d.layers)||[],g=o.enabledLayerIds.filter(_=>i.includes(_));g.length&&g.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)&&r.value&&(r.value.activeFilters={},n.value=0)}),e.watch(()=>{var s;return(s=r.value)==null?void 0:s.activeFilters},s=>{n.value=Object.keys(s||{}).length},{deep:!0}),(s,d)=>{const i=e.resolveComponent("VsPopover"),g=e.resolveComponent("VsFilterList");return c.value&&a.value.length?(e.openBlock(),e.createBlock(g,{key:0,ref_key:"filter",ref:r,isDialog:t.config.dialog??!0,scheme:a.value,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:h},{button:e.withCtx(({visible:p})=>[e.createVNode(i,{teleport:"body",trigger:"hover",placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("button",Zn,[e.createElementVNode("div",qn,[d[0]||(d[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",Gn,e.toDisplayString(u.value),1),n.value?(e.openBlock(),e.createElementBlock("span",Jn,e.toDisplayString(n.value),1)):e.createCommentVNode("",!0)])])]),default:e.withCtx(()=>[d[1]||(d[1]=e.createTextVNode(" Відкрити бокову панель ",-1))]),_:1})]),_:1},8,["isDialog","scheme"])):e.createCommentVNode("",!0)}}},Yn={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(n=>n.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())}},Kn={class:"bg-white p-4 rounded-lg h-full flex flex-col overflow-hidden",ref:"rootEl"},Xn={key:0,class:"flex flex-col flex-1 overflow-hidden"},er={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"},tr=["onClick"],or={class:"text-base font-medium"},nr={class:"mt-2 flex flex-wrap gap-2"},rr={key:1,class:"px-2 py-1 text-sm bg-gray-100 rounded-full"},lr={key:0,class:"my-5 pr-2"},ar={class:"paginationWrapper relative flex justify-center"},ir={key:1,class:"text-center text-slate-400"};function sr(t,o,n,r,l,a){var u;const c=e.resolveComponent("VsPagination");return e.openBlock(),e.createElementBlock("div",Kn,[o[0]||(o[0]=e.createElementVNode("h2",{class:"text-xl font-semibold mb-4"},"Список",-1)),((u=l.items)==null?void 0:u.length)>0?(e.openBlock(),e.createElementBlock("div",Xn,[e.createElementVNode("div",er,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.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",or,e.toDisplayString(h.name),1),e.createElementVNode("div",nr,[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",rr,e.toDisplayString(h.class_mbd_id_data.text),1)):e.createCommentVNode("",!0)])],8,tr))),128))]),l.total>l.limit?(e.openBlock(),e.createElementBlock("div",lr,[e.createElementVNode("div",ar,[e.createVNode(c,{total:l.total,maxPages:4,defaultPage:l.currentPage,pageSize:l.limit,goTo:!1,size:"medium",onPageChange:a.handlePageChange,backgroundColor:"#e5e7eb",borderedCellSelected:!0,pageSizes:[16,32,48,64],onPageSizeChange:a.changeLimit},null,8,["total","defaultPage","pageSize","onPageChange","onPageSizeChange"])])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",ir,"Немає даних"))],512)}const cr=D(Yn,[["render",sr]]),dr={class:"map-skeleton-loader"},pr=D({__name:"vs-skeleton-loader",setup(t){return(o,n)=>(e.openBlock(),e.createElementBlock("div",dr,[...n[0]||(n[0]=[e.createElementVNode("div",{class:"dot-pulse"},null,-1)])]))}},[["__scopeId","data-v-954c1e03"]]),mr={},hr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function ur(t,o){return e.openBlock(),e.createElementBlock("svg",hr,[...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 gr={components:{homeIcon:D(mr,[["render",ur]])},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 fr(t,o,n,r,l,a){const c=e.resolveComponent("homeIcon"),u=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(u,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(c,{onClick:a.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 yr=D(gr,[["render",fr]]),br={},wr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function xr(t,o){return e.openBlock(),e.createElementBlock("svg",wr,[...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 kr={components:{printIcon:D(br,[["render",xr]]),VsPopover:ie},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,n)=>{const r=document.createElement("script");r.src=t,r.async=!0,r.onload=o,r.onerror=n,document.head.appendChild(r),this.scriptElements.push(r)})},addStyle(t){return new Promise((o,n)=>{const r=document.createElement("link");r.href=t,r.rel="stylesheet",r.type="text/css",r.onload=o,r.onerror=n,document.head.appendChild(r),this.styleElements.push(r)})},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:n,Format:r,DPI:l}=window.MapboxExportControl;this.map.addControl(new t({PageSize:o.A3,PageOrientation:n.Portrait,Format:r.PNG,DPI:l[96],Crosshair:!0,PrintableArea:!0,Local:"uk"}))},simulateClick(){new Promise(o=>{const n=setTimeout(()=>{const r=document.querySelector(".mapboxgl-export-control");r&&(clearInterval(n),o(r))},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 _r(t,o,n,r,l,a){const c=e.resolveComponent("printIcon"),u=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(u,{trigger:"hover",placement:"left",teleport:"body"},{reference:e.withCtx(()=>[e.createVNode(c,{onClick:a.togglePrint,class:e.normalizeClass([a.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 Vr=D(kr,[["render",_r]]),Er={props:{map:{type:Object,required:!0}},data(){return{is3D:!1}},components:{VsPopover:ie},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 Cr(t,o,n,r,l,a){const c=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(c,{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]=(...u)=>a.toggleView&&a.toggleView(...u))},e.toDisplayString(l.is3D?"2D":"3D"),1)]),default:e.withCtx(()=>[o[1]||(o[1]=e.createElementVNode("div",null,"Перемикач виду",-1))]),_:1})}const Br=D(Er,[["render",Cr]]),Lr={props:{bgColor:{type:String,default:"#1E40AF"}}},Nr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},vr=["stroke"],$r=["stroke"],Sr=["stroke"],Ir=["stroke"],Fr=["stroke"],jr=["stroke"];function Dr(t,o,n,r,l,a){return e.openBlock(),e.createElementBlock("svg",Nr,[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:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,vr),e.createElementVNode("path",{d:"M19 12H22",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,$r),e.createElementVNode("path",{d:"M12 2V5",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Sr),e.createElementVNode("path",{d:"M12 19V22",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Ir),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:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Fr),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:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,jr)])}const Pr={components:{geoIcon:D(Lr,[["render",Dr]]),VsPopover:ie,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 n=await(await fetch(`https://nominatim.openstreetmap.org/reverse?format=json&lat=${this.location.latitude}&lon=${this.location.longitude}`)).json();this.data=n.address;const r=[this.location.longitude,this.location.latitude],l=[[parseFloat(n.boundingbox[2]),parseFloat(n.boundingbox[0])],[parseFloat(n.boundingbox[3]),parseFloat(n.boundingbox[1])]];this.map.fitBounds(l,{padding:200,maxZoom:16}),this.marker||(this.marker=new Marker({color:"var(--primary)"})),this.marker.setLngLat(r).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")}}},Mr={key:0,class:"max-w-[412px] absolute w-full top-[20px] right-[70px] bg-white border rounded-[15px] p-4 z-10"},Tr={class:"flex justify-between items-center border-b pb-[16px]"},zr={class:"d-flex"},Ar={class:"pt-[16px]"};function Or(t,o,n,r,l,a){var s,d,i,g,p,m;const c=e.resolveComponent("closeIcon"),u=e.resolveComponent("geoIcon"),h=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[(e.openBlock(),e.createBlock(e.Teleport,{to:"#maplibre-demo-map"},[l.location?(e.openBlock(),e.createElementBlock("div",Mr,[e.createElementVNode("div",Tr,[o[0]||(o[0]=e.createElementVNode("div",{class:"text-lg font-semibold"},"Ваша геолокація",-1)),e.createElementVNode("div",zr,[e.createVNode(c,{onClick:a.closeGeolocation},null,8,["onClick"])])]),e.createElementVNode("div",Ar,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("strong",null,"Широта:",-1)),e.createTextVNode(" "+e.toDisplayString((s=l.location)==null?void 0:s.latitude),1)]),e.createElementVNode("div",null,[o[2]||(o[2]=e.createElementVNode("strong",null,"Довгота:",-1)),e.createTextVNode(" "+e.toDisplayString((d=l.location)==null?void 0:d.longitude),1)]),e.createElementVNode("div",null,[o[3]||(o[3]=e.createElementVNode("strong",null,"КраЇна:",-1)),e.createTextVNode(" "+e.toDisplayString((i=l.data)==null?void 0:i.country),1)]),e.createElementVNode("div",null,[o[4]||(o[4]=e.createElementVNode("strong",null,"Код країни:",-1)),e.createTextVNode(" "+e.toDisplayString((g=l.data)==null?void 0:g.country_code),1)]),e.createElementVNode("div",null,[o[5]||(o[5]=e.createElementVNode("strong",null,"Місто:",-1)),e.createTextVNode(" "+e.toDisplayString((p=l.data)==null?void 0:p.city),1)]),e.createElementVNode("div",null,[o[6]||(o[6]=e.createElementVNode("strong",null,"Поштовий індекс:",-1)),e.createTextVNode(" "+e.toDisplayString((m=l.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(u,{onClick:a.togleGeolocation,class:e.normalizeClass([a.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 Ur=D(Pr,[["render",Or]]),ge={__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:n}){const r=n,l=t,a=e.ref(l.widgets.map(s=>{var d;return{...s,config:{...s.config,visible:((d=s.config)==null?void 0:d.visible)!==!1}}}));e.watch(()=>l.widgets.map(s=>s.id||s.type).join(","),()=>{a.value=l.widgets.map(s=>{var d;return{...s,config:{...s.config,visible:((d=s.config)==null?void 0:d.visible)!==!1}}})});function c(s){const d=a.value.find(i=>i.id===s);d&&d.config&&(d.config.visible=!d.config.visible,setTimeout(()=>{r("content-resize")},30))}const u=e.ref(null);o({columnRef:u});let h=null;return e.onMounted(()=>{h=new MutationObserver(()=>{var s;clearTimeout((s=u.value)==null?void 0:s._resizeTimeout),u.value._resizeTimeout=setTimeout(()=>{r("content-resize")},30)}),u.value&&h.observe(u.value,{childList:!0,subtree:!0,characterData:!0})}),e.onUnmounted(()=>{h&&h.disconnect()}),(s,d)=>t.mapLoaded?(e.openBlock(),e.createElementBlock("div",{key:0,class:"widget-column",ref_key:"columnRef",ref:u,style:e.normalizeStyle({width:t.getColumnWidth(t.position),paddingRight:t.rightColumnOffset})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,i=>{var g;return e.openBlock(),e.createElementBlock(e.Fragment,{key:i.id||i.type},[i.type!=="card"?e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.getWidgetComponent(i.type)),{key:0,map:t.map,config:i.config,hasFilters:t.hasFilters,currentLayer:t.currentFilterLayer,enabledLayerIds:t.enabledLayerIds,history:t.history,onSetFilterLayer:d[0]||(d[0]=p=>s.$emit("set-filter-layer",p)),"onUpdate:enabledLayerIds":d[1]||(d[1]=p=>s.$emit("update:enabledLayerIds",p)),onCardValuesId:d[2]||(d[2]=p=>s.$emit("cardValuesId",p)),onShowWidget:c,onCatalogLayers:d[3]||(d[3]=p=>s.$emit("catalog-layers",p)),class:"widget"},null,40,["map","config","hasFilters","currentLayer","enabledLayerIds","history"])),[[e.vShow,((g=i.config)==null?void 0:g.visible)!==!1]]):e.createCommentVNode("",!0),t.cardValues&&i.type==="card"?(e.openBlock(),e.createBlock(Ne,{key:1,config:i.config,cardValues:t.cardValues,class:"widget",onClose:d[4]||(d[4]=p=>s.$emit("closeCard"))},null,8,["config","cardValues"])):e.createCommentVNode("",!0)],64)}),128))],4)):e.createCommentVNode("",!0)}},Rr={class:"map-widgets-flex"},Hr={class:"widgets-left"},Wr={class:"widgets-top"},Zr={class:"widgets-bottom"},qr={class:"widgets-right"},Gr={class:"widgets-top"},Jr={class:"widgets-bottom"},Qr={class:"absolute top-[180px] right-2 z-10 flex flex-col gap-[5px]"},we=D(e.defineComponent({__name:"vs-map",props:{table:{},name:{},height:{}},setup(t){const o=t,n=e.ref(null),r=e.ref(!1);let l=null;const a=e.ref(null),c=e.ref(null),u=e.ref([]),h=e.ref([]),s=e.ref(null),d=e.ref(null),i=e.ref(null),g=e.ref([]);let p=null;function m(y){return!i.value||!i.value.widgets?[]:y==="center"?[...i.value.widgets.filter(w=>(w.position||{})==="center")||[],...h.value.filter(w=>w.position==="center")]:i.value.widgets.filter(f=>(f.position||{})===y)||[]}const _=(y,f,w)=>f[y]||y,L=(y,f,w,C,b)=>{const V=_(y,C),N=f?_(f,C):"";let B="";return w!=null&&w.length&&(B=w.map(v=>{const T=_(v.value,C);return`
2
2
  <tr class="flex justify-between items-center">
3
3
  <td class="font-medium mr-1.5 flex items-center">${v.label}</td>
4
4
  <td class="text-right">${T}</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">
8
- ${E?`
8
+ ${V?`
9
9
  <div class="font-semibold text-sm border-b border-solid border-gray-200 text-gray-800 rounded-t-lg px-2 py-1">
10
- <h3>${E}</h3>
10
+ <h3>${V}</h3>
11
11
  </div>
12
12
  `:""}
13
13
  ${f?`<div class="text-sm px-2 py-1 break-words">${N}</div>`:""}
@@ -19,18 +19,18 @@
19
19
  </div>
20
20
  `:""}
21
21
  </div>
22
- `},$=y=>({legend:Te,basemaps:Ue,layers:yt,info:Bt,attribute:ao,catalog:On,filters:Wn,"inline-filters":Yn,list:dr,card:Le})[y],k=e.computed(()=>!!i.value&&Array.isArray(i.value.widgets)&&i.value.widgets.some(y=>y.type==="filters")),x=y=>{a.value=y};function F(){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")),E=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(E)?E:null}}function G({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 E=`${window.location.pathname}?${b.toString()}`;window.history.replaceState({},"",E)}const K=()=>{var E,N,B;if(!i.value||!i.value.map)return;const y={version:8,glyphs:"https://cdn.softpro.ua/data/fonts/{fontstack}/{range}.pbf",sources:{},layers:[]};let f=i.value.map.center,w=i.value.map.zoom,C=i.value.map.bearing||0,b=i.value.map.pitch||0;if(i.value.history){const v=F();v.center&&(f=v.center),v.zoom!==null&&(w=v.zoom),v.bearing!==null&&(C=v.bearing),v.pitch!==null&&(b=v.pitch)}n.value=new maplibregl.Map({container:"maplibre-demo-map",style:y,center:f,zoom:w,bearing:C,pitch:b,maxBounds:[18.0856083513,40.3614785833,58.0807890155,56.3350745713]}),(B=(N=(E=i==null?void 0:i.value)==null?void 0:E.interactions)==null?void 0:N.navigation)!=null&&B.enabled&&!p&&(p=new maplibregl.NavigationControl,n.value.addControl(p,"top-right")),n.value.on("load",async()=>{var A,ce,j,de,he;r.value=!0;const v=F(),T=v.center&&v.zoom!==null;if((A=i.value.map)!=null&&A.bbox&&!T){const[P,M,V,U]=i.value.map.bbox;n.value.fitBounds([[P,M],[V,U]],{padding:50,duration:0})}if(await(async()=>{var M,V,U,H,O;const P=((O=(H=(U=(V=(M=i.value)==null?void 0:M.widgets)==null?void 0:V.find(S=>S.type==="layers"))==null?void 0:U.config)==null?void 0:H.layers)==null?void 0:O.filter(S=>{var Q;return((Q=S.style)==null?void 0:Q.attrType)==="icon-by-attribute"}))||[];for(const S of P){const{rules:Q,default_icon:te,icon_base_url:oe}=S.style,ne=[...Q.map(Z=>Z.icon),te].filter(Boolean);for(const Z of ne)try{const Y=`${oe}${Z}`,re=await n.value.loadImage(Y);n.value.hasImage(Z)||n.value.addImage(Z,re.data)}catch(Y){console.error(`Failed to load icon: ${Z}`,Y)}}})(),(de=(j=(ce=i.value)==null?void 0:ce.interactions)==null?void 0:j.hover)!=null&&de.enabled&&(n.value.on("mousemove",P=>{var Q,te,oe,ne,Z,Y,re,ue,z,be;const M=n.value.queryRenderedFeatures(P.point);if(n.value&&n.value.getCanvas&&(n.value.getCanvas().style.cursor=M.length?"pointer":""),!M.length){if(c.value){const I=(Q=n.value.getSource(c.value.source))==null?void 0:Q.type;c.value.source,c.value.id,I==="vector"&&c.value.source,ee(n.value,c.value.source,c.value.id,{hovered:!1}),c.value=null}l&&(l.remove(),l=null);return}const V=M[0];if(!c.value||c.value.id!==V.id||c.value.source!==V.layer.source){if(c.value){const _e=(te=n.value.getSource(c.value.source))==null?void 0:te.type;c.value.source,c.value.id,_e==="vector"&&c.value.source,ee(n.value,c.value.source,c.value.id,{hovered:!1})}const I=(oe=n.value.getSource(V.layer.source))==null?void 0:oe.type;V.layer.source,V.id,I==="vector"&&V.layer.source,ee(n.value,V.layer.source,V.id,{hovered:!0}),c.value={source:V.layer.source,id:V.id}}const U=(Z=(ne=i.value)==null?void 0:ne.widgets)==null?void 0:Z.find(I=>I.type==="layers"),H=(re=(Y=i.value)==null?void 0:Y.widgets)==null?void 0:re.find(I=>I.type==="attribute");let O=null;if(U&&(O=U.config.layers.find(I=>I.id===V.layer.source)),(z=(ue=i.value)==null?void 0:ue.widgets)==null?void 0:z.find(I=>I.type==="catalog")){if(!M.length){l&&(l.style.display="none");return}const I=M[0];l=al(I,P,l);return}if(!O&&H&&H.config.layer.id===V.layer.source&&(O=H.config.layer),(be=O==null?void 0:O.style)!=null&&be.popup){const I=O.style.popup;let _e=I.title,Ee="";I.mode==="markdown"?Ee=Array.isArray(I.content)?I.content.join(`
22
+ `},$=y=>({legend:ze,basemaps:Re,layers:xt,info:vt,attribute:co,catalog:An,filters:Wn,"inline-filters":Qn,list:cr,card:Ne})[y],k=e.computed(()=>!!i.value&&Array.isArray(i.value.widgets)&&i.value.widgets.some(y=>y.type==="filters")),x=y=>{a.value=y};function F(){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 G({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 V,N,B;if(!i.value||!i.value.map)return;const y={version:8,glyphs:"https://cdn.softpro.ua/data/fonts/{fontstack}/{range}.pbf",sources:{},layers:[]};let f=i.value.map.center,w=i.value.map.zoom,C=i.value.map.bearing||0,b=i.value.map.pitch||0;if(i.value.history){const v=F();v.center&&(f=v.center),v.zoom!==null&&(w=v.zoom),v.bearing!==null&&(C=v.bearing),v.pitch!==null&&(b=v.pitch)}n.value=new maplibregl.Map({container:"maplibre-demo-map",style:y,center:f,zoom:w,bearing:C,pitch:b,maxBounds:[18.0856083513,40.3614785833,58.0807890155,56.3350745713]}),(B=(N=(V=i==null?void 0:i.value)==null?void 0:V.interactions)==null?void 0:N.navigation)!=null&&B.enabled&&!p&&(p=new maplibregl.NavigationControl,n.value.addControl(p,"top-right")),n.value.on("load",async()=>{var A,ce,j,de,he;r.value=!0;const v=F(),T=v.center&&v.zoom!==null;if((A=i.value.map)!=null&&A.bbox&&!T){const[M,P,E,U]=i.value.map.bbox;n.value.fitBounds([[M,P],[E,U]],{padding:50,duration:0})}if(await(async()=>{var P,E,U,H,O;const M=((O=(H=(U=(E=(P=i.value)==null?void 0:P.widgets)==null?void 0:E.find(S=>S.type==="layers"))==null?void 0:U.config)==null?void 0:H.layers)==null?void 0:O.filter(S=>{var Q;return((Q=S.style)==null?void 0:Q.attrType)==="icon-by-attribute"}))||[];for(const S of M){const{rules:Q,default_icon:te,icon_base_url:oe}=S.style,ne=[...Q.map(W=>W.icon),te].filter(Boolean);for(const W of ne)try{const Y=`${oe}${W}`,re=await n.value.loadImage(Y);n.value.hasImage(W)||n.value.addImage(W,re.data)}catch(Y){console.error(`Failed to load icon: ${W}`,Y)}}})(),(de=(j=(ce=i.value)==null?void 0:ce.interactions)==null?void 0:j.hover)!=null&&de.enabled&&(n.value.on("mousemove",M=>{var Q,te,oe,ne,W,Y,re,ue,z,be;const P=n.value.queryRenderedFeatures(M.point);if(n.value&&n.value.getCanvas&&(n.value.getCanvas().style.cursor=P.length?"pointer":""),!P.length){if(c.value){const I=(Q=n.value.getSource(c.value.source))==null?void 0:Q.type;c.value.source,c.value.id,I==="vector"&&c.value.source,ee(n.value,c.value.source,c.value.id,{hovered:!1}),c.value=null}l&&(l.remove(),l=null);return}const E=P[0];if(!c.value||c.value.id!==E.id||c.value.source!==E.layer.source){if(c.value){const _e=(te=n.value.getSource(c.value.source))==null?void 0:te.type;c.value.source,c.value.id,_e==="vector"&&c.value.source,ee(n.value,c.value.source,c.value.id,{hovered:!1})}const I=(oe=n.value.getSource(E.layer.source))==null?void 0:oe.type;E.layer.source,E.id,I==="vector"&&E.layer.source,ee(n.value,E.layer.source,E.id,{hovered:!0}),c.value={source:E.layer.source,id:E.id}}const U=(W=(ne=i.value)==null?void 0:ne.widgets)==null?void 0:W.find(I=>I.type==="layers"),H=(re=(Y=i.value)==null?void 0:Y.widgets)==null?void 0:re.find(I=>I.type==="attribute");let O=null;if(U&&(O=U.config.layers.find(I=>I.id===E.layer.source)),(z=(ue=i.value)==null?void 0:ue.widgets)==null?void 0:z.find(I=>I.type==="catalog")){if(!P.length){l&&(l.style.display="none");return}const I=P[0];l=ll(I,M,l);return}if(!O&&H&&H.config.layer.id===E.layer.source&&(O=H.config.layer),(be=O==null?void 0:O.style)!=null&&be.popup){const I=O.style.popup;let _e=I.title,Ve="";I.mode==="markdown"?Ve=Array.isArray(I.content)?I.content.join(`
23
23
 
24
- `):"":Ee=Array.isArray(I.content)?I.content.join(""):"",l||(l=document.createElement("div"),n.value.getContainer().appendChild(l)),l.innerHTML=L(_e,Ee,I.fields,V.properties,I.mode),Se(l,P)}}),n.value.on("mouseleave",()=>{var P;if(l&&(l.remove(),l=null),c.value){const M=(P=n.value.getSource(c.value.source))==null?void 0:P.type;c.value.source,c.value.id,M==="vector"&&c.value.source,ee(n.value,c.value.source,c.value.id,{hovered:!1}),c.value=null}n.value&&n.value.getCanvas&&(n.value.getCanvas().style.cursor="")})),n.value.on("click",async P=>{var te,oe,ne,Z,Y,re,ue;if(R(),["length","area","print"].includes(d.value))return;const M=n.value.queryRenderedFeatures(P.point);if(!M.length)return;const V=M[0],U=(oe=(te=i.value)==null?void 0:te.widgets)==null?void 0:oe.find(z=>z.type==="layers"),H=(Z=(ne=i.value)==null?void 0:ne.widgets)==null?void 0:Z.find(z=>z.type==="attribute"),O=(re=(Y=i.value)==null?void 0:Y.widgets)==null?void 0:re.find(z=>z.type==="catalog");let S;if(O?S=V.layer.source:S=(H==null?void 0:H.config.layer)||(U==null?void 0:U.config.layers.find(z=>z.id===V.layer.source)),S!=null&&S.noCard)return;u.value.forEach(z=>{var I;const be=(I=n.value.getSource(z.source))==null?void 0:I.type;z.source,z.id,be==="vector"&&z.source,ee(n.value,z.source,z.id,{selected:!1})}),u.value=[];const Q=(ue=n.value.getSource(V.layer.source))==null?void 0:ue.type;V.layer.source,V.id,Q==="vector"&&V.layer.source,ee(n.value,V.layer.source,V.id,{selected:!0}),u.value.push({source:V.layer.source,id:V.id}),s.value={layer:(S==null?void 0:S.service_key)||S||"",map:(S==null?void 0:S.map_key)||"",id:V.properties.id,title:(S==null?void 0:S.title)||""}}),n.value.on("dblclick",P=>{var U,H,O;if(R(),["length","area","print"].includes(d.value))return;ol([P.lngLat.lng,P.lngLat.lat]);const M=(H=(U=i.value)==null?void 0:U.widgets)==null?void 0:H.find(S=>S.type==="layers");let V=null;(O=M==null?void 0:M.config)!=null&&O.layers&&(V=M.config.layers.find(S=>S.visible!==!1&&["tms","wms","raster"].includes((S.service_type||S.service||"").toLowerCase()))),!(V!=null&&V.noCard)&&(s.value={layer:(V==null?void 0:V.map_key)||"",map:(V==null?void 0:V.service_key)||"",id:"",title:(V==null?void 0:V.title)||""})}),n.value.resize(),(he=i==null?void 0:i.value)!=null&&he.history){const P=()=>{const M=n.value.getCenter();G({center:[M.lng,M.lat],zoom:n.value.getZoom(),bearing:n.value.getBearing(),pitch:n.value.getPitch()})};n.value.on("moveend",P),n.value.on("rotate",P),n.value.on("pitch",P)}})},R=()=>{ve(),u.value.forEach(y=>{n.value&&ee(n.value,y.source,y.id,{selected:!1})}),u.value=[],s.value=null};e.onMounted(async()=>{await ke(),await e.nextTick(),K();const y=document.getElementById("maplibre-demo-map");y&&y.addEventListener("mouseleave",()=>{l&&(l.remove(),l=null)})});const xe=e.computed(()=>({height:(o==null?void 0:o.height)||"100vh",width:"100%"})),ke=async()=>{const y=await fetch(`/api/map/${o.name||o.table||"main"}`).then(f=>f.json());i.value=y},fe=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=Xr(),K())});const Xr=()=>{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 ee(y,f,w,C){y.getStyle().layers.filter(E=>E.source===f).forEach(E=>{var B;const N={source:f,id:w};((B=y.getSource(f))==null?void 0:B.type)==="vector"&&E["source-layer"]&&(N.sourceLayer=E["source-layer"]),y.setFeatureState(N,C)})}const el=e.computed(()=>!!i.value&&!!i.value.interactions&&!!i.value.interactions.navigation&&i.value.interactions.navigation.enabled),tl=e.computed(()=>!!i.value&&Array.isArray(i.value.tools)&&i.value.tools.length>0),ye=e.computed(()=>el.value||tl.value?"40px":"20px");function ve(){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 ol(y){var C,b,E,N;ve();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 v=performance.now()%2e3/2e3,T=f/2*.3,me=f/2*.7*v+T,{context:A}=this;A.clearRect(0,0,this.width,this.height),A.beginPath(),A.arc(this.width/2,this.height/2,me,0,Math.PI*2),A.fillStyle=`rgba(255, 100, 100, ${1-v})`,A.fill();const ce=f/2*.7*(v-.5<0?v-.5+1:v-.5)+T;return A.beginPath(),A.arc(this.width/2,this.height/2,ce,0,Math.PI*2),A.fillStyle=`rgba(255, 100, 100, ${1-(v-.5<0?v-.5+1:v-.5)})`,A.fill(),this.data=A.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}),(E=n.value)==null||E.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 nl=e.computed(()=>{var y,f,w,C,b,E,N,B,v,T;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:((E=(b=i==null?void 0:i.value)==null?void 0:b.map)==null?void 0:E.pitch)||0,bearing:((B=(N=i==null?void 0:i.value)==null?void 0:N.map)==null?void 0:B.bearing)||0,bbox:((T=(v=i==null?void 0:i.value)==null?void 0:v.map)==null?void 0:T.bbox)||null}}),$e={home:br,print:Vr,geolocation:Rr,pitch:Lr},rl=y=>{d.value=y};function se(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&&(s.value={id:y,map:w,layer:C})}const ll=e.computed(()=>i.value&&i.value.widgets?i.value.widgets.filter(y=>y.position==="absolute"):[]);function al(y,f,w){const C=y.properties,b=g.value.find(j=>String(j.id)===String(y.source)),E=Array.isArray(b==null?void 0:b.popup)?b.popup:[],B=E.filter(j=>j.meta==="image").map(j=>C==null?void 0:C[j.name]).filter(Boolean),v=B.length>0?`
24
+ `):"":Ve=Array.isArray(I.content)?I.content.join(""):"",l||(l=document.createElement("div"),n.value.getContainer().appendChild(l)),l.innerHTML=L(_e,Ve,I.fields,E.properties,I.mode),Ie(l,M)}}),n.value.on("mouseleave",()=>{var M;if(l&&(l.remove(),l=null),c.value){const P=(M=n.value.getSource(c.value.source))==null?void 0:M.type;c.value.source,c.value.id,P==="vector"&&c.value.source,ee(n.value,c.value.source,c.value.id,{hovered:!1}),c.value=null}n.value&&n.value.getCanvas&&(n.value.getCanvas().style.cursor="")})),n.value.on("click",async M=>{var te,oe,ne,W,Y,re,ue;if(R(),["length","area","print"].includes(d.value))return;const P=n.value.queryRenderedFeatures(M.point);if(!P.length)return;const E=P[0],U=(oe=(te=i.value)==null?void 0:te.widgets)==null?void 0:oe.find(z=>z.type==="layers"),H=(W=(ne=i.value)==null?void 0:ne.widgets)==null?void 0:W.find(z=>z.type==="attribute"),O=(re=(Y=i.value)==null?void 0:Y.widgets)==null?void 0:re.find(z=>z.type==="catalog");let S;if(O?S=E.layer.source:S=(H==null?void 0:H.config.layer)||(U==null?void 0:U.config.layers.find(z=>z.id===E.layer.source)),S!=null&&S.noCard)return;u.value.forEach(z=>{var I;const be=(I=n.value.getSource(z.source))==null?void 0:I.type;z.source,z.id,be==="vector"&&z.source,ee(n.value,z.source,z.id,{selected:!1})}),u.value=[];const Q=(ue=n.value.getSource(E.layer.source))==null?void 0:ue.type;E.layer.source,E.id,Q==="vector"&&E.layer.source,ee(n.value,E.layer.source,E.id,{selected:!0}),u.value.push({source:E.layer.source,id:E.id}),s.value={layer:(S==null?void 0:S.service_key)||S||"",map:(S==null?void 0:S.map_key)||"",id:E.properties.id,title:(S==null?void 0:S.title)||""}}),n.value.on("dblclick",M=>{var U,H,O;if(R(),["length","area","print"].includes(d.value))return;tl([M.lngLat.lng,M.lngLat.lat]);const P=(H=(U=i.value)==null?void 0:U.widgets)==null?void 0:H.find(S=>S.type==="layers");let E=null;(O=P==null?void 0:P.config)!=null&&O.layers&&(E=P.config.layers.find(S=>S.visible!==!1&&["tms","wms","raster"].includes((S.service_type||S.service||"").toLowerCase()))),!(E!=null&&E.noCard)&&(s.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(),(he=i==null?void 0:i.value)!=null&&he.history){const M=()=>{const P=n.value.getCenter();G({center:[P.lng,P.lat],zoom:n.value.getZoom(),bearing:n.value.getBearing(),pitch:n.value.getPitch()})};n.value.on("moveend",M),n.value.on("rotate",M),n.value.on("pitch",M)}})},R=()=>{$e(),u.value.forEach(y=>{n.value&&ee(n.value,y.source,y.id,{selected:!1})}),u.value=[],s.value=null};e.onMounted(async()=>{await ke(),await e.nextTick(),K();const y=document.getElementById("maplibre-demo-map");y&&y.addEventListener("mouseleave",()=>{l&&(l.remove(),l=null)})});const xe=e.computed(()=>({height:(o==null?void 0:o.height)||"100vh",width:"100%"})),ke=async()=>{const y=await fetch(`/api/map/${o.name||o.table||"main"}`).then(f=>f.json());i.value=y},fe=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=Kr(),K())});const Kr=()=>{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 ee(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 Xr=e.computed(()=>!!i.value&&!!i.value.interactions&&!!i.value.interactions.navigation&&i.value.interactions.navigation.enabled),el=e.computed(()=>!!i.value&&Array.isArray(i.value.tools)&&i.value.tools.length>0),ye=e.computed(()=>Xr.value||el.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 tl(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 v=performance.now()%2e3/2e3,T=f/2*.3,me=f/2*.7*v+T,{context:A}=this;A.clearRect(0,0,this.width,this.height),A.beginPath(),A.arc(this.width/2,this.height/2,me,0,Math.PI*2),A.fillStyle=`rgba(255, 100, 100, ${1-v})`,A.fill();const ce=f/2*.7*(v-.5<0?v-.5+1:v-.5)+T;return A.beginPath(),A.arc(this.width/2,this.height/2,ce,0,Math.PI*2),A.fillStyle=`rgba(255, 100, 100, ${1-(v-.5<0?v-.5+1:v-.5)})`,A.fill(),this.data=A.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 ol=e.computed(()=>{var y,f,w,C,b,V,N,B,v,T;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:((T=(v=i==null?void 0:i.value)==null?void 0:v.map)==null?void 0:T.bbox)||null}}),Se={home:yr,print:Vr,geolocation:Ur,pitch:Br},nl=y=>{d.value=y};function se(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&&(s.value={id:y,map:w,layer:C})}const rl=e.computed(()=>i.value&&i.value.widgets?i.value.widgets.filter(y=>y.position==="absolute"):[]);function ll(y,f,w){const C=y.properties,b=g.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),v=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
- `:"",T=E.find(j=>j.meta==="title"),me=T?C==null?void 0:C[T.name]:"";let A=E.filter(j=>j.meta!=="title"&&j.meta!=="image").map(j=>{const de=C==null?void 0:C[j.name];let he=de??"-";switch(j.meta){case"badge":he=de?`<span class="inline-block rounded px-2 py-0.5 text-xs bg-yellow-100 text-yellow-800 ">${de}</span>`:"-";break}return`
28
+ `:"",T=V.find(j=>j.meta==="title"),me=T?C==null?void 0:C[T.name]:"";let A=V.filter(j=>j.meta!=="title"&&j.meta!=="image").map(j=>{const de=C==null?void 0:C[j.name];let he=de??"-";switch(j.meta){case"badge":he=de?`<span class="inline-block rounded px-2 py-0.5 text-xs bg-yellow-100 text-yellow-800 ">${de}</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
31
  <td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${he}</td>
32
32
  </tr>
33
- `}).join("");E.length||(A=Object.keys(C).map(j=>`
33
+ `}).join("");V.length||(A=Object.keys(C).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
36
  <td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${C[j]||"-"}</td>
@@ -45,4 +45,4 @@
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=ce,Se(w,f),w}function Se(y,f){const w=y.offsetWidth,C=y.offsetHeight,b=document.getElementById("maplibre-demo-map"),E=b.getBoundingClientRect(),N=f.originalEvent.clientX-E.left,B=f.originalEvent.clientY-E.top;let v=N-w/2;v=Math.max(10,Math.min(v,E.width-w-10));let T;B-C-10>0?T=B-C-5:B+C+10<E.height?T=B+10:T=Math.max(10,E.height-C-10),y.style.position="absolute",y.style.left=`${v+20}px`,y.style.top=`${T+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(xe.value)},[f[10]||(f[10]=e.createElementVNode("div",{id:"maplibre-demo-map"},null,-1)),r.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 E,N;return e.createVNode(ge,{key:b,position:b,widgets:m(b),map:n.value,mapLoaded:r.value,cardValues:s.value,hasFilters:k.value,history:(N=(E=i.value)==null?void 0:E.value)==null?void 0:N.history,currentFilterLayer:a.value,enabledLayerIds:W.value,getWidgetComponent:$,getColumnWidth:fe,rightColumnOffset:b==="top-right"?ye.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[0]||(f[0]=B=>W.value=B),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[1]||(f[1]=B=>g.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 E,N;return e.createVNode(ge,{key:b,position:b,widgets:m(b),map:n.value,mapLoaded:r.value,cardValues:s.value,hasFilters:k.value,history:(N=(E=i.value)==null?void 0:E.value)==null?void 0:N.history,currentFilterLayer:a.value,enabledLayerIds:W.value,getWidgetComponent:$,getColumnWidth:fe,rightColumnOffset:b==="top-right"?ye.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[2]||(f[2]=B=>W.value=B),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[3]||(f[3]=B=>g.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 E,N;return e.createVNode(ge,{key:b,position:b,widgets:m(b),map:n.value,mapLoaded:r.value,cardValues:s.value,hasFilters:k.value,history:(N=(E=i.value)==null?void 0:E.value)==null?void 0:N.history,currentFilterLayer:a.value,enabledLayerIds:W.value,getWidgetComponent:$,getColumnWidth:fe,rightColumnOffset:b==="top-right"?ye.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[4]||(f[4]=B=>W.value=B),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[5]||(f[5]=B=>g.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 E,N;return e.createVNode(ge,{key:b,position:b,widgets:m(b),map:n.value,mapLoaded:r.value,cardValues:s.value,hasFilters:k.value,history:(N=(E=i.value)==null?void 0:E.value)==null?void 0:N.history,currentFilterLayer:a.value,enabledLayerIds:W.value,getWidgetComponent:$,getColumnWidth:fe,rightColumnOffset:b==="top-right"?ye.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[6]||(f[6]=B=>W.value=B),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[7]||(f[7]=B=>g.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(ll.value,(b,E)=>(e.openBlock(),e.createElementBlock("div",{key:"abs-"+(b.id||b.type||E),class:"absolute z-20",style:e.normalizeStyle(b.style)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent($(b.type)),{map:n.value,config:b.config,hasFilters:k.value,currentFilterLayer:a.value,enabledLayerIds:W.value,cardValues:s.value,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[8]||(f[8]=N=>W.value=N),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[9]||(f[9]=N=>g.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},[r.value&&$e[b]?(e.openBlock(),e.createBlock(e.resolveDynamicComponent($e[b]),e.mergeProps({key:0,map:n.value,activeTool:d.value,setActiveTool:rl},{ref_for:!0},b==="home"?{initialView:nl.value}:{},{onCardValuesId:se}),null,16,["map","activeTool"])):e.createCommentVNode("",!0)],64))),128))])],64)):(e.openBlock(),e.createBlock(mr,{key:0}))],4)}}}),[["__scopeId","data-v-09938096"]]);function Kr(t){t.component("MapCustom",we)}q.MapCustom=we,q.default=we,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=ce,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 v=N-w/2;v=Math.max(10,Math.min(v,V.width-w-10));let T;B-C-10>0?T=B-C-5:B+C+10<V.height?T=B+10:T=Math.max(10,V.height-C-10),y.style.position="absolute",y.style.left=`${v+20}px`,y.style.top=`${T+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(xe.value)},[f[10]||(f[10]=e.createElementVNode("div",{id:"maplibre-demo-map"},null,-1)),r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Rr,[e.createElementVNode("div",Hr,[e.createElementVNode("div",Wr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["top-left"],b=>{var V,N;return e.createVNode(ge,{key:b,position:b,widgets:m(b),map:n.value,mapLoaded:r.value,cardValues:s.value,hasFilters:k.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:a.value,enabledLayerIds:Z.value,getWidgetComponent:$,getColumnWidth:fe,rightColumnOffset:b==="top-right"?ye.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[0]||(f[0]=B=>Z.value=B),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[1]||(f[1]=B=>g.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))]),e.createElementVNode("div",Zr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["bottom-left"],b=>{var V,N;return e.createVNode(ge,{key:b,position:b,widgets:m(b),map:n.value,mapLoaded:r.value,cardValues:s.value,hasFilters:k.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:a.value,enabledLayerIds:Z.value,getWidgetComponent:$,getColumnWidth:fe,rightColumnOffset:b==="top-right"?ye.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[2]||(f[2]=B=>Z.value=B),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[3]||(f[3]=B=>g.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))])]),e.createElementVNode("div",qr,[e.createElementVNode("div",Gr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["top-right"],b=>{var V,N;return e.createVNode(ge,{key:b,position:b,widgets:m(b),map:n.value,mapLoaded:r.value,cardValues:s.value,hasFilters:k.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:a.value,enabledLayerIds:Z.value,getWidgetComponent:$,getColumnWidth:fe,rightColumnOffset:b==="top-right"?ye.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[4]||(f[4]=B=>Z.value=B),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[5]||(f[5]=B=>g.value=B)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))]),e.createElementVNode("div",Jr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["bottom-right"],b=>{var V,N;return e.createVNode(ge,{key:b,position:b,widgets:m(b),map:n.value,mapLoaded:r.value,cardValues:s.value,hasFilters:k.value,history:(N=(V=i.value)==null?void 0:V.value)==null?void 0:N.history,currentFilterLayer:a.value,enabledLayerIds:Z.value,getWidgetComponent:$,getColumnWidth:fe,rightColumnOffset:b==="top-right"?ye.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[6]||(f[6]=B=>Z.value=B),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[7]||(f[7]=B=>g.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(rl.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($(b.type)),{map:n.value,config:b.config,hasFilters:k.value,currentFilterLayer:a.value,enabledLayerIds:Z.value,cardValues:s.value,onSetFilterLayer:x,"onUpdate:enabledLayerIds":f[8]||(f[8]=N=>Z.value=N),onCardValuesId:se,onCloseCard:R,onCatalogLayers:f[9]||(f[9]=N=>g.value=N)},null,40,["map","config","hasFilters","currentFilterLayer","enabledLayerIds","cardValues"]))],4))),128)),e.createElementVNode("div",Qr,[(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},[r.value&&Se[b]?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(Se[b]),e.mergeProps({key:0,map:n.value,activeTool:d.value,setActiveTool:nl},{ref_for:!0},b==="home"?{initialView:ol.value}:{},{onCardValuesId:se}),null,16,["map","activeTool"])):e.createCommentVNode("",!0)],64))),128))])],64)):(e.openBlock(),e.createBlock(pr,{key:0}))],4)}}}),[["__scopeId","data-v-09938096"]]);function Yr(t){t.component("MapCustom",we)}q.MapCustom=we,q.default=we,q.install=Yr,Object.defineProperties(q,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));