@opengis/gis 0.1.70 → 0.1.71

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,4 +1,4 @@
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`
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,__:[0]})])}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,__:[0]})}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,__:[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,__:[7]})])}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>
@@ -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,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"}})}));
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"}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/gis",
3
- "version": "0.1.70",
3
+ "version": "0.1.71",
4
4
  "type": "module",
5
5
  "author": "Softpro",
6
6
  "main": "./dist/index.js",
@@ -33,9 +33,7 @@
33
33
  "carto": "0.16.3"
34
34
  },
35
35
  "peerDependencies": {
36
- "@opengis/fastify-table": "^1.4.24",
37
- "@opengis/filter": "^0.1.7",
38
- "@opengis/core": "^0.0.18"
36
+ "@opengis/fastify-table": "^1.4.24"
39
37
  },
40
38
  "devDependencies": {
41
39
  "lucide-vue-next": "^0.514.0",