@opengis/gis 0.1.80 → 0.1.82
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.
- package/dist/index.css +1 -1
- package/dist/index.js +3263 -2789
- package/dist/index.umd.cjs +30 -30
- package/module/test/cls/doc_status.json +31 -31
- package/module/test/map/address/addr.yml +6 -0
- package/module/test/map/address/index.yml +22 -0
- package/module/test/map/address/street.yml +16 -0
- package/module/test/map/address2/addr.json +9 -0
- package/module/test/map/address2/index.json +35 -0
- package/module/test/map/address2/street.json +19 -0
- package/module/test/map/address3.yml +52 -0
- package/module/test/map/address4.json +74 -0
- package/module/test/map/mbd.json +243 -0
- package/module/test/select/core.user_uid.sql +1 -1
- package/module/test/table/data_address.street.table.json +70 -0
- package/package.json +61 -59
- package/server/migrations/services.sql +3 -0
- package/server/plugins/mapnik/funcs/map.proto +241 -241
- package/server/routes/gis/registers/funcs/classifiers.js +18 -3
- package/server/routes/gis/registers/funcs/handleRegistryRequest.js +4 -2
- package/server/routes/gis/services/add.service.js +51 -16
- package/server/routes/gis/services/get.services.js +24 -3
- package/server/routes/map/controllers/mapFormat.js +15 -5
- package/server/routes/map/controllers/marker_icon.js +2 -1
- package/server/routes/map/index.mjs +2 -0
- package/server/routes/map/vtile1.js +2 -1
package/dist/index.umd.cjs
CHANGED
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
(function(W,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@opengis/core"),require("@opengis/filter"),require("vue-router")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/core","@opengis/filter","vue-router"],e):(W=typeof globalThis<"u"?globalThis:W||self,e(W.MapCustom={},W.Vue,W.openGIScore,W.openGISfilter,W.vueRouter))})(this,(function(W,e,Z,Re,ye){"use strict";const F=(t,o)=>{const n=t.__vccOpts||t;for(const[r,m]of o)n[r]=m;return n},He={key:0,class:"p-5 pb-0 flex justify-between items-center"},We={class:"inline-block font-semibold text-lg text-gray-800"},Ze={class:"flex flex-col gap-1 p-5"},Ye={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},Ge={key:0,class:"ms-2 text-xs text-gray-500"},Je=F({__name:"vs-legend-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var m;return((m=o.config)==null?void 0:m.items)||[]}),r=e.computed(()=>{var m;return((m=o.config)==null?void 0:m.title)||""});return(m,s)=>(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",He,[e.createElementVNode("h2",We,e.toDisplayString(r.value),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Ze,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,i=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center",key:i.label},[e.createElementVNode("span",{class:e.normalizeClass(["shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px]",[i.shape==="square"?"rounded-sm":"",i.shape==="circle"?"rounded-full":"",i.shape==="line"?"w-6 h-0.5":"",i.shape==="dashed-line"?"w-6 h-0.5 dashed-line":""]]),style:e.normalizeStyle({backgroundColor:i.color})},null,6),e.createElementVNode("span",Ye,[e.createElementVNode("span",null,e.toDisplayString(i.label),1),i.count!==void 0?(e.openBlock(),e.createElementBlock("span",Ge," ("+e.toDisplayString(i.count)+") ",1)):e.createCommentVNode("",!0)])]))),128))])],4))}},[["__scopeId","data-v-dd12cf90"]]),Ke={class:"flex flex-row gap-x-3 z-10 relative"},Qe=["onClick"],Xe=["src","alt"],et={__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 f;if(!((f=o.config)!=null&&f.layers))return[];const p=o.config.layers.map(c=>({id:c.id,title:c.label||c.title,url:c.url,service:c.type,category:"Базові карти",attribution:c.attribution,image:c.image,enabled:!0,owner:c.owner||"Unknown"}));return p.push({id:"__none__",title:"Без підложки",url:"",service:"",category:"Базові карти",attribution:"",enabled:!0,owner:""}),p});function m(p){return{version:8,sources:{[p.id]:{type:"raster",tiles:[p.url],tileSize:256,attribution:p.attribution||""}},layers:[{id:p.id,type:"raster",source:p.id}]}}const s=p=>{if(!o.map)return;const f=o.map.getStyle(),c=r.value.map(h=>h.id),d=f.layers.filter(h=>!c.includes(h.id)),a={};for(const h in f.sources)c.includes(h)||(a[h]=f.sources[h]);if(p.id==="__none__"){const h={version:8,sources:{...a},layers:[...d]};o.map.setStyle(h);return}const l=m(p);o.map.setStyle(l),o.map.once("styledata",()=>{for(const[h,u]of Object.entries(a))o.map.getSource(h)||o.map.addSource(h,u);for(const h of d)o.map.getLayer(h.id)||o.map.addLayer(h)})},i=p=>{n.value=p;const f=r.value.find(c=>c.id===p);f&&o.map&&s(f)};return e.onMounted(()=>{var p;(p=o.config)!=null&&p.default&&(n.value=o.config.default),i(n.value)}),(p,f)=>{const c=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",Ke,[(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:a=>i(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,Xe)):e.createCommentVNode("",!0)],10,Qe)])),[[c,d.title]])),128))])}}};function ie(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 tt(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 Le(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 Q(t,o="stroke",n="#ccc"){return["case",["boolean",["feature-state","hovered"],!1],"#ff0000",["boolean",["feature-state","selected"],!1],"#ff0000",t[o]||n]}function ot(t){const o=[{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":ie(t),"fill-outline-color":Q(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":Le(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",paint:{"line-color":Q(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":Q(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-opacity":t.opacity||1}}),o}function nt(t){return[{type:"line",paint:{"line-color":Q(t,"color",ie(t)),"line-width":t.width||2,"line-opacity":t.opacity||1,...t.dashArray&&{"line-dasharray":t.dashArray}},layout:{...t.lineCap&&{"line-cap":t.lineCap},...t.lineJoin&&{"line-join":t.lineJoin}}}]}function rt(t){const o=[{type:"circle",maxzoom:t.icon&&+t.iconZoom||22,paint:{"circle-radius":t.radius||6,"circle-stroke-color":Q(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":ie(t),"circle-opacity":t.opacity||1}}];return t!=null&&t.clusterZoom?(o.push({type:"circle",filter:["has","point_count"],paint:{"circle-color":["step",["get","point_count"],"#51bbd6",100,"#f1f075",750,"#f28cb1"],"circle-radius":["step",["get","point_count"],20,100,30,750,40]}}),o.push({type:"symbol",filter:["has","point_count"],layout:{"text-field":["get","point_count"],"text-font":["Open Sans Regular"],"text-size":12}})):t.icon&&o.push({type:"symbol",minzoom:+t.iconZoom||16,layout:{"icon-image":t.icon,"icon-allow-overlap":!0}}),o}function lt(t,o,n){const r=t.type||"point";return r==="polygon"?[{type:"fill",...n!==void 0?{maxzoom:n}:{},paint:{"fill-color":ie(t),"fill-outline-color":Q(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":Le(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",...n!==void 0?{maxzoom:n}:{},paint:{"line-color":Q(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":Q(t,"color",ie(t)),"line-width":t.width||2,"line-opacity":t.opacity||1,...t.dashArray&&{"line-dasharray":t.dashArray}},layout:{...t.lineCap&&{"line-cap":t.lineCap},...t.lineJoin&&{"line-join":t.lineJoin}}}]:[{type:"circle",...n!==void 0?{maxzoom:n}:{},paint:{"circle-radius":t.radius||6,"circle-stroke-color":Q(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":ie(t),"circle-opacity":t.opacity||1}}]}function Se(t){var n,r;if(!t)return null;if(t.attrType==="icon-by-attribute"&&t.iconZoom){const m=tt(t),s=Array.isArray(m)&&m[0]==="case"?m:["case",["==",["get",t.attribute],((r=(n=t.rules)==null?void 0:n[0])==null?void 0:r.value)||""],m,m],i=lt(t,void 0,+t.iconZoom),p={type:"symbol",minzoom:+t.iconZoom,layout:{"icon-image":s,"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[...i,p]}const o=t.type||"point";return o==="polygon"?ot(t):o==="line"?nt(t):rt(t)}function at(t){return t.startsWith("http")?t:`${window.location.origin}${t}`}function st(t){const{id:o,sourceLayer:n,url:r,bounds:m,title:s,style:i,service:p,service_type:f,source_type:c,data:d}=t,a=at(r),l=f||p||c||"vector";switch(l){case"vtile":case"vector":return ct(o,n,a,m,s,i);case"raster":return dt(o,a,m,s,i);case"geojson":return mt(o,d||a,m,s,i);default:throw new Error(`Unsupported layer service type: ${l}`)}}function it(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 ct(t,o,n,r,m,s){const i=o||(n.match(/\/vtile\/([^/]+)/)||[])[1]||t,p={type:"vector",tiles:[n],...r&&{bounds:r}},d=Se(s||{}).map((a,l)=>({...a,id:`${t}-${l}`,"source-layer":i,source:t}));return{id:t,title:m,source:p,layers:d,visible:!0}}function dt(t,o,n,r,m){const s={type:"raster",tiles:[o],tileSize:256,...n&&{bounds:n}},i=m||{},p={id:t,type:"raster",source:t,layout:{visibility:"visible"},...i&&{paint:i}};return{id:t,title:r,source:s,layers:[p],visible:!0}}function mt(t,o,n,r,m){var d;const s={type:"geojson",data:o,...n&&{bounds:n}};let i="point";if(o&&o.features&&o.features.length>0){const a=(d=o.features[0].geometry)==null?void 0:d.type;a==="Polygon"||a==="MultiPolygon"?i="polygon":a==="LineString"||a==="MultiLineString"?i="line":i="point"}const p=m||it(i),c=Se(p).map((a,l)=>({...a,id:`${t}-${l}`,source:t}));return{id:t,title:r,source:s,layers:c,visible:!0}}function pt(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 ft(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 Fe(t,o){const n=o.map(async({name:r,url:m})=>{const s=await t.loadImage(m);return{name:r,data:s.data}});try{const r=await Promise.all(n);for(const{name:m,data:s}of r)t.hasImage(m)||t.addImage(m,s)}catch(r){console.error("Failed to load icons:",r)}}function ut(t,o,n="/icons/"){const m=ft(o).map(s=>({name:s,url:n+s}));return Fe(t,m)}async function te(t,o){const n=st(o),r=pt(o.style);r.length>0&&await Fe(t,r),o.layout&&o.layout["icon-image"]&&await ut(t,o.layout),t.getSource(n.id)||t.addSource(n.id,n.source);for(const m of n.layers)o.visible!==void 0&&(m.layout={...m.layout,visibility:o.visible?"visible":"none"}),t.getLayer(m.id)?t.setLayoutProperty(m.id,"visibility",o.visible?"visible":"none"):await t.addLayer(m);return n}function ce(t,o){t.getStyle().layers.filter(m=>m.source===o).forEach(m=>{t.removeLayer(m.id)}),t.getSource(o)&&t.removeSource(o)}const gt={},ht={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function yt(t,o){return e.openBlock(),e.createElementBlock("svg",ht,[...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 je=F(gt,[["render",yt]]),bt={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},kt={class:"flex flex-col justify-between h-full pb-5 px-5"},xt={key:0,class:"relative mb-[10px]"},wt={key:1,class:"mb-4"},_t={class:""},Vt={class:"space-y-2"},Et={class:"flex items-center gap-[10px] text-gray-500"},Bt={class:"dataset-checkbox-container flex"},Nt=["onUpdate:modelValue","onChange"],Ct={class:"text-sm"},$t=["onClick"],Lt=["innerHTML"],St={key:0,class:"text-sm text-gray-500 text-center py-2"},Ft={__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,m=e.ref(""),s=e.ref([]);function i(){const u=new URLSearchParams(window.location.search).get("layers");return u?u.split(","):[]}function p(h){const u=new URLSearchParams(window.location.search);h.length>0?u.set("layers",h.join(",")):u.delete("layers");const y=`${window.location.pathname}?${u.toString()}`;window.history.replaceState({},"",y)}e.onMounted(()=>{let h=[];n.history&&(h=i()),h.length>0?s.value=n.config.layers.map(u=>({...u,visible:h.includes(String(u.id))})):s.value=n.config.layers.map(u=>({...u,visible:u.visible??!1})),s.value.forEach(u=>{u.visible&&te(n.map,u)}),r("update:enabledLayerIds",d())});const f=e.computed(()=>{if(!m.value)return s.value;const h=m.value.toLowerCase();return s.value.filter(u=>(u.title||u.name||u.label||"").toLowerCase().includes(h))}),c=e.computed(()=>s.value.every(h=>h.visible)),d=()=>s.value.filter(h=>h.visible).map(h=>h.id),a=h=>{h.visible?te(n.map,h):(ce(n.map,h.id),r("set-filter-layer",null)),n.map.getStyle().layers.filter(g=>g.source===h.id).forEach(g=>{n.map.setLayoutProperty(g.id,"visibility",h.visible?"visible":"none")}),r("update:enabledLayerIds",d())},l=()=>{const h=!c.value;s.value.forEach(u=>{u.visible=h,h?te(n.map,u):ce(n.map,u.id)}),h||r("set-filter-layer",null),r("update:enabledLayerIds",d())};return e.watch(()=>d(),h=>{n.history&&p(h)},{deep:!0}),(h,u)=>(e.openBlock(),e.createElementBlock("div",bt,[u[1]||(u[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",kt,[t.config.search?(e.openBlock(),e.createElementBlock("div",xt,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":u[0]||(u[0]=y=>m.value=y),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,m.value]]),e.createVNode(je)])):e.createCommentVNode("",!0),t.config.allow_toggle_all?(e.openBlock(),e.createElementBlock("div",wt,[e.createElementVNode("button",{onClick:l,class:"w-full py-[7px] bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors"},e.toDisplayString(c.value?"Вимкнути всі":"Увімкнути всі"),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",_t,[e.createElementVNode("ul",Vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,y=>(e.openBlock(),e.createElementBlock("li",{key:y.id,class:"flex flex-wrap justify-between items-center gap-x-2"},[e.createElementVNode("label",Et,[e.createElementVNode("span",Bt,[e.withDirectives(e.createElementVNode("input",{class:"dataset-checkbox",type:"checkbox","onUpdate:modelValue":g=>y.visible=g,onChange:()=>a(y)},null,40,Nt),[[e.vModelCheckbox,y.visible]])]),e.createElementVNode("span",Ct,e.toDisplayString(y.title||y.name||y.label),1)]),y.actions&&y.visible?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(y.actions,g=>(e.openBlock(),e.createElementBlock("div",{key:g.id},[e.createElementVNode("button",{class:"text-sm text-gray-500",onClick:b=>h.$emit("show-widget",g.widget)},[e.createElementVNode("div",{innerHTML:g.icon},null,8,Lt)],8,$t)]))),128)):e.createCommentVNode("",!0)]))),128)),m.value&&f.value.length===0?(e.openBlock(),e.createElementBlock("li",St," Шарів не знайдено ")):e.createCommentVNode("",!0)])])])]))}},jt={class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},It={key:0,class:"p-5 pb-3 flex justify-between items-start gap-[30px]"},vt={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Dt={class:"flex flex-col gap-1"},At={class:"flex flex-col gap-1 p-5 pt-0"},Mt=["innerHTML"],Tt=F({__name:"vs-info-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var s;return((s=o.config)==null?void 0:s.title)||""}),r=e.computed(()=>{var s;return((s=o.config)==null?void 0:s.content)||""}),m=e.computed(()=>{var s;return((s=o.config)==null?void 0:s.goTo)||[]});return(s,i)=>{var f,c;const p=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",jt,[n.value||(f=m.value)!=null&&f.length?(e.openBlock(),e.createElementBlock("div",It,[e.createElementVNode("h2",vt,e.toDisplayString(n.value),1),(c=m.value)!=null&&c.length?(e.openBlock(),e.createBlock(e.unref(Z.VsPopover),{key:0,placement:"bottom"},{reference:e.withCtx(()=>[e.createVNode(e.unref(Z.VsPopover),{trigger:"hover",placement:"right"},{reference:e.withCtx(()=>[...i[0]||(i[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(()=>[i[1]||(i[1]=e.createTextVNode(" Перейти на карту ",-1))]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",Dt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.label},[d.url?(e.openBlock(),e.createBlock(p,{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",At,[e.createElementVNode("div",{innerHTML:r.value},null,8,Mt)])])}}},[["__scopeId","data-v-629caa82"]]),zt={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative overflow-hidden"},Pt={key:0,class:"p-5 pb-3 flex justify-between items-center"},Ut={class:"inline-block font-semibold text-lg text-gray-800"},Ot={key:1,class:"flex"},qt={class:"flex items-center mx-[8px]"},Rt={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"},Ht={class:"min-h-[34px] flex justify-center items-center text-stone-500 py-2 px-1.5 text-sm"},Wt={class:"flex flex-col justify-between pb-5 px-5 h-full overflow-y-auto flex-1 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-300 [&::-webkit-scrollbar-track]:bg-transparent"},Zt={key:0,class:"text-center"},Yt={key:1,class:"text-red-500"},Gt={key:2},Jt=["innerHTML"],Kt={key:1,class:"flow-root"},Qt={class:"-my-3 divide-y divide-gray-100 text-sm"},Xt={class:"font-medium text-gray-900"},eo={class:"text-gray-700 sm:col-span-2"},to={key:2,class:"vs-map-card-info__nodata"},oo={key:3,class:"pt-4 flex justify-end"},no=["href"],Ie={__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,m=e.computed(()=>{var b;return((b=n.config)==null?void 0:b.title)||""}),s=e.computed(()=>!!(typeof window.app=="object"&&window.app&&window.app.config)),i=e.ref([]),p=e.ref(!1),f=e.ref(null),c=e.ref(0),d=e.computed(()=>c.value+1),a=e.computed(()=>{var b;return((b=n.info)==null?void 0:b.length)||0}),l=e.computed(()=>i.value[c.value]),h=e.computed(()=>{if(!l.value)return{};const{rows:b,columns:k}=l.value;return!b||!k?{}:k.reduce((B,j)=>(!j.hide&&!["geom","geodata","id"].includes(j.name)&&(B[j.ua]=b[j.name]??"-"),B),{})});async function u(){var b,k,B,j,N,V;p.value=!0,f.value=null;try{const z={id:(b=n.cardValues)==null?void 0:b.id,layer:typeof((k=n.cardValues)==null?void 0:k.layer)=="object"?(j=(B=n.cardValues)==null?void 0:B.layer)==null?void 0:j.id:(N=n.cardValues)==null?void 0:N.layer,map:(V=n.cardValues)==null?void 0:V.map},O=await fetch("/api/map-format?"+new URLSearchParams(z)).then(Ne=>Ne.json());i.value[c.value]=O}catch(z){f.value=(z==null?void 0:z.message)||"Помилка запиту"}finally{p.value=!1,await e.nextTick(),r("content-resize")}}function y(){c.value<n.info.length-1&&(c.value+=1,i.value[c.value]||u())}function g(){c.value>0&&(c.value-=1,i.value[c.value]||u())}return e.onMounted(async()=>{await e.nextTick(),u()}),e.watch(()=>n.info,()=>{c.value=0,u(),r("content-resize")},{deep:!0}),e.watch([()=>n.cardValues,()=>n.config],async()=>{await e.nextTick(),u(),r("content-resize")}),(b,k)=>{var B,j;return e.openBlock(),e.createElementBlock("div",zt,[m.value?(e.openBlock(),e.createElementBlock("div",Pt,[e.createElementVNode("h2",Ut,e.toDisplayString(m.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]=N=>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),a.value>1?(e.openBlock(),e.createElementBlock("div",Ot,[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:g}," ◀ ",2),e.createElementVNode("div",qt,[e.createElementVNode("span",Rt,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",Ht,e.toDisplayString(a.value),1)]),e.createElementVNode("button",{type:"button",onClick:y,class:e.normalizeClass([{"opacity-50 pointer-events-none":d.value===a.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",Wt,[p.value?(e.openBlock(),e.createElementBlock("div",Zt,"Завантаження даних...")):f.value?(e.openBlock(),e.createElementBlock("div",Yt," Помилка завантаження даних ")):(e.openBlock(),e.createElementBlock("div",Gt,[(B=l.value)!=null&&B.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:l.value.html,class:"custom-table-html border-b"},null,8,Jt)):Object.keys(h.value).length?(e.openBlock(),e.createElementBlock("div",Kt,[e.createElementVNode("dl",Qt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(N,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:"grid grid-cols-1 gap-1 py-3 even:bg-gray-50 sm:grid-cols-3 sm:gap-4"},[e.createElementVNode("dt",Xt,e.toDisplayString(V),1),e.createElementVNode("dd",eo,e.toDisplayString(N),1)]))),128))])])):(e.openBlock(),e.createElementBlock("div",to,"Даних не знайдено."))])),(j=l.value)!=null&&j.cardInterface&&s.value?(e.openBlock(),e.createElementBlock("div",oo,[e.createElementVNode("a",{href:`/card/${l.value.cardInterface}/${l.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,no)])):e.createCommentVNode("",!0)])])}}},ro={class:"size-full flex flex-col bg-white border border-gray-200 shadow-2xs rounded-xl dark:bg-neutral-800 dark:border-neutral-700"},lo={key:0,class:"p-5 pb-0 items-center"},ao={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},so={class:"h-full p-5"},io={class:"h-full flex flex-col justify-between space-y-4"},co={class:"space-y-4"},mo={key:0,class:"flex gap-x-1 w-full h-2.5 rounded-full overflow-hidden"},po=["aria-valuenow"],fo={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"},uo=["for"],go={key:0,width:"16",height:"auto",src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J3doaXRlJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00xMi4yMDcgNC43OTNhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMGwtMi0yYTEgMSAwIDAxMS40MTQtMS40MTRMNi41IDkuMDg2bDQuMjkzLTQuMjkzYTEgMSAwIDAxMS40MTQgMHonLz48L3N2Zz4="},ho=["id","onUpdate:modelValue"],yo={class:"ml-2 text-gray-800 dark:text-neutral-200"},bo={key:0,class:"ms-auto text-xs text-gray-500 dark:text-neutral-500"},ko={__name:"vs-attributre-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var f;return((f=o.config)==null?void 0:f.title)||""}),r=e.ref([]),m=e.computed(()=>o.config.layer.style.rules.some(f=>f.count!==void 0)),s=e.computed(()=>o.config.layer.style.rules.reduce((f,c)=>f+(c.count||0),0)),i=f=>!f||s.value===0?0:Math.round(f/s.value*100),p=()=>{const c=o.config.layer.style.rules.filter((d,a)=>r.value[a]).map(d=>d.id||d.value).join(",");if(o.config.layer.id){const d=o.map.getSource(o.config.layer.id);if(d){const l=d.tiles[0].split("?filter=")[0],h=c?`${l}?filter=${o.config.layer.style.attribute}=${c}`:l;d.setTiles([h])}}};return e.onMounted(()=>{var f;(f=o.config)!=null&&f.layer&&(te(o.map,o.config.layer),r.value=new Array(o.config.layer.style.rules.length).fill(!1))}),(f,c)=>(e.openBlock(),e.createElementBlock("div",ro,[n.value?(e.openBlock(),e.createElementBlock("div",lo,[e.createElementVNode("div",null,[e.createElementVNode("h2",ao,e.toDisplayString(n.value),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",so,[e.createElementVNode("div",io,[e.createElementVNode("div",co,[m.value?(e.openBlock(),e.createElementBlock("div",mo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(d,a)=>(e.openBlock(),e.createElementBlock("div",{key:a,class:"flex flex-col justify-center overflow-hidden text-xs text-white text-center whitespace-nowrap",style:e.normalizeStyle({width:`${i(d.count)}%`,backgroundColor:d.color}),role:"progressbar","aria-valuenow":i(d.count),"aria-valuemin":"0","aria-valuemax":"100"},null,12,po))),128))])):e.createCommentVNode("",!0),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(d,a)=>(e.openBlock(),e.createElementBlock("li",{key:a},[e.createElementVNode("div",fo,[e.createElementVNode("label",{for:`filter-${a}`,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[a]?d.color||"#2563eb":"#fff",borderColor:r.value[a]?d.color||"#2563eb":d.color||"#d9d9d9"})},[r.value[a]?(e.openBlock(),e.createElementBlock("img",go)):e.createCommentVNode("",!0)],4),e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:`filter-${a}`,"onUpdate:modelValue":l=>r.value[a]=l,onChange:p,class:"hidden",disabled:!1},null,40,ho),[[e.vModelCheckbox,r.value[a]]]),e.createElementVNode("span",yo,e.toDisplayString(d.label||d.text),1),m.value?(e.openBlock(),e.createElementBlock("span",bo,"("+e.toDisplayString(d.count)+")",1)):e.createCommentVNode("",!0)],8,uo)])]))),128))])])])])]))}},xo={},wo={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 _o(t,o){return e.openBlock(),e.createElementBlock("svg",wo,[...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=F(xo,[["render",_o]]),Vo={class:"hover:bg-gray-100 rounded-lg flex items-center ml-[20px] py-[8px] px-[8px]"},Eo=["for"],Bo={class:"custom-checkbox-wrapper"},No=["id","checked"],Co={class:"custom-checkbox"},$o={key:0,xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},Lo={class:"flex items-center justify-between ml-2 w-full"},So=["title"],Fo={key:0,class:"text-xs opacity-60 text-[#4b5563]"},jo=F({__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,m=e.computed(()=>n.selectedLayers.some(p=>p.id===n.layer.id)),s=p=>Intl.NumberFormat("uk",{notation:"compact"}).format(p),i=p=>{r(p?"select":"remove",n.layer)};return(p,f)=>{var c,d,a,l,h;return e.openBlock(),e.createElementBlock("div",Vo,[e.createElementVNode("label",{class:"flex items-center w-full cursor-pointer",for:t.layer.id},[e.createElementVNode("div",Bo,[e.createElementVNode("input",{id:t.layer.id,type:"checkbox",checked:m.value,onChange:f[0]||(f[0]=u=>i(u.target.checked)),class:"custom-checkbox-input"},null,40,No),e.createElementVNode("div",Co,[m.value?(e.openBlock(),e.createElementBlock("svg",$o,[...f[1]||(f[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",Lo,[e.createElementVNode("div",{class:"whitespace-nowrap text text-ellipsis max-w-[260px] overflow-hidden text-[13px] text-[#4b5563]",title:(c=t.layer)==null?void 0:c.name},e.toDisplayString(((d=t.layer)==null?void 0:d.name)||((a=t.layer)==null?void 0:a.title)),9,So),isNaN(s((l=t.layer)==null?void 0:l.count))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Fo,e.toDisplayString(s((h=t.layer)==null?void 0:h.count)),1))])],8,Eo)])}}},[["__scopeId","data-v-b96f3537"]]),Io={},vo={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-zoom-in"};function Do(t,o){return e.openBlock(),e.createElementBlock("svg",vo,[...o[0]||(o[0]=[e.createElementVNode("circle",{cx:"11",cy:"11",r:"8"},null,-1),e.createElementVNode("line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"},null,-1),e.createElementVNode("line",{x1:"11",x2:"11",y1:"8",y2:"14"},null,-1),e.createElementVNode("line",{x1:"8",x2:"14",y1:"11",y2:"11"},null,-1)])])}const Ao=F(Io,[["render",Do]]),Mo={},To={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-info"};function zo(t,o){return e.openBlock(),e.createElementBlock("svg",To,[...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 Po=F(Mo,[["render",zo]]),Uo={},Oo={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 qo(t,o){return e.openBlock(),e.createElementBlock("svg",Oo,[...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 Ro=F(Uo,[["render",qo]]),Ho={},Wo={xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-trash2"};function Zo(t,o){return e.openBlock(),e.createElementBlock("svg",Wo,[...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 Yo=F(Ho,[["render",Zo]]),Go={},Jo={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 Ko(t,o){return e.openBlock(),e.createElementBlock("svg",Jo,[...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 Qo=F(Go,[["render",Ko]]),Xo={},en={width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function tn(t,o){return e.openBlock(),e.createElementBlock("svg",en,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const on=F(Xo,[["render",tn]]),nn={},rn={width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function ln(t,o){return e.openBlock(),e.createElementBlock("svg",rn,[...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 an=F(nn,[["render",ln]]);function sn(){const o=new URLSearchParams(window.location.search).get("layers");return o?o.split(","):[]}function cn(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 dn={components:{VsPopover:Z.VsPopover,VsLayersItem:jo,ZoomInIcon:Ao,InfoIcon:Po,TableIcon:Ro,TrashIcon:Yo,DotsIcon:Qo,ChevronRightIcon:on,FilterIcon:an,closeIcon:ve,searchIcon:je},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=sn();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),te(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&&cn(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),te(this.map,o)}},deleteLayer(t){const o=this.selectedLayers.findIndex(n=>n.id===t.id);o!==-1&&this.selectedLayers.splice(o,1),ce(this.map,t.id)},async toggleLayerVisibility(t){try{t.visible?(await te(this.map,t),this.updateLayerOpacity(t)):await ce(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 ce(this.map,t.id),this.deleteLayer(t)},clearSelectedLayers(){this.selectedLayers.forEach(async t=>{t.visible&&await ce(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 m=n.tiles[0].split("?filter=")[0],s=t?`${m}?filter=${t}`:m;n.setTiles([s])}},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(m=>m.id.includes(r.id))&&this.map.getStyle().layers.forEach(m=>{m.id.includes(r.id)&&this.map.moveLayer(m.id)})}},onDragEnd(){this.draggedLayerIndex=null}}},mn={class:"w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm"},pn={class:"flex items-center justify-between mb-4"},fn={class:"flex items-center gap-2"},un={class:"text-lg font-semibold text-gray-800"},gn={key:0},hn={key:1},yn={class:"flex mb-4 border-b border-gray-200"},bn={key:0},kn={class:"mb-4"},xn={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"},wn=["onDragstart","onDragover","onDrop"],_n={class:"flex items-center justify-between"},Vn={class:"flex items-center gap-2 cursor-move"},En=["onUpdate:modelValue","onChange"],Bn={class:"text-gray-800"},Nn={class:"flex items-center gap-2"},Cn={class:"relative"},$n={class:"flex items-center gap-2"},Ln=["onUpdate:modelValue","onInput"],Sn={class:"text-xs text-gray-600 whitespace-nowrap"},Fn=["onClick"],jn={class:"relative"},In={class:"w-48"},vn={key:0,class:"my-1 border-gray-200"},Dn=["disabled","onClick"],An={class:"p-1 rounded-full hover:bg-gray-100 transition-colors","aria-label":"Layer actions"},Mn={key:0,class:"bg-blue-50 rounded-md mt-2"},Tn={class:"px-2 pt-2 text-blue-600 hover:text-blue-700 transition-colors"},zn={key:0,class:"text-center text-[14px] text-[#4b5563]"},Pn={class:"relative mt-[10px]"},Un={key:0,class:"vs-layers-catalog__list flex-1 scrollable-container overflow-auto mt-2 catalog-list"},On={key:0,class:"text-center text-[14px] text-[#4b5563]"},qn={key:0,class:"text-center text-[14px] text-[#4b5563]"},Rn=["onClick"],Hn={class:"flex items-center gap-x-3"},Wn=["title"],Zn={class:"text-xs opacity-60 text-[#4b5563]"};function Yn(t,o,n,r,m,s){var h;const i=e.resolveComponent("VsPopover"),p=e.resolveComponent("DotsIcon"),f=e.resolveComponent("VsFilter"),c=e.resolveComponent("searchIcon"),d=e.resolveComponent("closeIcon"),a=e.resolveComponent("VsLayersItem"),l=e.resolveComponent("chevronRightIcon");return e.openBlock(),e.createElementBlock("div",mn,[e.createElementVNode("div",pn,[e.createElementVNode("div",fn,[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",un,[e.createTextVNode(e.toDisplayString(m.activeView==="catalog"?"Каталог":"Вибрані шари")+" ",1),m.activeView==="catalog"?(e.openBlock(),e.createElementBlock("span",gn,"("+e.toDisplayString(((h=m.layers)==null?void 0:h.length)||0)+")",1)):(e.openBlock(),e.createElementBlock("span",hn,"("+e.toDisplayString(m.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]=(...u)=>s.clearSelectedLayers&&s.clearSelectedLayers(...u))},[...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",yn,[e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",m.activeView==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[1]||(o[1]=u=>m.activeView="catalog")}," Каталог ",2),e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",m.activeView==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[2]||(o[2]=u=>m.activeView="selected")}," Вибрані шари ",2)]),m.activeView==="selected"?(e.openBlock(),e.createElementBlock("div",bn,[e.createElementVNode("div",kn,[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]=u=>m.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)])])]),m.mounted?(e.openBlock(),e.createElementBlock("div",xn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.selectedLayers,(u,y)=>{var g,b;return e.openBlock(),e.createElementBlock("div",{key:u.id||y,class:e.normalizeClass(["border border-gray-200 rounded-md p-3 mb-2 bg-white shadow-sm text-[13px] text-[#4b5563]",{dragging:m.draggedLayerIndex===y}]),draggable:"true",onDragstart:k=>s.onDragStart(y),onDragover:e.withModifiers(k=>s.onDragOver(y),["prevent"]),onDrop:k=>s.onDrop(y),onDragend:o[4]||(o[4]=(...k)=>s.onDragEnd&&s.onDragEnd(...k))},[e.createElementVNode("div",_n,[e.createElementVNode("div",Vn,[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=>u.visible=k,onChange:k=>s.toggleLayerVisibility(u)},null,40,En),[[e.vModelCheckbox,u.visible]]),e.createElementVNode("span",Bn,e.toDisplayString(u.name||u.title||u.label),1)]),e.createElementVNode("div",Nn,[e.createElementVNode("div",Cn,[e.createVNode(i,{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=>s.updateLayerOpacity(u)},e.toDisplayString(u.opacity||100)+"% ",9,Fn)]),default:e.withCtx(()=>[e.createElementVNode("div",$n,[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=>u.opacity=k,onInput:k=>s.onLayerOpacityChange(u),class:"h-2 w-full accent-blue-600 rounded-lg cursor-pointer bg-gray-200"},null,40,Ln),[[e.vModelText,u.opacity]]),e.createElementVNode("span",Sn,e.toDisplayString(Math.round(u.opacity))+"% ",1)])]),_:2},1024)]),e.createElementVNode("div",jn,[e.createVNode(i,{placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("div",An,[e.createVNode(p)])]),default:e.withCtx(()=>[e.createElementVNode("div",In,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.popoverActions(u),(k,B)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:B},[k.divider?(e.openBlock(),e.createElementBlock("hr",vn)):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass("w-full p-2 text-left text-sm flex items-center gap-2 "+(k.class||"")),disabled:k.disabled,onClick:j=>!k.disabled&&t.$options.methods[k.handler].call(this,u)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(k.icon),{class:"lucide"})),e.createTextVNode(" "+e.toDisplayString(k.label),1)],10,Dn))],64))),128))])]),_:2},1024)])])]),u.showFilters?(e.openBlock(),e.createElementBlock("div",Mn,[e.createElementVNode("div",Tn," Фільтри для шару: "+e.toDisplayString(u.name||u.title||u.label),1),e.withDirectives(e.createVNode(f,{ref_for:!0,ref:"filter",scheme:u.filters,header:!1,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:k=>s.handleFilterChange(k,u)},null,8,["scheme","onFilterChange"]),[[e.vShow,(g=u.filters)==null?void 0:g.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,!((b=u.filters)!=null&&b.length)]])])):e.createCommentVNode("",!0)],42,wn)}),128)),m.selectedLayers.length===0?(e.openBlock(),e.createElementBlock("div",zn,[...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",Pn,[e.withDirectives(e.createElementVNode("input",{title:"value",placeholder:"Введіть назву шару...","onUpdate:modelValue":o[5]||(o[5]=u=>m.search=u),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((...u)=>s.onEnter&&s.onEnter(...u),["enter"]))},null,544),[[e.vModelText,m.search]]),e.createVNode(c,{class:"absolute top-1/2 left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0, -50%)"}}),m.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:s.clearSearch},null,8,["onClick"])):e.createCommentVNode("",!0)]),m.categories?(e.openBlock(),e.createElementBlock("div",Un,[m.search?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.searchedLayers,(u,y)=>(e.openBlock(),e.createBlock(a,{key:y,layer:u,map:n.map,selectedLayers:m.selectedLayers,onSelect:s.addToSelected,onRemove:s.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128)),s.searchedLayers.length===0?(e.openBlock(),e.createElementBlock("div",On," Нічого не знайдено ")):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[!m.categories||Object.keys(m.categories).length===0?(e.openBlock(),e.createElementBlock("div",qn," Каталог порожній ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(Object.keys(m.categories),u=>(e.openBlock(),e.createElementBlock("div",{key:u},[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:y=>s.selectCategory(u)},[e.createElementVNode("div",Hn,[e.createVNode(l,{class:e.normalizeClass({"rotate-up":u===m.selectedCategory,"rotate-down":u!==m.selectedCategory})},null,8,["class"]),e.createElementVNode("div",{class:"max-w-[260px] text-[14px] text-[#4b5563]",title:u},e.toDisplayString(u),9,Wn)]),e.createElementVNode("div",Zn,e.toDisplayString(s.formatNumber(m.categories[u].length)),1)],8,Rn),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.categories[u],(y,g)=>(e.openBlock(),e.createBlock(a,{key:g,layer:y,map:n.map,selectedLayers:m.selectedLayers,onSelect:s.addToSelected,onRemove:s.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128))],512),[[e.vShow,u===m.selectedCategory]])]))),128))],64))])):e.createCommentVNode("",!0)],64))])}const Gn=F(dn,[["render",Yn],["__scopeId","data-v-e9e7021a"]]),Jn={key:0,class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},Kn={key:0,class:"p-5 pb-3 flex justify-between items-center"},Qn={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Xn={class:"flex flex-col justify-between h-full"},er={__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 i;return((i=o.config)==null?void 0:i.filters)||[]}),r=e.computed(()=>n.value),m=e.computed(()=>{var p;const i=(p=o.config)==null?void 0:p.conditions;return!i||!i.layers?!0:o.enabledLayerIds.some(f=>i.layers.includes(f))}),s=async({data:i})=>{var a;const p=Object.entries(i).map(l=>l.join("=")).join("|"),f=(a=o.config)==null?void 0:a.conditions,c=(f==null?void 0:f.layers)||[],d=o.enabledLayerIds.filter(l=>c.includes(l));d.length&&d.forEach(l=>{const h=o.map.getSource(l);if(h){const y=h.tiles[0].split("?filter=")[0],g=p?`${y}?filter=${p}`:y;h.setTiles([g])}})};return(i,p)=>m.value?(e.openBlock(),e.createElementBlock("div",Jn,[t.config.title?(e.openBlock(),e.createElementBlock("div",Kn,[e.createElementVNode("h2",Qn,e.toDisplayString(t.config.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Xn,[e.createVNode(e.unref(Re),{ref:"filter",schema:r.value,view:"vertical",onChange:s},null,8,["schema"])])])):e.createCommentVNode("",!0)}},tr={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"},or={class:"flex gap-[5px] items-center"},nr={class:"text-gray-600"},rr={key:0,class:"w-[16px] h-[16px] font-medium bg-gray-800 text-white rounded-full flex items-center justify-center text-[10px]"},lr={__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),m=e.computed(()=>{var c;return((c=o.config)==null?void 0:c.filters)||[]}),s=e.computed(()=>m.value.map(c=>({...c,id:c.name}))),i=e.computed(()=>{var d;const c=(d=o.config)==null?void 0:d.conditions;return!c||!c.layers?!0:o.enabledLayerIds.some(a=>c.layers.includes(a))}),p=e.computed(()=>{var c;if(o.enabledLayerIds&&o.enabledLayerIds.length){const a=(((c=o.config)==null?void 0:c.layers)||[]).find(l=>l.id===o.enabledLayerIds[0]);return(a==null?void 0:a.title)||(a==null?void 0:a.name)||(a==null?void 0:a.label)||o.enabledLayerIds[0]}return""}),f=async({url:c})=>{var h,u;const d=(h=o.config)==null?void 0:h.conditions;if(!d){const y=(u=o.config)==null?void 0:u.layer_id;if(!y)return;const g=o.map.getSource(y);if(g){const k=g.tiles[0].split("?filter=")[0],B=c?`${k}?filter=${c}`:k;g.setTiles([B])}return}const a=(d==null?void 0:d.layers)||[],l=o.enabledLayerIds.filter(y=>a.includes(y));l.length&&l.forEach(y=>{const g=o.map.getSource(y);if(g){const k=g.tiles[0].split("?filter=")[0],B=c?`${k}?filter=${c}`:k;g.setTiles([B])}})};return e.watch(()=>o.enabledLayerIds,c=>{(!c||!c.length)&&r.value&&(r.value.activeFilters={},n.value=0)}),e.watch(()=>{var c;return(c=r.value)==null?void 0:c.activeFilters},c=>{n.value=Object.keys(c||{}).length},{deep:!0}),(c,d)=>{const a=e.resolveComponent("VsPopover"),l=e.resolveComponent("VsFilterList");return i.value&&s.value.length?(e.openBlock(),e.createBlock(l,{key:0,ref_key:"filter",ref:r,isDialog:t.config.dialog??!0,scheme:s.value,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:f},{button:e.withCtx(({visible:h})=>[e.createVNode(a,{teleport:"body",trigger:"hover",placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("button",tr,[e.createElementVNode("div",or,[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",nr,e.toDisplayString(p.value),1),n.value?(e.openBlock(),e.createElementBlock("span",rr,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)}}},ar={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())}},sr={class:"bg-white p-4 rounded-lg h-full flex flex-col overflow-hidden",ref:"rootEl"},ir={key:0,class:"flex flex-col flex-1 overflow-hidden"},cr={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"},dr=["onClick"],mr={class:"text-base font-medium"},pr={class:"mt-2 flex flex-wrap gap-2"},fr={key:1,class:"px-2 py-1 text-sm bg-gray-100 rounded-full"},ur={key:0,class:"my-5 pr-2"},gr={class:"paginationWrapper relative flex justify-center"},hr={key:1,class:"text-center text-slate-400"};function yr(t,o,n,r,m,s){var p;const i=e.resolveComponent("VsPagination");return e.openBlock(),e.createElementBlock("div",sr,[o[0]||(o[0]=e.createElementVNode("h2",{class:"text-xl font-semibold mb-4"},"Список",-1)),((p=m.items)==null?void 0:p.length)>0?(e.openBlock(),e.createElementBlock("div",ir,[e.createElementVNode("div",cr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.items,f=>(e.openBlock(),e.createElementBlock("div",{key:f.id,class:"py-4 border-b last:border-b-0 hover:bg-gray-50",onClick:c=>t.$emit("cardValuesId",f.id)},[e.createElementVNode("h3",mr,e.toDisplayString(f.name),1),e.createElementVNode("div",pr,[f.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":f.status_data.color==="green","bg-red-100 text-red-800":f.status_data.color==="red"}])},e.toDisplayString(f.status_data.text),3)):e.createCommentVNode("",!0),f.class_mbd_id_data?(e.openBlock(),e.createElementBlock("span",fr,e.toDisplayString(f.class_mbd_id_data.text),1)):e.createCommentVNode("",!0)])],8,dr))),128))]),m.total>m.limit?(e.openBlock(),e.createElementBlock("div",ur,[e.createElementVNode("div",gr,[e.createVNode(i,{total:m.total,maxPages:4,defaultPage:m.currentPage,pageSize:m.limit,goTo:!1,size:"medium",onPageChange:s.handlePageChange,backgroundColor:"#e5e7eb",borderedCellSelected:!0,pageSizes:[16,32,48,64],onPageSizeChange:s.changeLimit},null,8,["total","defaultPage","pageSize","onPageChange","onPageSizeChange"])])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",hr,"Немає даних"))],512)}const br=F(ar,[["render",yr]]),kr={class:"map-skeleton-loader"},xr=F({__name:"vs-skeleton-loader",setup(t){return(o,n)=>(e.openBlock(),e.createElementBlock("div",kr,[...n[0]||(n[0]=[e.createElementVNode("div",{class:"dot-pulse"},null,-1)])]))}},[["__scopeId","data-v-954c1e03"]]),wr={},_r={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Vr(t,o){return e.openBlock(),e.createElementBlock("svg",_r,[...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 Er={components:{homeIcon:F(wr,[["render",Vr]])},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 Br(t,o,n,r,m,s){const i=e.resolveComponent("homeIcon"),p=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(p,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(i,{onClick:s.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 Nr=F(Er,[["render",Br]]),Cr={},$r={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Lr(t,o){return e.openBlock(),e.createElementBlock("svg",$r,[...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 Sr={components:{printIcon:F(Cr,[["render",Lr]]),VsPopover:Z.VsPopover},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:m}=window.MapboxExportControl;this.map.addControl(new t({PageSize:o.A3,PageOrientation:n.Portrait,Format:r.PNG,DPI:m[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 Fr(t,o,n,r,m,s){const i=e.resolveComponent("printIcon"),p=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(p,{trigger:"hover",placement:"left",teleport:"body"},{reference:e.withCtx(()=>[e.createVNode(i,{onClick:s.togglePrint,class:e.normalizeClass([s.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 jr=F(Sr,[["render",Fr]]),Ir={props:{map:{type:Object,required:!0}},data(){return{is3D:!1}},components:{VsPopover:Z.VsPopover},mounted(){this.map.on("move",this.updateViewStatus),this.updateViewStatus()},beforeUnmount(){this.map.off("move",this.updateViewStatus)},methods:{toggleView(){this.is3D?this.map.easeTo({pitch:0,bearing:0,duration:1e3}):this.map.easeTo({pitch:60,bearing:-29.6,duration:1e3})},updateViewStatus(){this.is3D=this.map.getPitch()!==0}}};function vr(t,o,n,r,m,s){const i=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(i,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createElementVNode("div",{class:"font-light w-full h-[44px] p-[9px] [transition:.3s] hover:[transition:.3s] text-[19px] hover:bg-[#DBEAFE] flex cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]",onClick:o[0]||(o[0]=(...p)=>s.toggleView&&s.toggleView(...p))},e.toDisplayString(m.is3D?"2D":"3D"),1)]),default:e.withCtx(()=>[o[1]||(o[1]=e.createElementVNode("div",null,"Перемикач виду",-1))]),_:1})}const Dr=F(Ir,[["render",vr]]),Ar={props:{bgColor:{type:String,default:"#1E40AF"}}},Mr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Tr=["stroke"],zr=["stroke"],Pr=["stroke"],Ur=["stroke"],Or=["stroke"],qr=["stroke"];function Rr(t,o,n,r,m,s){return e.openBlock(),e.createElementBlock("svg",Mr,[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,Tr),e.createElementVNode("path",{d:"M19 12H22",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,zr),e.createElementVNode("path",{d:"M12 2V5",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Pr),e.createElementVNode("path",{d:"M12 19V22",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Ur),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,Or),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,qr)])}const Hr={components:{geoIcon:F(Ar,[["render",Rr]]),VsPopover:Z.VsPopover,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],m=[[parseFloat(n.boundingbox[2]),parseFloat(n.boundingbox[0])],[parseFloat(n.boundingbox[3]),parseFloat(n.boundingbox[1])]];this.map.fitBounds(m,{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")}}},Wr={key:0,class:"max-w-[412px] absolute w-full top-[20px] right-[70px] bg-white border rounded-[15px] p-4 z-10"},Zr={class:"flex justify-between items-center border-b pb-[16px]"},Yr={class:"d-flex"},Gr={class:"pt-[16px]"};function Jr(t,o,n,r,m,s){var c,d,a,l,h,u;const i=e.resolveComponent("closeIcon"),p=e.resolveComponent("geoIcon"),f=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[(e.openBlock(),e.createBlock(e.Teleport,{to:"#maplibre-demo-map"},[m.location?(e.openBlock(),e.createElementBlock("div",Wr,[e.createElementVNode("div",Zr,[o[0]||(o[0]=e.createElementVNode("div",{class:"text-lg font-semibold"},"Ваша геолокація",-1)),e.createElementVNode("div",Yr,[e.createVNode(i,{onClick:s.closeGeolocation},null,8,["onClick"])])]),e.createElementVNode("div",Gr,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("strong",null,"Широта:",-1)),e.createTextVNode(" "+e.toDisplayString((c=m.location)==null?void 0:c.latitude),1)]),e.createElementVNode("div",null,[o[2]||(o[2]=e.createElementVNode("strong",null,"Довгота:",-1)),e.createTextVNode(" "+e.toDisplayString((d=m.location)==null?void 0:d.longitude),1)]),e.createElementVNode("div",null,[o[3]||(o[3]=e.createElementVNode("strong",null,"КраЇна:",-1)),e.createTextVNode(" "+e.toDisplayString((a=m.data)==null?void 0:a.country),1)]),e.createElementVNode("div",null,[o[4]||(o[4]=e.createElementVNode("strong",null,"Код країни:",-1)),e.createTextVNode(" "+e.toDisplayString((l=m.data)==null?void 0:l.country_code),1)]),e.createElementVNode("div",null,[o[5]||(o[5]=e.createElementVNode("strong",null,"Місто:",-1)),e.createTextVNode(" "+e.toDisplayString((h=m.data)==null?void 0:h.city),1)]),e.createElementVNode("div",null,[o[6]||(o[6]=e.createElementVNode("strong",null,"Поштовий індекс:",-1)),e.createTextVNode(" "+e.toDisplayString((u=m.data)==null?void 0:u.postcode),1)])])])):e.createCommentVNode("",!0)])),e.createVNode(f,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(p,{onClick:s.togleGeolocation,class:e.normalizeClass([s.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 Kr=F(Hr,[["render",Jr]]),be={__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,m=t,s=e.ref(m.widgets.map(c=>{var d;return{...c,config:{...c.config,visible:((d=c.config)==null?void 0:d.visible)!==!1}}}));e.watch(()=>m.widgets.map(c=>c.id||c.type).join(","),()=>{s.value=m.widgets.map(c=>{var d;return{...c,config:{...c.config,visible:((d=c.config)==null?void 0:d.visible)!==!1}}})});function i(c){const d=s.value.find(a=>a.id===c);d&&d.config&&(d.config.visible=!d.config.visible,setTimeout(()=>{r("content-resize")},30))}const p=e.ref(null);o({columnRef:p});let f=null;return e.onMounted(()=>{f=new MutationObserver(()=>{var c;clearTimeout((c=p.value)==null?void 0:c._resizeTimeout),p.value._resizeTimeout=setTimeout(()=>{r("content-resize")},30)}),p.value&&f.observe(p.value,{childList:!0,subtree:!0,characterData:!0})}),e.onUnmounted(()=>{f&&f.disconnect()}),(c,d)=>t.mapLoaded?(e.openBlock(),e.createElementBlock("div",{key:0,class:"widget-column",ref_key:"columnRef",ref:p,style:e.normalizeStyle({width:t.getColumnWidth(t.position),paddingRight:t.rightColumnOffset})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,a=>{var l;return e.openBlock(),e.createElementBlock(e.Fragment,{key:a.id||a.type},[a.type!=="card"?e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.getWidgetComponent(a.type)),{key:0,map:t.map,config:a.config,hasFilters:t.hasFilters,currentLayer:t.currentFilterLayer,enabledLayerIds:t.enabledLayerIds,history:t.history,onSetFilterLayer:d[0]||(d[0]=h=>c.$emit("set-filter-layer",h)),"onUpdate:enabledLayerIds":d[1]||(d[1]=h=>c.$emit("update:enabledLayerIds",h)),onCardValuesId:d[2]||(d[2]=h=>c.$emit("cardValuesId",h)),onShowWidget:i,onCatalogLayers:d[3]||(d[3]=h=>c.$emit("catalog-layers",h)),class:"widget"},null,40,["map","config","hasFilters","currentLayer","enabledLayerIds","history"])),[[e.vShow,((l=a.config)==null?void 0:l.visible)!==!1]]):e.createCommentVNode("",!0),t.cardValues&&a.type==="card"?(e.openBlock(),e.createBlock(Ie,{key:1,config:a.config,cardValues:t.cardValues,class:"widget",onClose:d[4]||(d[4]=h=>c.$emit("closeCard"))},null,8,["config","cardValues"])):e.createCommentVNode("",!0)],64)}),128))],4)):e.createCommentVNode("",!0)}},Qr={class:"map-widgets-flex"},Xr={class:"widgets-left"},el={class:"widgets-top"},tl={class:"widgets-bottom"},ol={class:"widgets-right"},nl={class:"widgets-top"},rl={class:"widgets-bottom"},ll={class:"absolute top-[180px] right-2 z-10 flex flex-col gap-[5px]"},Be=F(e.defineComponent({__name:"vs-map",props:{table:{},name:{},height:{}},setup(t){const o=e.getCurrentInstance(),n=t,r=e.ref(null),m=e.ref(!1);let s=null;const i=e.ref(null),p=e.ref(null),f=e.ref([]),c=e.ref([]),d=e.ref(null),a=e.ref(null),l=e.ref(null),h=e.ref([]);let u=null;function y(w){return!l.value||!l.value.widgets?[]:w==="center"?[...l.value.widgets.filter(E=>(E.position||{})==="center")||[],...c.value.filter(E=>E.position==="center")]:l.value.widgets.filter(x=>(x.position||{})===w)||[]}const g=(w,x,E)=>x[w]||w,b=(w,x,E,$,_)=>{const C=g(w,$),I=x?g(x,$):"";let S="";return E!=null&&E.length&&(S=E.map(P=>{const D=g(P.value,$);return`
|
|
1
|
+
(function(X,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@opengis/core"),require("@opengis/filter"),require("vue-router")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/core","@opengis/filter","vue-router"],e):(X=typeof globalThis<"u"?globalThis:X||self,e(X.MapCustom={},X.Vue,X.openGIScore,X.openGISfilter,X.vueRouter))})(this,(function(X,e,K,rt,Ee){"use strict";const D=(t,o)=>{const n=t.__vccOpts||t;for(const[r,i]of o)n[r]=i;return n},lt={key:0,class:"p-5 pb-0 flex justify-between items-center"},at={class:"inline-block font-semibold text-lg text-gray-800"},st={class:"flex flex-col gap-1 p-5"},it={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},ct={key:0,class:"ms-2 text-xs text-gray-500"},dt=D({__name:"vs-legend-widget",props:{config:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var i;return((i=o.config)==null?void 0:i.items)||[]}),r=e.computed(()=>{var i;return((i=o.config)==null?void 0:i.title)||""});return(i,l)=>(e.openBlock(),e.createElementBlock("div",{class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative",style:e.normalizeStyle({width:t.config.width||"100%"})},[r.value?(e.openBlock(),e.createElementBlock("div",lt,[e.createElementVNode("h2",at,e.toDisplayString(r.value),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",st,[(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",it,[e.createElementVNode("span",null,e.toDisplayString(c.label),1),c.count!==void 0?(e.openBlock(),e.createElementBlock("span",ct," ("+e.toDisplayString(c.count)+") ",1)):e.createCommentVNode("",!0)])]))),128))])],4))}},[["__scopeId","data-v-dd12cf90"]]),mt={class:"flex flex-row gap-x-3 z-10 relative"},pt=["onClick"],ut=["src","alt"],ft={__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 g;if(!((g=o.config)!=null&&g.layers))return[];const f=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 f.push({id:"__none__",title:"Без підложки",url:"",service:"",category:"Базові карти",attribution:"",enabled:!0,owner:""}),f});function i(f){return{version:8,sources:{[f.id]:{type:"raster",tiles:[f.url],tileSize:256,attribution:f.attribution||""}},layers:[{id:f.id,type:"raster",source:f.id}]}}const l=f=>{if(!o.map)return;const g=o.map.getStyle(),s=r.value.map(y=>y.id),m=g.layers.filter(y=>!s.includes(y.id)),d={};for(const y in g.sources)s.includes(y)||(d[y]=g.sources[y]);if(f.id==="__none__"){const y={version:8,sources:{...d},layers:[...m]};o.map.setStyle(y);return}const a=i(f);o.map.setStyle(a),o.map.once("styledata",()=>{for(const[y,u]of Object.entries(d))o.map.getSource(y)||o.map.addSource(y,u);for(const y of m)o.map.getLayer(y.id)||o.map.addLayer(y)})},c=f=>{n.value=f;const g=r.value.find(s=>s.id===f);g&&o.map&&l(g)};return e.onMounted(()=>{var f;(f=o.config)!=null&&f.default&&(n.value=o.config.default),c(n.value)}),(f,g)=>{const s=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",mt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,m=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{trigger:"hover",placement:"top",key:m.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===m.id?"border-blue-400":"border-transparent"]),onClick:d=>c(m.id)},[m.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:m.image,alt:m.title,class:e.normalizeClass(["object-cover rounded-lg",m.id==="__none__"?"w-10 h-10":"w-12 h-12"])},null,10,ut)):e.createCommentVNode("",!0)],10,pt)])),[[s,m.title]])),128))])}}};function ge(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 gt(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 Me(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 re(t,o="stroke",n="#ccc"){return["case",["boolean",["feature-state","hovered"],!1],"#ff0000",["boolean",["feature-state","selected"],!1],"#ff0000",t[o]||n]}function yt(t){const o=[{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":ge(t),"fill-outline-color":re(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":Me(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",paint:{"line-color":re(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":re(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-opacity":t.opacity||1}}),o}function ht(t){return[{type:"line",paint:{"line-color":re(t,"color",ge(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 bt(t){const o=[{type:"circle",maxzoom:t.icon&&+t.iconZoom||22,paint:{"circle-radius":t.radius||6,"circle-stroke-color":re(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":ge(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 kt(t,o,n){const r=t.type||"point";return r==="polygon"?[{type:"fill",...n!==void 0?{maxzoom:n}:{},paint:{"fill-color":ge(t),"fill-outline-color":re(t,"stroke","#ccc"),"fill-opacity":t.opacity||1,...t.attrType==="attribute-pattern"&&{"fill-pattern":Me(t)},...t.fillPattern&&!t.attrType&&{"fill-pattern":t.fillPattern}}},{type:"line",...n!==void 0?{maxzoom:n}:{},paint:{"line-color":re(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":re(t,"color",ge(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":re(t,"stroke","#ccc"),"circle-stroke-width":t.width||2,"circle-color":ge(t),"circle-opacity":t.opacity||1}}]}function Te(t){var n,r;if(!t)return null;if(t.attrType==="icon-by-attribute"&&t.iconZoom){const i=gt(t),l=Array.isArray(i)&&i[0]==="case"?i:["case",["==",["get",t.attribute],((r=(n=t.rules)==null?void 0:n[0])==null?void 0:r.value)||""],i,i],c=kt(t,void 0,+t.iconZoom),f={type:"symbol",minzoom:+t.iconZoom,layout:{"icon-image":l,"icon-size":(t==null?void 0:t.icon_size)||1,"icon-allow-overlap":!0,"icon-anchor":(t==null?void 0:t.icon_anchor)||"bottom"},paint:{"icon-opacity":t.opacity||1}};return[...c,f]}const o=t.type||"point";return o==="polygon"?yt(t):o==="line"?ht(t):bt(t)}function xt(t){return t.startsWith("http")?t:`${window.location.origin}${t}`}function wt(t){const{id:o,sourceLayer:n,url:r,bounds:i,title:l,style:c,service:f,service_type:g,source_type:s,data:m}=t,d=xt(r),a=g||f||s||"vector";switch(a){case"vtile":case"vector":return Et(o,n,d,i,l,c);case"raster":return Vt(o,d,i,l,c);case"geojson":return Bt(o,m||d,i,l,c);default:throw new Error(`Unsupported layer service type: ${a}`)}}function _t(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 Et(t,o,n,r,i,l){const c=o||(n.match(/\/vtile\/([^/]+)/)||[])[1]||t,f={type:"vector",tiles:[n],...r&&{bounds:r}},m=Te(l||{}).map((d,a)=>({...d,id:`${t}-${a}`,"source-layer":c,source:t}));return{id:t,title:i,source:f,layers:m,visible:!0}}function Vt(t,o,n,r,i){const l={type:"raster",tiles:[o],tileSize:256,...n&&{bounds:n}};return{id:t,title:r,source:l,layers:[{id:t,type:"raster",source:t,layout:{visibility:"visible"},paint:i||{}}],visible:!0}}function Bt(t,o,n,r,i){var m;const l={type:"geojson",data:o,...n&&{bounds:n}};let c="point";if(o&&o.features&&o.features.length>0){const d=(m=o.features[0].geometry)==null?void 0:m.type;d==="Polygon"||d==="MultiPolygon"?c="polygon":d==="LineString"||d==="MultiLineString"?c="line":c="point"}const f=i||_t(c),s=Te(f).map((d,a)=>({...d,id:`${t}-${a}`,source:t}));return{id:t,title:r,source:l,layers:s,visible:!0}}function Ct(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 Nt(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 Pe(t,o){const n=o.map(async({name:r,url:i})=>{const l=await t.loadImage(i);return{name:r,data:l.data}});try{const r=await Promise.all(n);for(const{name:i,data:l}of r)t.hasImage(i)||t.addImage(i,l)}catch(r){console.error("Failed to load icons:",r)}}function $t(t,o,n="/icons/"){const i=Nt(o).map(l=>({name:l,url:n+l}));return Pe(t,i)}async function ie(t,o){const n=wt(o),r=Ct(o.style);r.length>0&&await Pe(t,r),o.layout&&o.layout["icon-image"]&&await $t(t,o.layout),t.getSource(n.id)||t.addSource(n.id,n.source);for(const i of n.layers)o.visible!==void 0&&(i.layout={...i.layout,visibility:o.visible?"visible":"none"}),t.getLayer(i.id)?t.setLayoutProperty(i.id,"visibility",o.visible?"visible":"none"):await t.addLayer(i);return n}function ye(t,o){t.getStyle().layers.filter(i=>i.source===o).forEach(i=>{t.removeLayer(i.id)}),t.getSource(o)&&t.removeSource(o)}const Lt={},St={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Ft(t,o){return e.openBlock(),e.createElementBlock("svg",St,[...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 ze=D(Lt,[["render",Ft]]),vt={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},jt={class:"flex flex-col justify-between h-full pb-5 px-5"},It={key:0,class:"relative mb-[10px]"},At={key:1,class:"mb-4"},Dt={class:""},Mt={class:"space-y-2"},Tt={class:"flex items-center gap-[10px] text-gray-500"},Pt={class:"dataset-checkbox-container flex"},zt=["onUpdate:modelValue","onChange"],Ut={class:"text-sm"},Ot=["onClick"],qt=["innerHTML"],Rt={key:0,class:"text-sm text-gray-500 text-center py-2"},Ht={__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,i=e.ref(""),l=e.ref([]);function c(){const u=new URLSearchParams(window.location.search).get("layers");return u?u.split(","):[]}function f(y){const u=new URLSearchParams(window.location.search);y.length>0?u.set("layers",y.join(",")):u.delete("layers");const b=`${window.location.pathname}?${u.toString()}`;window.history.replaceState({},"",b)}e.onMounted(()=>{let y=[];n.history&&(y=c()),y.length>0?l.value=n.config.layers.map(u=>({...u,visible:y.includes(String(u.id))})):l.value=n.config.layers.map(u=>({...u,visible:u.visible??!1})),l.value.forEach(u=>{u.visible&&ie(n.map,u)}),r("update:enabledLayerIds",m())});const g=e.computed(()=>{if(!i.value)return l.value;const y=i.value.toLowerCase();return l.value.filter(u=>(u.title||u.name||u.label||"").toLowerCase().includes(y))}),s=e.computed(()=>l.value.every(y=>y.visible)),m=()=>l.value.filter(y=>y.visible).map(y=>y.id),d=y=>{y.visible?ie(n.map,y):(ye(n.map,y.id),r("set-filter-layer",null)),n.map.getStyle().layers.filter(p=>p.source===y.id).forEach(p=>{n.map.setLayoutProperty(p.id,"visibility",y.visible?"visible":"none")}),r("update:enabledLayerIds",m())},a=()=>{const y=!s.value;l.value.forEach(u=>{u.visible=y,y?ie(n.map,u):ye(n.map,u.id)}),y||r("set-filter-layer",null),r("update:enabledLayerIds",m())};return e.watch(()=>m(),y=>{n.history&&f(y)},{deep:!0}),(y,u)=>(e.openBlock(),e.createElementBlock("div",vt,[u[1]||(u[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",jt,[t.config.search?(e.openBlock(),e.createElementBlock("div",It,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":u[0]||(u[0]=b=>i.value=b),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,i.value]]),e.createVNode(ze)])):e.createCommentVNode("",!0),t.config.allow_toggle_all?(e.openBlock(),e.createElementBlock("div",At,[e.createElementVNode("button",{onClick:a,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",Dt,[e.createElementVNode("ul",Mt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,b=>(e.openBlock(),e.createElementBlock("li",{key:b.id,class:"flex flex-wrap justify-between items-center gap-x-2"},[e.createElementVNode("label",Tt,[e.createElementVNode("span",Pt,[e.withDirectives(e.createElementVNode("input",{class:"dataset-checkbox",type:"checkbox","onUpdate:modelValue":p=>b.visible=p,onChange:()=>d(b)},null,40,zt),[[e.vModelCheckbox,b.visible]])]),e.createElementVNode("span",Ut,e.toDisplayString(b.title||b.name||b.label),1)]),b.actions&&b.visible?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(b.actions,p=>(e.openBlock(),e.createElementBlock("div",{key:p.id},[e.createElementVNode("button",{class:"text-sm text-gray-500",onClick:k=>y.$emit("show-widget",p.widget)},[e.createElementVNode("div",{innerHTML:p.icon},null,8,qt)],8,Ot)]))),128)):e.createCommentVNode("",!0)]))),128)),i.value&&g.value.length===0?(e.openBlock(),e.createElementBlock("li",Rt," Шарів не знайдено ")):e.createCommentVNode("",!0)])])])]))}},Zt={class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative"},Kt={key:0,class:"p-5 pb-3 flex justify-between items-start gap-[30px]"},Wt={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},Yt={class:"flex flex-col gap-1"},Gt={class:"flex flex-col gap-1 p-5 pt-0"},Jt=["innerHTML"],Qt=D({__name:"vs-info-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.title)||""}),r=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.content)||""}),i=e.computed(()=>{var l;return((l=o.config)==null?void 0:l.goTo)||[]});return(l,c)=>{var g,s;const f=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",Zt,[n.value||(g=i.value)!=null&&g.length?(e.openBlock(),e.createElementBlock("div",Kt,[e.createElementVNode("h2",Wt,e.toDisplayString(n.value),1),(s=i.value)!=null&&s.length?(e.openBlock(),e.createBlock(e.unref(K.VsPopover),{key:0,placement:"bottom"},{reference:e.withCtx(()=>[e.createVNode(e.unref(K.VsPopover),{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",Yt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.label},[m.url?(e.openBlock(),e.createBlock(f,{key:0,to:m.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(m.label),1)]),_:2},1032,["to"])):e.createCommentVNode("",!0)]))),128))])]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Gt,[e.createElementVNode("div",{innerHTML:r.value},null,8,Jt)])])}}},[["__scopeId","data-v-629caa82"]]),Xt={class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative overflow-hidden"},eo={key:0,class:"p-5 pb-3 flex justify-between items-center"},to={class:"inline-block font-semibold text-lg text-gray-800"},oo={key:1,class:"flex"},no={class:"flex items-center mx-[8px]"},ro={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"},lo={class:"min-h-[34px] flex justify-center items-center text-stone-500 py-2 px-1.5 text-sm"},ao={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"},so={key:0,class:"text-center"},io={key:1,class:"text-red-500"},co={key:2},mo=["innerHTML"],po={key:1,class:"flow-root"},uo={class:"-my-3 divide-y divide-gray-100 text-sm"},fo={class:"font-medium text-gray-900"},go={class:"text-gray-700 sm:col-span-2"},yo={key:2,class:"vs-map-card-info__nodata"},ho={key:3,class:"pt-4 flex justify-end"},bo=["href"],Ue={__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,i=e.computed(()=>{var k;return((k=n.config)==null?void 0:k.title)||""}),l=e.computed(()=>!!(typeof window.app=="object"&&window.app&&window.app.config)),c=e.ref([]),f=e.ref(!1),g=e.ref(null),s=e.ref(0),m=e.computed(()=>s.value+1),d=e.computed(()=>{var k;return((k=n.info)==null?void 0:k.length)||0}),a=e.computed(()=>c.value[s.value]),y=e.computed(()=>{if(!a.value)return{};const{rows:k,columns:h}=a.value;return!k||!h?{}:h.reduce((w,x)=>(!x.hide&&!["geom","geodata","id"].includes(x.name)&&(w[x.ua]=k[x.name]??"-"),w),{})});async function u(){var k,h,w,x,$,_;f.value=!0,g.value=null;try{const B={id:(k=n.cardValues)==null?void 0:k.id,layer:typeof((h=n.cardValues)==null?void 0:h.layer)=="object"?(x=(w=n.cardValues)==null?void 0:w.layer)==null?void 0:x.id:($=n.cardValues)==null?void 0:$.layer,map:(_=n.cardValues)==null?void 0:_.map},S=await fetch("/api/map-format?"+new URLSearchParams(B)).then(T=>T.json());c.value[s.value]=S}catch(B){g.value=(B==null?void 0:B.message)||"Помилка запиту"}finally{f.value=!1,await e.nextTick(),r("content-resize")}}function b(){s.value<n.info.length-1&&(s.value+=1,c.value[s.value]||u())}function p(){s.value>0&&(s.value-=1,c.value[s.value]||u())}return e.onMounted(async()=>{await e.nextTick(),u()}),e.watch(()=>n.info,()=>{s.value=0,u(),r("content-resize")},{deep:!0}),e.watch([()=>n.cardValues,()=>n.config],async()=>{await e.nextTick(),u(),r("content-resize")}),(k,h)=>{var w,x;return e.openBlock(),e.createElementBlock("div",Xt,[i.value?(e.openBlock(),e.createElementBlock("div",eo,[e.createElementVNode("h2",to,e.toDisplayString(i.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:h[0]||(h[0]=$=>r("close"))},[...h[1]||(h[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),d.value>1?(e.openBlock(),e.createElementBlock("div",oo,[e.createElementVNode("button",{type:"button",class:e.normalizeClass([{"opacity-flex items-center justify-between border-b px-[16px] py-[8px]50 pointer-events-none":m.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:p}," ◀ ",2),e.createElementVNode("div",no,[e.createElementVNode("span",ro,e.toDisplayString(m.value),1),h[2]||(h[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",lo,e.toDisplayString(d.value),1)]),e.createElementVNode("button",{type:"button",onClick:b,class:e.normalizeClass([{"opacity-50 pointer-events-none":m.value===d.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",ao,[f.value?(e.openBlock(),e.createElementBlock("div",so,"Завантаження даних...")):g.value?(e.openBlock(),e.createElementBlock("div",io," Помилка завантаження даних ")):(e.openBlock(),e.createElementBlock("div",co,[(w=a.value)!=null&&w.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:a.value.html,class:"custom-table-html border-b"},null,8,mo)):Object.keys(y.value).length?(e.openBlock(),e.createElementBlock("div",po,[e.createElementVNode("dl",uo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,($,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:"grid grid-cols-1 gap-1 py-3 even:bg-gray-50 sm:grid-cols-3 sm:gap-4"},[e.createElementVNode("dt",fo,e.toDisplayString(_),1),e.createElementVNode("dd",go,e.toDisplayString($),1)]))),128))])])):(e.openBlock(),e.createElementBlock("div",yo,"Даних не знайдено."))])),(x=a.value)!=null&&x.cardInterface&&l.value?(e.openBlock(),e.createElementBlock("div",ho,[e.createElementVNode("a",{href:`/card/${a.value.cardInterface}/${a.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,bo)])):e.createCommentVNode("",!0)])])}}},ko={class:"size-full flex flex-col bg-white border border-gray-200 shadow-2xs rounded-xl dark:bg-neutral-800 dark:border-neutral-700"},xo={key:0,class:"p-5 pb-0 items-center"},wo={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},_o={class:"h-full p-5"},Eo={class:"h-full flex flex-col justify-between space-y-4"},Vo={class:"space-y-4"},Bo={key:0,class:"flex gap-x-1 w-full h-2.5 rounded-full overflow-hidden"},Co=["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"},$o=["for"],Lo={key:0,width:"16",height:"auto",src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J3doaXRlJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00xMi4yMDcgNC43OTNhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMGwtMi0yYTEgMSAwIDAxMS40MTQtMS40MTRMNi41IDkuMDg2bDQuMjkzLTQuMjkzYTEgMSAwIDAxMS40MTQgMHonLz48L3N2Zz4="},So=["id","onUpdate:modelValue"],Fo={class:"ml-2 text-gray-800 dark:text-neutral-200"},vo={key:0,class:"ms-auto text-xs text-gray-500 dark:text-neutral-500"},jo={__name:"vs-attributre-widget",props:{config:{type:Object,required:!0},map:{type:Object,required:!0}},setup(t){const o=t,n=e.computed(()=>{var g;return((g=o.config)==null?void 0:g.title)||""}),r=e.ref([]),i=e.computed(()=>o.config.layer.style.rules.some(g=>g.count!==void 0)),l=e.computed(()=>o.config.layer.style.rules.reduce((g,s)=>g+(s.count||0),0)),c=g=>!g||l.value===0?0:Math.round(g/l.value*100),f=()=>{const s=o.config.layer.style.rules.filter((m,d)=>r.value[d]).map(m=>m.id||m.value).join(",");if(o.config.layer.id){const m=o.map.getSource(o.config.layer.id);if(m){const a=m.tiles[0].split("?filter=")[0],y=s?`${a}?filter=${o.config.layer.style.attribute}=${s}`:a;m.setTiles([y])}}};return e.onMounted(()=>{var g;(g=o.config)!=null&&g.layer&&(ie(o.map,o.config.layer),r.value=new Array(o.config.layer.style.rules.length).fill(!1))}),(g,s)=>(e.openBlock(),e.createElementBlock("div",ko,[n.value?(e.openBlock(),e.createElementBlock("div",xo,[e.createElementVNode("div",null,[e.createElementVNode("h2",wo,e.toDisplayString(n.value),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",_o,[e.createElementVNode("div",Eo,[e.createElementVNode("div",Vo,[i.value?(e.openBlock(),e.createElementBlock("div",Bo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(m,d)=>(e.openBlock(),e.createElementBlock("div",{key:d,class:"flex flex-col justify-center overflow-hidden text-xs text-white text-center whitespace-nowrap",style:e.normalizeStyle({width:`${c(m.count)}%`,backgroundColor:m.color}),role:"progressbar","aria-valuenow":c(m.count),"aria-valuemin":"0","aria-valuemax":"100"},null,12,Co))),128))])):e.createCommentVNode("",!0),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.layer.style.rules,(m,d)=>(e.openBlock(),e.createElementBlock("li",{key:d},[e.createElementVNode("div",No,[e.createElementVNode("label",{for:`filter-${d}`,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[d]?m.color||"#2563eb":"#fff",borderColor:r.value[d]?m.color||"#2563eb":m.color||"#d9d9d9"})},[r.value[d]?(e.openBlock(),e.createElementBlock("img",Lo)):e.createCommentVNode("",!0)],4),e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:`filter-${d}`,"onUpdate:modelValue":a=>r.value[d]=a,onChange:f,class:"hidden",disabled:!1},null,40,So),[[e.vModelCheckbox,r.value[d]]]),e.createElementVNode("span",Fo,e.toDisplayString(m.label||m.text),1),i.value?(e.openBlock(),e.createElementBlock("span",vo,"("+e.toDisplayString(m.count)+")",1)):e.createCommentVNode("",!0)],8,$o)])]))),128))])])])])]))}},Io={},Ao={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 Do(t,o){return e.openBlock(),e.createElementBlock("svg",Ao,[...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 Oe=D(Io,[["render",Do]]),Mo={class:"hover:bg-gray-100 rounded-lg flex items-center ml-[20px] py-[8px] px-[8px]"},To=["for"],Po={class:"custom-checkbox-wrapper"},zo=["id","checked"],Uo={class:"custom-checkbox"},Oo={key:0,xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},qo={class:"flex items-center justify-between ml-2 w-full"},Ro=["title"],Ho={key:0,class:"text-xs opacity-60 text-[#4b5563]"},Zo=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,i=e.computed(()=>n.selectedLayers.some(f=>f.id===n.layer.id)),l=f=>Intl.NumberFormat("uk",{notation:"compact"}).format(f),c=f=>{r(f?"select":"remove",n.layer)};return(f,g)=>{var s,m,d,a,y;return e.openBlock(),e.createElementBlock("div",Mo,[e.createElementVNode("label",{class:"flex items-center w-full cursor-pointer",for:t.layer.id},[e.createElementVNode("div",Po,[e.createElementVNode("input",{id:t.layer.id,type:"checkbox",checked:i.value,onChange:g[0]||(g[0]=u=>c(u.target.checked)),class:"custom-checkbox-input"},null,40,zo),e.createElementVNode("div",Uo,[i.value?(e.openBlock(),e.createElementBlock("svg",Oo,[...g[1]||(g[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",qo,[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(((m=t.layer)==null?void 0:m.name)||((d=t.layer)==null?void 0:d.title)),9,Ro),isNaN(l((a=t.layer)==null?void 0:a.count))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ho,e.toDisplayString(l((y=t.layer)==null?void 0:y.count)),1))])],8,To)])}}},[["__scopeId","data-v-b96f3537"]]),Ko={},Wo={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 Yo(t,o){return e.openBlock(),e.createElementBlock("svg",Wo,[...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 Go=D(Ko,[["render",Yo]]),Jo={},Qo={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 Xo(t,o){return e.openBlock(),e.createElementBlock("svg",Qo,[...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 en=D(Jo,[["render",Xo]]),tn={},on={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 nn(t,o){return e.openBlock(),e.createElementBlock("svg",on,[...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 rn=D(tn,[["render",nn]]),ln={},an={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 sn(t,o){return e.openBlock(),e.createElementBlock("svg",an,[...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 cn=D(ln,[["render",sn]]),dn={},mn={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 pn(t,o){return e.openBlock(),e.createElementBlock("svg",mn,[...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 un=D(dn,[["render",pn]]),fn={},gn={width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function yn(t,o){return e.openBlock(),e.createElementBlock("svg",gn,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const hn=D(fn,[["render",yn]]),bn={},kn={width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function xn(t,o){return e.openBlock(),e.createElementBlock("svg",kn,[...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 wn=D(bn,[["render",xn]]);function _n(){const o=new URLSearchParams(window.location.search).get("layers");return o?o.split(","):[]}function En(t){const o=new URLSearchParams(window.location.search);t.length>0?o.set("layers",t.join(",")):o.delete("layers");const n=`${window.location.pathname}?${o.toString()}`;window.history.replaceState({},"",n)}const Vn={components:{VsPopover:K.VsPopover,VsLayersItem:Zo,ZoomInIcon:Go,InfoIcon:en,TableIcon:rn,TrashIcon:cn,DotsIcon:un,ChevronRightIcon:hn,FilterIcon:wn,closeIcon:Oe,searchIcon:ze},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=_n();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),ie(this.map,r)}}),this.activeView="selected")}this._resizeObserver=new window.ResizeObserver(()=>{this.$emit("content-resize")}),this.$nextTick(()=>{const t=this.$el;t&&this._resizeObserver.observe(t)})},beforeUnmount(){this._resizeObserver&&this._resizeObserver.disconnect()},watch:{selectedLayers:{handler(t){this.history&&En(t.map(o=>o.id))},deep:!0}},methods:{async getLayers(){try{const t=await fetch("/api/map-catalog").then(n=>n.json()),o=(t.services||[]).filter(n=>n.service_type!=="other");this.layers=[...o,...t.rasters||[]],this.rawCatalog={...t,services:o}}catch(t){console.error("Помилка завантаження шарів:",t)}},layersCategories(){return this.rawCatalog?{Сервіси:this.rawCatalog.services||[],Растри:this.rawCatalog.rasters||[]}:{}},selectCategory(t){this.selectedCategory=this.selectedCategory===t?"":t},formatNumber(t){return Intl.NumberFormat("uk",{notation:"compact"}).format(t)},onEnter(){this.layers.filter(({name:t})=>t==null?void 0:t.toLowerCase().match(this.search.toLowerCase()))},clearSearch(){this.search=""},addToSelected(t){if(!this.selectedLayers.find(o=>o.id===t.id)){const o={...t,visible:!0,opacity:100,showFilters:!1};this.selectedLayers.unshift(o),ie(this.map,o)}},deleteLayer(t){const o=this.selectedLayers.findIndex(n=>n.id===t.id);o!==-1&&this.selectedLayers.splice(o,1),ye(this.map,t.id)},async toggleLayerVisibility(t){try{t.visible?(await ie(this.map,t),this.updateLayerOpacity(t)):await ye(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 ye(this.map,t.id),this.deleteLayer(t)},clearSelectedLayers(){this.selectedLayers.forEach(async t=>{t.visible&&await ye(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 i=n.tiles[0].split("?filter=")[0],l=t?`${i}?filter=${t}`:i;n.setTiles([l])}},popoverActions(t){return[{label:"Збільшити до шару",icon:"ZoomInIcon",class:Array.isArray(t.bbox)&&t.bbox.length===4?"text-gray-700 hover:bg-gray-100":"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"zoomToLayer"},{label:"Інформація про шар",icon:"InfoIcon",class:"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"showLayerInfo"},{label:"Таблиця шару",icon:"TableIcon",class:"text-gray-700 hover:bg-gray-100 opacity-50 cursor-not-allowed",handler:"showLayerTable"},{divider:!0},{label:"Видалити шар",icon:"TrashIcon",class:"text-red-600 hover:bg-red-50",handler:"deleteLayer"}]},onDragStart(t){this.draggedLayerIndex=t},onDragOver(t){},onDrop(t){if(this.draggedLayerIndex===null||this.draggedLayerIndex===t)return;const o=this.selectedLayers[this.draggedLayerIndex];if(this.selectedLayers.splice(this.draggedLayerIndex,1),this.selectedLayers.splice(t,0,o),this.draggedLayerIndex=null,this.map&&this.selectedLayers.length>1)for(let n=this.selectedLayers.length-1;n>=0;n--){const r=this.selectedLayers[n];r.visible&&this.map.getStyle().layers.find(i=>i.id.includes(r.id))&&this.map.getStyle().layers.forEach(i=>{i.id.includes(r.id)&&this.map.moveLayer(i.id)})}},onDragEnd(){this.draggedLayerIndex=null}}},Bn={class:"w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm"},Cn={class:"flex items-center justify-between mb-4"},Nn={class:"flex items-center gap-2"},$n={class:"text-lg font-semibold text-gray-800"},Ln={key:0},Sn={key:1},Fn={class:"flex mb-4 border-b border-gray-200"},vn={key:0},jn={class:"mb-4"},In={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"},An=["onDragstart","onDragover","onDrop"],Dn={class:"flex items-center justify-between"},Mn={class:"flex items-center gap-2 cursor-move"},Tn=["onUpdate:modelValue","onChange"],Pn={class:"text-gray-800"},zn={class:"flex items-center gap-2"},Un={class:"relative"},On={class:"flex items-center gap-2"},qn=["onUpdate:modelValue","onInput"],Rn={class:"text-xs text-gray-600 whitespace-nowrap"},Hn=["onClick"],Zn={class:"relative"},Kn={class:"w-48"},Wn={key:0,class:"my-1 border-gray-200"},Yn=["disabled","onClick"],Gn={class:"p-1 rounded-full hover:bg-gray-100 transition-colors","aria-label":"Layer actions"},Jn={key:0,class:"bg-blue-50 rounded-md mt-2"},Qn={class:"px-2 pt-2 text-blue-600 hover:text-blue-700 transition-colors"},Xn={key:0,class:"text-center text-[14px] text-[#4b5563]"},er={class:"relative mt-[10px]"},tr={key:0,class:"vs-layers-catalog__list flex-1 scrollable-container overflow-auto mt-2 catalog-list"},or={key:0,class:"text-center text-[14px] text-[#4b5563]"},nr={key:0,class:"text-center text-[14px] text-[#4b5563]"},rr=["onClick"],lr={class:"flex items-center gap-x-3"},ar=["title"],sr={class:"text-xs opacity-60 text-[#4b5563]"};function ir(t,o,n,r,i,l){var y;const c=e.resolveComponent("VsPopover"),f=e.resolveComponent("DotsIcon"),g=e.resolveComponent("VsFilter"),s=e.resolveComponent("searchIcon"),m=e.resolveComponent("closeIcon"),d=e.resolveComponent("VsLayersItem"),a=e.resolveComponent("chevronRightIcon");return e.openBlock(),e.createElementBlock("div",Bn,[e.createElementVNode("div",Cn,[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",$n,[e.createTextVNode(e.toDisplayString(i.activeView==="catalog"?"Каталог":"Вибрані шари")+" ",1),i.activeView==="catalog"?(e.openBlock(),e.createElementBlock("span",Ln,"("+e.toDisplayString(((y=i.layers)==null?void 0:y.length)||0)+")",1)):(e.openBlock(),e.createElementBlock("span",Sn,"("+e.toDisplayString(i.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]=(...u)=>l.clearSelectedLayers&&l.clearSelectedLayers(...u))},[...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",Fn,[e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",i.activeView==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[1]||(o[1]=u=>i.activeView="catalog")}," Каталог ",2),e.createElementVNode("button",{class:e.normalizeClass(["px-4 py-2 text-sm font-medium",i.activeView==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"]),onClick:o[2]||(o[2]=u=>i.activeView="selected")}," Вибрані шари ",2)]),i.activeView==="selected"?(e.openBlock(),e.createElementBlock("div",vn,[e.createElementVNode("div",jn,[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]=u=>i.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)])])]),i.mounted?(e.openBlock(),e.createElementBlock("div",In,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.selectedLayers,(u,b)=>{var p,k;return e.openBlock(),e.createElementBlock("div",{key:u.id||b,class:e.normalizeClass(["border border-gray-200 rounded-md p-3 mb-2 bg-white shadow-sm text-[13px] text-[#4b5563]",{dragging:i.draggedLayerIndex===b}]),draggable:"true",onDragstart:h=>l.onDragStart(b),onDragover:e.withModifiers(h=>l.onDragOver(b),["prevent"]),onDrop:h=>l.onDrop(b),onDragend:o[4]||(o[4]=(...h)=>l.onDragEnd&&l.onDragEnd(...h))},[e.createElementVNode("div",Dn,[e.createElementVNode("div",Mn,[o[10]||(o[10]=e.createStaticVNode('<svg width="16" height="16" fill="none" stroke="#9ca3af" stroke-width="2" viewBox="0 0 24 24" class="mr-1 shrink-0" data-v-e9e7021a><circle cx="5" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="5" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="5" cy="19" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="12" cy="19" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="5" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="12" r="1.5" data-v-e9e7021a></circle><circle cx="19" cy="19" r="1.5" data-v-e9e7021a></circle></svg>',1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"w-4 h-4 text-blue-600 rounded focus:ring-blue-500","onUpdate:modelValue":h=>u.visible=h,onChange:h=>l.toggleLayerVisibility(u)},null,40,Tn),[[e.vModelCheckbox,u.visible]]),e.createElementVNode("span",Pn,e.toDisplayString(u.name||u.title||u.label),1)]),e.createElementVNode("div",zn,[e.createElementVNode("div",Un,[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:h=>l.updateLayerOpacity(u)},e.toDisplayString(u.opacity||100)+"% ",9,Hn)]),default:e.withCtx(()=>[e.createElementVNode("div",On,[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":h=>u.opacity=h,onInput:h=>l.onLayerOpacityChange(u),class:"h-2 w-full accent-blue-600 rounded-lg cursor-pointer bg-gray-200"},null,40,qn),[[e.vModelText,u.opacity]]),e.createElementVNode("span",Rn,e.toDisplayString(Math.round(u.opacity))+"% ",1)])]),_:2},1024)]),e.createElementVNode("div",Zn,[e.createVNode(c,{placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("div",Gn,[e.createVNode(f)])]),default:e.withCtx(()=>[e.createElementVNode("div",Kn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.popoverActions(u),(h,w)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:w},[h.divider?(e.openBlock(),e.createElementBlock("hr",Wn)):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass("w-full p-2 text-left text-sm flex items-center gap-2 "+(h.class||"")),disabled:h.disabled,onClick:x=>!h.disabled&&t.$options.methods[h.handler].call(this,u)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h.icon),{class:"lucide"})),e.createTextVNode(" "+e.toDisplayString(h.label),1)],10,Yn))],64))),128))])]),_:2},1024)])])]),u.showFilters?(e.openBlock(),e.createElementBlock("div",Jn,[e.createElementVNode("div",Qn," Фільтри для шару: "+e.toDisplayString(u.name||u.title||u.label),1),e.withDirectives(e.createVNode(g,{ref_for:!0,ref:"filter",scheme:u.filters,header:!1,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:h=>l.handleFilterChange(h,u)},null,8,["scheme","onFilterChange"]),[[e.vShow,(p=u.filters)==null?void 0:p.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,!((k=u.filters)!=null&&k.length)]])])):e.createCommentVNode("",!0)],42,An)}),128)),i.selectedLayers.length===0?(e.openBlock(),e.createElementBlock("div",Xn,[...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",er,[e.withDirectives(e.createElementVNode("input",{title:"value",placeholder:"Введіть назву шару...","onUpdate:modelValue":o[5]||(o[5]=u=>i.search=u),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((...u)=>l.onEnter&&l.onEnter(...u),["enter"]))},null,544),[[e.vModelText,i.search]]),e.createVNode(s,{class:"absolute top-1/2 left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0, -50%)"}}),i.search?(e.openBlock(),e.createBlock(m,{key:0,class:"absolute top-1/2 right-[10px] w-[16px] h-[16px] cursor-pointer",style:{transform:"translate(0, -50%)"},onClick:l.clearSearch},null,8,["onClick"])):e.createCommentVNode("",!0)]),i.categories?(e.openBlock(),e.createElementBlock("div",tr,[i.search?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.searchedLayers,(u,b)=>(e.openBlock(),e.createBlock(d,{key:b,layer:u,map:n.map,selectedLayers:i.selectedLayers,onSelect:l.addToSelected,onRemove:l.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128)),l.searchedLayers.length===0?(e.openBlock(),e.createElementBlock("div",or," Нічого не знайдено ")):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[!i.categories||Object.keys(i.categories).length===0?(e.openBlock(),e.createElementBlock("div",nr," Каталог порожній ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(Object.keys(i.categories),u=>(e.openBlock(),e.createElementBlock("div",{key:u},[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:b=>l.selectCategory(u)},[e.createElementVNode("div",lr,[e.createVNode(a,{class:e.normalizeClass({"rotate-up":u===i.selectedCategory,"rotate-down":u!==i.selectedCategory})},null,8,["class"]),e.createElementVNode("div",{class:"max-w-[260px] text-[14px] text-[#4b5563]",title:u},e.toDisplayString(u),9,ar)]),e.createElementVNode("div",sr,e.toDisplayString(l.formatNumber(i.categories[u].length)),1)],8,rr),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.categories[u],(b,p)=>(e.openBlock(),e.createBlock(d,{key:p,layer:b,map:n.map,selectedLayers:i.selectedLayers,onSelect:l.addToSelected,onRemove:l.handleRemoveFromCatalog},null,8,["layer","map","selectedLayers","onSelect","onRemove"]))),128))],512),[[e.vShow,u===i.selectedCategory]])]))),128))],64))])):e.createCommentVNode("",!0)],64))])}const cr=D(Vn,[["render",ir],["__scopeId","data-v-e9e7021a"]]),dr={key:0,class:"w-full flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},mr={key:0,class:"p-5 pb-3 flex justify-between items-center"},pr={class:"inline-block font-semibold text-lg text-gray-800 dark:text-neutral-200"},ur={class:"flex flex-col justify-between h-full"},fr={__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),i=e.computed(()=>{var f;const c=(f=o.config)==null?void 0:f.conditions;return!c||!c.layers?!0:o.enabledLayerIds.some(g=>c.layers.includes(g))}),l=async({data:c})=>{var d;const f=Object.entries(c).map(a=>a.join("=")).join("|"),g=(d=o.config)==null?void 0:d.conditions,s=(g==null?void 0:g.layers)||[],m=o.enabledLayerIds.filter(a=>s.includes(a));m.length&&m.forEach(a=>{const y=o.map.getSource(a);if(y){const b=y.tiles[0].split("?filter=")[0],p=f?`${b}?filter=${f}`:b;y.setTiles([p])}})};return(c,f)=>i.value?(e.openBlock(),e.createElementBlock("div",dr,[t.config.title?(e.openBlock(),e.createElementBlock("div",mr,[e.createElementVNode("h2",pr,e.toDisplayString(t.config.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",ur,[e.createVNode(e.unref(rt),{ref:"filter",schema:r.value,view:"vertical",onChange:l},null,8,["schema"])])])):e.createCommentVNode("",!0)}},gr={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"},yr={class:"flex gap-[5px] items-center"},hr={class:"text-gray-600"},br={key:0,class:"w-[16px] h-[16px] font-medium bg-gray-800 text-white rounded-full flex items-center justify-center text-[10px]"},kr={__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),i=e.computed(()=>{var s;return((s=o.config)==null?void 0:s.filters)||[]}),l=e.computed(()=>i.value.map(s=>({...s,id:s.name}))),c=e.computed(()=>{var m;const s=(m=o.config)==null?void 0:m.conditions;return!s||!s.layers?!0:o.enabledLayerIds.some(d=>s.layers.includes(d))}),f=e.computed(()=>{var s;if(o.enabledLayerIds&&o.enabledLayerIds.length){const d=(((s=o.config)==null?void 0:s.layers)||[]).find(a=>a.id===o.enabledLayerIds[0]);return(d==null?void 0:d.title)||(d==null?void 0:d.name)||(d==null?void 0:d.label)||o.enabledLayerIds[0]}return""}),g=async({url:s})=>{var y,u;const m=(y=o.config)==null?void 0:y.conditions;if(!m){const b=(u=o.config)==null?void 0:u.layer_id;if(!b)return;const p=o.map.getSource(b);if(p){const h=p.tiles[0].split("?filter=")[0],w=s?`${h}?filter=${s}`:h;p.setTiles([w])}return}const d=(m==null?void 0:m.layers)||[],a=o.enabledLayerIds.filter(b=>d.includes(b));a.length&&a.forEach(b=>{const p=o.map.getSource(b);if(p){const h=p.tiles[0].split("?filter=")[0],w=s?`${h}?filter=${s}`:h;p.setTiles([w])}})};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,m)=>{const d=e.resolveComponent("VsPopover"),a=e.resolveComponent("VsFilterList");return c.value&&l.value.length?(e.openBlock(),e.createBlock(a,{key:0,ref_key:"filter",ref:r,isDialog:t.config.dialog??!0,scheme:l.value,urlSeparator:"true",view:"plain",name:"filter",onFilterChange:g},{button:e.withCtx(({visible:y})=>[e.createVNode(d,{teleport:"body",trigger:"hover",placement:"bottom"},{reference:e.withCtx(()=>[e.createElementVNode("button",gr,[e.createElementVNode("div",yr,[m[0]||(m[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",hr,e.toDisplayString(f.value),1),n.value?(e.openBlock(),e.createElementBlock("span",br,e.toDisplayString(n.value),1)):e.createCommentVNode("",!0)])])]),default:e.withCtx(()=>[m[1]||(m[1]=e.createTextVNode(" Відкрити бокову панель ",-1))]),_:1})]),_:1},8,["isDialog","scheme"])):e.createCommentVNode("",!0)}}},xr={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())}},wr={class:"bg-white p-4 rounded-lg h-full flex flex-col overflow-hidden",ref:"rootEl"},_r={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"},Vr=["onClick"],Br={class:"text-base font-medium"},Cr={class:"mt-2 flex flex-wrap gap-2"},Nr={key:1,class:"px-2 py-1 text-sm bg-gray-100 rounded-full"},$r={key:0,class:"my-5 pr-2"},Lr={class:"paginationWrapper relative flex justify-center"},Sr={key:1,class:"text-center text-slate-400"};function Fr(t,o,n,r,i,l){var f;const c=e.resolveComponent("VsPagination");return e.openBlock(),e.createElementBlock("div",wr,[o[0]||(o[0]=e.createElementVNode("h2",{class:"text-xl font-semibold mb-4"},"Список",-1)),((f=i.items)==null?void 0:f.length)>0?(e.openBlock(),e.createElementBlock("div",_r,[e.createElementVNode("div",Er,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.items,g=>(e.openBlock(),e.createElementBlock("div",{key:g.id,class:"py-4 border-b last:border-b-0 hover:bg-gray-50",onClick:s=>t.$emit("cardValuesId",g.id)},[e.createElementVNode("h3",Br,e.toDisplayString(g.name),1),e.createElementVNode("div",Cr,[g.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":g.status_data.color==="green","bg-red-100 text-red-800":g.status_data.color==="red"}])},e.toDisplayString(g.status_data.text),3)):e.createCommentVNode("",!0),g.class_mbd_id_data?(e.openBlock(),e.createElementBlock("span",Nr,e.toDisplayString(g.class_mbd_id_data.text),1)):e.createCommentVNode("",!0)])],8,Vr))),128))]),i.total>i.limit?(e.openBlock(),e.createElementBlock("div",$r,[e.createElementVNode("div",Lr,[e.createVNode(c,{total:i.total,maxPages:4,defaultPage:i.currentPage,pageSize:i.limit,goTo:!1,size:"medium",onPageChange:l.handlePageChange,backgroundColor:"#e5e7eb",borderedCellSelected:!0,pageSizes:[16,32,48,64],onPageSizeChange:l.changeLimit},null,8,["total","defaultPage","pageSize","onPageChange","onPageSizeChange"])])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Sr,"Немає даних"))],512)}const vr=D(xr,[["render",Fr]]),jr={class:"map-skeleton-loader"},Ir=D({__name:"vs-skeleton-loader",setup(t){return(o,n)=>(e.openBlock(),e.createElementBlock("div",jr,[...n[0]||(n[0]=[e.createElementVNode("div",{class:"dot-pulse"},null,-1)])]))}},[["__scopeId","data-v-954c1e03"]]),Ar={},Dr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Mr(t,o){return e.openBlock(),e.createElementBlock("svg",Dr,[...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 Tr={components:{homeIcon:D(Ar,[["render",Mr]])},name:"vs-homezoom",props:{map:{type:Object},initialView:{type:Object,default:()=>({})}},methods:{homeZoom(){!this.map||!this.initialView||(this.initialView.bbox?this.map.fitBounds(this.initialView.bbox,{duration:0,padding:10}):this.initialView.center&&this.initialView.zoom!==void 0&&(this.map.setCenter(this.initialView.center),this.map.setZoom(this.initialView.zoom)),this.initialView.pitch!==void 0&&this.map.setPitch(this.initialView.pitch),this.initialView.bearing!==void 0&&this.map.setBearing(this.initialView.bearing))}},computed:{}};function Pr(t,o,n,r,i,l){const c=e.resolveComponent("homeIcon"),f=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(f,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(c,{onClick:l.homeZoom,class:"w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"},null,8,["onClick"])]),default:e.withCtx(()=>[o[0]||(o[0]=e.createElementVNode("div",null,"Повернутися до початкових налаштувань",-1))]),_:1})])}const zr=D(Tr,[["render",Pr]]),Ur={},Or={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function qr(t,o){return e.openBlock(),e.createElementBlock("svg",Or,[...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 Rr={components:{printIcon:D(Ur,[["render",qr]]),VsPopover:K.VsPopover},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:i}=window.MapboxExportControl;this.map.addControl(new t({PageSize:o.A3,PageOrientation:n.Portrait,Format:r.PNG,DPI:i[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 Hr(t,o,n,r,i,l){const c=e.resolveComponent("printIcon"),f=e.resolveComponent("VsPopover");return e.openBlock(),e.createBlock(f,{trigger:"hover",placement:"left",teleport:"body"},{reference:e.withCtx(()=>[e.createVNode(c,{onClick:l.togglePrint,class:e.normalizeClass([l.modalButtonClasses,"print-button w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"])},null,8,["onClick","class"])]),default:e.withCtx(()=>[o[0]||(o[0]=e.createElementVNode("div",null,"Надрукувати",-1))]),_:1})}const Zr=D(Rr,[["render",Hr]]),Kr={props:{map:{type:Object,required:!0}},data(){return{is3D:!1}},components:{VsPopover:K.VsPopover},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 Wr(t,o,n,r,i,l){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]=(...f)=>l.toggleView&&l.toggleView(...f))},e.toDisplayString(i.is3D?"2D":"3D"),1)]),default:e.withCtx(()=>[o[1]||(o[1]=e.createElementVNode("div",null,"Перемикач виду",-1))]),_:1})}const Yr=D(Kr,[["render",Wr]]),Gr={props:{bgColor:{type:String,default:"#1E40AF"}}},Jr={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Qr=["stroke"],Xr=["stroke"],el=["stroke"],tl=["stroke"],ol=["stroke"],nl=["stroke"];function rl(t,o,n,r,i,l){return e.openBlock(),e.createElementBlock("svg",Jr,[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,Qr),e.createElementVNode("path",{d:"M19 12H22",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Xr),e.createElementVNode("path",{d:"M12 2V5",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,el),e.createElementVNode("path",{d:"M12 19V22",stroke:n.bgColor,"stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"},null,8,tl),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,ol),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,nl)])}const ll={components:{geoIcon:D(Gr,[["render",rl]]),VsPopover:K.VsPopover,closeIcon:Oe},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],i=[[parseFloat(n.boundingbox[2]),parseFloat(n.boundingbox[0])],[parseFloat(n.boundingbox[3]),parseFloat(n.boundingbox[1])]];this.map.fitBounds(i,{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")}}},al={key:0,class:"max-w-[412px] absolute w-full top-[20px] right-[70px] bg-white border rounded-[15px] p-4 z-10"},sl={class:"flex justify-between items-center border-b pb-[16px]"},il={class:"d-flex"},cl={class:"pt-[16px]"};function dl(t,o,n,r,i,l){var s,m,d,a,y,u;const c=e.resolveComponent("closeIcon"),f=e.resolveComponent("geoIcon"),g=e.resolveComponent("VsPopover");return e.openBlock(),e.createElementBlock("div",null,[(e.openBlock(),e.createBlock(e.Teleport,{to:"#maplibre-demo-map"},[i.location?(e.openBlock(),e.createElementBlock("div",al,[e.createElementVNode("div",sl,[o[0]||(o[0]=e.createElementVNode("div",{class:"text-lg font-semibold"},"Ваша геолокація",-1)),e.createElementVNode("div",il,[e.createVNode(c,{onClick:l.closeGeolocation},null,8,["onClick"])])]),e.createElementVNode("div",cl,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("strong",null,"Широта:",-1)),e.createTextVNode(" "+e.toDisplayString((s=i.location)==null?void 0:s.latitude),1)]),e.createElementVNode("div",null,[o[2]||(o[2]=e.createElementVNode("strong",null,"Довгота:",-1)),e.createTextVNode(" "+e.toDisplayString((m=i.location)==null?void 0:m.longitude),1)]),e.createElementVNode("div",null,[o[3]||(o[3]=e.createElementVNode("strong",null,"КраЇна:",-1)),e.createTextVNode(" "+e.toDisplayString((d=i.data)==null?void 0:d.country),1)]),e.createElementVNode("div",null,[o[4]||(o[4]=e.createElementVNode("strong",null,"Код країни:",-1)),e.createTextVNode(" "+e.toDisplayString((a=i.data)==null?void 0:a.country_code),1)]),e.createElementVNode("div",null,[o[5]||(o[5]=e.createElementVNode("strong",null,"Місто:",-1)),e.createTextVNode(" "+e.toDisplayString((y=i.data)==null?void 0:y.city),1)]),e.createElementVNode("div",null,[o[6]||(o[6]=e.createElementVNode("strong",null,"Поштовий індекс:",-1)),e.createTextVNode(" "+e.toDisplayString((u=i.data)==null?void 0:u.postcode),1)])])])):e.createCommentVNode("",!0)])),e.createVNode(g,{trigger:"hover",placement:"left",teleport:"body",class:"flex"},{reference:e.withCtx(()=>[e.createVNode(f,{onClick:l.togleGeolocation,class:e.normalizeClass([l.modalButtonClasses,"w-full h-auto p-[9px] [transition:.3s] hover:[transition:.3s] text-[24px] hover:bg-[#DBEAFE] flex font-normal cursor-pointer text-[#1E40AF] bg-[#fff] rounded-[4px] border-[1px] border-solid border-[#E5E7EB]"])},null,8,["onClick","class"])]),default:e.withCtx(()=>[o[7]||(o[7]=e.createElementVNode("div",null,"Дізнатися геолокацію",-1))]),_:1})])}const ml=D(ll,[["render",dl]]),Ve={__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,i=t,l=e.ref(i.widgets.map(s=>{var m;return{...s,config:{...s.config,visible:((m=s.config)==null?void 0:m.visible)!==!1}}}));e.watch(()=>i.widgets.map(s=>s.id||s.type).join(","),()=>{l.value=i.widgets.map(s=>{var m;return{...s,config:{...s.config,visible:((m=s.config)==null?void 0:m.visible)!==!1}}})});function c(s){const m=l.value.find(d=>d.id===s);m&&m.config&&(m.config.visible=!m.config.visible,setTimeout(()=>{r("content-resize")},30))}const f=e.ref(null);o({columnRef:f});let g=null;return e.onMounted(()=>{g=new MutationObserver(()=>{var s;clearTimeout((s=f.value)==null?void 0:s._resizeTimeout),f.value._resizeTimeout=setTimeout(()=>{r("content-resize")},30)}),f.value&&g.observe(f.value,{childList:!0,subtree:!0,characterData:!0})}),e.onUnmounted(()=>{g&&g.disconnect()}),(s,m)=>t.mapLoaded?(e.openBlock(),e.createElementBlock("div",{key:0,class:"widget-column",ref_key:"columnRef",ref:f,style:e.normalizeStyle({width:t.getColumnWidth(t.position),paddingRight:t.rightColumnOffset})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,d=>{var a;return e.openBlock(),e.createElementBlock(e.Fragment,{key:d.id||d.type},[d.type!=="card"?e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.getWidgetComponent(d.type)),{key:0,map:t.map,config:d.config,hasFilters:t.hasFilters,currentLayer:t.currentFilterLayer,enabledLayerIds:t.enabledLayerIds,history:t.history,onSetFilterLayer:m[0]||(m[0]=y=>s.$emit("set-filter-layer",y)),"onUpdate:enabledLayerIds":m[1]||(m[1]=y=>s.$emit("update:enabledLayerIds",y)),onCardValuesId:m[2]||(m[2]=y=>s.$emit("cardValuesId",y)),onShowWidget:c,onCatalogLayers:m[3]||(m[3]=y=>s.$emit("catalog-layers",y)),class:"widget"},null,40,["map","config","hasFilters","currentLayer","enabledLayerIds","history"])),[[e.vShow,((a=d.config)==null?void 0:a.visible)!==!1]]):e.createCommentVNode("",!0),t.cardValues&&d.type==="card"?(e.openBlock(),e.createBlock(Ue,{key:1,config:d.config,cardValues:t.cardValues,class:"widget",onClose:m[4]||(m[4]=y=>s.$emit("closeCard"))},null,8,["config","cardValues"])):e.createCommentVNode("",!0)],64)}),128))],4)):e.createCommentVNode("",!0)}},pl={class:"map-widgets-flex"},ul={class:"widgets-left"},fl={class:"widgets-top"},gl={class:"widgets-bottom"},yl={class:"widgets-right"},hl={class:"widgets-top"},bl={class:"widgets-bottom"},kl={class:"absolute top-[180px] right-2 z-10 flex flex-col gap-[5px]"},Fe=D(e.defineComponent({__name:"vs-map",props:{table:{},name:{},height:{}},setup(t){const o=e.getCurrentInstance(),n=t,r=e.ref(null),i=e.ref(!1);let l=null;const c=e.ref(null),f=e.ref(null),g=e.ref([]),s=e.ref([]),m=e.ref(null),d=e.ref(null),a=e.ref(null),y=e.ref([]);let u=null;function b(V){return!a.value||!a.value.widgets?[]:V==="center"?[...a.value.widgets.filter(L=>(L.position||{})==="center")||[],...s.value.filter(L=>L.position==="center")]:a.value.widgets.filter(E=>(E.position||{})===V)||[]}const p=(V,E,L)=>E[V]||V,k=(V,E,L,j,C)=>{const v=p(V,j),P=E?p(E,j):"";let A="";return L!=null&&L.length&&(A=L.map(H=>{const U=p(H.value,j);return`
|
|
2
2
|
<tr class="flex justify-between items-center">
|
|
3
|
-
<td class="font-medium mr-1.5 flex items-center">${
|
|
4
|
-
<td class="text-right">${
|
|
3
|
+
<td class="font-medium mr-1.5 flex items-center">${H.label}</td>
|
|
4
|
+
<td class="text-right">${U}</td>
|
|
5
5
|
</tr>
|
|
6
6
|
`}).join("")),`
|
|
7
7
|
<div class="absolute min-w-[250px] max-w-[350px] bg-white/90 border border-gray-200 rounded-lg shadow-md text-gray-800 pointer-events-none">
|
|
8
|
-
${
|
|
8
|
+
${v?`
|
|
9
9
|
<div class="font-semibold text-sm border-b border-solid border-gray-200 text-gray-800 rounded-t-lg px-2 py-1">
|
|
10
|
-
<h3>${
|
|
10
|
+
<h3>${v}</h3>
|
|
11
11
|
</div>
|
|
12
12
|
`:""}
|
|
13
|
-
${
|
|
14
|
-
${
|
|
13
|
+
${E?`<div class="text-sm px-2 py-1 break-words">${P}</div>`:""}
|
|
14
|
+
${L!=null&&L.length&&!E?`
|
|
15
15
|
<div class="text-xs px-2 py-0.5 text-gray-500">
|
|
16
16
|
<table class="w-full">
|
|
17
|
-
<tbody>${
|
|
17
|
+
<tbody>${A}</tbody>
|
|
18
18
|
</table>
|
|
19
19
|
</div>
|
|
20
20
|
`:""}
|
|
21
21
|
</div>
|
|
22
|
-
`},
|
|
22
|
+
`},h=V=>({legend:dt,basemaps:ft,layers:Ht,info:Qt,attribute:jo,catalog:cr,filters:fr,"inline-filters":kr,list:vr,card:Ue})[V],w=e.computed(()=>!!a.value&&Array.isArray(a.value.widgets)&&a.value.widgets.some(V=>V.type==="filters")),x=V=>{c.value=V};function $(){const V=new URLSearchParams(window.location.search),E=parseFloat(V.get("x")),L=parseFloat(V.get("y")),j=parseFloat(V.get("z")),C=parseFloat(V.get("bearing")),v=parseFloat(V.get("pitch"));return{center:isFinite(E)&&isFinite(L)?[E,L]:null,zoom:isFinite(j)?j:null,bearing:isFinite(C)?C:null,pitch:isFinite(v)?v:null}}function _({center:V,zoom:E,bearing:L,pitch:j}){const C=new URLSearchParams(window.location.search);C.set("x",V[0].toFixed(5)),C.set("y",V[1].toFixed(5)),C.set("z",E.toFixed(2)),C.set("bearing",L.toFixed(2)),C.set("pitch",j.toFixed(2));const v=`${window.location.pathname}?${C.toString()}`;window.history.replaceState({},"",v)}const B=()=>{var P,A,H;if(!a.value||!a.value.map)return;const V={version:8,glyphs:"https://cdn.softpro.ua/data/fonts/{fontstack}/{range}.pbf",sources:{},layers:[]},E=(o==null?void 0:o.appContext.config.globalProperties.$settings)||{};let L=a.value.map.center||E.center||[50,30],j=a.value.map.zoom||E.zoom||10,C=a.value.map.bearing||0,v=a.value.map.pitch||0;if(a.value.history){const U=$();U.center&&(L=U.center),U.zoom!==null&&(j=U.zoom),U.bearing!==null&&(C=U.bearing),U.pitch!==null&&(v=U.pitch)}r.value=new maplibregl.Map({container:"maplibre-demo-map",style:V,center:L,zoom:j,bearing:C,pitch:v,maxZoom:19,minZoom:5}),console.log({center:L,zoom:j}),(H=(A=(P=a==null?void 0:a.value)==null?void 0:P.interactions)==null?void 0:A.navigation)!=null&&H.enabled&&!u&&(u=new maplibregl.NavigationControl,r.value.addControl(u,"top-right")),r.value.on("load",async()=>{var de,G,xe,q;if(i.value=!0,await(async()=>{var R,I,te,ee,Q;const Z=((Q=(ee=(te=(I=(R=a.value)==null?void 0:R.widgets)==null?void 0:I.find(z=>z.type==="layers"))==null?void 0:te.config)==null?void 0:ee.layers)==null?void 0:Q.filter(z=>{var ae;return((ae=z.style)==null?void 0:ae.attrType)==="icon-by-attribute"}))||[];for(const z of Z){const{rules:ae,default_icon:me,icon_base_url:pe}=z.style,ue=[...ae.map(oe=>oe.icon),me].filter(Boolean);for(const oe of ue)try{const se=`${pe}${oe}`,fe=await r.value.loadImage(se);r.value.hasImage(oe)||r.value.addImage(oe,fe.data)}catch(se){console.error(`Failed to load icon: ${oe}`,se)}}})(),(xe=(G=(de=a.value)==null?void 0:de.interactions)==null?void 0:G.hover)!=null&&xe.enabled&&(r.value.on("mousemove",Z=>{var ae,me,pe,ue,oe,se,fe,_e,W,Se;const R=r.value.queryRenderedFeatures(Z.point);if(r.value&&r.value.getCanvas&&(r.value.getCanvas().style.cursor=R.length?"pointer":""),!R.length){if(f.value){const O=(ae=r.value.getSource(f.value.source))==null?void 0:ae.type;f.value.source,f.value.id,O==="vector"&&f.value.source,Y(r.value,f.value.source,f.value.id,{hovered:!1}),f.value=null}l&&(l.remove(),l=null);return}const I=R[0];if(!f.value||f.value.id!==I.id||f.value.source!==I.layer.source){if(f.value){const Ae=(me=r.value.getSource(f.value.source))==null?void 0:me.type;f.value.source,f.value.id,Ae==="vector"&&f.value.source,Y(r.value,f.value.source,f.value.id,{hovered:!1})}const O=(pe=r.value.getSource(I.layer.source))==null?void 0:pe.type;I.layer.source,I.id,O==="vector"&&I.layer.source,Y(r.value,I.layer.source,I.id,{hovered:!0}),f.value={source:I.layer.source,id:I.id}}const te=(oe=(ue=a.value)==null?void 0:ue.widgets)==null?void 0:oe.find(O=>O.type==="layers"),ee=(fe=(se=a.value)==null?void 0:se.widgets)==null?void 0:fe.find(O=>O.type==="attribute");let Q=null;if(te&&(Q=te.config.layers.find(O=>O.id===I.layer.source)),(W=(_e=a.value)==null?void 0:_e.widgets)==null?void 0:W.find(O=>O.type==="catalog")){if(!R.length){l&&(l.style.display="none");return}const O=R[0];l=Ed(O,Z,l);return}if(!Q&&ee&&ee.config.layer.id===I.layer.source&&(Q=ee.config.layer),(Se=Q==null?void 0:Q.style)!=null&&Se.popup){const O=Q.style.popup;let Ae=O.title,De="";O.mode==="markdown"?De=Array.isArray(O.content)?O.content.join(`
|
|
23
23
|
|
|
24
|
-
`):""
|
|
24
|
+
`):"":De=Array.isArray(O.content)?O.content.join(""):"",l||(l=document.createElement("div"),r.value.getContainer().appendChild(l)),l.innerHTML=k(Ae,De,O.fields,I.properties,O.mode),nt(l,Z)}}),r.value.on("mouseleave",()=>{var Z;if(l&&(l.remove(),l=null),f.value){const R=(Z=r.value.getSource(f.value.source))==null?void 0:Z.type;f.value.source,f.value.id,R==="vector"&&f.value.source,Y(r.value,f.value.source,f.value.id,{hovered:!1}),f.value=null}r.value&&r.value.getCanvas&&(r.value.getCanvas().style.cursor="")})),r.value.on("click",async Z=>{var me,pe,ue,oe,se,fe,_e;if(S(),["length","area","print"].includes(d.value))return;const R=r.value.queryRenderedFeatures(Z.point);if(!R.length)return;const I=R[0],te=(pe=(me=a.value)==null?void 0:me.widgets)==null?void 0:pe.find(W=>W.type==="layers"),ee=(oe=(ue=a.value)==null?void 0:ue.widgets)==null?void 0:oe.find(W=>W.type==="attribute"),Q=(fe=(se=a.value)==null?void 0:se.widgets)==null?void 0:fe.find(W=>W.type==="catalog");let z;if(Q?z=I.layer.source:z=(ee==null?void 0:ee.config.layer)||(te==null?void 0:te.config.layers.find(W=>W.id===I.layer.source)),z!=null&&z.noCard)return;g.value.forEach(W=>{var O;const Se=(O=r.value.getSource(W.source))==null?void 0:O.type;W.source,W.id,Se==="vector"&&W.source,Y(r.value,W.source,W.id,{selected:!1})}),g.value=[];const ae=(_e=r.value.getSource(I.layer.source))==null?void 0:_e.type;I.layer.source,I.id,ae==="vector"&&I.layer.source,Y(r.value,I.layer.source,I.id,{selected:!0}),g.value.push({source:I.layer.source,id:I.id}),m.value={layer:(z==null?void 0:z.service_key)||z||"",map:(z==null?void 0:z.map_key)||"",id:I.properties.id,title:(z==null?void 0:z.title)||""}}),r.value.on("dblclick",Z=>{var te,ee,Q;if(S(),["length","area","print"].includes(d.value))return;kd([Z.lngLat.lng,Z.lngLat.lat]);const R=(ee=(te=a.value)==null?void 0:te.widgets)==null?void 0:ee.find(z=>z.type==="layers");let I=null;(Q=R==null?void 0:R.config)!=null&&Q.layers&&(I=R.config.layers.find(z=>z.visible!==!1&&["tms","wms","raster"].includes((z.service_type||z.service||"").toLowerCase()))),!(I!=null&&I.noCard)&&(m.value={layer:(I==null?void 0:I.map_key)||"",map:(I==null?void 0:I.service_key)||"",id:"",title:(I==null?void 0:I.title)||""})}),r.value.resize(),(q=a==null?void 0:a.value)!=null&&q.history){const Z=()=>{const R=r.value.getCenter();_({center:[R.lng,R.lat],zoom:r.value.getZoom(),bearing:r.value.getBearing(),pitch:r.value.getPitch()})};r.value.on("moveend",Z),r.value.on("rotate",Z),r.value.on("pitch",Z)}})},S=()=>{tt(),g.value.forEach(V=>{r.value&&Y(r.value,V.source,V.id,{selected:!1})}),g.value=[],m.value=null};e.onMounted(async()=>{await N(),await e.nextTick(),B();const V=document.getElementById("maplibre-demo-map");V&&V.addEventListener("mouseleave",()=>{l&&(l.remove(),l=null)})});const T=e.computed(()=>({height:(n==null?void 0:n.height)||"100vh",width:"100%"})),N=async()=>{const V=await fetch(`/api/map/${n.name||n.table||"main"}`).then(E=>E.json());a.value=V},M=V=>{if(!a.value||!a.value.widgets)return"400px";const E=a.value.widgets.find(L=>L.position===V);return(E==null?void 0:E.width)||"400px"},F=e.ref([]);e.watch(()=>a.value,V=>{V&&V.map&&(F.value=ne(),B())});const ne=()=>{var E;if(!a.value||!a.value.widgets)return[];const V=a.value.widgets.find(L=>L.type==="layers");return(E=V==null?void 0:V.config)!=null&&E.layers?V.config.layers.map(L=>({...L,visible:L.visible??!1})).filter(L=>L.visible).map(L=>L.id):[]};function Y(V,E,L,j){V.getStyle().layers.filter(v=>v.source===E).forEach(v=>{var A;const P={source:E,id:L};((A=V.getSource(E))==null?void 0:A.type)==="vector"&&v["source-layer"]&&(P.sourceLayer=v["source-layer"]),V.setFeatureState(P,j)})}const be=e.computed(()=>!!a.value&&!!a.value.interactions&&!!a.value.interactions.navigation&&a.value.interactions.navigation.enabled),Ie=e.computed(()=>!!a.value&&Array.isArray(a.value.tools)&&a.value.tools.length>0),ce=e.computed(()=>be.value||Ie.value?"40px":"20px");function tt(){r.value&&(r.value.getLayer("layer-with-pulsing-dot")&&r.value.removeLayer("layer-with-pulsing-dot"),r.value.getSource("dot-point")&&r.value.removeSource("dot-point"),r.value.hasImage&&r.value.hasImage("pulsing-dot")&&r.value.removeImage("pulsing-dot"))}function kd(V){var j,C,v,P;tt();const E=80,L={width:E,height:E,data:new Uint8Array(E*E*4),onAdd(){const A=document.createElement("canvas");A.width=this.width,A.height=this.height,this.context=A.getContext("2d",{willReadFrequently:!0})},render(){var q;const H=performance.now()%2e3/2e3,U=E/2*.3,de=E/2*.7*H+U,{context:G}=this;G.clearRect(0,0,this.width,this.height),G.beginPath(),G.arc(this.width/2,this.height/2,de,0,Math.PI*2),G.fillStyle=`rgba(255, 100, 100, ${1-H})`,G.fill();const xe=E/2*.7*(H-.5<0?H-.5+1:H-.5)+U;return G.beginPath(),G.arc(this.width/2,this.height/2,xe,0,Math.PI*2),G.fillStyle=`rgba(255, 100, 100, ${1-(H-.5<0?H-.5+1:H-.5)})`,G.fill(),this.data=G.getImageData(0,0,this.width,this.height).data,(q=r.value)==null||q.triggerRepaint(),!0}};(j=r.value)!=null&&j.hasImage("pulsing-dot")||(C=r.value)==null||C.addImage("pulsing-dot",L,{pixelRatio:2}),(v=r.value)==null||v.addSource("dot-point",{type:"geojson",data:{type:"Feature",geometry:{type:"Point",coordinates:V}}}),(P=r.value)==null||P.addLayer({id:"layer-with-pulsing-dot",type:"symbol",source:"dot-point",layout:{"icon-image":"pulsing-dot"},paint:{"icon-opacity":.6}})}const xd=e.computed(()=>{var V,E,L,j,C,v,P,A,H,U;return{center:(E=(V=a==null?void 0:a.value)==null?void 0:V.map)==null?void 0:E.center,zoom:(j=(L=a==null?void 0:a.value)==null?void 0:L.map)==null?void 0:j.zoom,pitch:((v=(C=a==null?void 0:a.value)==null?void 0:C.map)==null?void 0:v.pitch)||0,bearing:((A=(P=a==null?void 0:a.value)==null?void 0:P.map)==null?void 0:A.bearing)||0,bbox:((U=(H=a==null?void 0:a.value)==null?void 0:H.map)==null?void 0:U.bbox)||null}}),ot={home:zr,print:Zr,geolocation:ml,pitch:Yr},wd=V=>{d.value=V};function ke(V){if(!a.value||!a.value.widgets)return;const E=a.value.widgets.find(C=>C.type==="list");if(!E||!E.config)return;const{map_key:L,service_key:j}=E.config;L&&j&&(m.value={id:V,map:L,layer:j})}const _d=e.computed(()=>a.value&&a.value.widgets?a.value.widgets.filter(V=>V.position==="absolute"):[]);function Ed(V,E,L){const j=V.properties,C=y.value.find(q=>String(q.id)===String(V.source)),v=Array.isArray(C==null?void 0:C.popup)?C.popup:[],A=v.filter(q=>q.meta==="image").map(q=>j==null?void 0:j[q.name]).filter(Boolean),H=A.length>0?`
|
|
25
25
|
<div class="popup-image-single overflow-hidden rounded-t-xl" style="width:260px;height:160px;margin:0 auto 0 auto;">
|
|
26
|
-
<img src="${
|
|
26
|
+
<img src="${A[0]}" style="width:100%;height:100%;object-fit:cover;border-radius:12px 12px 0 0;display:block;" />
|
|
27
27
|
</div>
|
|
28
|
-
`:"",
|
|
28
|
+
`:"",U=v.find(q=>q.meta==="title"),de=U?j==null?void 0:j[U.name]:"";let G=v.filter(q=>q.meta!=="title"&&q.meta!=="image").map(q=>{const Z=j==null?void 0:j[q.name];let R=Z??"-";switch(q.meta){case"badge":R=Z?`<span class="inline-block rounded px-2 py-0.5 text-xs bg-yellow-100 text-yellow-800 ">${Z}</span>`:"-";break}return`
|
|
29
29
|
<tr style="display: table-row;">
|
|
30
|
-
<td style="display: table-cell; padding: 2px 8px 2px 0; vertical-align: middle; font-weight: 500; width: 50%; text-align: left;">${
|
|
31
|
-
<td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${
|
|
30
|
+
<td style="display: table-cell; padding: 2px 8px 2px 0; vertical-align: middle; font-weight: 500; width: 50%; text-align: left;">${q.ua||q.name}</td>
|
|
31
|
+
<td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${R}</td>
|
|
32
32
|
</tr>
|
|
33
|
-
`}).join("");
|
|
33
|
+
`}).join("");v.length||(G=Object.keys(j).map(q=>`
|
|
34
34
|
<tr style="display: table-row;">
|
|
35
|
-
<td style="display: table-cell; padding: 2px 8px 2px 0; vertical-align: middle; font-weight: 500; width: 50%; text-align: left;">${
|
|
36
|
-
<td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${
|
|
35
|
+
<td style="display: table-cell; padding: 2px 8px 2px 0; vertical-align: middle; font-weight: 500; width: 50%; text-align: left;">${q}</td>
|
|
36
|
+
<td style="display: table-cell; padding: 2px 0 2px 8px; vertical-align: middle; width: 50%; text-align: right;">${j[q]||"-"}</td>
|
|
37
37
|
</tr>
|
|
38
|
-
`).join(""));const
|
|
38
|
+
`).join(""));const xe=`
|
|
39
39
|
<div class="absolute min-w-[250px] max-w-[300px] bg-white/90 border border-gray-200 rounded-lg shadow-md text-gray-800 pointer-events-none" style="display: flex; flex-direction: column; justify-content: center;">
|
|
40
|
-
${
|
|
41
|
-
${
|
|
40
|
+
${H}
|
|
41
|
+
${de?`<div class="font-semibold text-sm border-b border-solid border-gray-200 text-gray-800 px-2 py-1">${de}</div>`:""}
|
|
42
42
|
<div class="text-xs px-2 py-0.5 text-gray-500" style="display: flex; justify-content: center; align-items: center; flex: 1;">
|
|
43
43
|
<table class="w-full" style="border-collapse: collapse; border: none; margin: 0 auto;">
|
|
44
|
-
<tbody>${
|
|
44
|
+
<tbody>${G}</tbody>
|
|
45
45
|
</table>
|
|
46
46
|
</div>
|
|
47
47
|
</div>
|
|
48
|
-
`;return
|
|
48
|
+
`;return L||(L=document.createElement("div"),L.className="custom-popup absolute z-50",document.body.appendChild(L)),L.innerHTML=xe,nt(L,E),L}function nt(V,E){const L=V.offsetWidth,j=V.offsetHeight,C=document.getElementById("maplibre-demo-map"),v=C.getBoundingClientRect(),P=E.originalEvent.clientX-v.left,A=E.originalEvent.clientY-v.top;let H=P-L/2;H=Math.max(10,Math.min(H,v.width-L-10));let U;A-j-10>0?U=A-j-5:A+j+10<v.height?U=A+10:U=Math.max(10,v.height-j-10),V.style.position="absolute",V.style.left=`${H+20}px`,V.style.top=`${U+10}px`,V.parentNode!==C&&C.appendChild(V)}return(V,E)=>{var L,j;return e.openBlock(),e.createElementBlock("div",{class:"maplibre-demo-map-container",style:e.normalizeStyle(T.value)},[E[10]||(E[10]=e.createElementVNode("div",{id:"maplibre-demo-map"},null,-1)),i.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",pl,[e.createElementVNode("div",ul,[e.createElementVNode("div",fl,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["top-left"],C=>{var v,P;return e.createVNode(Ve,{key:C,position:C,widgets:b(C),map:r.value,mapLoaded:i.value,cardValues:m.value,hasFilters:w.value,history:(P=(v=a.value)==null?void 0:v.value)==null?void 0:P.history,currentFilterLayer:c.value,enabledLayerIds:F.value,getWidgetComponent:h,getColumnWidth:M,rightColumnOffset:C==="top-right"?ce.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":E[0]||(E[0]=A=>F.value=A),onCardValuesId:ke,onCloseCard:S,onCatalogLayers:E[1]||(E[1]=A=>y.value=A)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))]),e.createElementVNode("div",gl,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["bottom-left"],C=>{var v,P;return e.createVNode(Ve,{key:C,position:C,widgets:b(C),map:r.value,mapLoaded:i.value,cardValues:m.value,hasFilters:w.value,history:(P=(v=a.value)==null?void 0:v.value)==null?void 0:P.history,currentFilterLayer:c.value,enabledLayerIds:F.value,getWidgetComponent:h,getColumnWidth:M,rightColumnOffset:C==="top-right"?ce.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":E[2]||(E[2]=A=>F.value=A),onCardValuesId:ke,onCloseCard:S,onCatalogLayers:E[3]||(E[3]=A=>y.value=A)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))])]),e.createElementVNode("div",yl,[e.createElementVNode("div",hl,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["top-right"],C=>{var v,P;return e.createVNode(Ve,{key:C,position:C,widgets:b(C),map:r.value,mapLoaded:i.value,cardValues:m.value,hasFilters:w.value,history:(P=(v=a.value)==null?void 0:v.value)==null?void 0:P.history,currentFilterLayer:c.value,enabledLayerIds:F.value,getWidgetComponent:h,getColumnWidth:M,rightColumnOffset:C==="top-right"?ce.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":E[4]||(E[4]=A=>F.value=A),onCardValuesId:ke,onCloseCard:S,onCatalogLayers:E[5]||(E[5]=A=>y.value=A)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))]),e.createElementVNode("div",bl,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["bottom-right"],C=>{var v,P;return e.createVNode(Ve,{key:C,position:C,widgets:b(C),map:r.value,mapLoaded:i.value,cardValues:m.value,hasFilters:w.value,history:(P=(v=a.value)==null?void 0:v.value)==null?void 0:P.history,currentFilterLayer:c.value,enabledLayerIds:F.value,getWidgetComponent:h,getColumnWidth:M,rightColumnOffset:C==="top-right"?ce.value:void 0,onSetFilterLayer:x,"onUpdate:enabledLayerIds":E[6]||(E[6]=A=>F.value=A),onCardValuesId:ke,onCloseCard:S,onCatalogLayers:E[7]||(E[7]=A=>y.value=A)},null,8,["position","widgets","map","mapLoaded","cardValues","hasFilters","history","currentFilterLayer","enabledLayerIds","rightColumnOffset"])}),64))])])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_d.value,(C,v)=>(e.openBlock(),e.createElementBlock("div",{key:"abs-"+(C.id||C.type||v),class:"absolute z-20",style:e.normalizeStyle(C.style)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h(C.type)),{map:r.value,config:C.config,hasFilters:w.value,currentFilterLayer:c.value,enabledLayerIds:F.value,cardValues:m.value,onSetFilterLayer:x,"onUpdate:enabledLayerIds":E[8]||(E[8]=P=>F.value=P),onCardValuesId:ke,onCloseCard:S,onCatalogLayers:E[9]||(E[9]=P=>y.value=P)},null,40,["map","config","hasFilters","currentFilterLayer","enabledLayerIds","cardValues"]))],4))),128)),e.createElementVNode("div",kl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList((j=(L=a.value)==null?void 0:L.value)==null?void 0:j.tools,C=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:C},[i.value&&ot[C]?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(ot[C]),e.mergeProps({key:0,map:r.value,activeTool:d.value,setActiveTool:wd},{ref_for:!0},C==="home"?{initialView:xd.value}:{},{onCardValuesId:ke}),null,16,["map","activeTool"])):e.createCommentVNode("",!0)],64))),128))])],64)):(e.openBlock(),e.createBlock(Ir,{key:0}))],4)}}}),[["__scopeId","data-v-22436345"]]);/**
|
|
49
49
|
* @license lucide-vue-next v0.514.0 - ISC
|
|
50
50
|
*
|
|
51
51
|
* This source code is licensed under the ISC license.
|
|
52
52
|
* See the LICENSE file in the root directory of this source tree.
|
|
53
|
-
*/const
|
|
53
|
+
*/const qe=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),xl=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(o,n,r)=>r?r.toUpperCase():n.toLowerCase()),wl=t=>{const o=xl(t);return o.charAt(0).toUpperCase()+o.slice(1)},_l=(...t)=>t.filter((o,n,r)=>!!o&&o.trim()!==""&&r.indexOf(o)===n).join(" ").trim();/**
|
|
54
54
|
* @license lucide-vue-next v0.514.0 - ISC
|
|
55
55
|
*
|
|
56
56
|
* This source code is licensed under the ISC license.
|
|
57
57
|
* See the LICENSE file in the root directory of this source tree.
|
|
58
|
-
*/var
|
|
58
|
+
*/var Be={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"};/**
|
|
59
59
|
* @license lucide-vue-next v0.514.0 - ISC
|
|
60
60
|
*
|
|
61
61
|
* This source code is licensed under the ISC license.
|
|
62
62
|
* See the LICENSE file in the root directory of this source tree.
|
|
63
|
-
*/const
|
|
63
|
+
*/const El=({size:t,strokeWidth:o=2,absoluteStrokeWidth:n,color:r,iconNode:i,name:l,class:c,...f},{slots:g})=>e.h("svg",{...Be,width:t||Be.width,height:t||Be.height,stroke:r||Be.stroke,"stroke-width":n?Number(o)*24/Number(t):o,class:_l("lucide",...l?[`lucide-${qe(wl(l))}-icon`,`lucide-${qe(l)}`]:["lucide-icon"]),...f},[...i.map(s=>e.h(...s)),...g.default?[g.default()]:[]]);/**
|
|
64
64
|
* @license lucide-vue-next v0.514.0 - ISC
|
|
65
65
|
*
|
|
66
66
|
* This source code is licensed under the ISC license.
|
|
67
67
|
* See the LICENSE file in the root directory of this source tree.
|
|
68
|
-
*/const
|
|
68
|
+
*/const Re=(t,o)=>(n,{slots:r})=>e.h(El,{...n,iconNode:o,name:t},r);/**
|
|
69
69
|
* @license lucide-vue-next v0.514.0 - ISC
|
|
70
70
|
*
|
|
71
71
|
* This source code is licensed under the ISC license.
|
|
72
72
|
* See the LICENSE file in the root directory of this source tree.
|
|
73
|
-
*/const
|
|
73
|
+
*/const Vl=Re("square-pen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);/**
|
|
74
74
|
* @license lucide-vue-next v0.514.0 - ISC
|
|
75
75
|
*
|
|
76
76
|
* This source code is licensed under the ISC license.
|
|
77
77
|
* See the LICENSE file in the root directory of this source tree.
|
|
78
|
-
*/const
|
|
79
|
-
`)});return}
|
|
80
|
-
`)});return}if(c.value===null)d.value=[...d.value,{...f.value}];else{const y=[...d.value];y[c.value]={...f.value},d.value=y}l()}return(u,y)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[u.addButton?(e.openBlock(),e.createElementBlock("div",bl,[e.createElementVNode("div",kl,[e.createElementVNode("button",{onClick:y[0]||(y[0]=g=>p.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...y[5]||(y[5]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Додати поле ",-1)])])])])):e.createCommentVNode("",!0),e.createElementVNode("div",xl,[e.createElementVNode("div",wl,[e.createElementVNode("table",_l,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,g=>(e.openBlock(),e.createElementBlock("col",{key:g.key,style:e.normalizeStyle(g.type==="main"?`width: ${u.mainColWidth}`:g.width?`width: ${g.width}`:"auto")},null,4))),128)),y[6]||(y[6]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",Vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,g=>(e.openBlock(),e.createElementBlock("th",{key:g.key,class:"px-6 py-4"},e.toDisplayString(g.label),1))),128)),y[7]||(y[7]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),d.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d.value,g=>(e.openBlock(),e.createElementBlock("tr",El,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,b=>(e.openBlock(),e.createElementBlock("td",{key:b.key,class:"px-6 py-4 align-middle text-center"},[b.type==="main"?(e.openBlock(),e.createElementBlock("div",Bl,[y[8]||(y[8]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(fe)(g.format==="yes/no"?"check":g.format||g.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(pe)(g.format==="yes/no"?"check":g.format||g.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(g.format==="yes/no"?"icon-check":`icon-${g.format||g.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",Nl,[e.withDirectives((e.openBlock(),e.createElementBlock("p",Cl,[e.createTextVNode(e.toDisplayString(g.name||g.id),1)])),[[e.unref(gl)]]),e.createElementVNode("p",$l,e.toDisplayString(g.ua||g.label),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[b.type==="color"?(e.openBlock(),e.createElementBlock("div",Ll,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${g[b.key]}]`])},null,2)])):["format","type","meta"].includes(b.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[g[b.key]?(e.openBlock(),e.createElementBlock("span",Sl,e.toDisplayString(g[b.key]),1)):(e.openBlock(),e.createElementBlock("span",Fl,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",jl,e.toDisplayString(g[b.key]),1))],64))]))),128)),e.createElementVNode("td",Il,[e.createVNode(ul,{columns:d.value,"onUpdate:columns":y[1]||(y[1]=b=>d.value=b),data:g,index:u.rowIndex,scheme:u.formScheme},null,8,["columns","data","index","scheme"])])]))),256)):(e.openBlock(),e.createElementBlock("tr",vl,[e.createElementVNode("td",{colspan:a.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,Dl)]))])])]),e.createVNode(e.unref(n),{title:"Створити поле",size:"lg",visible:p.value,"onUpdate:visible":y[4]||(y[4]=g=>p.value=g)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:l,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{type:"button",onClick:h,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(r),{ref_key:"form",ref:i,modelValue:f.value,"onUpdate:modelValue":y[2]||(y[2]=g=>f.value=g),schema:u.formScheme,form:i.value,"onUpdate:form":y[3]||(y[3]=g=>i.value=g)},null,8,["modelValue","schema","form"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-619014d7"]]),Al={class:"vs-form"},Ml={class:"vs-form__body auto-rows-max container"},Tl={class:"flex flex-wrap"},zl={class:"h-fit w-full mb-6 px-2"},Pl={class:"h-fit w-full flex flex-wrap"},Ul={class:"flex justify-end mb-3 gap-2 w-full"},Ol={class:"w-full"},ql={class:"p-4 text-[13px]"},Rl={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Hl=["id","value"],Wl={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},Zl={class:"font-medium text-gray-900 truncate"},Yl={class:"text-xs text-gray-500"},Gl={class:"flex justify-end gap-2 p-4 border-t w-full"},Jl=e.defineComponent({__name:"list-tab",props:{data:{default:{}},dataModifiers:{}},emits:["update:data"],setup(t){const o=e.useModel(t,"data"),n=e.computed(()=>Array.isArray(o.value.fields)?o.value.fields:[]),r=e.defineAsyncComponent(()=>import("@opengis/form")),m=e.defineAsyncComponent(()=>import("@opengis/core").then(y=>y.VsModal)),s=e.ref(),i=e.ref(!1),p=e.ref([]),f=e.computed(()=>{var y,g;return((y=o.value)==null?void 0:y.token)||((g=o.value)==null?void 0:g.id)||"register-form"}),c=e.computed({get:()=>(o.value||(o.value={}),Array.isArray(o.value.columns)||(o.value.columns=[]),o.value.columns),set:y=>{o.value||(o.value={}),o.value.columns=Array.isArray(y)?y:[]}}),d=e.computed({get:()=>o.value||{},set:y=>{var b;const g=Array.isArray((b=o.value)==null?void 0:b.columns)?o.value.columns:[];o.value={...o.value,...y,columns:g}}});e.watch(i,y=>{if(y){const g=c.value.map(b=>b.name||b.id);p.value=[...g]}});const a=()=>{const y=new Set(p.value);c.value;const g=n.value.filter(b=>y.has(b.name));c.value=g,i.value=!1,p.value=[]},l={table_name:{type:"text",label:"Table",required:!0,placeholder:"Table",validators:["required"],col:6},name:{type:"text",label:"Name",required:!0,placeholder:"Name",validators:["required"],col:6},description:{type:"text",label:"Description",placeholder:"Description",col:12}},h=[{key:"name",label:"Name",type:"text"},{key:"ua",label:"UA",type:"text"},{key:"format",label:"Format",type:"text"},{key:"meta",label:"Мета",type:"text"},{key:"data",label:"Класифікатор",type:"text"}],u={name:{type:"text",label:"Name",required:!0},ua:{type:"text",label:"UA",required:!0},format:{type:"combobox",label:"Format",mode:"combo",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},meta:{type:"combobox",label:"Мета",mode:"combo",required:!0,options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"},{text:"Image",id:"image"}]},data:{type:"text",label:"Класифікатор"}};return(y,g)=>(e.openBlock(),e.createElementBlock("div",Al,[e.createElementVNode("div",Ml,[e.createElementVNode("div",Tl,[e.createElementVNode("div",zl,[(e.openBlock(),e.createBlock(e.unref(r),{ref_key:"formEl",ref:s,key:f.value,schema:l,modelValue:d.value,"onUpdate:modelValue":g[0]||(g[0]=b=>d.value=b)},null,8,["modelValue"]))]),e.createElementVNode("div",Pl,[e.createElementVNode("div",Ul,[e.createElementVNode("button",{onClick:g[1]||(g[1]=b=>i.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...g[6]||(g[6]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",Ol,[e.createVNode(xe,{modelValue:c.value,"onUpdate:modelValue":g[2]||(g[2]=b=>c.value=b),"columns-scheme":h,"form-scheme":u,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(e.unref(m),{visible:i.value,"onUpdate:visible":g[5]||(g[5]=b=>i.value=b),title:"Імпорт колонок",size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Gl,[e.createElementVNode("button",{onClick:g[4]||(g[4]=b=>i.value=!1),class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{onClick:a,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Імпортувати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",ql,[e.createElementVNode("div",Rl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,b=>(e.openBlock(),e.createElementBlock("label",{key:b.name,class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:"import-"+b.name,"onUpdate:modelValue":g[3]||(g[3]=k=>p.value=k),value:b.name},null,8,Hl),[[e.vModelCheckbox,p.value]]),e.createElementVNode("div",Wl,[e.unref(fe)(b.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(pe)(b.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${b.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",Zl,e.toDisplayString(b.name),1),e.createElementVNode("p",Yl,e.toDisplayString(b.title||b.label),1)])])]))),128))])])]),_:1},8,["visible"])]))}}),Kl={class:"vs-form"},Ql={class:"vs-form__body auto-rows-max container"},Xl={class:"flex flex-wrap"},ea={class:"h-fit w-full flex flex-wrap"},ta={class:"flex justify-end mb-3 gap-2 w-full"},oa={class:"w-full"},na={class:"p-4 text-[13px]"},ra={class:"grid grid-cols-2 gap-x-6 gap-y-2"},la=["id","value"],aa={class:"flex-1 min-w-0 flex items-center gap-2"},sa={class:"font-medium text-gray-900 truncate"},ia={class:"text-xs text-gray-500"},ca={class:"flex justify-end gap-2 p-4 border-t w-full"},da=e.defineComponent({__name:"filter-tab",props:{data:{default:{}},dataModifiers:{}},emits:["update:data"],setup(t){const o=e.useModel(t,"data"),n=e.computed(()=>Array.isArray(o.value.fields)?o.value.fields:[]),r=e.defineAsyncComponent(()=>import("@opengis/core").then(d=>d.VsModal)),m=e.ref(!1),s=e.ref([]),i=e.computed({get:()=>(o.value||(o.value={}),Array.isArray(o.value.filters)||(o.value.filters=[]),o.value.filters),set:d=>{o.value||(o.value={}),o.value.filters=Array.isArray(d)?d:[]}});e.watch(m,d=>{if(d){const a=i.value.map(l=>l.id||l.name);s.value=[...a]}});const p=()=>{const d=new Set(s.value),a=n.value.filter(l=>d.has(l.name));i.value=a,m.value=!1,s.value=[]},f=[{key:"id",label:"Name",type:"text"},{key:"label",label:"UA",type:"text"},{key:"type",label:"Тип",type:"text"}],c={id:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"UA",required:!0},type:{type:"combobox",label:"Тип",required:!0,mode:"combo",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Autocomplete",id:"autocomplete"}]}};return(d,a)=>(e.openBlock(),e.createElementBlock("div",Kl,[e.createElementVNode("div",Ql,[e.createElementVNode("div",Xl,[a[6]||(a[6]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте фільтри реєстру. Оберіть поля для імпорту або редагуйте їх властивості нижче. ")],-1)),e.createElementVNode("div",ea,[e.createElementVNode("div",ta,[e.createElementVNode("button",{onClick:a[0]||(a[0]=l=>m.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...a[5]||(a[5]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",oa,[e.createVNode(xe,{modelValue:i.value,"onUpdate:modelValue":a[1]||(a[1]=l=>i.value=l),"columns-scheme":f,"form-scheme":c,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(e.unref(r),{visible:m.value,"onUpdate:visible":a[4]||(a[4]=l=>m.value=l),title:"Імпорт фільтрів",size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",ca,[e.createElementVNode("button",{onClick:a[3]||(a[3]=l=>m.value=!1),class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{onClick:p,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Імпортувати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",na,[e.createElementVNode("div",ra,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,l=>(e.openBlock(),e.createElementBlock("label",{key:l.name,class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:"import-filter-"+l.name,"onUpdate:modelValue":a[2]||(a[2]=h=>s.value=h),value:l.name},null,8,la),[[e.vModelCheckbox,s.value]]),e.createElementVNode("div",aa,[e.unref(fe)(l.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(pe)(l.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${l.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",sa,e.toDisplayString(l.name),1),e.createElementVNode("p",ia,e.toDisplayString(l.title||l.label),1)])])]))),128))])])]),_:1},8,["visible"])]))}}),ma={class:"vs-form"},pa={class:"vs-form__body auto-rows-max container"},fa={class:"flex flex-wrap"},ua={class:"h-fit w-full flex flex-wrap"},ga={class:"flex justify-end mb-3 gap-2 w-full"},ha={class:"w-full"},ya={class:"p-4 text-[13px]"},ba={class:"grid grid-cols-2 gap-x-6 gap-y-2"},ka=["id","value"],xa={class:"flex-1 min-w-0 flex items-center gap-2"},wa={class:"font-medium text-gray-900 truncate"},_a={class:"text-xs text-gray-500"},Va={class:"flex justify-end gap-2 p-4 border-t w-full"},Ea=e.defineComponent({__name:"card-tab",props:{data:{default:{}},dataModifiers:{}},emits:["update:data"],setup(t){const o=e.useModel(t,"data"),n=e.computed(()=>Array.isArray(o.value.fields)?o.value.fields:[]),r=e.defineAsyncComponent(()=>import("@opengis/core").then(d=>d.VsModal)),m=e.ref(!1),s=e.ref([]),i=e.computed({get:()=>o.value.card,set:d=>{o.value||(o.value={}),o.value.card=Array.isArray(d)?d:[]}});e.watch(m,d=>{var a;if(d){const l=((a=i.value)==null?void 0:a.map(h=>h.name))||[];s.value=[...l]}});const p=()=>{const d=new Set(s.value),a=n.value.filter(l=>d.has(l.name));i.value=a,m.value=!1,s.value=[]},f=[{key:"name",label:"Name",type:"text"},{key:"ua",label:"UA",type:"text"},{key:"format",label:"Format",type:"text"},{key:"meta",label:"Мета",type:"text"}],c={name:{type:"text",label:"Name",required:!0,disabled:!0},ua:{type:"text",label:"UA",required:!0},format:{type:"combobox",label:"Format",mode:"combo",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},meta:{type:"combobox",label:"Мета",mode:"combo",required:!0,options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"},{text:"Image",id:"image"}]}};return(d,a)=>(e.openBlock(),e.createElementBlock("div",ma,[e.createElementVNode("div",pa,[e.createElementVNode("div",fa,[a[6]||(a[6]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте відображення картки. Оберіть потрібні поля та відредагуйте їхні властивості. ")],-1)),e.createElementVNode("div",ua,[e.createElementVNode("div",ga,[e.createElementVNode("button",{onClick:a[0]||(a[0]=l=>m.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...a[5]||(a[5]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",ha,[e.createVNode(xe,{modelValue:i.value,"onUpdate:modelValue":a[1]||(a[1]=l=>i.value=l),"columns-scheme":f,"form-scheme":c,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(e.unref(r),{visible:m.value,"onUpdate:visible":a[4]||(a[4]=l=>m.value=l),title:"Імпорт полів картки",size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Va,[e.createElementVNode("button",{onClick:a[3]||(a[3]=l=>m.value=!1),class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{onClick:p,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Імпортувати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",ya,[e.createElementVNode("div",ba,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,l=>(e.openBlock(),e.createElementBlock("label",{key:l.name,class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:"import-card-"+l.name,"onUpdate:modelValue":a[2]||(a[2]=h=>s.value=h),value:l.name},null,8,ka),[[e.vModelCheckbox,s.value]]),e.createElementVNode("div",xa,[e.unref(fe)(l.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(pe)(l.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${l.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",wa,e.toDisplayString(l.name),1),e.createElementVNode("p",_a,e.toDisplayString(l.title||l.label),1)])])]))),128))])])]),_:1},8,["visible"])]))}}),Ba=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function ue(t){if(!t)return"";const[o,n]=t.split(" ");if(!o)return t;const[r,m,s]=o.split("-");if(!r||!m||!s)return t;const i=parseInt(m,10),p=Ba[i]||m;let f=`${parseInt(s,10)} ${p} ${r}`;if(n){const c=n.split(".")[0],[d,a,l]=c.split(":");d&&a&&l?f+=`, ${d}:${a}:${l}`:d&&a?f+=`, ${d}:${a}`:d&&(f+=`, ${d}`)}return f}const Na={name:"Template1",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{titleCol(){return this.columns.find(t=>t.meta==="title")},categoryCol(){return this.columns.filter(t=>t.meta==="category")},tagsCol(){return this.columns.filter(t=>t.meta==="tags")},featuresCols(){return this.columns.filter(t=>t.meta==="features")}},methods:{getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const m=Object.keys(r)[0],s=r[m];return`${m}=${encodeURIComponent(t[s])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],m=n[r];return`${r}=${encodeURIComponent(t[m])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:ue}},Ca={class:"flex justify-between p-4 pb-2 bg-slate-50 gap-4"},$a={class:"flex items-center justify-between"},La={class:"text-lg font-bold line-clamp-2"},Sa={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground ml-2 whitespace-nowrap","data-v0-t":"badge"},Fa={key:0,class:"flex"},ja={key:0,class:"h-fit inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground ml-2 whitespace-nowrap"},Ia={class:"p-4 pt-2"},va={class:"grid grid-cols-2 gap-3 text-sm"},Da={class:"text-gray-500"},Aa={class:"font-medium"},Ma={class:"items-center p-3 bg-slate-50 flex justify-end"},Ta=["href"];function za(t,o,n,r,m,s){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,i=>{var p,f,c;return e.openBlock(),e.createElementBlock("div",{key:i.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",Ca,[e.createElementVNode("div",$a,[e.createElementVNode("h2",La,e.toDisplayString(i[`${(p=s.titleCol)==null?void 0:p.name}_text`]||i[(f=s.titleCol)==null?void 0:f.name]||i[(c=s.titleCol)==null?void 0:c.label]||"Не вказано"),1),Array.isArray(s.categoryCol)&&s.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s.categoryCol,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.name},[i[d.name]?(e.openBlock(),e.createElementBlock("div",Sa,e.toDisplayString(i[`${d.name}_text`]||i[d.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),Array.isArray(s.tagsCol)&&s.tagsCol.length?(e.openBlock(),e.createElementBlock("div",Fa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.tagsCol,d=>(e.openBlock(),e.createElementBlock("div",{key:d.name,class:"mt-2 flex flex-wrap gap-1"},[i[d.name]?(e.openBlock(),e.createElementBlock("span",ja,e.toDisplayString(i[`${d.name}_text`]||i[d.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ia,[e.createElementVNode("div",va,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.featuresCols,d=>(e.openBlock(),e.createElementBlock("div",{key:d.name,class:"flex items-center gap-1.5"},[e.createElementVNode("span",Da,e.toDisplayString(d.ua||d.label)+": ",1),e.createElementVNode("span",Aa,[Array.isArray(i[d==null?void 0:d.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i[d==null?void 0:d.name],(a,l)=>(e.openBlock(),e.createElementBlock("span",{key:l,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(a),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(s.formatDate(i[d==null?void 0:d.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(i[d==null?void 0:d.name]||"Немає даних"),1)],64))],64))])]))),128))])]),e.createElementVNode("div",Ma,[e.createElementVNode("a",{href:s.getItemLink(i),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...o[0]||(o[0]=[e.createTextVNode(" Детальніше ",-1),e.createElementVNode("svg",{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",class:"lucide lucide-arrow-right ml-1 h-3.5 w-3.5"},[e.createElementVNode("path",{d:"M5 12h14"}),e.createElementVNode("path",{d:"m12 5 7 7-7 7"})],-1)])],8,Ta)])])}),128)}const Pa=F(Na,[["render",za]]),Ua={name:"Template2",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{titleCol(){return this.columns.find(t=>t.meta==="title")},categoryCol(){return this.columns?this.columns.filter(t=>t.meta==="category"):[]},tagsCol(){return this.columns?this.columns.filter(t=>t.meta==="tags"):[]},featuresCols(){return this.columns.filter(t=>t.meta==="features")}},methods:{getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const m=Object.keys(r)[0],s=r[m];return`${m}=${encodeURIComponent(t[s])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],m=n[r];return`${r}=${encodeURIComponent(t[m])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:ue}},Oa={class:"p-0"},qa={class:"border-l-4 border-l-slate-400"},Ra={class:"p-4"},Ha={class:"flex flex-wrap items-center gap-2 mb-3"},Wa={class:"text-lg font-bold"},Za={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-green-100 text-green-800 hover:bg-green-100","data-v0-t":"badge"},Ya={key:1,class:"flex"},Ga={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},Ja={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-3 text-sm border-t pt-3"},Ka={class:"text-xs text-gray-500 mb-1"},Qa={class:"font-medium"},Xa={class:"flex justify-end mt-3 border-t pt-3"},es=["href"];function ts(t,o,n,r,m,s){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,i=>{var p,f;return e.openBlock(),e.createElementBlock("div",{key:i.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",Oa,[e.createElementVNode("div",qa,[e.createElementVNode("div",Ra,[e.createElementVNode("div",Ha,[e.createElementVNode("h2",Wa,e.toDisplayString(i[`${(p=s.titleCol)==null?void 0:p.name}_text`]||i[(f=s.titleCol)==null?void 0:f.name]||"Не вказано"),1),Array.isArray(s.categoryCol)&&s.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s.categoryCol,c=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:c.name},[i[c.name]?(e.openBlock(),e.createElementBlock("div",Za,e.toDisplayString(i[`${c.name}_text`]||i[c.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(s.tagsCol)&&s.tagsCol.length?(e.openBlock(),e.createElementBlock("div",Ya,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.tagsCol,c=>(e.openBlock(),e.createElementBlock("div",{key:c.name,class:"flex flex-wrap gap-1 ml-2"},[i[c.name]?(e.openBlock(),e.createElementBlock("span",Ga,e.toDisplayString(i[`${c.name}_text`]||i[c.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ja,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.featuresCols,c=>(e.openBlock(),e.createElementBlock("div",{key:c.name},[e.createElementVNode("p",Ka,e.toDisplayString(c.ua),1),e.createElementVNode("p",Qa,[Array.isArray(i[c==null?void 0:c.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i[c==null?void 0:c.name],(d,a)=>(e.openBlock(),e.createElementBlock("span",{key:a,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(d),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[c.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(s.formatDate(i[c==null?void 0:c.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(i[c==null?void 0:c.name]||"Немає даних"),1)],64))],64))])]))),128))]),e.createElementVNode("div",Xa,[e.createElementVNode("a",{href:s.getItemLink(i),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...o[0]||(o[0]=[e.createTextVNode(" Детальніше ",-1),e.createElementVNode("svg",{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",class:"lucide lucide-external-link ml-1 h-3.5 w-3.5"},[e.createElementVNode("path",{d:"M15 3h6v6"}),e.createElementVNode("path",{d:"M10 14 21 3"}),e.createElementVNode("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"})],-1)])],8,es)])])])])])}),128)}const os=F(Ua,[["render",ts]]),ns={name:"Template3",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{categoryCol(){return this.columns?this.columns.filter(t=>t.meta==="category"):[]},tagsCol(){return this.columns?this.columns.filter(t=>t.meta==="tags"):[]},featuresCols(){return this.columns.filter(t=>t.meta==="features")},colorClass(){return"bg-blue-500"},titleCol(){return this.columns.find(t=>t.meta==="title")}},methods:{featureColClass(t,o){return"col-span-2"},getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const m=Object.keys(r)[0],s=r[m];return`${m}=${encodeURIComponent(t[s])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],m=n[r];return`${r}=${encodeURIComponent(t[m])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:ue}},rs={class:"space-y-4"},ls={class:"flex items-center py-2 px-3"},as={class:"flex-1"},ss={class:"grid grid-cols-12 gap-2 w-full text-xs"},is={class:"col-span-5"},cs={key:0,class:"inline-flex items-center rounded-full border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80 mt-1 text-[10px] font-normal px-1.5 py-0","data-v0-t":"badge"},ds={key:1,class:"flex flex-wrap gap-1 mt-1"},ms={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},ps={class:"col-span-7"},fs={class:"grid grid-cols-3 gap-3"},us={class:"text-[10px] text-gray-500 mb-1"},gs={class:"truncate font-medium"},hs=["href"];function ys(t,o,n,r,m,s){return e.openBlock(),e.createElementBlock("div",rs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,i=>{var p,f;return e.openBlock(),e.createElementBlock("div",{key:i.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",ls,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-8 rounded-full mr-3",s.colorClass])},null,2),e.createElementVNode("div",as,[e.createElementVNode("div",ss,[e.createElementVNode("div",is,[e.createElementVNode("p",{class:e.normalizeClass(["font-bold text-sm text-left",{"w-full h-full flex items-center":!Array.isArray(s.tagsCol)||!s.tagsCol.length}])},e.toDisplayString(i[`${(p=s.titleCol)==null?void 0:p.name}_text`]||i[(f=s.titleCol)==null?void 0:f.name]||i[Object.keys(i)[0]]||"Не вказано"),3),Array.isArray(s.categoryCol)&&s.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s.categoryCol,c=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:c.name},[i[c.name]?(e.openBlock(),e.createElementBlock("div",cs,e.toDisplayString(i[`${c.name}_text`]||i[c.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(s.tagsCol)&&s.tagsCol.length?(e.openBlock(),e.createElementBlock("div",ds,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.tagsCol,c=>(e.openBlock(),e.createElementBlock("div",{key:c.name,class:"flex flex-wrap gap-1 mt-1"},[i[c.name]?(e.openBlock(),e.createElementBlock("span",ms,e.toDisplayString(i[`${c.name}_text`]||i[c.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ps,[e.createElementVNode("div",fs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.featuresCols,c=>(e.openBlock(),e.createElementBlock("div",{key:c.name},[e.createElementVNode("p",us,e.toDisplayString(c.ua),1),e.createElementVNode("p",gs,[Array.isArray(i[c==null?void 0:c.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i[c==null?void 0:c.name],(d,a)=>(e.openBlock(),e.createElementBlock("span",{key:a,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(d),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[c.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(s.formatDate(i[c==null?void 0:c.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(i[c==null?void 0:c.name]||"Немає даних"),1)],64))],64))])]))),128))])])])]),e.createElementVNode("a",{href:s.getItemLink(i),class:"ml-auto flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground rounded-md h-7 w-7 p-0",style:{"min-width":"2.5rem"}},[...o[0]||(o[0]=[e.createElementVNode("svg",{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",class:"lucide lucide-chevron-right h-4 w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,hs)])])}),128))])}const bs=F(ns,[["render",ys]]),ks={name:"Template4",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{featuresCols(){return this.columns.filter(t=>t.meta==="features")},titleCol(){return this.columns.find(t=>t.meta==="title")},categoryCol(){return this.columns?this.columns.filter(t=>t.meta==="category"):[]},tagsCol(){return this.columns?this.columns.filter(t=>t.meta==="tags"):[]}},methods:{getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const m=Object.keys(r)[0],s=r[m];return`${m}=${encodeURIComponent(t[s])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],m=n[r];return`${r}=${encodeURIComponent(t[m])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:ue}},xs={class:"flex flex-col space-y-1.5 p-6 pb-2"},ws={class:"flex items-center gap-2"},_s={class:"tracking-tight text-lg font-medium"},Vs={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-blue-100 text-blue-800 ml-2","data-v0-t":"badge"},Es={key:1,class:"flex"},Bs={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},Ns={class:"p-6 pt-0 pb-4"},Cs={class:"grid grid-cols-2 gap-4"},$s={class:"text-sm text-gray-500"},Ls={class:"font-medium"},Ss={class:"flex items-center p-6 pt-0"},Fs=["href"];function js(t,o,n,r,m,s){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,i=>{var p,f;return e.openBlock(),e.createElementBlock("div",{key:i.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm border-l-4 border-l-blue-600","data-v0-t":"card"},[e.createElementVNode("div",xs,[e.createElementVNode("div",ws,[e.createElementVNode("h3",_s,e.toDisplayString(i[`${(p=s.titleCol)==null?void 0:p.name}_text`]||i[(f=s.titleCol)==null?void 0:f.name]||Object.keys(i)[0]||"Не вказано"),1),Array.isArray(s.categoryCol)&&s.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s.categoryCol,c=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:c.name},[i[c.name]?(e.openBlock(),e.createElementBlock("div",Vs,e.toDisplayString(i[`${c.name}_text`]||i[c.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(s.tagsCol)&&s.tagsCol.length?(e.openBlock(),e.createElementBlock("div",Es,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.tagsCol,c=>(e.openBlock(),e.createElementBlock("div",{key:c.name,class:"flex flex-wrap gap-1 ml-2"},[i[c.name]?(e.openBlock(),e.createElementBlock("span",Bs,e.toDisplayString(i[`${c.name}_text`]||i[c.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ns,[e.createElementVNode("div",Cs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.featuresCols,c=>(e.openBlock(),e.createElementBlock("div",{key:c.name},[e.createElementVNode("p",$s,e.toDisplayString(c.ua),1),e.createElementVNode("p",Ls,[Array.isArray(i[c==null?void 0:c.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i[c==null?void 0:c.name],(d,a)=>(e.openBlock(),e.createElementBlock("span",{key:a,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(d),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[c.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(s.formatDate(i[c==null?void 0:c.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(i[c==null?void 0:c.name]||"Немає даних"),1)],64))],64))])]))),128))])]),e.createElementVNode("div",Ss,[e.createElementVNode("a",{href:s.getItemLink(i),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border bg-background h-10 px-4 py-2 rounded-md text-black border-black hover:bg-gray-100 hover:text-black"}," Детальніше ",8,Fs)])])}),128)}const Is=F(ks,[["render",js]]),vs={name:"Template5",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{imageCol(){return this.columns.find(t=>t.meta==="image")},descCol(){return this.columns.find(t=>t.meta==="desc")||this.columns.find(t=>t.name==="description")},categoryCol(){return this.columns?this.columns.filter(t=>t.meta==="category"):[]},tagsCol(){return this.columns?this.columns.filter(t=>t.meta==="tags"):[]},featuresCols(){return this.columns.filter(t=>t.meta==="features")},titleCol(){return this.columns.find(t=>t.meta==="title")}},methods:{getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const m=Object.keys(r)[0],s=r[m];return`${m}=${encodeURIComponent(t[s])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],m=n[r];return`${r}=${encodeURIComponent(t[m])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:ue}},Ds={class:"grid grid-cols-12 divide-x divide-gray-100"},As={key:0},Ms=["src"],Ts={key:1,class:"col-span-1 flex items-center justify-center"},zs={class:"col-span-7 p-4"},Ps={class:"flex items-center mb-1 col-span-7 p-4"},Us={class:"text-base font-bold text-gray-900 mr-2"},Os={key:0,class:"inline-flex items-center rounded-full px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent hover:bg-primary/80 bg-blue-100 text-blue-800 border-0 text-xs ml-2"},qs={class:"text-sm text-gray-600 line-clamp-1 mb-2"},Rs={class:"grid grid-cols-2 gap-x-4 gap-y-1 text-sm"},Hs={class:"text-gray-500 mr-1"},Ws=["innerHTML"],Zs={class:"text-gray-600 truncate"},Ys={class:"col-span-2 p-3 bg-gray-50 flex flex-col justify-center"},Gs={class:"text-xs text-gray-500 mb-1.5"},Js={key:0,class:"flex flex-wrap gap-1"},Ks={key:0,class:"inline-flex items-center rounded-full font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:bg-secondary/80 bg-white border border-gray-200 text-gray-700 text-xs px-1.5 py-0"},Qs={class:"col-span-2 flex flex-col justify-center items-center bg-gray-50 border-l p-2"},Xs={class:"w-full space-y-2"},ei=["href"];function ti(t,o,n,r,m,s){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,i=>{var p,f,c,d,a;return e.openBlock(),e.createElementBlock("div",{key:i.id,class:"bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200 hover:shadow-md"},[e.createElementVNode("div",Ds,[s.imageCol?(e.openBlock(),e.createElementBlock("div",As,[i[(p=s.imageCol)==null?void 0:p.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:i[(f=s.imageCol)==null?void 0:f.name],alt:"image",class:"object-cover h-full"},null,8,Ms)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Ts,[...o[0]||(o[0]=[e.createElementVNode("div",{class:"w-3 h-12 rounded-sm bg-blue-500",title:"Пріоритет: Високий","aria-hidden":"true"},null,-1)])])),e.createElementVNode("div",zs,[e.createElementVNode("div",Ps,[e.createElementVNode("h3",Us,e.toDisplayString(i[`${(c=s.titleCol)==null?void 0:c.name}_text`]||i[(d=s.titleCol)==null?void 0:d.name]||Object.keys(i)[0]||"Не вказано"),1),Array.isArray(s.categoryCol)&&s.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s.categoryCol,l=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.name},[i[l.name]?(e.openBlock(),e.createElementBlock("div",Os,e.toDisplayString(i[`${l.name}_text`]||i[l.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),e.createElementVNode("p",qs,e.toDisplayString(i[(a=s.descCol)==null?void 0:a.name]),1),e.createElementVNode("div",Rs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.featuresCols,l=>(e.openBlock(),e.createElementBlock("div",{key:l.name,class:"flex items-center"},[e.createElementVNode("span",Hs,e.toDisplayString((l==null?void 0:l.ua)||l.label||l.name)+":",1),l.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:l.icon},null,8,Ws)):e.createCommentVNode("",!0),e.createElementVNode("span",Zs,[Array.isArray(i[l==null?void 0:l.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i[l==null?void 0:l.name],(h,u)=>(e.openBlock(),e.createElementBlock("span",{key:u,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(h),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[l.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(s.formatDate(i[l==null?void 0:l.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(i[l==null?void 0:l.name]||"Немає даних"),1)],64))],64))])]))),128))])]),e.createElementVNode("div",Ys,[e.createElementVNode("p",Gs," Теги: "+e.toDisplayString(s.tagsCol.length&&i[s.tagsCol[0].name]?"":"відсутні"),1),Array.isArray(s.tagsCol)&&s.tagsCol.length?(e.openBlock(),e.createElementBlock("div",Js,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.tagsCol,l=>(e.openBlock(),e.createElementBlock("div",{key:l.name,class:"flex flex-wrap gap-1"},[i[l.name]?(e.openBlock(),e.createElementBlock("span",Ks,e.toDisplayString(i[`${l.name}_text`]||i[l.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Qs,[e.createElementVNode("div",Xs,[e.createElementVNode("a",{href:s.getItemLink(i),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md px-3 w-full bg-blue-600 hover:bg-blue-700 text-white text-xs h-8"}," Детальніше ",8,ei)])])])])}),128)}const Me={template1:Pa,template2:os,template3:bs,template4:Is,template5:F(vs,[["render",ti]])},oi={class:"space-y-4"},ni={class:"flex items-center gap-4 mb-2"},ri={class:"text-lg font-semibold mb-4"},li={key:1,class:"text-gray-400 text-center py-12"},ai={key:2,class:"text-gray-400 text-center py-12"},si=e.defineComponent({__name:"preview-tab",props:{data:{default:{}},dataModifiers:{}},emits:["update:data"],setup(t){const o=e.defineAsyncComponent(()=>import("@opengis/form")),n=e.useModel(t,"data"),r=[{text:"template1",id:"template1"},{text:"template2",id:"template2"},{text:"template3",id:"template3"},{text:"template4",id:"template4"},{text:"template5",id:"template5"}],m={view:{type:"select",label:"Вигляд",required:!0,options:r,col:12}},s=e.computed(()=>{var d;return Array.isArray((d=n.value)==null?void 0:d.columns)?n.value.columns:[]}),i=e.computed(()=>{var d;return console.log(n.value),((d=n.value)==null?void 0:d.view)||"template1"}),p=e.computed(()=>Me[i.value]||Me.template1),f=e.computed(()=>{var l;const d=(l=n.value)==null?void 0:l.view;if(!d)return"template1";const a=r.find(h=>h.id===d);return(a==null?void 0:a.text)||d}),c=e.computed(()=>(Array.isArray(n.value.rows)?n.value.rows:[]).slice(0,5));return(d,a)=>(e.openBlock(),e.createElementBlock("div",oi,[e.createElementVNode("div",ni,[e.createVNode(e.unref(o),{schema:m,modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=l=>n.value=l),class:"w-[220px]"},null,8,["modelValue"])]),e.createElementVNode("h2",ri," Превʼю таблиці ("+e.toDisplayString(f.value)+") ",1),p.value&&c.value.length&&s.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.value),{items:c.value,columns:s.value,path:"#",id_key:"id",key:i.value},null,8,["items","columns"])):c.value.length?(e.openBlock(),e.createElementBlock("div",ai," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",li," Немає даних для превʼю "))]))}}),ii={class:"relative min-h-svh flex-1 flex-col flex gap-4 bg-white p-8 overflow-y-auto"},ci={class:"max-w-6xl mx-auto"},di={class:"flex items-center justify-between mb-6"},mi={class:"flex items-center gap-2"},pi=["href"],fi={class:"w-full"},ui={class:"flex items-center w-full h-10 max-w-md grid-cols-3 p-1 mb-6 bg-white border border-gray-200 rounded-md text-muted-foreground"},gi=["onClick"],hi={__name:"register",setup(t){const o=ye.useRoute(),n=ye.useRouter(),r=e.ref("list"),m=e.ref(""),s=[{name:"List",id:"list"},{name:"Filters",id:"filters"},{name:"Card",id:"card"},{name:"Preview",id:"preview"}],i={list:Jl,filters:da,card:Ea,preview:si},p=s.map(a=>a.id),f=e.ref({}),c=async()=>{console.log(f.value);try{const a=await fetch(`/api/gis-registry/${o.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(f.value)});if(!a.ok)throw new Error(`Failed to save content: ${a.status}`);Z.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(a){Z.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(a)}},d=async()=>{try{const l=await(await fetch(`/api/gis-registry/${o.params.id}`)).json(),h=l;m.value=h.register_key||"",f.value=h,f.value.fields=Array.isArray(l==null?void 0:l.fields)?l.fields:[]}catch(a){console.error("Помилка завантаження даних:",a)}};return e.onMounted(async()=>{const a=o.query.tab;typeof a=="string"&&p.includes(a)&&(r.value=a),await d()}),e.watch(r,a=>{o.query.tab!==a&&n.replace({query:{...o.query,tab:a}})}),e.watch(()=>o.query.tab,a=>{typeof a=="string"&&p.includes(a)&&r.value!==a&&(r.value=a)}),(a,l)=>(e.openBlock(),e.createElementBlock("main",ii,[e.createElementVNode("div",null,[e.createElementVNode("div",ci,[e.createElementVNode("div",di,[l[1]||(l[1]=e.createElementVNode("div",null,[e.createElementVNode("h1",{class:"mb-2 text-2xl font-semibold text-gray-900"},"Створити контент"),e.createElementVNode("p",{class:"text-gray-600"},"Створити контент для вашого сайту")],-1)),e.createElementVNode("div",mi,[e.createElementVNode("a",{href:`/${e.unref(o).path.split("/")[1]}`,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border bg-background hover:text-accent-foreground h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"}," Повернутися ",8,pi),e.createElementVNode("button",{onClick:c,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-white rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-primary-foreground h-10 px-4 py-2 bg-blue-600 hover:bg-blue-700"}," Зберегти ")])]),e.createElementVNode("div",fi,[e.createElementVNode("div",ui,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(s,h=>e.createElementVNode("button",{key:h.id,onClick:u=>r.value=h.id,class:e.normalizeClass(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200",h.id===r.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(h.name),11,gi)),64))])]),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i[r.value]),{data:f.value,"onUpdate:data":l[0]||(l[0]=h=>f.value=h),key:r.value+"-"+(f.value.id||f.value.register_id||"")},null,40,["data"]))])])]))}},yi={},bi={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",class:"lucide lucide-settings"};function ki(t,o){return e.openBlock(),e.createElementBlock("svg",bi,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"12",r:"3"},null,-1)])])}const xi=F(yi,[["render",ki]]),wi={},_i={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",class:"lucide lucide-layers"};function Vi(t,o){return e.openBlock(),e.createElementBlock("svg",_i,[...o[0]||(o[0]=[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"},null,-1),e.createElementVNode("path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65"},null,-1),e.createElementVNode("path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65"},null,-1)])])}const Ei=F(wi,[["render",Vi]]),Bi={},Ni={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",class:"lucide lucide-eye"};function Ci(t,o){return e.openBlock(),e.createElementBlock("svg",Ni,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"12",r:"3"},null,-1)])])}const $i=F(Bi,[["render",Ci]]),Li={},Si={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",class:"lucide lucide-map"};function Fi(t,o){return e.openBlock(),e.createElementBlock("svg",Si,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z"},null,-1),e.createElementVNode("path",{d:"M15 5.764v15"},null,-1),e.createElementVNode("path",{d:"M9 3.236v15"},null,-1)])])}const ji=F(Li,[["render",Fi]]),Ii={},vi={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",class:"lucide lucide-filter"};function Di(t,o){return e.openBlock(),e.createElementBlock("svg",vi,[...o[0]||(o[0]=[e.createElementVNode("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"},null,-1)])])}const Ai=F(Ii,[["render",Di]]),Mi={class:"flex flex-col flex-1 overflow-hidden"},Ti={class:"flex flex-col flex-1 overflow-hidden"},zi={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},Pi={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},Ui=F(e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{}},emits:["update:styleYaml","update"],setup(t,{emit:o}){const n=t,r=o;function m(u){if(!u)return"";if(typeof u=="string")return u;try{return jsyaml.dump(u)}catch(y){return console.warn("Failed to stringify style YAML",y),""}}const s=e.ref(m(n.styleYaml)),i=e.ref("vs-light"),p=e.ref(null);let f=null,c=null;function d(){const u=m(n.styleYaml);u!==s.value&&(s.value=u,f&&u!==f.getValue()&&f.setValue(u))}e.watch(()=>n.token,()=>{d()}),e.watch(s,u=>{try{const y=u?jsyaml.load(u):null;JSON.stringify(y)!==JSON.stringify(n.styleYaml)&&r("update:styleYaml",y)}catch(y){console.warn("Invalid YAML:",y)}});function a(){return new Promise((u,y)=>{if(c)return u(c);if(window.monaco)return c=window.monaco,u(c);const g=k=>{if(Array.from(document.styleSheets).some(N=>{var V;return(V=N==null?void 0:N.href)==null?void 0:V.includes(k)}))return;const j=document.createElement("link");j.rel="stylesheet",j.href=k,document.head.appendChild(j)},b=k=>new Promise((B,j)=>{const N=document.createElement("script");N.src=k,N.onload=()=>B(),N.onerror=j,document.body.appendChild(N)});g("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),b("https://cdn.jsdelivr.net/npm/js-yaml@4.1.0/dist/js-yaml.min.js"),b("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/loader.min.js").then(()=>{window.require.config({paths:{vs:"https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs"}}),window.require(["vs/editor/editor.main"],()=>{c=window.monaco,u(c)})}).catch(y)})}function l(){!p.value||!c||(f&&f.dispose(),f=c.editor.create(p.value,{value:s.value,language:"yaml",theme:i.value,automaticLayout:!0,minimap:{enabled:!1}}),d(),f.onDidChangeModelContent(()=>{s.value=f.getValue()}))}e.onMounted(async()=>{await a(),l()});const h=async()=>{try{await fetch(`/api/gis-service/${n.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:s.value})}),r("update"),Z.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(u){Z.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(u)}};return(u,y)=>(e.openBlock(),e.createElementBlock("div",Mi,[e.createElementVNode("div",{class:"flex justify-end"},[e.createElementVNode("button",{onClick:h,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},[...y[0]||(y[0]=[e.createElementVNode("svg",{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",class:"lucide lucide-save h-3 w-3 mr-1"},[e.createElementVNode("path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}),e.createElementVNode("path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}),e.createElementVNode("path",{d:"M7 3v4a1 1 0 0 0 1 1h7"})],-1),e.createTextVNode(" Зберегти стилі ",-1)])])]),e.createElementVNode("div",Ti,[e.createElementVNode("div",zi,[y[1]||(y[1]=e.createElementVNode("div",{class:"bg-gradient-to-r from-gray-50 to-gray-100 px-4 py-2 border-b border-gray-200 flex items-center justify-between"},[e.createElementVNode("div",{class:"text-xs text-gray-400"},"YAML")],-1)),e.createElementVNode("div",Pi,[e.createElementVNode("div",{ref_key:"editorContainer",ref:p,class:"w-full h-full"},null,512)])])])]))}}),[["__scopeId","data-v-c9bb6aaa"]]),Oi={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},qi={role:"radiogroup",class:"grid grid-cols-3 gap-2"},Ri=["onClick"],Hi=["aria-checked","value"],Wi={key:0},Zi=e.defineComponent({__name:"view-mode-toggle",props:{modelValue:{},options:{}},emits:["update:modelValue"],setup(t,{emit:o}){const n=t,r=o,m=i=>r("update:modelValue",i),s=n.options||[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"}];return(i,p)=>(e.openBlock(),e.createElementBlock("div",Oi,[p[1]||(p[1]=e.createElementVNode("label",{class:"text-sm font-medium text-gray-600"},"Режим відображення",-1)),e.createElementVNode("div",qi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),f=>(e.openBlock(),e.createElementBlock("div",{key:f.value,onClick:c=>m(f.value),class:e.normalizeClass(["flex items-center justify-center space-x-2 rounded-lg p-2 border transition-all duration-300 cursor-pointer",[i.modelValue===f.value?"bg-gradient-to-r from-sky-200 to-blue-200 border-transparent shadow-sm":"bg-white border-gray-100 hover:border-sky-200 hover:shadow-sm"]])},[e.createElementVNode("button",{type:"button",role:"radio","aria-checked":i.modelValue===f.value,value:f.value,class:"aspect-square rounded-full border border-primary h-4 w-4 flex items-center justify-center text-sky-500"},[i.modelValue===f.value?(e.openBlock(),e.createElementBlock("span",Wi,[...p[0]||(p[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-circle h-2.5 w-2.5 fill-current text-current"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"})],-1)])])):e.createCommentVNode("",!0)],8,Hi),e.createElementVNode("label",{class:e.normalizeClass(["text-xs font-medium cursor-pointer",i.modelValue===f.value?"text-gray-700":"text-gray-600"])},e.toDisplayString(f.label),3)],10,Ri))),128))])]))}}),Yi={class:"flex justify-between mb-3 gap-2"},Gi=["disabled"],Ji={class:"p-4 text-[13px]"},Ki={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Qi=["id","value"],Xi={class:"flex-1 min-w-0 flex items-center gap-2"},ec={class:"font-medium text-gray-900 truncate"},tc={class:"text-xs text-gray-500"},oc={class:"flex justify-end gap-2 p-4 border-t w-full"},we=e.defineComponent({__name:"vs-tab-manager",props:{mapInfo:{},token:{},fields:{},sectionKey:{},columnsScheme:{},formScheme:{},dialogTitle:{},saveButtonLabel:{},importMapper:{type:Function},withViewMode:{type:Boolean}},emits:["update","update:columns"],setup(t,{emit:o}){const n=e.defineAsyncComponent(()=>import("@opengis/core").then(a=>a.VsModal)),r=e.ref("list"),m=t,s=o,i=e.ref([]),p=e.ref(!1),f=e.ref([]);e.watch(()=>{var a;return(a=m.mapInfo)==null?void 0:a[m.sectionKey]},a=>{i.value=Array.isArray(a)?[...a]:[],s("update:columns",i.value)},{immediate:!0}),e.watch(p,a=>{if(a){const l=i.value.map(h=>h.name||h.id);f.value=[...l]}});function c(){i.value=m.importMapper(m.fields,f.value,i.value),s("update:columns",i.value),p.value=!1,f.value=[]}async function d(){if(m.token)try{let a=[];if(r.value==="all"?a=[...m.fields]:r.value==="none"?a=[]:a=i.value,!(await fetch(`/api/table/${m.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({[m.sectionKey]:a})})).ok)throw new Error("Save failed");s("update"),Z.notify({type:"success",title:"Успіх",message:`${m.sectionKey} saved`})}catch(a){Z.notify({type:"error",title:"Помилка",message:`Failed to save ${m.sectionKey}`}),console.error(a)}}return(a,l)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Yi,[e.createElementVNode("button",{onClick:l[0]||(l[0]=h=>p.value=!0),disabled:a.withViewMode&&r.value!=="list",class:e.normalizeClass([a.withViewMode&&r.value!=="list"?"":"hover:from-gray-600 hover:to-gray-500","inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium bg-gradient-to-r from-gray-500 to-gray-400 text-white h-9 px-4 py-2 disabled:bg-gray-300 disabled:text-gray-500 disabled:cursor-not-allowed disabled:opacity-70"])},[...l[6]||(l[6]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])],10,Gi),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"},[l[7]||(l[7]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"h-3 w-3 mr-1"},[e.createElementVNode("path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}),e.createElementVNode("path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}),e.createElementVNode("path",{d:"M7 3v4a1 1 0 0 0 1 1h7"})],-1)),e.createTextVNode(" "+e.toDisplayString(a.saveButtonLabel),1)])]),a.withViewMode?(e.openBlock(),e.createBlock(Zi,{key:0,modelValue:r.value,"onUpdate:modelValue":l[1]||(l[1]=h=>r.value=h),class:"mb-2"},null,8,["modelValue"])):e.createCommentVNode("",!0),!a.withViewMode||r.value==="list"?(e.openBlock(),e.createBlock(xe,{key:1,modelValue:i.value,"onUpdate:modelValue":l[2]||(l[2]=h=>i.value=h),"columns-scheme":a.columnsScheme,"form-scheme":a.formScheme,"main-col-width":"250px","add-button":!1},null,8,["modelValue","columns-scheme","form-scheme"])):e.createCommentVNode("",!0),e.createVNode(e.unref(n),{visible:p.value,"onUpdate:visible":l[5]||(l[5]=h=>p.value=h),title:a.dialogTitle,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",oc,[e.createElementVNode("button",{onClick:l[4]||(l[4]=h=>p.value=!1),class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{onClick:c,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Імпортувати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",Ji,[e.createElementVNode("div",Ki,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.fields,h=>(e.openBlock(),e.createElementBlock("label",{key:h.name,class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",id:"import-"+h.name,"onUpdate:modelValue":l[3]||(l[3]=u=>f.value=u),value:h.name},null,8,Qi),[[e.vModelCheckbox,f.value]]),e.createElementVNode("div",Xi,[e.unref(fe)(h.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(pe)(h.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${h.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",ec,e.toDisplayString(h.name),1),e.createElementVNode("p",tc,e.toDisplayString(h.title),1)])])]))),128))])])]),_:1},8,["visible","title"])],64))}}),nc=e.defineComponent({__name:"vs-tab-popup",props:{mapInfo:{},token:{},fields:{},filters:{},filterFields:{},styleYaml:{},popupFields:{},filterScheme:{}},emits:["update","update:styleYaml","update:popupFields","update:filterScheme","update:cardFields","update:legend"],setup(t,{emit:o}){const n=o,r=[{key:"name",label:"Name"},{key:"ua",label:"UA"},{key:"format",label:"Format"},{key:"meta",label:"Meta"}],m={name:{type:"text",label:"Name",disabled:!0,validators:["required"]},ua:{type:"text",label:"UA",validators:["required"]},format:{type:"text",label:"Format",disabled:!0},meta:{type:"combobox",label:"Meta",mode:"combo",options:[{text:"Title",id:"title"},{text:"Image",id:"image"},{text:"Badge",id:"badge"}]}};function s(i,p,f){return i.filter(c=>p.includes(c.name)).map(c=>{const d=f.find(a=>a.name===c.name);return{name:c.name,ua:c.title,format:c.format||"text",meta:(d==null?void 0:d.meta)||c.meta,...c}})}return(i,p)=>(e.openBlock(),e.createBlock(we,{"map-info":i.mapInfo,token:i.token,fields:i.fields,"section-key":"popup","columns-scheme":r,"form-scheme":m,"dialog-title":"Імпорт колонок","save-button-label":"Зберегти попап","import-mapper":s,onUpdate:p[0]||(p[0]=f=>n("update")),"onUpdate:columns":p[1]||(p[1]=f=>n("update:popupFields",f)),"with-view-mode":""},null,8,["map-info","token","fields"]))}}),rc=e.defineComponent({__name:"vs-tab-legend",props:{mapInfo:{},token:{},fields:{},filters:{},filterFields:{},styleYaml:{},popupFields:{},filterScheme:{}},emits:["update","update:styleYaml","update:popupFields","update:filterScheme","update:cardFields","update:legend"],setup(t,{emit:o}){const n=o;let r=[];const m=[{key:"name",label:"Назва"},{key:"color",label:"Колір",type:"color"}],s={name:{type:"text",label:"Назва",validators:["required"]},color:{type:"color",label:"Колір",validators:["required"]}};function i(p,f,c){return c}return(p,f)=>(e.openBlock(),e.createBlock(we,{"map-info":p.mapInfo,token:p.token,fields:[],"section-key":"legend","columns-scheme":m,"form-scheme":s,"dialog-title":"Імпорт легенди","save-button-label":"Зберегти легенду","import-mapper":i,onUpdate:f[0]||(f[0]=c=>n("update")),"onUpdate:columns":f[1]||(f[1]=c=>e.isRef(r)?r.value=c:r=c)},null,8,["map-info","token"]))}}),lc=e.defineComponent({__name:"vs-tab-card",props:{mapInfo:{},token:{},fields:{},filters:{},filterFields:{},styleYaml:{},popupFields:{},filterScheme:{}},emits:["update","update:styleYaml","update:popupFields","update:filterScheme","update:cardFields","update:legend"],setup(t,{emit:o}){const n=o;let r=[];const m=[{key:"name",label:"Name"},{key:"ua",label:"UA"},{key:"format",label:"Format"},{key:"meta",label:"Мета"}],s={name:{type:"text",label:"Name",validators:["required"],disabled:!0},ua:{type:"text",label:"UA",validators:["required"]},format:{type:"combobox",label:"Format",mode:"combo",validators:["required"],options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},meta:{type:"combobox",label:"Мета",validators:["required"],mode:"combo",options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"}]}};function i(p,f,c){return p.filter(d=>f.includes(d.name)).map(d=>({name:d.name,ua:d.title,format:d.format||"text",meta:d.meta||"title"}))}return(p,f)=>(e.openBlock(),e.createBlock(we,{"map-info":p.mapInfo,token:p.token,fields:p.fields,"section-key":"card","columns-scheme":m,"form-scheme":s,"dialog-title":"Імпорт полів картки","save-button-label":"Зберегти картку","import-mapper":i,onUpdate:f[0]||(f[0]=c=>n("update")),"onUpdate:columns":f[1]||(f[1]=c=>e.isRef(r)?r.value=c:r=c),"with-view-mode":""},null,8,["map-info","token","fields"]))}}),ac=e.defineComponent({__name:"vs-tab-filter",props:{mapInfo:{},token:{},fields:{},filters:{},filterFields:{},styleYaml:{},popupFields:{},filterScheme:{}},emits:["update","update:styleYaml","update:popupFields","update:filterScheme","update:cardFields","update:legend"],setup(t,{emit:o}){const n=o,r=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],m={id:{type:"text",label:"Name",disabled:!0,validators:["required"]},label:{type:"text",label:"UA",validators:["required"]},type:{type:"combobox",label:"Тип",validators:["required"],mode:"combo",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Autocomplete",id:"autocomplete"}]}};function s(i,p,f){return i.filter(c=>p.includes(c.name)).map(c=>({id:c.name,label:c.title,type:c.type||"text"}))}return(i,p)=>(e.openBlock(),e.createBlock(we,{"map-info":i.mapInfo,token:i.token,fields:i.fields,"section-key":"filters","columns-scheme":r,"form-scheme":m,"dialog-title":"Імпорт фільтрів","save-button-label":"Зберегти фільтри","import-mapper":s,onUpdate:p[0]||(p[0]=f=>n("update")),"onUpdate:columns":p[1]||(p[1]=f=>n("update:filterFields",f))},null,8,["map-info","token","fields"]))}}),Te=Symbol("MapContext");function sc(t){const o=e.shallowRef(null),n=e.ref(!1);let r=!1;const m=[],s=()=>{r=!0,m.length&&m.forEach(a=>a())},i=()=>{const a=t.container;return typeof a=="string"?document.getElementById(a):(a==null?void 0:a.value)!==void 0?a.value:a},p=()=>r?Promise.resolve():new Promise(a=>m.push(a)),f=async()=>{var l,h,u,y;if(typeof window>"u"||o.value)return;const a=i();if(!a)throw new Error("Map container not found");o.value=new maplibregl.Map({...t.mapOptions||{},center:[30,50],zoom:7,container:a}),(l=t.controls)!=null&&l.navigation&&o.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(h=t.controls)!=null&&h.scale&&o.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(u=t.controls)!=null&&u.fullscreen&&o.value.addControl(new maplibregl.FullscreenControl,"top-right"),(y=t.controls)!=null&&y.geolocate&&o.value.addControl(new maplibregl.GeolocateControl(typeof t.controls.geolocate=="object"?t.controls.geolocate:{}),"top-right"),o.value.once("load",()=>{n.value=!0,s()})},c=()=>{o.value&&(o.value.remove(),o.value=null,n.value=!1)};e.onMounted(f),e.onUnmounted(c);const d={map:o,ready:p,flyTo:a=>{var l;return(l=o.value)==null?void 0:l.flyTo(a)},fitBounds:(a,l)=>{var h;return(h=o.value)==null?void 0:h.fitBounds(a,l)},setCenter:a=>{var l;return(l=o.value)==null?void 0:l.setCenter(a)},setZoom:a=>{var l;return(l=o.value)==null?void 0:l.setZoom(a)},addControl:(a,l)=>{var h;return(h=o.value)==null?void 0:h.addControl(a,l)},removeControl:a=>{var l;return(l=o.value)==null?void 0:l.removeControl(a)},on:(a,l,h)=>{var u,y;return typeof l=="string"?((u=o.value)==null||u.on(a,l,h),()=>{var g;return(g=o.value)==null?void 0:g.off(a,l,h)}):((y=o.value)==null||y.on(a,l),()=>{var g;return(g=o.value)==null?void 0:g.off(a,l)})},off:(a,l,h)=>{var u,y;typeof l=="string"?(u=o.value)==null||u.off(a,l,h):(y=o.value)==null||y.off(a,l)},project:a=>{var l;return(l=o.value)==null?void 0:l.project(a)},unproject:a=>{var l;return(l=o.value)==null?void 0:l.unproject(a)}};return e.provide(Te,d),d}function ge(){const t=e.inject(Te);if(!t)throw new Error("useMap() called outside of a Map provider");return t}const ic=e.defineComponent({__name:"MapView",setup(t,{expose:o}){const n=e.ref(null),r=sc({container:n,mapOptions:{style:{version:8,sources:{},layers:[]},center:[30.5234,50.4501],zoom:9},controls:{navigation:!0,scale:!0}});return o({ctx:r}),(m,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{ref_key:"el",ref:n,class:"w-full h-full rounded-xl overflow-hidden"},null,512),e.renderSlot(m.$slots,"default")],64))}});function cc(t){const o=t.colorAttr&&t.colors?["match",["get",t.colorAttr],...Object.entries(t.colors).reduce((n,r)=>n.concat(r),[]),"#94a3b8"]:null;return{type:"circle",paint:{"circle-stroke-color":(t==null?void 0:t.stroke)||"#fff","circle-opacity":t.opacity||1,"circle-color":o||t.color,"circle-stroke-width":t.width,"circle-radius":t.radius||5}}}function dc(t){return{type:"fill",paint:{"fill-color":t.color,"fill-opacity":t.opacity||.3,"fill-outline-color":t.stroke}}}function mc(t){return{type:"line",paint:{"line-color":t.color,"line-opacity":t.opacity||.3,"line-width":t.width||1.5}}}function ze(t){return t?t.type==="polygon"?dc(t):t.type==="line"?mc(t):cc(t):{}}function Pe(t,o){const{map:n,ready:r,on:m}=ge(),s=o.layer.id||t,i=o.sourceId??(typeof o.layer.source=="string"?o.layer.source:t);o.source&&(!o.layer.source||typeof o.layer.source!="string")&&(o.layer.source=i);let p=!1,f=!1;const c=()=>{var N,V;if(!(f||!n.value)){if(o.source&&!n.value.getSource(i)&&n.value.addSource(i,o.source),!n.value.getLayer(s)){const z=o.beforeId===0?(V=(N=n.value.getStyle().layers)==null?void 0:N[0])==null?void 0:V.id:o.beforeId,O=ze(o.layer.style);Object.assign(o.layer,O),n.value.addLayer(o.layer,z)}p=!0}};r().then(c);const d=m("style.load",c);function a(N){n.value&&n.value.setLayoutProperty(s,"visibility",N?"visible":"none")}function l(N){var O;if(!n.value)return;const V=ze(N),z=(O=n.value.getLayer(s))==null?void 0:O.type;if(V.type!==z){n.value.removeLayer(s),n.value.addLayer({...o.layer,...V});return}V.paint&&h(V.paint)}function h(N){n.value&&Object.entries(N).forEach(([V,z])=>n.value.setPaintProperty(s,V,z))}function u(N){n.value&&Object.entries(N).forEach(([V,z])=>n.value.setLayoutProperty(s,V,z))}function y(N){n.value&&n.value.setFilter(s,N)}function g(N){if(!n.value)return;const V=n.value.getSource(i);V&&"setTiles"in V&&V.setTiles(N)}function b(N){if(!n.value)return;const V=n.value.getSource(i);V&&"setData"in V&&V.setData(N)}function k(N,V){n.value&&n.value.setFeatureState({source:i,...N},V)}function B(N,V){n.value&&n.value.removeFeatureState({source:i,...N},V?{key:V}:void 0)}function j(){!n.value||f||(n.value.getLayer(s)&&n.value.removeLayer(s),o.source&&n.value.getSource(i)&&n.value.removeSource(i),f=!0,d())}return e.onBeforeUnmount(j),{ids:{layerId:s,sourceId:i},isMounted:()=>{var N;return p&&!!((N=n.value)!=null&&N.getLayer(s))},setVisible:a,updatePaint:h,updateLayout:u,updateFilter:y,setData:b,setTiles:g,setStyle:l,setFeatureState:k,removeFeatureState:B,remove:j,getSource:()=>{var N;return(N=n.value)==null?void 0:N.getSource(i)},getLayer:()=>{var N;return(N=n.value)==null?void 0:N.getLayer(s)}}}const pc={class:"flex flex-row gap-x-3 z-10 relative widget"},fc=["onClick"],uc=["src","alt"],gc=e.defineComponent({__name:"MapLayersPanel",setup(t){const o={gki:{url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/voyager/ua/12/2422/1400.png",title:"Базова карта (voyager)"},arcgisonline:{url:"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.png",preview:"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/7/47/69.png",title:"ESRI Online Imagery(2022-2023)"},none:{}},n=e.ref("gki"),r=Pe("base",{source:{type:"raster",tiles:[o[n.value].url]},layer:{id:"base",type:"raster",source:"base"},beforeId:0});function m(s){if(n.value=s,!o[s].url)return r.setVisible(!1);r.setVisible(!0),r.setTiles([o[s].url])}return(s,i)=>(e.openBlock(),e.createElementBlock("div",pc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(p,f)=>e.createElementVNode("div",{key:f,onClick:c=>m(f)},[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===f?"border-blue-500":"border-gray-200"])},[p.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:p.preview,alt:p.title,class:"object-cover rounded-lg w-12 h-12"},null,8,uc)):e.createCommentVNode("",!0)],2)],8,fc)),64))]))}}),hc={key:0,class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget",style:{width:"100%"}},yc={class:"flex flex-col gap-1 p-5"},bc={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},kc=e.defineComponent({__name:"MapLegend",props:{items:{}},setup(t){const o=t,{map:n,ready:r}=ge(),m=e.ref([]);let s=null;function i(d){return d?d.map((a,l)=>{var y;const h=(a==null?void 0:a.name)||(a==null?void 0:a.label)||(a==null?void 0:a.title)||(a==null?void 0:a.id)||`Layer ${l+1}`,u=(a==null?void 0:a.color)||(a==null?void 0:a.fill)||((y=a==null?void 0:a.paint)==null?void 0:y.color)||"#3388ff";return{id:`${h}-${l}`,label:h,color:u}}):[]}function p(d){return d!=null&&d.layers?d.layers.filter(a=>{const l=a.paint||{};return l["fill-color"]||l["line-color"]||l["circle-color"]}).map((a,l)=>{var y;const h=a.paint||{},u=h["fill-color"]||h["line-color"]||h["circle-color"]||"#3388ff";return{id:a.id||`layer-${l}`,label:((y=a.metadata)==null?void 0:y.title)||a.id||`Layer ${l+1}`,color:u}}):[]}async function f(){var l;await r();const d=n.value;if(!d)return;const a=(l=d.getStyle)==null?void 0:l.call(d);m.value=p(a)}function c(){const d=n.value;if(!d)return;s==null||s();const a=()=>f();d.on("styledata",a),s=()=>d.off("styledata",a)}return e.watch(()=>o.items,async d=>{d!=null?(m.value=i(d),s==null||s()):(await r(),c(),f())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(o.items===void 0||o.items===null)&&(await r(),c(),f())}),e.onBeforeUnmount(()=>{s==null||s(),s=null}),(d,a)=>m.value.length?(e.openBlock(),e.createElementBlock("div",hc,[e.createElementVNode("div",yc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:"flex items-center"},[e.createElementVNode("span",{class:"shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px] rounded-full",style:e.normalizeStyle({background:l.color})},null,4),e.createElementVNode("span",bc,[e.createElementVNode("span",null,e.toDisplayString(l.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function xc(){const{map:t,ready:o}=ge(),n=e.ref(null),r=e.ref(null),m=e.ref(null);let s=null,i=null,p=null;function f(u){return u.map(y=>{if(typeof y=="string")return{key:y,label:y};const g=(y==null?void 0:y.name)||(y==null?void 0:y.field);if(!g)return null;const b=(y==null?void 0:y.label)||(y==null?void 0:y.ua)||(y==null?void 0:y.title)||g;return{key:g,label:b}}).filter(y=>!!(y&&y.key))}function c(u,y){var b;const g=(b=u==null?void 0:u.getCanvas)==null?void 0:b.call(u);g&&(g.style.cursor=y??"")}function d(u){s&&(u==null||u.off("mousemove",s),s=null),i&&(u==null||u.off("mouseleave",i),u==null||u.off("mouseout",i),i=null),c(u,null)}function a(u){if(!u.length)return null;if(!p)return u[0];const y=g=>{var b;if(p!=null&&p.layerIds&&p.layerIds.length){const k=(b=g.layer)==null?void 0:b.id;if(!k||!p.layerIds.includes(String(k)))return!1}return!(p!=null&&p.sourceId&&String(g.source)!==p.sourceId)};return u.find(y)||null}async function l(u,y){var k;await o();const g=t.value;if(!g)return;const b=f(u);if(d(g),p=y?{...y,sourceId:y.sourceId!==void 0?String(y.sourceId):void 0,layerIds:(k=y.layerIds)==null?void 0:k.map(B=>String(B))}:null,!b.length){n.value=null,r.value=null;return}s=B=>{var z;if((z=B==null?void 0:B.originalEvent)!=null&&z.buttons)return;const j=g.queryRenderedFeatures(B.point),N=a(j);if(!N){n.value=null,r.value=null,m.value=null,c(g,null);return}const V=N.properties||{};r.value=[B.point.x,B.point.y],n.value=b.map(O=>({field:O.label,value:V[O.key]})),m.value=N,c(g,"default")},i=()=>{n.value=null,r.value=null,m.value=null,c(g,null)},g.on("mousemove",s),g.on("mouseleave",i),g.on("mouseout",i)}function h(){const u=t.value;u&&d(u),p=null,n.value=null,r.value=null,m.value=null}return{popupContent:n,popupCoords:r,popupFeature:m,enable:l,disable:h}}const wc={class:"popup-card relative w-full overflow-hidden rounded-2xl border border-blue-100 bg-white/95 shadow-2xl backdrop-blur-sm"},_c={key:0,class:"popup-image-single overflow-hidden"},Vc=["src"],Ec={key:1,class:"border-b border-gray-200 px-3 py-2 text-sm font-semibold text-gray-800"},Bc={class:"px-3 py-2 text-xs text-gray-600"},Nc={class:"w-full border-collapse"},Cc={class:"w-1/2 break-words pb-1 pr-2 font-medium text-gray-700"},$c={class:"w-1/2 break-words pb-1 pl-2 text-right"},Lc={key:0,class:"inline-block rounded px-2 py-0.5 text-xs font-semibold text-yellow-800",style:{"background-color":"rgba(250, 204, 21, 0.25)"}},Sc={key:1},Fc=F(e.defineComponent({__name:"MapPopup",props:{fields:{},sourceId:{}},setup(t){const o=t,{popupContent:n,popupCoords:r,popupFeature:m,enable:s,disable:i}=xc(),p=e.ref(null),f=e.ref({left:"-9999px",top:"-9999px"}),c=e.computed(()=>o.fields??[]),d=e.computed(()=>!!(n.value&&n.value.length)),a=e.computed(()=>{var g;return((g=m.value)==null?void 0:g.properties)??{}}),l=e.computed(()=>c.value.filter(g=>g.meta==="image").map(g=>{var b;return(b=a.value)==null?void 0:b[g.name||g.field||""]}).filter(g=>!!g)),h=e.computed(()=>{var B;const g=c.value.find(j=>j.meta==="title");if(!g)return"";const b=g.name||g.field;return(b?(B=a.value)==null?void 0:B[b]:void 0)??""}),u=e.computed(()=>c.value.filter(g=>g.meta!=="image").filter(g=>g.meta!=="title").map(g=>{var j;const b=g.name||g.field,B=(b?(j=a.value)==null?void 0:j[b]:void 0)??"—";return{key:b||String(g.label||g.ua||Math.random()),label:g.ua||g.label||g.title||b||"",display:B,meta:g.meta}}).filter(g=>g.label));function y(){if(!d.value||!r.value||!p.value){f.value={left:"-9999px",top:"-9999px"};return}const g=p.value;g.offsetWidth,g.offsetHeight;const b=r.value[0]+18,k=r.value[1]+18;f.value={left:`${b}px`,top:`${k}px`}}return e.watch(()=>({fields:o.fields,sourceId:o.sourceId}),({fields:g,sourceId:b})=>{const k=typeof b=="number"?String(b):b||void 0;g&&g.length?s(g,{sourceId:k}).catch(B=>console.error("Failed to enable popup",B)):i()},{immediate:!0,deep:!0}),e.watch([r,n],()=>{e.nextTick(()=>y())}),e.onBeforeUnmount(()=>{i()}),(g,b)=>d.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:p,class:"absolute z-30 w-[280px] pointer-events-none text-gray-800",style:e.normalizeStyle(f.value)},[e.createElementVNode("div",wc,[l.value.length?(e.openBlock(),e.createElementBlock("div",_c,[e.createElementVNode("img",{src:l.value[0],alt:"popup preview",class:"h-40 w-full object-cover"},null,8,Vc)])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createElementBlock("div",Ec,e.toDisplayString(h.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Bc,[e.createElementVNode("table",Nc,[e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,k=>(e.openBlock(),e.createElementBlock("tr",{key:k.key,class:"align-top"},[e.createElementVNode("td",Cc,e.toDisplayString(k.label),1),e.createElementVNode("td",$c,[k.meta==="badge"?(e.openBlock(),e.createElementBlock("span",Lc,e.toDisplayString(k.display),1)):(e.openBlock(),e.createElementBlock("span",Sc,e.toDisplayString(k.display),1))])]))),128))])])])])],4)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-fc0a86c1"]]),jc=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleYaml:{}},setup(t){var a;const{map:o,flyTo:n}=ge(),r=t,m=`${location.origin}/api/vtile/${r.id}/ua/{z}/{x}/{y}.vmt`,s=Pe("pois",{source:{type:"vector",tiles:[m],minzoom:0,maxzoom:14},layer:{id:"pois",source:"pois","source-layer":r.id,style:(a=r.layer)==null?void 0:a.style}});n({center:[34.4924,48.45658],animate:!1});let i=null;function p(){i&&clearTimeout(i),i=setTimeout(()=>{i=null,d().catch(l=>console.error("Failed to update map layer",l))},300)}async function f(l){return(await fetch(`/api/gis-service/${r.id}/${l}`).then(u=>u.json())).rows}const c=["#440154","#482878","#3e4989","#31688e","#26828e","#1f9e89","#35b779","#6ece58","#b5de2b","#fde725"];async function d(){if(o.value){if(r.styleYaml.colorAttr){const h=await f(r.styleYaml.colorAttr);r.styleYaml.colors=h.reduce((u,y,g)=>({...u,[y.id.toString()]:c[g]}),{})}s.setStyle(r.styleYaml)}}return e.watch(()=>r.styleYaml,p),e.onBeforeUnmount(()=>{s.remove()}),(l,h)=>null}});function Ic(t,o){return t||o||null}function vc(t){const{map:o,ready:n}=ge(),r=e.ref(""),m=e.computed(()=>typeof t=="function"?t()??null:t??null);async function s(f,c){return f.getSource(c)?f.getSource(c):new Promise(d=>{const a=l=>{if(l.sourceId===c){const h=f.getSource(c);h&&(f.off("sourcedata",a),d(h))}};f.on("sourcedata",a)})}async function i(f,c){var g,b,k;const d=Ic(c,m.value);if(!d)return;await n();const a=o.value;if(!a)return;const l=a.getSource(d)??await s(a,d);if(!l)return;const h=Array.isArray(l.tiles)?l.tiles:Array.isArray((g=l.options)==null?void 0:g.tiles)?l.options.tiles:void 0;if(!h||h.length===0)return;const u=String(h[0]).split("?filter=")[0];if(!u)return;const y=f?`${u}?filter=${encodeURIComponent(f)}`:u;typeof l.setTiles=="function"?l.setTiles([y]):Array.isArray(l.tiles)?l.tiles=[y]:Array.isArray((b=l.options)==null?void 0:b.tiles)&&(l.options.tiles=[y]),r.value=f,(k=a.triggerRepaint)==null||k.call(a)}async function p(f){await i("",f)}return{filter:r,setFilter:i,clearFilter:p}}const Dc=F(e.defineComponent({__name:"MapFilter",props:{layerId:{},position:{},class:{}},emits:["change"],setup(t,{expose:o,emit:n}){const r=t,m=n,s=e.computed(()=>r.position??"top-right"),i=e.computed(()=>{if(s.value==="custom")return"";const u="absolute pointer-events-none z-30";switch(s.value){case"top-left":return`${u} top-4 left-4`;case"bottom-left":return`${u} bottom-4 left-4`;case"bottom-right":return`${u} bottom-4 right-4`;default:return`${u} top-4 right-4`}}),p=e.computed(()=>[i.value,r.class].filter(Boolean).join(" ")),f=()=>r.layerId??null,{setFilter:c,clearFilter:d,filter:a}=vc(f);async function l(u){await c(u),m("change",u)}async function h(u){await d(u),m("change","")}return e.watch(()=>r.layerId,u=>{u&&(a.value?c(a.value,u):d(u))}),o({apply:l,clear:h,filter:a}),(u,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(p.value)},[e.renderSlot(u.$slots,"default",{applyFilter:l,clearFilter:h,filter:e.unref(a)})],2))}}),[["__scopeId","data-v-54fdbad9"]]),Ac={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Mc={class:"flex-1 relative overflow-hidden"},Tc={class:"absolute top-0 left-0 w-full z-20"},zc={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},Pc={class:"flex items-center gap-3"},Uc={class:"font-semibold text-lg text-gray-800 line-clamp-1"},Oc={class:"text-xs text-gray-500 truncate"},qc=["title"],Rc={class:"w-full h-full bg-gradient-to-br from-sky-50 via-white to-blue-50 flex items-center justify-center relative pt-[64px]"},Hc={class:"relative w-full h-full"},Wc={class:"absolute top-4 left-4 z-20"},Zc={class:"absolute bottom-4 left-4 z-20"},Yc={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},Gc={class:"flex-1 flex flex-col h-full"},Jc={class:"px-3 pt-3 pb-2 border-b border-gray-100"},Kc={class:"items-center justify-center text-muted-foreground grid w-full grid-cols-6 h-12 p-1 bg-gray-50 rounded-xl shadow-sm"},Qc=["aria-selected","aria-controls","id","tabindex","onClick"],Xc={class:"leading-none"},ed={class:"flex flex-col flex-1 overflow-y-hidden p-3"},td={__name:"service",setup(t){const o=ye.useRoute(),n=ye.useRouter(),r=o.params.id,m=e.ref(null),s=e.ref([]),i=e.ref(null),p=e.ref(""),f=e.ref([]),c=e.ref([]),d=e.computed(()=>{var g,b;return((g=i.value)==null?void 0:g.id)??((b=i.value)==null?void 0:b.service_id)??null}),a=[{key:"style",label:"Style",icon:xi},{key:"popup",label:"Popup",icon:ji},{key:"filter",label:"Filter",icon:Ai},{key:"legend",label:"Legend",icon:Ei},{key:"card",label:"Card",icon:$i}],l=a.map(g=>g.key),h=e.ref("style");e.onMounted(async()=>{const g=o.query.tab;g&&l.includes(g)&&(h.value=g),await u()}),e.watch(h,g=>{o.query.tab!==g&&n.replace({query:{...o.query,tab:g}})}),e.watch(()=>o.query.tab,g=>{g&&l.includes(g)&&h.value!==g&&(h.value=g)});const u=async()=>{var g,b;try{const k=await fetch(`/api/gis-service/${r}`);if(!k.ok)throw new Error(`${k.status}`);const B=await k.json();s.value=B||{},f.value=[...B.popup],m.value=((g=B==null?void 0:B.tokens)==null?void 0:g.edit)||null,i.value=B||null,p.value=B.style||"",f.value=Array.isArray((b=i.value)==null?void 0:b.popup)?[...i.value.popup]:[]}catch(k){console.error("Failed to fetch map info",k)}try{const B=await(await fetch(`/api/data/gis.services.table/${r}`)).json()}catch(k){console.error("Failed to fetch map info",k)}};e.watch(()=>{var g;return(g=i.value)==null?void 0:g.style},g=>{g?typeof g=="string"?p.value=g:p.value=JSON.parse(JSON.stringify(g)):p.value=""},{deep:!0});const y={style:Ui,popup:nc,legend:rc,card:lc,filter:ac};return(g,b)=>{var k,B,j,N;return e.openBlock(),e.createElementBlock("div",Ac,[e.createElementVNode("div",Mc,[e.createElementVNode("div",Tc,[e.createElementVNode("div",zc,[e.createElementVNode("div",Pc,[e.createElementVNode("button",{onClick:b[0]||(b[0]=V=>g.$router.back()),class:"inline-flex items-center px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition"},[...b[4]||(b[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1),e.createTextVNode(" Назад ",-1)])]),e.createElementVNode("div",null,[e.createElementVNode("div",Uc,e.toDisplayString((k=i.value)==null?void 0:k.name),1),e.createElementVNode("div",Oc," Сервіс: "+e.toDisplayString((B=i.value)==null?void 0:B.service_key),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:(j=i.value)==null?void 0:j.description},e.toDisplayString((N=i.value)==null?void 0:N.description),9,qc)])]),e.createElementVNode("div",Rc,[e.createElementVNode("div",Hc,[e.createVNode(ic,null,{default:e.withCtx(()=>{var V,z,O;return[(V=i.value)!=null&&V.service_id?(e.openBlock(),e.createBlock(jc,{key:0,id:(z=i.value)==null?void 0:z.service_id,layer:i.value,"style-yaml":p.value},null,8,["id","layer","style-yaml"])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createBlock(Dc,{key:1,"layer-id":d.value},null,8,["layer-id"])):e.createCommentVNode("",!0),e.createElementVNode("div",Wc,[e.createVNode(gc)]),e.createElementVNode("div",Zc,[e.createVNode(kc,{items:((O=i.value)==null?void 0:O.legend)||null},null,8,["items"])]),e.createVNode(Fc,{fields:f.value,"source-id":d.value},null,8,["fields","source-id"])]}),_:1})])])]),e.createElementVNode("div",Yc,[e.createElementVNode("div",Gc,[e.createElementVNode("div",Jc,[e.createElementVNode("div",Kc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,V=>e.createElementVNode("button",{key:V.key,type:"button",role:"tab","aria-selected":h.value===V.key,"aria-controls":`radix-r0-content-${V.key}`,id:`radix-r0-trigger-${V.key}`,class:e.normalizeClass(["whitespace-nowrap ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 flex flex-col items-center justify-center gap-0.5 py-1 px-1 text-[9px] font-medium transition-all duration-300 hover:bg-white/70 rounded-lg group",h.value===V.key?"bg-white shadow-sm text-gray-700":""]),tabindex:h.value===V.key?0:-1,onClick:z=>h.value=V.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(V.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Xc,e.toDisplayString(V.label),1)],10,Qc)),64))])]),e.createElementVNode("div",ed,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(y[h.value]),{"map-info":i.value,token:d.value,fields:s.value.fields,"filter-fields":s.value.filters,"style-yaml":p.value,"onUpdate:styleYaml":b[1]||(b[1]=V=>p.value=V),"popup-fields":f.value,"onUpdate:popupFields":b[2]||(b[2]=V=>f.value=V),"filter-scheme":c.value,"onUpdate:filterScheme":b[3]||(b[3]=V=>c.value=V),onUpdate:u},null,40,["map-info","token","fields","filter-fields","style-yaml","popup-fields","filter-scheme"]))])])])])}}};function od(t){t.component("MapCustom",Be)}W.MapCustom=Be,W.Register=hi,W.Service=td,W.default=Be,W.install=od,Object.defineProperties(W,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
78
|
+
*/const Bl=Re("trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]]),Cl={class:"flex items-center justify-end col-span-3 gap-2"},Nl={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},$l=e.defineComponent({__name:"vs-datatable-controls",props:e.mergeModels({index:{},data:{},scheme:{}},{columns:{type:Array,default:()=>[]},columnsModifiers:{}}),emits:["update:columns"],setup(t){const o=e.defineAsyncComponent(()=>import("@opengis/form")),n=e.defineAsyncComponent(()=>import("@opengis/core").then(m=>m.VsModal)),r=t,i=e.useModel(t,"columns"),l=e.ref(!1),c=e.ref({}),f=e.ref({...r.data||{}}),g=()=>i.value=i.value.filter((m,d)=>d!==r.index),s=async()=>{const m=c.value.validate();if(m){K.notify({type:"warning",title:"Validation",message:Object.entries(m).map(([d,a])=>`${d}: ${a}`).join(`
|
|
79
|
+
`)});return}i.value[r.index]=f.value,l.value=!1};return(m,d)=>(e.openBlock(),e.createElementBlock("div",Cl,[e.createElementVNode("button",{onClick:d[0]||(d[0]=a=>{l.value=!0,console.log(t.scheme)}),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:text-accent-foreground h-8 w-8 rounded-full hover:bg-gray-100"},[e.createVNode(e.unref(Vl),{class:"w-4 h-4"})]),e.createElementVNode("button",{onClick:g,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 h-8 w-8 rounded-full hover:bg-red-100 text-red-600 hover:text-red-700"},[e.createVNode(e.unref(Bl),{class:"w-4 h-4"})]),e.createVNode(e.unref(n),{size:"lg",visible:l.value,"onUpdate:visible":d[4]||(d[4]=a=>l.value=a),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",Nl,[e.createElementVNode("button",{type:"button",class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-black border border-gray-200 rounded-lg hover:bg-gray-100 duration-300",onClick:d[3]||(d[3]=a=>l.value=!1)}," Скасувати "),e.createElementVNode("button",{class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300",onClick:s}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(o),{values:f.value,"onUpdate:values":d[1]||(d[1]=a=>f.value=a),schema:t.scheme,form:c.value,"onUpdate:form":d[2]||(d[2]=a=>c.value=a)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),Ll={mounted(t){setTimeout(()=>{t.scrollWidth>t.clientWidth?t.setAttribute("title",t.textContent):t.removeAttribute("title")})},updated(t){setTimeout(()=>{t.scrollWidth>t.clientWidth?t.setAttribute("title",t.textContent):t.removeAttribute("title")})}},Sl={array:"purple",boolean:"red",date:"red",datetime:"purple",number:"green",text:"blue",file:"yellow",select:"yellow",slug:"green",image:"blue",badge:"orange",title:"blue",features:"green",status:"red",tags:"yellow",category:"purple",check:"green",range:"orange",autocomplete:"yellow",other:"gray","yes/no":"green"},He=t=>Sl[t==null?void 0:t.toLowerCase()]||"gray",Fl=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],Ze=t=>{var o;return Fl.includes((o=t||"")==null?void 0:o.toLowerCase())},vl={key:0,class:"flex items-center justify-between mb-6"},jl={class:"flex justify-end w-full"},Il={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col"},Al={class:"table-scroll-wrapper flex-1 overflow-y-auto"},Dl={class:"table-fixed w-full text-[13px]"},Ml={class:"bg-gray-50 border-b border-gray-200"},Tl={class:"transition-colors hover:bg-gray-50/50"},Pl={key:0,class:"flex w-fit items-center gap-2 text-left"},zl={class:"flex-1 min-w-0"},Ul={class:"font-medium text-gray-900 truncate"},Ol={class:"text-xs text-gray-500"},ql={key:0,class:"flex items-center justify-center"},Rl={key:0,class:"inline-flex items-center px-2 py-1 h-fit text-[13px] font-medium rounded-md ring-1 ring-inset ring-gray-500/10 bg-gray-100"},Hl={key:1,class:"text-gray-500 text-sm"},Zl={key:2},Kl={class:"px-6 py-4"},Wl={key:1},Yl=["colspan"],Ce=D(e.defineComponent({__name:"vs-datatable",props:e.mergeModels({columnsScheme:{},formScheme:{},addButton:{type:Boolean,default:!0},mainColWidth:{default:""}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(t,{expose:o}){const n=e.defineAsyncComponent(()=>import("@opengis/core").then(u=>u.VsModal)),r=e.defineAsyncComponent(()=>import("@opengis/form")),i=e.useModel(t,"modelValue");o({openCreateDialog:()=>{f.value=!0}});const l=t,c=e.ref({}),f=e.ref(!1),g=e.ref({}),s=e.ref(null),m=e.computed({get(){return Array.isArray(i.value)?i.value:i.value&&Array.isArray(i.value.columns)?i.value.columns:[]},set(u){Array.isArray(i.value)?i.value=u:i.value&&Array.isArray(i.value.columns)&&(i.value.columns=u)}}),d=e.computed(()=>{const u=l.columnsScheme.map(b=>b.key);return u.includes("name")&&u.includes("ua")||u.includes("id")&&u.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...l.columnsScheme.filter(b=>!["name","ua","format","id","label"].includes(b.key))]:l.columnsScheme});function a(){f.value=!1,g.value={},s.value=null}async function y(){const u=c.value.validate();if(u){K.notify({type:"warning",title:"Validation",message:Object.entries(u).map(([b,p])=>`${b}: ${p}`).join(`
|
|
80
|
+
`)});return}if(s.value===null)m.value=[...m.value,{...g.value}];else{const b=[...m.value];b[s.value]={...g.value},m.value=b}a()}return(u,b)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",vl,[e.createElementVNode("div",jl,[e.createElementVNode("button",{onClick:b[0]||(b[0]=p=>f.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...b[5]||(b[5]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Додати поле ",-1)])])])])):e.createCommentVNode("",!0),e.createElementVNode("div",Il,[e.createElementVNode("div",Al,[e.createElementVNode("table",Dl,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,p=>(e.openBlock(),e.createElementBlock("col",{key:p.key,style:e.normalizeStyle(p.type==="main"?`width: ${t.mainColWidth}`:p.width?`width: ${p.width}`:"auto")},null,4))),128)),b[6]||(b[6]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",Ml,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,p=>(e.openBlock(),e.createElementBlock("th",{key:p.key,class:"px-6 py-4"},e.toDisplayString(p.label),1))),128)),b[7]||(b[7]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),m.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(m.value,(p,k)=>(e.openBlock(),e.createElementBlock("tr",Tl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,h=>(e.openBlock(),e.createElementBlock("td",{key:h.key,class:"px-6 py-4 align-middle text-center"},[h.type==="main"?(e.openBlock(),e.createElementBlock("div",Pl,[b[8]||(b[8]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(Ze)(p.format==="yes/no"?"check":p.format||p.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(He)(p.format==="yes/no"?"check":p.format||p.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.format==="yes/no"?"icon-check":`icon-${p.format||p.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",zl,[e.withDirectives((e.openBlock(),e.createElementBlock("p",Ul,[e.createTextVNode(e.toDisplayString(p.name||p.id),1)])),[[e.unref(Ll)]]),e.createElementVNode("p",Ol,e.toDisplayString(p.ua||p.label),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[h.type==="color"?(e.openBlock(),e.createElementBlock("div",ql,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${p[h.key]}]`])},null,2)])):["format","type","meta"].includes(h.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[p[h.key]?(e.openBlock(),e.createElementBlock("span",Rl,e.toDisplayString(p[h.key]),1)):(e.openBlock(),e.createElementBlock("span",Hl,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",Zl,e.toDisplayString(p[h.key]),1))],64))]))),128)),e.createElementVNode("td",Kl,[e.createVNode($l,{columns:m.value,"onUpdate:columns":b[1]||(b[1]=h=>m.value=h),data:p,index:k,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])]))),256)):(e.openBlock(),e.createElementBlock("tr",Wl,[e.createElementVNode("td",{colspan:d.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,Yl)]))])])]),e.createVNode(e.unref(n),{title:"Створити поле",size:"lg",visible:f.value,"onUpdate:visible":b[4]||(b[4]=p=>f.value=p)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:a,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{type:"button",onClick:y,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(r),{ref_key:"form",ref:c,modelValue:g.value,"onUpdate:modelValue":b[2]||(b[2]=p=>g.value=p),schema:t.formScheme,form:c.value,"onUpdate:form":b[3]||(b[3]=p=>c.value=p)},null,8,["modelValue","schema","form"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-51284468"]]),Gl={class:"p-4 text-[13px]"},Jl={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Ql=["id","checked","onChange"],Xl={class:"flex-1 min-w-0 flex items-center gap-2"},ea={class:"font-medium text-gray-900 truncate"},ta={class:"text-xs text-gray-500"},oa={class:"flex justify-end gap-2 p-4 border-t w-full"},Ne=e.defineComponent({__name:"import-fields-dialog",props:e.mergeModels({fields:{default:()=>[]},title:{},idPrefix:{default:"import"},confirmText:{default:"Імпортувати"},cancelText:{default:"Скасувати"}},{visible:{type:Boolean,default:!1},visibleModifiers:{},selection:{default:[]},selectionModifiers:{}}),emits:e.mergeModels(["confirm","cancel"],["update:visible","update:selection"]),setup(t,{emit:o}){const n=e.useModel(t,"visible"),r=e.useModel(t,"selection"),i=t,l=o,c=e.defineAsyncComponent(()=>import("@opengis/core").then(h=>h.VsModal)),f=e.computed(()=>Array.isArray(i.fields)?i.fields.filter(Boolean):[]),g=h=>(h==null?void 0:h.name)??(h==null?void 0:h.id)??(h==null?void 0:h.key)??(h==null?void 0:h.code)??(h==null?void 0:h.field)??(h==null?void 0:h.value)??"",s=h=>String(g(h)??"").trim(),m=h=>(h==null?void 0:h.title)??(h==null?void 0:h.label)??s(h),d=e.computed(()=>new Set(r.value.map(h=>String(h??"").trim()))),a=h=>d.value.has(s(h)),y=h=>{const w=s(h);if(!w)return;const x=new Set(d.value);x.has(w)?x.delete(w):x.add(w),r.value=Array.from(x)},u=e.computed(()=>i.confirmText||"Імпортувати"),b=e.computed(()=>i.cancelText||"Скасувати"),p=()=>{n.value=!1,l("cancel")},k=()=>{l("confirm"),n.value=!1};return(h,w)=>(e.openBlock(),e.createBlock(e.unref(c),{visible:n.value,"onUpdate:visible":w[0]||(w[0]=x=>n.value=x),title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",oa,[e.createElementVNode("button",{onClick:p,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(b.value),1),e.createElementVNode("button",{onClick:k,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(u.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Gl,[e.createElementVNode("div",Jl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,x=>(e.openBlock(),e.createElementBlock("label",{key:s(x),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${s(x)}`,checked:a(x),onChange:$=>y(x)},null,40,Ql),e.createElementVNode("div",Xl,[e.unref(Ze)(x.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(He)(x.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${x.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",ea,e.toDisplayString(s(x)),1),e.createElementVNode("p",ta,e.toDisplayString(m(x)),1)])])]))),128))])])]),_:1},8,["visible","title"]))}});function le(t){return t==null?"":String(t).trim()}function J(t){return le((t==null?void 0:t.name)??(t==null?void 0:t.id)??(t==null?void 0:t.key)??(t==null?void 0:t.code)??(t==null?void 0:t.field)??(t==null?void 0:t.value)??"")}function $e(t,o,n){const r=Array.isArray(t)?[...t]:[],i=Array.isArray(o)?o:[],{selectedKeys:l,resolveKey:c}=n,f=new Set;for(const d of l){const a=le(d);a&&f.add(a)}if(f.size===0)return[];const g=d=>le(c(d)),s=[],m=new Set;for(const d of r){const a=g(d);!a||!f.has(a)||(s.push(d),m.add(a))}for(const d of i){const a=g(d);!a||m.has(a)||!f.has(a)||(s.push(d),m.add(a))}return s}const na={class:"vs-form"},ra={class:"vs-form__body auto-rows-max container"},la={class:"flex flex-wrap"},aa={class:"h-fit w-full mb-6 px-2"},sa={class:"h-fit w-full flex flex-wrap"},ia={class:"w-full"},ca=e.defineComponent({__name:"list-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const o=e.useModel(t,"data"),n=e.useModel(t,"form"),r=t,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=h=>J(h||{}),c=e.defineAsyncComponent(()=>import("@opengis/form")),f=e.ref(),g=e.ref(!1),s=e.ref([]),m=()=>{const h=a.value.map(w=>l(w)).filter(w=>w.length>0);s.value=[...h],g.value=!0},d=e.computed(()=>{var h,w;return((h=o.value)==null?void 0:h.token)||((w=o.value)==null?void 0:w.id)||"register-form"}),a=e.computed({get:()=>(o.value||(o.value={}),Array.isArray(o.value.columns)||(o.value.columns=[]),o.value.columns),set:h=>{o.value||(o.value={}),o.value.columns=Array.isArray(h)?h:[]}}),y=e.computed({get:()=>o.value||{},set:h=>{var x;const w=Array.isArray((x=o.value)==null?void 0:x.columns)?o.value.columns:[];o.value={...o.value,...h,columns:w}}});e.watch(()=>f.value,h=>{n.value=h||null},{immediate:!0}),e.watch(g,h=>{h||(s.value=[])});const u=()=>{const h=new Set(s.value.map($=>le($)).filter($=>$.length>0)),w=Array.isArray(a.value)?[...a.value]:[],x=i.value.filter($=>h.has(l($))).map($=>{const _=l($);return{...$,name:_,ua:$.title??$.label??_,type:$.type||"text",meta:$.meta??"features"}});a.value=$e(w,x,{selectedKeys:s.value,resolveKey:l}),g.value=!1,s.value=[]},b={table_name:{type:"text",label:"Table",required:!0,placeholder:"Table",validators:["required"],col:6},name:{type:"text",label:"Name",required:!0,placeholder:"Name",validators:["required"],col:6},description:{type:"text",label:"Description",placeholder:"Description",col:12}},p=[{key:"name",label:"Name",type:"text"},{key:"ua",label:"UA",type:"text"},{key:"format",label:"Format",type:"text"},{key:"meta",label:"Мета",type:"text"},{key:"data",label:"Класифікатор",type:"text"}],k={name:{type:"text",label:"Name",required:!0},ua:{type:"text",label:"UA",required:!0},format:{type:"combobox",label:"Format",mode:"combo",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},meta:{type:"combobox",label:"Мета",mode:"combo",required:!0,options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"},{text:"Image",id:"image"}]},data:{type:"text",label:"Класифікатор"}};return e.onBeforeUnmount(()=>{n.value=null}),(h,w)=>(e.openBlock(),e.createElementBlock("div",na,[e.createElementVNode("div",ra,[e.createElementVNode("div",la,[e.createElementVNode("div",aa,[(e.openBlock(),e.createBlock(e.unref(c),{ref_key:"formEl",ref:f,key:d.value,schema:b,modelValue:y.value,"onUpdate:modelValue":w[0]||(w[0]=x=>y.value=x)},null,8,["modelValue"]))]),e.createElementVNode("div",sa,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:m,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...w[4]||(w[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",ia,[e.createVNode(Ce,{modelValue:a.value,"onUpdate:modelValue":w[1]||(w[1]=x=>a.value=x),"columns-scheme":p,"form-scheme":k,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ne,{visible:g.value,"onUpdate:visible":w[2]||(w[2]=x=>g.value=x),selection:s.value,"onUpdate:selection":w[3]||(w[3]=x=>s.value=x),fields:i.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:u},null,8,["visible","selection","fields"])]))}}),da={class:"vs-form"},ma={class:"vs-form__body auto-rows-max container"},pa={class:"flex flex-wrap"},ua={class:"h-fit w-full flex flex-wrap"},fa={class:"w-full"},ga=e.defineComponent({__name:"filter-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const o=e.useModel(t,"data"),n=e.useModel(t,"form"),r=t,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=y=>J(y||{}),c=e.ref(!1),f=e.ref([]),g=()=>{const y=s.value.map(u=>l(u)).filter(u=>u.length>0);f.value=[...y],c.value=!0},s=e.computed({get:()=>(o.value||(o.value={}),Array.isArray(o.value.filters)||(o.value.filters=[]),o.value.filters),set:y=>{o.value||(o.value={}),o.value.filters=Array.isArray(y)?y:[]}});e.watch(c,y=>{y||(f.value=[])});const m=()=>{const y=new Set(f.value.map(p=>le(p)).filter(p=>p.length>0)),u=Array.isArray(s.value)?[...s.value]:[],b=i.value.filter(p=>y.has(l(p))).map(p=>({id:l(p),label:p.title??p.label??l(p),type:p.type||"text"}));s.value=$e(u,b,{selectedKeys:f.value,resolveKey:l}),c.value=!1,f.value=[]},d=[{key:"id",label:"Name",type:"text"},{key:"label",label:"UA",type:"text"},{key:"type",label:"Тип",type:"text"},{key:"data",label:"Класифікатор",type:"text"}],a={id:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"UA",required:!0},type:{type:"combobox",label:"Тип",required:!0,mode:"combo",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Autocomplete",id:"autocomplete"}]},data:{type:"text",label:"Класифікатор",conditions:["type","in",["autocomplete"]],validators:["required"]}};return e.onBeforeUnmount(()=>{n.value=null}),(y,u)=>(e.openBlock(),e.createElementBlock("div",da,[e.createElementVNode("div",ma,[e.createElementVNode("div",pa,[u[4]||(u[4]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте фільтри реєстру. Оберіть поля для імпорту або відредагуйте властивості вручну. ")],-1)),e.createElementVNode("div",ua,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:g,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...u[3]||(u[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",fa,[e.createVNode(Ce,{modelValue:s.value,"onUpdate:modelValue":u[0]||(u[0]=b=>s.value=b),"columns-scheme":d,"form-scheme":a,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ne,{visible:c.value,"onUpdate:visible":u[1]||(u[1]=b=>c.value=b),selection:f.value,"onUpdate:selection":u[2]||(u[2]=b=>f.value=b),fields:i.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:m},null,8,["visible","selection","fields"])]))}}),ya={class:"vs-form"},ha={class:"vs-form__body auto-rows-max container"},ba={class:"flex flex-wrap"},ka={class:"h-fit w-full flex flex-wrap"},xa={class:"w-full"},wa=e.defineComponent({__name:"card-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const o=e.useModel(t,"data"),n=e.useModel(t,"form"),r=t,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=y=>J(y||{}),c=e.ref(!1),f=e.ref([]),g=()=>{const y=s.value.map(u=>l(u)).filter(u=>u.length>0);f.value=[...y],c.value=!0},s=e.computed({get:()=>o.value.card,set:y=>{o.value||(o.value={}),o.value.card=Array.isArray(y)?y:[]}});e.watch(c,y=>{var u;if(y){const b=((u=s.value)==null?void 0:u.map(p=>p.name))||[];f.value=[...b]}});const m=()=>{const y=new Set(f.value.map(p=>le(p)).filter(p=>p.length>0)),u=Array.isArray(s.value)?[...s.value]:[],b=i.value.filter(p=>y.has(l(p))).map(p=>{const k=l(p);return{...p,name:k,ua:p.title??p.label??k,format:p.format||p.type||"text",meta:p.meta||"title"}});s.value=$e(u,b,{selectedKeys:f.value,resolveKey:l}),c.value=!1,f.value=[]},d=[{key:"name",label:"Name",type:"text"},{key:"ua",label:"UA",type:"text"},{key:"format",label:"Format",type:"text"},{key:"meta",label:"Мета",type:"text"}],a={name:{type:"text",label:"Name",required:!0,disabled:!0},ua:{type:"text",label:"UA",required:!0},format:{type:"combobox",label:"Format",mode:"combo",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},meta:{type:"combobox",label:"Мета",mode:"combo",required:!0,options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"},{text:"Image",id:"image"}]}};return e.onBeforeUnmount(()=>{n.value=null}),(y,u)=>(e.openBlock(),e.createElementBlock("div",ya,[e.createElementVNode("div",ha,[e.createElementVNode("div",ba,[u[4]||(u[4]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте відображення картки. Оберіть потрібні поля та відредагуйте їхні властивості. ")],-1)),e.createElementVNode("div",ka,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:g,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...u[3]||(u[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",xa,[e.createVNode(Ce,{modelValue:s.value,"onUpdate:modelValue":u[0]||(u[0]=b=>s.value=b),"columns-scheme":d,"form-scheme":a,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ne,{visible:c.value,"onUpdate:visible":u[1]||(u[1]=b=>c.value=b),selection:f.value,"onUpdate:selection":u[2]||(u[2]=b=>f.value=b),fields:i.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:m},null,8,["visible","selection","fields"])]))}}),_a=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function we(t){if(!t)return"";const[o,n]=t.split(" ");if(!o)return t;const[r,i,l]=o.split("-");if(!r||!i||!l)return t;const c=parseInt(i,10),f=_a[c]||i;let g=`${parseInt(l,10)} ${f} ${r}`;if(n){const s=n.split(".")[0],[m,d,a]=s.split(":");m&&d&&a?g+=`, ${m}:${d}:${a}`:m&&d?g+=`, ${m}:${d}`:m&&(g+=`, ${m}`)}return g}const Ea={name:"Template1",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{titleCol(){return this.columns.find(t=>t.meta==="title")},categoryCol(){return this.columns.filter(t=>t.meta==="category")},tagsCol(){return this.columns.filter(t=>t.meta==="tags")},featuresCols(){return this.columns.filter(t=>t.meta==="features")}},methods:{getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const i=Object.keys(r)[0],l=r[i];return`${i}=${encodeURIComponent(t[l])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],i=n[r];return`${r}=${encodeURIComponent(t[i])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:we}},Va={class:"flex justify-between p-4 pb-2 bg-slate-50 gap-4"},Ba={class:"flex items-center justify-between"},Ca={class:"text-lg font-bold line-clamp-2"},Na={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground ml-2 whitespace-nowrap","data-v0-t":"badge"},$a={key:0,class:"flex"},La={key:0,class:"h-fit inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground ml-2 whitespace-nowrap"},Sa={class:"p-4 pt-2"},Fa={class:"grid grid-cols-2 gap-3 text-sm"},va={class:"text-gray-500"},ja={class:"font-medium"},Ia={class:"items-center p-3 bg-slate-50 flex justify-end"},Aa=["href"];function Da(t,o,n,r,i,l){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,c=>{var f,g,s;return e.openBlock(),e.createElementBlock("div",{key:c.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",Va,[e.createElementVNode("div",Ba,[e.createElementVNode("h2",Ca,e.toDisplayString(c[`${(f=l.titleCol)==null?void 0:f.name}_text`]||c[(g=l.titleCol)==null?void 0:g.name]||c[(s=l.titleCol)==null?void 0:s.label]||"Не вказано"),1),Array.isArray(l.categoryCol)&&l.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.categoryCol,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.name},[c[m.name]?(e.openBlock(),e.createElementBlock("div",Na,e.toDisplayString(c[`${m.name}_text`]||c[m.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),Array.isArray(l.tagsCol)&&l.tagsCol.length?(e.openBlock(),e.createElementBlock("div",$a,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.tagsCol,m=>(e.openBlock(),e.createElementBlock("div",{key:m.name,class:"mt-2 flex flex-wrap gap-1"},[c[m.name]?(e.openBlock(),e.createElementBlock("span",La,e.toDisplayString(c[`${m.name}_text`]||c[m.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Sa,[e.createElementVNode("div",Fa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.featuresCols,m=>(e.openBlock(),e.createElementBlock("div",{key:m.name,class:"flex items-center gap-1.5"},[e.createElementVNode("span",va,e.toDisplayString(m.ua||m.label)+": ",1),e.createElementVNode("span",ja,[Array.isArray(c[m==null?void 0:m.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(c[m==null?void 0:m.name],(d,a)=>(e.openBlock(),e.createElementBlock("span",{key:a,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(d),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[m.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(l.formatDate(c[m==null?void 0:m.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(c[m==null?void 0:m.name]||"Немає даних"),1)],64))],64))])]))),128))])]),e.createElementVNode("div",Ia,[e.createElementVNode("a",{href:l.getItemLink(c),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...o[0]||(o[0]=[e.createTextVNode(" Детальніше ",-1),e.createElementVNode("svg",{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",class:"lucide lucide-arrow-right ml-1 h-3.5 w-3.5"},[e.createElementVNode("path",{d:"M5 12h14"}),e.createElementVNode("path",{d:"m12 5 7 7-7 7"})],-1)])],8,Aa)])])}),128)}const Ma=D(Ea,[["render",Da]]),Ta={name:"Template2",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{titleCol(){return this.columns.find(t=>t.meta==="title")},categoryCol(){return this.columns?this.columns.filter(t=>t.meta==="category"):[]},tagsCol(){return this.columns?this.columns.filter(t=>t.meta==="tags"):[]},featuresCols(){return this.columns.filter(t=>t.meta==="features")}},methods:{getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const i=Object.keys(r)[0],l=r[i];return`${i}=${encodeURIComponent(t[l])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],i=n[r];return`${r}=${encodeURIComponent(t[i])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:we}},Pa={class:"p-0"},za={class:"border-l-4 border-l-slate-400"},Ua={class:"p-4"},Oa={class:"flex flex-wrap items-center gap-2 mb-3"},qa={class:"text-lg font-bold"},Ra={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-green-100 text-green-800 hover:bg-green-100","data-v0-t":"badge"},Ha={key:1,class:"flex"},Za={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},Ka={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-3 text-sm border-t pt-3"},Wa={class:"text-xs text-gray-500 mb-1"},Ya={class:"font-medium"},Ga={class:"flex justify-end mt-3 border-t pt-3"},Ja=["href"];function Qa(t,o,n,r,i,l){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,c=>{var f,g;return e.openBlock(),e.createElementBlock("div",{key:c.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",Pa,[e.createElementVNode("div",za,[e.createElementVNode("div",Ua,[e.createElementVNode("div",Oa,[e.createElementVNode("h2",qa,e.toDisplayString(c[`${(f=l.titleCol)==null?void 0:f.name}_text`]||c[(g=l.titleCol)==null?void 0:g.name]||"Не вказано"),1),Array.isArray(l.categoryCol)&&l.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.categoryCol,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.name},[c[s.name]?(e.openBlock(),e.createElementBlock("div",Ra,e.toDisplayString(c[`${s.name}_text`]||c[s.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.tagsCol)&&l.tagsCol.length?(e.openBlock(),e.createElementBlock("div",Ha,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.tagsCol,s=>(e.openBlock(),e.createElementBlock("div",{key:s.name,class:"flex flex-wrap gap-1 ml-2"},[c[s.name]?(e.openBlock(),e.createElementBlock("span",Za,e.toDisplayString(c[`${s.name}_text`]||c[s.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ka,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.featuresCols,s=>(e.openBlock(),e.createElementBlock("div",{key:s.name},[e.createElementVNode("p",Wa,e.toDisplayString(s.ua),1),e.createElementVNode("p",Ya,[Array.isArray(c[s==null?void 0:s.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(c[s==null?void 0:s.name],(m,d)=>(e.openBlock(),e.createElementBlock("span",{key:d,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(m),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[s.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(l.formatDate(c[s==null?void 0:s.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(c[s==null?void 0:s.name]||"Немає даних"),1)],64))],64))])]))),128))]),e.createElementVNode("div",Ga,[e.createElementVNode("a",{href:l.getItemLink(c),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...o[0]||(o[0]=[e.createTextVNode(" Детальніше ",-1),e.createElementVNode("svg",{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",class:"lucide lucide-external-link ml-1 h-3.5 w-3.5"},[e.createElementVNode("path",{d:"M15 3h6v6"}),e.createElementVNode("path",{d:"M10 14 21 3"}),e.createElementVNode("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"})],-1)])],8,Ja)])])])])])}),128)}const Xa=D(Ta,[["render",Qa]]),es={name:"Template3",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{categoryCol(){return this.columns?this.columns.filter(t=>t.meta==="category"):[]},tagsCol(){return this.columns?this.columns.filter(t=>t.meta==="tags"):[]},featuresCols(){return this.columns.filter(t=>t.meta==="features")},colorClass(){return"bg-blue-500"},titleCol(){return this.columns.find(t=>t.meta==="title")}},methods:{featureColClass(t,o){return"col-span-2"},getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const i=Object.keys(r)[0],l=r[i];return`${i}=${encodeURIComponent(t[l])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],i=n[r];return`${r}=${encodeURIComponent(t[i])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:we}},ts={class:"space-y-4"},os={class:"flex items-center py-2 px-3"},ns={class:"flex-1"},rs={class:"grid grid-cols-12 gap-2 w-full text-xs"},ls={class:"col-span-5"},as={key:0,class:"inline-flex items-center rounded-full border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80 mt-1 text-[10px] font-normal px-1.5 py-0","data-v0-t":"badge"},ss={key:1,class:"flex flex-wrap gap-1 mt-1"},is={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},cs={class:"col-span-7"},ds={class:"grid grid-cols-3 gap-3"},ms={class:"text-[10px] text-gray-500 mb-1"},ps={class:"truncate font-medium"},us=["href"];function fs(t,o,n,r,i,l){return e.openBlock(),e.createElementBlock("div",ts,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,c=>{var f,g;return e.openBlock(),e.createElementBlock("div",{key:c.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",os,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-8 rounded-full mr-3",l.colorClass])},null,2),e.createElementVNode("div",ns,[e.createElementVNode("div",rs,[e.createElementVNode("div",ls,[e.createElementVNode("p",{class:e.normalizeClass(["font-bold text-sm text-left",{"w-full h-full flex items-center":!Array.isArray(l.tagsCol)||!l.tagsCol.length}])},e.toDisplayString(c[`${(f=l.titleCol)==null?void 0:f.name}_text`]||c[(g=l.titleCol)==null?void 0:g.name]||c[Object.keys(c)[0]]||"Не вказано"),3),Array.isArray(l.categoryCol)&&l.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.categoryCol,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.name},[c[s.name]?(e.openBlock(),e.createElementBlock("div",as,e.toDisplayString(c[`${s.name}_text`]||c[s.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.tagsCol)&&l.tagsCol.length?(e.openBlock(),e.createElementBlock("div",ss,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.tagsCol,s=>(e.openBlock(),e.createElementBlock("div",{key:s.name,class:"flex flex-wrap gap-1 mt-1"},[c[s.name]?(e.openBlock(),e.createElementBlock("span",is,e.toDisplayString(c[`${s.name}_text`]||c[s.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",cs,[e.createElementVNode("div",ds,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.featuresCols,s=>(e.openBlock(),e.createElementBlock("div",{key:s.name},[e.createElementVNode("p",ms,e.toDisplayString(s.ua),1),e.createElementVNode("p",ps,[Array.isArray(c[s==null?void 0:s.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(c[s==null?void 0:s.name],(m,d)=>(e.openBlock(),e.createElementBlock("span",{key:d,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(m),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[s.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(l.formatDate(c[s==null?void 0:s.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(c[s==null?void 0:s.name]||"Немає даних"),1)],64))],64))])]))),128))])])])]),e.createElementVNode("a",{href:l.getItemLink(c),class:"ml-auto flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground rounded-md h-7 w-7 p-0",style:{"min-width":"2.5rem"}},[...o[0]||(o[0]=[e.createElementVNode("svg",{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",class:"lucide lucide-chevron-right h-4 w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,us)])])}),128))])}const gs=D(es,[["render",fs]]),ys={name:"Template4",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{featuresCols(){return this.columns.filter(t=>t.meta==="features")},titleCol(){return this.columns.find(t=>t.meta==="title")},categoryCol(){return this.columns?this.columns.filter(t=>t.meta==="category"):[]},tagsCol(){return this.columns?this.columns.filter(t=>t.meta==="tags"):[]}},methods:{getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const i=Object.keys(r)[0],l=r[i];return`${i}=${encodeURIComponent(t[l])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],i=n[r];return`${r}=${encodeURIComponent(t[i])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:we}},hs={class:"flex flex-col space-y-1.5 p-6 pb-2"},bs={class:"flex items-center gap-2"},ks={class:"tracking-tight text-lg font-medium"},xs={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-blue-100 text-blue-800 ml-2","data-v0-t":"badge"},ws={key:1,class:"flex"},_s={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},Es={class:"p-6 pt-0 pb-4"},Vs={class:"grid grid-cols-2 gap-4"},Bs={class:"text-sm text-gray-500"},Cs={class:"font-medium"},Ns={class:"flex items-center p-6 pt-0"},$s=["href"];function Ls(t,o,n,r,i,l){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,c=>{var f,g;return e.openBlock(),e.createElementBlock("div",{key:c.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm border-l-4 border-l-blue-600","data-v0-t":"card"},[e.createElementVNode("div",hs,[e.createElementVNode("div",bs,[e.createElementVNode("h3",ks,e.toDisplayString(c[`${(f=l.titleCol)==null?void 0:f.name}_text`]||c[(g=l.titleCol)==null?void 0:g.name]||Object.keys(c)[0]||"Не вказано"),1),Array.isArray(l.categoryCol)&&l.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.categoryCol,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.name},[c[s.name]?(e.openBlock(),e.createElementBlock("div",xs,e.toDisplayString(c[`${s.name}_text`]||c[s.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.tagsCol)&&l.tagsCol.length?(e.openBlock(),e.createElementBlock("div",ws,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.tagsCol,s=>(e.openBlock(),e.createElementBlock("div",{key:s.name,class:"flex flex-wrap gap-1 ml-2"},[c[s.name]?(e.openBlock(),e.createElementBlock("span",_s,e.toDisplayString(c[`${s.name}_text`]||c[s.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Es,[e.createElementVNode("div",Vs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.featuresCols,s=>(e.openBlock(),e.createElementBlock("div",{key:s.name},[e.createElementVNode("p",Bs,e.toDisplayString(s.ua),1),e.createElementVNode("p",Cs,[Array.isArray(c[s==null?void 0:s.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(c[s==null?void 0:s.name],(m,d)=>(e.openBlock(),e.createElementBlock("span",{key:d,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(m),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[s.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(l.formatDate(c[s==null?void 0:s.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(c[s==null?void 0:s.name]||"Немає даних"),1)],64))],64))])]))),128))])]),e.createElementVNode("div",Ns,[e.createElementVNode("a",{href:l.getItemLink(c),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border bg-background h-10 px-4 py-2 rounded-md text-black border-black hover:bg-gray-100 hover:text-black"}," Детальніше ",8,$s)])])}),128)}const Ss=D(ys,[["render",Ls]]),Fs={name:"Template5",props:{items:Array,columns:Array,path:String,id_key:String,query_params:{type:Array,default:()=>[]}},computed:{imageCol(){return this.columns.find(t=>t.meta==="image")},descCol(){return this.columns.find(t=>t.meta==="desc")||this.columns.find(t=>t.name==="description")},categoryCol(){return this.columns?this.columns.filter(t=>t.meta==="category"):[]},tagsCol(){return this.columns?this.columns.filter(t=>t.meta==="tags"):[]},featuresCols(){return this.columns.filter(t=>t.meta==="features")},titleCol(){return this.columns.find(t=>t.meta==="title")}},methods:{getItemLink(t){if(!this.id_key||!t[this.id_key]){if(!this.query_params||!this.query_params.length)return this.path;const n=this.query_params.map(r=>{const i=Object.keys(r)[0],l=r[i];return`${i}=${encodeURIComponent(t[l])}`}).join("&");return`${this.path}?${n}`}if(!this.query_params||!this.query_params.length)return`${this.path}/${t[this.id_key]}`;const o=this.query_params.map(n=>{const r=Object.keys(n)[0],i=n[r];return`${r}=${encodeURIComponent(t[i])}`}).join("&");return`${this.path}/${t[this.id_key]}?${o}`},formatDate:we}},vs={class:"grid grid-cols-12 divide-x divide-gray-100"},js={key:0},Is=["src"],As={key:1,class:"col-span-1 flex items-center justify-center"},Ds={class:"col-span-7 p-4"},Ms={class:"flex items-center mb-1 col-span-7 p-4"},Ts={class:"text-base font-bold text-gray-900 mr-2"},Ps={key:0,class:"inline-flex items-center rounded-full px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent hover:bg-primary/80 bg-blue-100 text-blue-800 border-0 text-xs ml-2"},zs={class:"text-sm text-gray-600 line-clamp-1 mb-2"},Us={class:"grid grid-cols-2 gap-x-4 gap-y-1 text-sm"},Os={class:"text-gray-500 mr-1"},qs=["innerHTML"],Rs={class:"text-gray-600 truncate"},Hs={class:"col-span-2 p-3 bg-gray-50 flex flex-col justify-center"},Zs={class:"text-xs text-gray-500 mb-1.5"},Ks={key:0,class:"flex flex-wrap gap-1"},Ws={key:0,class:"inline-flex items-center rounded-full font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:bg-secondary/80 bg-white border border-gray-200 text-gray-700 text-xs px-1.5 py-0"},Ys={class:"col-span-2 flex flex-col justify-center items-center bg-gray-50 border-l p-2"},Gs={class:"w-full space-y-2"},Js=["href"];function Qs(t,o,n,r,i,l){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,c=>{var f,g,s,m,d;return e.openBlock(),e.createElementBlock("div",{key:c.id,class:"bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200 hover:shadow-md"},[e.createElementVNode("div",vs,[l.imageCol?(e.openBlock(),e.createElementBlock("div",js,[c[(f=l.imageCol)==null?void 0:f.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:c[(g=l.imageCol)==null?void 0:g.name],alt:"image",class:"object-cover h-full"},null,8,Is)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",As,[...o[0]||(o[0]=[e.createElementVNode("div",{class:"w-3 h-12 rounded-sm bg-blue-500",title:"Пріоритет: Високий","aria-hidden":"true"},null,-1)])])),e.createElementVNode("div",Ds,[e.createElementVNode("div",Ms,[e.createElementVNode("h3",Ts,e.toDisplayString(c[`${(s=l.titleCol)==null?void 0:s.name}_text`]||c[(m=l.titleCol)==null?void 0:m.name]||Object.keys(c)[0]||"Не вказано"),1),Array.isArray(l.categoryCol)&&l.categoryCol.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.categoryCol,a=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:a.name},[c[a.name]?(e.openBlock(),e.createElementBlock("div",Ps,e.toDisplayString(c[`${a.name}_text`]||c[a.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),e.createElementVNode("p",zs,e.toDisplayString(c[(d=l.descCol)==null?void 0:d.name]),1),e.createElementVNode("div",Us,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.featuresCols,a=>(e.openBlock(),e.createElementBlock("div",{key:a.name,class:"flex items-center"},[e.createElementVNode("span",Os,e.toDisplayString((a==null?void 0:a.ua)||a.label||a.name)+":",1),a.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:a.icon},null,8,qs)):e.createCommentVNode("",!0),e.createElementVNode("span",Rs,[Array.isArray(c[a==null?void 0:a.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(c[a==null?void 0:a.name],(y,u)=>(e.openBlock(),e.createElementBlock("span",{key:u,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(y),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[a.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(l.formatDate(c[a==null?void 0:a.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(c[a==null?void 0:a.name]||"Немає даних"),1)],64))],64))])]))),128))])]),e.createElementVNode("div",Hs,[e.createElementVNode("p",Zs," Теги: "+e.toDisplayString(l.tagsCol.length&&c[l.tagsCol[0].name]?"":"відсутні"),1),Array.isArray(l.tagsCol)&&l.tagsCol.length?(e.openBlock(),e.createElementBlock("div",Ks,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.tagsCol,a=>(e.openBlock(),e.createElementBlock("div",{key:a.name,class:"flex flex-wrap gap-1"},[c[a.name]?(e.openBlock(),e.createElementBlock("span",Ws,e.toDisplayString(c[`${a.name}_text`]||c[a.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ys,[e.createElementVNode("div",Gs,[e.createElementVNode("a",{href:l.getItemLink(c),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md px-3 w-full bg-blue-600 hover:bg-blue-700 text-white text-xs h-8"}," Детальніше ",8,Js)])])])])}),128)}const Ke={template1:Ma,template2:Xa,template3:gs,template4:Ss,template5:D(Fs,[["render",Qs]])},Xs={class:"space-y-4"},ei={class:"flex items-center gap-4 mb-2"},ti={class:"text-lg font-semibold mb-4"},oi={key:1,class:"text-gray-400 text-center py-12"},ni={key:2,class:"text-gray-400 text-center py-12"},ri=e.defineComponent({__name:"preview-tab",props:{data:{default:{}},dataModifiers:{}},emits:["update:data"],setup(t){const o=e.defineAsyncComponent(()=>import("@opengis/form")),n=e.useModel(t,"data"),r=[{text:"template1",id:"template1"},{text:"template2",id:"template2"},{text:"template3",id:"template3"},{text:"template4",id:"template4"},{text:"template5",id:"template5"}],i={view:{type:"select",label:"Вигляд",required:!0,options:r,col:12}},l=e.computed(()=>{var m;return Array.isArray((m=n.value)==null?void 0:m.columns)?n.value.columns:[]}),c=e.computed(()=>{var m;return console.log(n.value),((m=n.value)==null?void 0:m.view)||"template1"}),f=e.computed(()=>Ke[c.value]||Ke.template1),g=e.computed(()=>{var a;const m=(a=n.value)==null?void 0:a.view;if(!m)return"template1";const d=r.find(y=>y.id===m);return(d==null?void 0:d.text)||m}),s=e.computed(()=>(Array.isArray(n.value.rows)?n.value.rows:[]).slice(0,5));return(m,d)=>(e.openBlock(),e.createElementBlock("div",Xs,[e.createElementVNode("div",ei,[e.createVNode(e.unref(o),{schema:i,modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=a=>n.value=a),class:"w-[220px]"},null,8,["modelValue"])]),e.createElementVNode("h2",ti," Превʼю таблиці ("+e.toDisplayString(g.value)+") ",1),f.value&&s.value.length&&l.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(f.value),{items:s.value,columns:l.value,path:"#",id_key:"id",key:c.value},null,8,["items","columns"])):s.value.length?(e.openBlock(),e.createElementBlock("div",ni," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",oi," Немає даних для превʼю "))]))}}),li={class:"relative min-h-svh flex-1 flex-col flex gap-4 bg-white p-8 overflow-y-auto"},ai={class:"max-w-6xl mx-auto"},si={class:"flex items-center justify-between mb-6"},ii={class:"flex items-center gap-2"},ci=["href"],di={class:"w-full"},mi={class:"flex items-center w-full h-10 max-w-md grid-cols-3 p-1 mb-6 bg-white border border-gray-200 rounded-md text-muted-foreground"},pi=["onClick"],ui=e.defineComponent({__name:"register",setup(t){const o=Ee.useRoute(),n=Ee.useRouter(),r=e.ref("list"),i=e.ref(""),l=[{name:"List",id:"list"},{name:"Filters",id:"filters"},{name:"Card",id:"card"},{name:"Preview",id:"preview"}],c={list:ca,filters:ga,card:wa,preview:ri},f=l.map(y=>y.id),g=e.ref({columns:[],filters:[],card:[],tableData:[]}),s=e.ref([]),m=async()=>{var u;if(!((u=g.value)==null?void 0:u.token)){K.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}console.log(values.value);try{const b=await fetch(`/api/gis-registry/${o.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(values.value)});if(!b.ok)throw new Error(`Failed to save content: ${b.status}`);K.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(b){K.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(b)}},d=async y=>{try{const b=await(await fetch(`/api/gis-registry/${y}`)).json(),p=Array.isArray(b==null?void 0:b.rows)?b.rows:[];g.value.tableData=p.slice(0,3)}catch(u){console.error("Помилка завантаження превʼю:",u)}},a=async()=>{var y,u;try{const p=await(await fetch(`/api/data/gis.registers.table/${o.params.id}`)).json(),k=((y=p==null?void 0:p.rows)==null?void 0:y[0])||{};i.value=k.register_key||"",g.value={...k,columns:Array.isArray(k.columns)?k.columns:[],filters:Array.isArray(k.filters)?k.filters:[],card:Array.isArray(k.card)?k.card:[],tableData:Array.isArray(k.tableData)?k.tableData:[]},(u=p==null?void 0:p.tokens)!=null&&u.edit&&(g.value.token=p.tokens.edit),s.value=Array.isArray(p==null?void 0:p.fields)?p.fields:[]}catch(b){console.error("Помилка завантаження даних:",b)}};return e.onMounted(async()=>{const y=o.query.tab;typeof y=="string"&&f.includes(y)&&(r.value=y),await a(),i.value&&await d(i.value)}),e.watch(r,y=>{o.query.tab!==y&&n.replace({query:{...o.query,tab:y}})}),e.watch(()=>o.query.tab,y=>{typeof y=="string"&&f.includes(y)&&r.value!==y&&(r.value=y)}),(y,u)=>(e.openBlock(),e.createElementBlock("main",li,[e.createElementVNode("div",null,[e.createElementVNode("div",ai,[e.createElementVNode("div",si,[u[1]||(u[1]=e.createElementVNode("div",null,[e.createElementVNode("h1",{class:"mb-2 text-2xl font-semibold text-gray-900"},"Створити контент"),e.createElementVNode("p",{class:"text-gray-600"},"Створити контент для вашого сайту")],-1)),e.createElementVNode("div",ii,[e.createElementVNode("a",{href:`/${e.unref(o).path.split("/")[1]}`,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border bg-background hover:text-accent-foreground h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"}," Повернутися ",8,ci),e.createElementVNode("button",{onClick:m,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-white rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-primary-foreground h-10 px-4 py-2 bg-blue-600 hover:bg-blue-700"}," Зберегти ")])]),e.createElementVNode("div",di,[e.createElementVNode("div",mi,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,b=>e.createElementVNode("button",{key:b.id,onClick:p=>r.value=b.id,class:e.normalizeClass(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200",b.id===r.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(b.name),11,pi)),64))])]),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c[r.value]),{data:g.value,"onUpdate:data":u[0]||(u[0]=b=>g.value=b),fields:s.value,key:r.value},null,40,["data","fields"]))])])]))}}),fi={},gi={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",class:"lucide lucide-settings"};function yi(t,o){return e.openBlock(),e.createElementBlock("svg",gi,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"12",r:"3"},null,-1)])])}const hi=D(fi,[["render",yi]]),bi={},ki={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",class:"lucide lucide-layers"};function xi(t,o){return e.openBlock(),e.createElementBlock("svg",ki,[...o[0]||(o[0]=[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"},null,-1),e.createElementVNode("path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65"},null,-1),e.createElementVNode("path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65"},null,-1)])])}const wi=D(bi,[["render",xi]]),_i={},Ei={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",class:"lucide lucide-eye"};function Vi(t,o){return e.openBlock(),e.createElementBlock("svg",Ei,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"12",r:"3"},null,-1)])])}const Bi=D(_i,[["render",Vi]]),Ci={},Ni={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",class:"lucide lucide-map"};function $i(t,o){return e.openBlock(),e.createElementBlock("svg",Ni,[...o[0]||(o[0]=[e.createElementVNode("path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z"},null,-1),e.createElementVNode("path",{d:"M15 5.764v15"},null,-1),e.createElementVNode("path",{d:"M9 3.236v15"},null,-1)])])}const Li=D(Ci,[["render",$i]]),Si={},Fi={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",class:"lucide lucide-filter"};function vi(t,o){return e.openBlock(),e.createElementBlock("svg",Fi,[...o[0]||(o[0]=[e.createElementVNode("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"},null,-1)])])}const ji=D(Si,[["render",vi]]),Ii={class:"flex flex-col flex-1 overflow-hidden"},Ai={class:"flex justify-end gap-2"},Di={class:"w-20 gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},Mi=["href"],Ti={class:"flex flex-col flex-1 overflow-hidden"},Pi={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},zi={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},Ui=D(e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{}},emits:["update:styleYaml","update"],setup(t,{emit:o}){const n=t,r=o;function i(p){if(!p)return"";if(typeof p=="string")return p;try{return jsyaml.dump(p)}catch(k){return console.warn("Failed to stringify style YAML",k),""}}const l=e.ref(i(n.styleYaml)),c=e.ref("vs-light"),f=e.ref(null);let g=null,s=null;function m(){const p=i(n.styleYaml);p!==l.value&&(l.value=p,g&&p!==g.getValue()&&g.setValue(p))}e.watch(()=>n.token,()=>{m()}),e.watch(l,async p=>{var k,h;try{const w=p?jsyaml.load(p):null;if((k=w.colorAttr)!=null&&k.length&&((h=n.styleYaml)==null?void 0:h.colorAttr)!=w.colorAttr){const x=await d(w.colorAttr);w.colors=x.reduce((_,B,S)=>({..._,[B.id.toString()]:a[S]}),{});const $=jsyaml.dump(w);g.setValue($)}JSON.stringify(w)!==JSON.stringify(n.styleYaml)&&r("update:styleYaml",w)}catch{}});async function d(p){return(await fetch(`/api/gis-service/${n.token}/${p}`).then(h=>h.json())).rows}const a=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"];function y(){return new Promise((p,k)=>{if(s)return p(s);if(window.monaco)return s=window.monaco,p(s);const h=x=>{if(Array.from(document.styleSheets).some(B=>{var S;return(S=B==null?void 0:B.href)==null?void 0:S.includes(x)}))return;const _=document.createElement("link");_.rel="stylesheet",_.href=x,document.head.appendChild(_)},w=x=>new Promise(($,_)=>{const B=document.createElement("script");B.src=x,B.onload=()=>$(),B.onerror=_,document.body.appendChild(B)});h("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),w("https://cdn.jsdelivr.net/npm/js-yaml@4.1.0/dist/js-yaml.min.js"),w("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/loader.min.js").then(()=>{window.require.config({paths:{vs:"https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs"}}),window.require(["vs/editor/editor.main"],()=>{s=window.monaco,p(s)})}).catch(k)})}function u(){!f.value||!s||(g&&g.dispose(),g=s.editor.create(f.value,{value:l.value,language:"yaml",theme:c.value,automaticLayout:!0,minimap:{enabled:!1}}),m(),g.onDidChangeModelContent(()=>{l.value=g.getValue()}))}e.onMounted(async()=>{await y(),u()});const b=async()=>{try{await fetch(`/api/gis-service/${n.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:l.value})}),r("update"),K.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(p){K.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(p)}};return(p,k)=>(e.openBlock(),e.createElementBlock("div",Ii,[e.createElementVNode("div",Ai,[e.createElementVNode("button",Di,[e.createElementVNode("a",{target:"_blank",href:"/api/gis-service/"+n.token+"/col"},"Attr",8,Mi)]),e.createElementVNode("button",{onClick:b,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},[...k[0]||(k[0]=[e.createElementVNode("svg",{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",class:"lucide lucide-save h-3 w-3 mr-1"},[e.createElementVNode("path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}),e.createElementVNode("path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}),e.createElementVNode("path",{d:"M7 3v4a1 1 0 0 0 1 1h7"})],-1),e.createTextVNode(" Зберегти стилі ",-1)])])]),e.createElementVNode("div",Ti,[e.createElementVNode("div",Pi,[k[1]||(k[1]=e.createElementVNode("div",{class:"bg-gradient-to-r from-gray-50 to-gray-100 px-4 py-2 border-b border-gray-200 flex items-center justify-between"},[e.createElementVNode("div",{class:"text-xs text-gray-400"},"YAML")],-1)),e.createElementVNode("div",zi,[e.createElementVNode("div",{ref_key:"editorContainer",ref:f,class:"w-full h-full"},null,512)])])])]))}}),[["__scopeId","data-v-dadbb804"]]),Oi={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},qi={role:"radiogroup",class:"grid grid-cols-3 gap-2"},Ri=["onClick"],Hi=["aria-checked","value"],Zi={key:0},Ki=e.defineComponent({__name:"view-mode-toggle",props:{modelValue:{},options:{}},emits:["update:modelValue"],setup(t,{emit:o}){const n=t,r=o,i=c=>r("update:modelValue",c),l=n.options||[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"}];return(c,f)=>(e.openBlock(),e.createElementBlock("div",Oi,[f[1]||(f[1]=e.createElementVNode("label",{class:"text-sm font-medium text-gray-600"},"Режим відображення",-1)),e.createElementVNode("div",qi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),g=>(e.openBlock(),e.createElementBlock("div",{key:g.value,onClick:s=>i(g.value),class:e.normalizeClass(["flex items-center justify-center space-x-2 rounded-lg p-2 border transition-all duration-300 cursor-pointer",[t.modelValue===g.value?"bg-gradient-to-r from-sky-200 to-blue-200 border-transparent shadow-sm":"bg-white border-gray-100 hover:border-sky-200 hover:shadow-sm"]])},[e.createElementVNode("button",{type:"button",role:"radio","aria-checked":t.modelValue===g.value,value:g.value,class:"aspect-square rounded-full border border-primary h-4 w-4 flex items-center justify-center text-sky-500"},[t.modelValue===g.value?(e.openBlock(),e.createElementBlock("span",Zi,[...f[0]||(f[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-circle h-2.5 w-2.5 fill-current text-current"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"})],-1)])])):e.createCommentVNode("",!0)],8,Hi),e.createElementVNode("label",{class:e.normalizeClass(["text-xs font-medium cursor-pointer",t.modelValue===g.value?"text-gray-700":"text-gray-600"])},e.toDisplayString(g.label),3)],10,Ri))),128))])]))}}),Wi={class:"flex justify-between mb-3 gap-2"},Yi=["disabled"],Le=e.defineComponent({__name:"vs-tab-manager",props:{mapInfo:{},token:{},fields:{},sectionKey:{},columnsScheme:{},formScheme:{},dialogTitle:{},saveButtonLabel:{},importMapper:{type:Function},withViewMode:{type:Boolean},importButtonLabel:{}},emits:["update","update:columns"],setup(t,{emit:o}){const n=e.ref("list"),r=t,i=o,l=e.ref([]),c=e.ref(!1),f=e.ref([]),g=e.computed(()=>`import-${r.sectionKey??"fields"}`),s=e.computed(()=>r.importButtonLabel||"Імпорт");function m(p){c.value=p}e.watch(()=>{var p;return(p=r.mapInfo)==null?void 0:p[r.sectionKey]},p=>{l.value=Array.isArray(p)?[...p]:[],i("update:columns",l.value)},{immediate:!0}),e.watch(c,p=>{if(p){const k=l.value.map(h=>h.name||h.id);f.value=[...k]}else f.value=[]});function d(){const p=Array.isArray(l.value)?[...l.value]:[],k=(r.importMapper?r.importMapper(r.fields,f.value,p):[])||[],h=$e(p,k,{selectedKeys:f.value,resolveKey:w=>J(w)});u(h)}function a(){c.value=!1,f.value=[]}function y(p){const k=Array.isArray(l.value)?[...l.value]:[],h=typeof p=="function"?p(k):p;Array.isArray(h)&&u(h)}function u(p){l.value=Array.isArray(p)?p:[],i("update:columns",l.value),c.value=!1,f.value=[]}async function b(){if(r.token)try{let p=[];if(n.value==="all"?p=[...r.fields]:n.value==="none"?p=[]:p=l.value,!(await fetch(`/api/table/${r.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({[r.sectionKey]:p})})).ok)throw new Error("Save failed");i("update"),K.notify({type:"success",title:"Успіх",message:`${r.sectionKey} saved`})}catch(p){K.notify({type:"error",title:"Помилка",message:`Failed to save ${r.sectionKey}`}),console.error(p)}}return(p,k)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Wi,[e.createElementVNode("button",{onClick:k[0]||(k[0]=h=>c.value=!0),disabled:t.withViewMode&&n.value!=="list",class:e.normalizeClass([t.withViewMode&&n.value!=="list"?"":"hover:from-gray-600 hover:to-gray-500","inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium bg-gradient-to-r from-gray-500 to-gray-400 text-white h-9 px-4 py-2 disabled:bg-gray-300 disabled:text-gray-500 disabled:cursor-not-allowed disabled:opacity-70"])},[k[5]||(k[5]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1)),e.createTextVNode(" "+e.toDisplayString(s.value),1)],10,Yi),e.createElementVNode("button",{onClick:b,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"},[k[6]||(k[6]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"h-3 w-3 mr-1"},[e.createElementVNode("path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}),e.createElementVNode("path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}),e.createElementVNode("path",{d:"M7 3v4a1 1 0 0 0 1 1h7"})],-1)),e.createTextVNode(" "+e.toDisplayString(t.saveButtonLabel),1)])]),t.withViewMode?(e.openBlock(),e.createBlock(Ki,{key:0,modelValue:n.value,"onUpdate:modelValue":k[1]||(k[1]=h=>n.value=h),class:"mb-2"},null,8,["modelValue"])):e.createCommentVNode("",!0),!t.withViewMode||n.value==="list"?(e.openBlock(),e.createBlock(Ce,{key:1,modelValue:l.value,"onUpdate:modelValue":k[2]||(k[2]=h=>l.value=h),"columns-scheme":t.columnsScheme,"form-scheme":t.formScheme,"main-col-width":"250px","add-button":!1},null,8,["modelValue","columns-scheme","form-scheme"])):e.createCommentVNode("",!0),p.$slots["import-dialog"]?e.renderSlot(p.$slots,"import-dialog",{key:2,visible:c.value,setVisible:m,columns:l.value,onConfirm:y,fields:t.fields}):(e.openBlock(),e.createBlock(Ne,{key:3,visible:c.value,"onUpdate:visible":k[3]||(k[3]=h=>c.value=h),selection:f.value,"onUpdate:selection":k[4]||(k[4]=h=>f.value=h),fields:t.fields,title:t.dialogTitle,"id-prefix":g.value,onConfirm:d,onCancel:a},null,8,["visible","selection","fields","title","id-prefix"]))],64))}}),Gi=e.defineComponent({__name:"vs-tab-popup",props:{mapInfo:{},token:{},fields:{},filters:{},filterFields:{},styleYaml:{},popupFields:{},filterScheme:{}},emits:["update","update:styleYaml","update:popupFields","update:filterScheme","update:cardFields","update:legend"],setup(t,{emit:o}){const n=o,r=[{key:"name",label:"Name"},{key:"ua",label:"UA"},{key:"format",label:"Format"},{key:"meta",label:"Meta"}],i={name:{type:"text",label:"Name",disabled:!0,validators:["required"]},ua:{type:"text",label:"UA",validators:["required"]},format:{type:"text",label:"Format",disabled:!0},meta:{type:"combobox",label:"Meta",mode:"combo",options:[{text:"Title",id:"title"},{text:"Image",id:"image"},{text:"Badge",id:"badge"}]}};function l(c,f,g){const s=new Set(f.map(m=>le(m)).filter(Boolean));return c.filter(m=>s.has(J(m))).map(m=>{const d=J(m),a=g.find(y=>J(y)===d);return{...m,name:d,ua:m.title??m.label??d,format:m.format||"text",meta:(a==null?void 0:a.meta)||m.meta}})}return(c,f)=>(e.openBlock(),e.createBlock(Le,{"map-info":t.mapInfo,token:t.token,fields:t.fields,"section-key":"popup","columns-scheme":r,"form-scheme":i,"dialog-title":"Імпорт колонок","save-button-label":"Зберегти попап","import-mapper":l,onUpdate:f[0]||(f[0]=g=>n("update")),"onUpdate:columns":f[1]||(f[1]=g=>n("update:popupFields",g)),"with-view-mode":""},null,8,["map-info","token","fields"]))}}),Ji={class:"p-4 space-y-4 text-sm"},Qi={class:"space-y-1"},Xi={class:"space-y-1"},ec={class:"flex items-center gap-3"},tc={class:"flex justify-end gap-2 p-4 border-t"},oc=["onClick"],nc=["onClick"],rc=e.defineComponent({__name:"vs-tab-legend",props:{mapInfo:{},token:{},fields:{},filters:{},filterFields:{},styleYaml:{},popupFields:{},filterScheme:{}},emits:["update","update:styleYaml","update:popupFields","update:filterScheme","update:cardFields","update:legend"],setup(t,{emit:o}){const n=o,r=e.ref([]),i=e.ref({name:"",color:"#2E86DE"}),l=e.defineAsyncComponent(()=>import("@opengis/core").then(a=>a.VsModal)),c=[{key:"name",label:"Назва"},{key:"color",label:"Колір",type:"color"}],f={name:{type:"text",label:"Назва",validators:["required"]},color:{type:"color",label:"Колір",validators:["required"]}};function g(a,y,u){return u}function s(a,y){a&&m(),y(a)}function m(){i.value={name:"",color:"#2E86DE"}}function d(a,y,u){var w,x;const b=(w=i.value.name)==null?void 0:w.trim();if(!b){K.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const p=((x=i.value.color)==null?void 0:x.trim())||"#2E86DE";if((Array.isArray(u==null?void 0:u.value)?u.value:r.value).some($=>J($)===J({name:b}))){K.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}a($=>{const _=Array.isArray($)?[...$]:[];return _.push({name:b,color:p}),_}),m(),y(!1)}return(a,y)=>(e.openBlock(),e.createBlock(Le,{"map-info":t.mapInfo,token:t.token,fields:[],"section-key":"legend","columns-scheme":c,"form-scheme":f,"dialog-title":"Додати елемент","save-button-label":"Зберегти легенду","import-button-label":"Додати","import-mapper":g,onUpdate:y[3]||(y[3]=u=>n("update")),"onUpdate:columns":y[4]||(y[4]=u=>r.value.value=u)},{"import-dialog":e.withCtx(({visible:u,setVisible:b,onConfirm:p,columns:k})=>[e.createVNode(e.unref(l),{visible:u,title:"Новий елемент легенди","onUpdate:visible":h=>s(h,b)},{footer:e.withCtx(()=>[e.createElementVNode("div",tc,[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-gray-100 text-gray-700",onClick:h=>b(!1)}," Скасувати ",8,oc),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:h=>d(p,b,k)}," Додати ",8,nc)])]),default:e.withCtx(()=>[e.createElementVNode("div",Ji,[e.createElementVNode("div",Qi,[y[5]||(y[5]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide",for:"legend-name-input"}," Назва ",-1)),e.withDirectives(e.createElementVNode("input",{id:"legend-name-input","onUpdate:modelValue":y[0]||(y[0]=h=>i.value.name=h),type:"text",class:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-200",placeholder:"Наприклад, Житлова зона"},null,512),[[e.vModelText,i.value.name]])]),e.createElementVNode("div",Xi,[y[6]||(y[6]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide",for:"legend-color-input"}," Колір ",-1)),e.createElementVNode("div",ec,[e.withDirectives(e.createElementVNode("input",{id:"legend-color-input","onUpdate:modelValue":y[1]||(y[1]=h=>i.value.color=h),type:"color",class:"h-10 w-16 rounded border border-gray-300"},null,512),[[e.vModelText,i.value.color]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[2]||(y[2]=h=>i.value.color=h),type:"text",class:"flex-1 rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-200",placeholder:"#FFFFFF"},null,512),[[e.vModelText,i.value.color]])])])])]),_:2},1032,["visible","onUpdate:visible"])]),_:1},8,["map-info","token"]))}}),lc=e.defineComponent({__name:"vs-tab-card",props:{mapInfo:{},token:{},fields:{},filters:{},filterFields:{},styleYaml:{},popupFields:{},filterScheme:{}},emits:["update","update:styleYaml","update:popupFields","update:filterScheme","update:cardFields","update:legend"],setup(t,{emit:o}){const n=o;let r=[];const i=[{key:"name",label:"Name"},{key:"ua",label:"UA"},{key:"format",label:"Format"},{key:"meta",label:"Мета"}],l={name:{type:"text",label:"Name",validators:["required"],disabled:!0},ua:{type:"text",label:"UA",validators:["required"]},format:{type:"combobox",label:"Format",mode:"combo",validators:["required"],options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},meta:{type:"combobox",label:"Мета",validators:["required"],mode:"combo",options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"}]}};function c(f,g,s){const m=new Set(g.map(d=>le(d)).filter(Boolean));return f.filter(d=>m.has(J(d))).map(d=>{const a=J(d),y=s.find(u=>J(u)===a);return{...d,name:a,ua:d.title??d.label??a,format:(y==null?void 0:y.format)??d.format??d.type??"text",meta:(y==null?void 0:y.meta)??d.meta??"title"}})}return(f,g)=>(e.openBlock(),e.createBlock(Le,{"map-info":t.mapInfo,token:t.token,fields:t.fields,"section-key":"card","columns-scheme":i,"form-scheme":l,"dialog-title":"Імпорт полів картки","save-button-label":"Зберегти картку","import-mapper":c,onUpdate:g[0]||(g[0]=s=>n("update")),"onUpdate:columns":g[1]||(g[1]=s=>e.isRef(r)?r.value=s:r=s),"with-view-mode":""},null,8,["map-info","token","fields"]))}}),ac=e.defineComponent({__name:"vs-tab-filter",props:{mapInfo:{},token:{},fields:{},filters:{},filterFields:{},styleYaml:{},popupFields:{},filterScheme:{}},emits:["update","update:styleYaml","update:popupFields","update:filterScheme","update:cardFields","update:legend"],setup(t,{emit:o}){const n=o,r=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"},{key:"data",label:"Класифікатор"}],i={id:{type:"text",label:"Name",disabled:!0,validators:["required"]},label:{type:"text",label:"UA",validators:["required"]},type:{type:"combobox",label:"Тип",validators:["required"],mode:"combo",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Autocomplete",id:"autocomplete"}]},data:{type:"text",label:"Класифікатор",conditions:["type","in",["autocomplete"]],validators:["required"]}};function l(c,f,g){const s=new Set(f.map(m=>le(m)).filter(Boolean));return c.filter(m=>s.has(J(m))).map(m=>{const d=J(m),a=g.find(y=>J(y)===d);return{...m,id:d,label:m.title??m.label??d,type:m.type||"text",data:(a==null?void 0:a.data)??m.data}})}return(c,f)=>(e.openBlock(),e.createBlock(Le,{"map-info":t.mapInfo,token:t.token,fields:t.fields,"section-key":"filters","columns-scheme":r,"form-scheme":i,"dialog-title":"Імпорт фільтрів","save-button-label":"Зберегти фільтри","import-mapper":l,onUpdate:f[0]||(f[0]=g=>n("update")),"onUpdate:columns":f[1]||(f[1]=g=>n("update:filterFields",g))},null,8,["map-info","token","fields"]))}}),We=Symbol("MapContext");function sc(t){const o=e.shallowRef(null),n=e.ref(!1);let r=!1;const i=[],l=()=>{r=!0,i.length&&i.forEach(d=>d())},c=()=>{const d=t.container;return typeof d=="string"?document.getElementById(d):(d==null?void 0:d.value)!==void 0?d.value:d},f=()=>r?Promise.resolve():new Promise(d=>i.push(d)),g=async()=>{var a,y,u,b;if(typeof window>"u"||o.value)return;const d=c();if(!d)throw new Error("Map container not found");o.value=new maplibregl.Map({...t.mapOptions||{},center:[30,50],zoom:7,container:d}),(a=t.controls)!=null&&a.navigation&&o.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(y=t.controls)!=null&&y.scale&&o.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(u=t.controls)!=null&&u.fullscreen&&o.value.addControl(new maplibregl.FullscreenControl,"top-right"),(b=t.controls)!=null&&b.geolocate&&o.value.addControl(new maplibregl.GeolocateControl(typeof t.controls.geolocate=="object"?t.controls.geolocate:{}),"top-right"),o.value.once("load",()=>{n.value=!0,l()})},s=()=>{o.value&&(o.value.remove(),o.value=null,n.value=!1)};e.onMounted(g),e.onUnmounted(s);const m={map:o,ready:f,flyTo:d=>{var a;return(a=o.value)==null?void 0:a.flyTo(d)},fitBounds:(d,a)=>{var y;return(y=o.value)==null?void 0:y.fitBounds(d,a)},setCenter:d=>{var a;return(a=o.value)==null?void 0:a.setCenter(d)},setZoom:d=>{var a;return(a=o.value)==null?void 0:a.setZoom(d)},addControl:(d,a)=>{var y;return(y=o.value)==null?void 0:y.addControl(d,a)},removeControl:d=>{var a;return(a=o.value)==null?void 0:a.removeControl(d)},on:(d,a,y)=>{var u,b;return typeof a=="string"?((u=o.value)==null||u.on(d,a,y),()=>{var p;return(p=o.value)==null?void 0:p.off(d,a,y)}):((b=o.value)==null||b.on(d,a),()=>{var p;return(p=o.value)==null?void 0:p.off(d,a)})},off:(d,a,y)=>{var u,b;typeof a=="string"?(u=o.value)==null||u.off(d,a,y):(b=o.value)==null||b.off(d,a)},project:d=>{var a;return(a=o.value)==null?void 0:a.project(d)},unproject:d=>{var a;return(a=o.value)==null?void 0:a.unproject(d)}};return e.provide(We,m),m}function he(){const t=e.inject(We);if(!t)throw new Error("useMap() called outside of a Map provider");return t}const ic=e.defineComponent({__name:"MapView",setup(t,{expose:o}){const n=e.ref(null),r=sc({container:n,mapOptions:{style:{version:8,sources:{},layers:[]},center:[30.5234,50.4501],zoom:9},controls:{navigation:!0,scale:!0}});return o({ctx:r}),(i,l)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{ref_key:"el",ref:n,class:"w-full h-full rounded-xl overflow-hidden"},null,512),e.renderSlot(i.$slots,"default")],64))}}),ve=new Map;function je(t){return t.colorAttr&&t.colors?["match",["get",t.colorAttr],...Object.entries(t.colors).reduce((o,n)=>o.concat(n),[]),"#94a3b8"]:null}function cc(t){var r;if(!t.icon||!t.colors)return null;const o=[],n=(r=t.icon)==null?void 0:r.split("+")[0];return Object.values(t.colors||{}).forEach(i=>{o.push(`${n}+${i.replace("#","")}.png`)}),["match",["get",t.colorAttr],...Object.entries(t.colors).reduce((i,l,c)=>i.concat([l[0],o[c]]),[]),t.icon]}const Ye={};async function Ge(t,o,n){const r=[o],i=o.split("+")[0];Object.values(n||{}).forEach(l=>{r.push(`${i}+${l.replace("#","")}.png`)}),console.log(r);for(let l=0;l<r.length;l+=1){const c=r[l];if(Ye[c])continue;const f=await t.loadImage("/api/gis-icon/"+c);t.addImage(c,f.data),Ye[c]=1}}function Je(t,o){const n=je(t);if(!(t.icon&&!t.iconZoom))return{type:"circle",maxzoom:o||t.iconZoom||22,paint:{"circle-stroke-color":(t==null?void 0:t.stroke)||"#fff","circle-opacity":t.opacity||1,"circle-color":n||t.color,"circle-stroke-width":t.width||1,"circle-radius":t.radius||5}}}function dc(t){const o=je(t);return{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":o||t.color,"fill-opacity":t.opacity||.3,"fill-outline-color":t.stroke}}}function mc(t){return{type:"line",paint:{"line-color":je(t)||t.color,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function pc(t){const o=cc(t);return{type:"symbol",minzoom:t.iconZoom||0,layout:{"icon-image":o||t.icon,"icon-size":1,"icon-allow-overlap":!0,"icon-ignore-placement":!0}}}function Qe(t){const o=[];return t?(t.icon&&o.push(pc(t)),t.pointZoom&&o.push(Je(t,t.pointZoom)),t.type==="polygon"&&o.push(dc(t)),t.type==="line"&&o.push(mc(t)),t.type==="point"&&o.push(Je(t)),o.filter(n=>n)):[]}const Xe={};function et(t,o){if(!o)return Xe[t];const{map:n,ready:r,on:i}=he(),l=o.layer.id||t,c=o.sourceId??(typeof o.layer.source=="string"?o.layer.source:t);o.source&&(!o.layer.source||typeof o.layer.source!="string")&&(o.layer.source=c);let f=!1,g=!1;const s=[],m=()=>{var N,M,F;if(!(g||!n.value)){if(o.source&&!n.value.getSource(c)&&n.value.addSource(c,o.source),!n.value.getLayer(l)){const ne=o.beforeId===0?(M=(N=n.value.getStyle().layers)==null?void 0:N[0])==null?void 0:M.id:o.beforeId;(F=o.layer.style)!=null&&F.icon&&Ge(n.value,o.layer.style.icon,o.layer.style.colors);const Y=Qe(o.layer.style);if(!Y.length)return n.value.addLayer(o.layer,ne);Y.forEach((be,Ie)=>{Object.assign(be,{id:l+(Ie||"")}),["source","source-layer"].forEach(ce=>{be[ce]=o.layer[ce]}),s.push(be.id),n.value.addLayer(be,ne)})}f=!0}};r().then(m);const d=i("style.load",m),a=(N,M)=>n.value?(n.value.on(N,l,M),()=>{var F;return(F=n.value)==null?void 0:F.off(N,l,M)}):()=>{};function y(N){n.value&&n.value.setLayoutProperty(l,"visibility",N?"visible":"none")}async function u(N){if(!n.value)return;N.icon&&Ge(n.value,N.icon,N.colors);const M=Qe(N);s.forEach(F=>n.value.removeLayer(F)),s.splice(0),M.forEach((F,ne)=>{F.id=l+ne,["source","source-layer"].forEach(Y=>{F[Y]=o.layer[Y]}),s.push(F.id),n.value.addLayer(F)})}function b(N){n.value&&Object.entries(N).forEach(([M,F])=>n.value.setPaintProperty(l,M,F))}function p(N){n.value&&Object.entries(N).forEach(([M,F])=>n.value.setLayoutProperty(l,M,F))}function k(N){n.value&&n.value.setFilter(l,N)}function h(N){if(!n.value)return;const M=n.value.getSource(c);M&&"setTiles"in M&&M.setTiles(N)}function w(N){if(!n.value)return;const M=n.value.getSource(c);M&&"setData"in M&&M.setData(N)}function x(N,M){n.value&&n.value.setFeatureState({source:c,...N},M)}function $(N,M){n.value&&n.value.removeFeatureState({source:c,...N},M?{key:M}:void 0)}function _(){!n.value||g||(n.value.getLayer(l)&&n.value.removeLayer(l),o.source&&n.value.getSource(c)&&n.value.removeSource(c),g=!0,d())}const B={ids:{layerId:l,sourceId:c},isMounted:()=>{var N;return f&&!!((N=n.value)!=null&&N.getLayer(l))},setVisible:y,updatePaint:b,updateLayout:p,updateFilter:k,setData:w,setTiles:h,setStyle:u,setFeatureState:x,removeFeatureState:$,remove:_,getSource:()=>{var N;return(N=n.value)==null?void 0:N.getSource(c)},getLayer:()=>{var N;return(N=n.value)==null?void 0:N.getLayer(l)},on:a};ve.set(l,B);const S=()=>{ve.get(l)===B&&ve.delete(l)},T=B.remove;return B.remove=()=>{S(),T()},e.onBeforeUnmount(B.remove),Xe[t]=B,B}const uc={class:"flex flex-row gap-x-3 z-10 relative widget"},fc=["onClick"],gc=["src","alt"],yc=e.defineComponent({__name:"MapLayersPanel",setup(t){const o={gki:{url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/voyager/ua/12/2422/1400.png",title:"Базова карта (voyager)"},arcgisonline:{url:"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.png",preview:"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/7/47/69.png",title:"ESRI Online Imagery(2022-2023)"},none:{}},n=e.ref("gki"),r=et("base",{source:{type:"raster",tiles:[o[n.value].url]},layer:{id:"base",type:"raster",source:"base"},beforeId:0});function i(l){if(n.value=l,!o[l].url)return r.setVisible(!1);r.setVisible(!0),r.setTiles([o[l].url])}return(l,c)=>(e.openBlock(),e.createElementBlock("div",uc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(f,g)=>e.createElementVNode("div",{key:g,onClick:s=>i(g)},[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===g?"border-blue-500":"border-gray-200"])},[f.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:f.preview,alt:f.title,class:"object-cover rounded-lg w-12 h-12"},null,8,gc)):e.createCommentVNode("",!0)],2)],8,fc)),64))]))}}),hc={key:0,class:"legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget",style:{width:"100%"}},bc={class:"flex flex-col gap-1 p-5"},kc={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},xc=e.defineComponent({__name:"MapLegend",props:{items:{}},setup(t){const o=t,{map:n,ready:r}=he(),i=e.ref([]);let l=null;function c(m){return m?m.map((d,a)=>{var b;const y=(d==null?void 0:d.name)||(d==null?void 0:d.label)||(d==null?void 0:d.title)||(d==null?void 0:d.id)||`Layer ${a+1}`,u=(d==null?void 0:d.color)||(d==null?void 0:d.fill)||((b=d==null?void 0:d.paint)==null?void 0:b.color)||"#3388ff";return{id:`${y}-${a}`,label:y,color:u}}):[]}function f(m){return m!=null&&m.layers?m.layers.filter(d=>{const a=d.paint||{};return a["fill-color"]||a["line-color"]||a["circle-color"]}).map((d,a)=>{var b;const y=d.paint||{},u=y["fill-color"]||y["line-color"]||y["circle-color"]||"#3388ff";return{id:d.id||`layer-${a}`,label:((b=d.metadata)==null?void 0:b.title)||d.id||`Layer ${a+1}`,color:u}}):[]}async function g(){var a;await r();const m=n.value;if(!m)return;const d=(a=m.getStyle)==null?void 0:a.call(m);i.value=f(d)}function s(){const m=n.value;if(!m)return;l==null||l();const d=()=>g();m.on("styledata",d),l=()=>m.off("styledata",d)}return e.watch(()=>o.items,async m=>{m!=null?(i.value=c(m),l==null||l()):(await r(),s(),g())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(o.items===void 0||o.items===null)&&(await r(),s(),g())}),e.onBeforeUnmount(()=>{l==null||l(),l=null}),(m,d)=>i.value.length?(e.openBlock(),e.createElementBlock("div",hc,[e.createElementVNode("div",bc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,a=>(e.openBlock(),e.createElementBlock("div",{key:a.id,class:"flex items-center"},[e.createElementVNode("span",{class:"shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px] rounded-full",style:e.normalizeStyle({background:a.color})},null,4),e.createElementVNode("span",kc,[e.createElementVNode("span",null,e.toDisplayString(a.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function wc(){const{map:t,ready:o}=he(),n=e.ref(null),r=e.ref(null),i=e.ref(null);let l=null,c=null,f=[];function g(a){var y,u;n.value=null,r.value=null,i.value=null,(u=(y=a==null?void 0:a.getCanvas)==null?void 0:y.call(a))!=null&&u.style&&(a.getCanvas().style.cursor="")}function s(a){a||(a=t.value),a&&(l&&(a.off("mousemove",l),l=null),c&&(a.off("mouseleave",c),a.off("mouseout",c),c=null),g(a))}async function m(a,y){var b;await o();const u=t.value;if(u){if(s(u),f=a.map(p=>{if(typeof p=="string")return{key:p,label:p};const k=(p==null?void 0:p.name)||(p==null?void 0:p.field);if(!k)return null;const h=(p==null?void 0:p.label)||(p==null?void 0:p.ua)||(p==null?void 0:p.title)||k;return{key:k,label:h}}).filter(p=>!!p),(b=y==null?void 0:y.layerIds)!=null&&b.map(p=>String(p)),!f.length){g(u);return}l=p=>{var x,$;if((x=p==null?void 0:p.originalEvent)!=null&&x.buttons)return;const k=u.queryRenderedFeatures(p.point)[0];if(!k){g(u);return}const h=k.properties||{};n.value=f.map(_=>({field:_.label,value:h[_.key]})),r.value=[p.point.x,p.point.y],i.value=k;const w=($=u.getCanvas)==null?void 0:$.call(u);w&&(w.style.cursor="pointer")},c=()=>{g(u)},u.on("mousemove",l),u.on("mouseleave",c),u.on("mouseout",c)}}function d(){s(),f=[]}return e.onBeforeUnmount(d),{popupContent:n,popupCoords:r,popupFeature:i,enable:m,disable:d}}const _c={class:"popup-card relative w-full overflow-hidden rounded-2xl border border-blue-100 bg-white/95 shadow-2xl backdrop-blur-sm"},Ec={key:0,class:"popup-image-single overflow-hidden"},Vc=["src"],Bc={key:1,class:"border-b border-gray-200 px-3 py-2 text-sm font-semibold text-gray-800"},Cc={class:"px-3 py-2 text-xs text-gray-600"},Nc={class:"w-full border-collapse"},$c={class:"w-1/2 break-words pb-1 pr-2 font-medium text-gray-700"},Lc={class:"w-1/2 break-words pb-1 pl-2 text-right"},Sc={key:0,class:"inline-block rounded px-2 py-0.5 text-xs font-semibold text-yellow-800",style:{"background-color":"rgba(250, 204, 21, 0.25)"}},Fc={key:1},vc=D(e.defineComponent({__name:"MapPopup",props:{fields:{},layerIds:{}},setup(t){const o=t,{popupContent:n,popupCoords:r,popupFeature:i,enable:l,disable:c}=wc(),f=e.ref(null),g=e.ref({left:"-9999px",top:"-9999px"}),s=e.computed(()=>o.fields??[]),m=e.computed(()=>!!(n.value&&n.value.length)),d=e.computed(()=>{var p;return((p=i.value)==null?void 0:p.properties)??{}}),a=e.computed(()=>s.value.filter(p=>p.meta==="image").map(p=>{var k;return(k=d.value)==null?void 0:k[p.name||p.field||""]}).filter(p=>!!p)),y=e.computed(()=>{var w;const p=s.value.find(x=>x.meta==="title");if(!p)return"";const k=p.name||p.field;return(k?(w=d.value)==null?void 0:w[k]:void 0)??""}),u=e.computed(()=>s.value.filter(p=>p.meta!=="image").filter(p=>p.meta!=="title").map(p=>{var x;const k=p.name||p.field,w=(k?(x=d.value)==null?void 0:x[k]:void 0)??"—";return{key:k||String(p.label||p.ua||Math.random()),label:p.ua||p.label||p.title||k||"",display:w,meta:p.meta}}).filter(p=>p.label));function b(){if(!m.value||!r.value||!f.value){g.value={left:"-9999px",top:"-9999px"};return}const p=f.value;p.offsetWidth,p.offsetHeight;const k=r.value[0]+18,h=r.value[1]+18;g.value={left:`${k}px`,top:`${h}px`}}return e.watch(()=>({fields:o.fields,layerIds:o.layerIds}),({fields:p,layerIds:k})=>{const h=k&&k.length?k.map(w=>String(w)):void 0;p&&p.length?l(p,{layerIds:h}).catch(w=>console.error("Failed to enable popup",w)):c()},{immediate:!0,deep:!0}),e.watch([r,n],()=>{e.nextTick(()=>b())}),e.onBeforeUnmount(()=>{c()}),(p,k)=>m.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:f,class:"absolute z-30 w-[280px] pointer-events-none text-gray-800",style:e.normalizeStyle(g.value)},[e.createElementVNode("div",_c,[a.value.length?(e.openBlock(),e.createElementBlock("div",Ec,[e.createElementVNode("img",{src:a.value[0],alt:"popup preview",class:"h-40 w-full object-cover"},null,8,Vc)])):e.createCommentVNode("",!0),y.value?(e.openBlock(),e.createElementBlock("div",Bc,e.toDisplayString(y.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Cc,[e.createElementVNode("table",Nc,[e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,h=>(e.openBlock(),e.createElementBlock("tr",{key:h.key,class:"align-top"},[e.createElementVNode("td",$c,e.toDisplayString(h.label),1),e.createElementVNode("td",Lc,[h.meta==="badge"?(e.openBlock(),e.createElementBlock("span",Sc,e.toDisplayString(h.display),1)):(e.openBlock(),e.createElementBlock("span",Fc,e.toDisplayString(h.display),1))])]))),128))])])])])],4)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-e98f217b"]]),jc=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleYaml:{}},setup(t,{expose:o}){var a;const{map:n,flyTo:r}=he(),i=t,l=i.id,c=String(i.id),f=`${location.origin}/api/vtile/${i.id}/ua/{z}/{x}/{y}.vmt`,g=et(l,{sourceId:c,source:{type:"vector",tiles:[f],minzoom:0,maxzoom:14},layer:{id:l,source:c,"source-layer":i.id,style:(a=i.layer)==null?void 0:a.style}});o({layerHandle:g}),r({center:[34.4924,48.45658],animate:!1});let s=null;function m(){s&&clearTimeout(s),s=setTimeout(()=>{s=null,d().catch(y=>console.error("Failed to update map layer",y))},300)}async function d(){n.value&&g.setStyle(i.styleYaml)}return e.watch(()=>i.styleYaml,m),e.onBeforeUnmount(()=>{g.remove()}),(y,u)=>null}});function Ic(t,o){return t||o||null}function Ac(t){const{map:o,ready:n}=he(),r=e.ref(""),i=e.computed(()=>typeof t=="function"?t()??null:t);async function l(g,s){return g.getSource(s)?g.getSource(s):new Promise(m=>{const d=a=>{if(a.sourceId===s){const y=g.getSource(s);y&&(g.off("sourcedata",d),m(y))}};g.on("sourcedata",d)})}async function c(g,s){var p,k,h;const m=Ic(s,i.value);if(!m)return;await n();const d=o.value;if(!d)return;const a=d.getSource(m)??await l(d,m);if(!a)return;const y=Array.isArray(a.tiles)?a.tiles:Array.isArray((p=a.options)==null?void 0:p.tiles)?a.options.tiles:void 0;if(!y||y.length===0)return;const u=String(y[0]).split("?filter=")[0];if(!u)return;const b=g?`${u}?filter=${encodeURIComponent(g)}`:u;typeof a.setTiles=="function"?a.setTiles([b]):Array.isArray(a.tiles)?a.tiles=[b]:Array.isArray((k=a.options)==null?void 0:k.tiles)&&(a.options.tiles=[b]),r.value=g,(h=d.triggerRepaint)==null||h.call(d)}async function f(g){await c("",g)}return{filter:r,setFilter:c,clearFilter:f}}const Dc=D(e.defineComponent({__name:"MapFilter",props:{layerId:{},position:{},class:{}},emits:["change"],setup(t,{expose:o,emit:n}){const r=t,i=n,l=e.computed(()=>r.position??"top-right"),c=e.computed(()=>{if(l.value==="custom")return"";const u="absolute pointer-events-none z-30";switch(l.value){case"top-left":return`${u} top-4 left-4`;case"bottom-left":return`${u} bottom-4 left-4`;case"bottom-right":return`${u} bottom-4 right-4`;default:return`${u} top-4 right-4`}}),f=e.computed(()=>[c.value,r.class].filter(Boolean).join(" ")),g=()=>r.layerId??null,{setFilter:s,clearFilter:m,filter:d}=Ac(g);async function a(u){await s(u),i("change",u)}async function y(u){await m(u),i("change","")}return e.watch(()=>r.layerId,u=>{u&&(d.value?s(d.value,u):m(u))}),o({apply:a,clear:y,filter:d}),(u,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(f.value)},[e.renderSlot(u.$slots,"default",{applyFilter:a,clearFilter:y,filter:e.unref(d)})],2))}}),[["__scopeId","data-v-54fdbad9"]]);function Mc(){const{map:t,ready:o}=he(),n=e.ref(null),r=e.ref(null),i=e.ref(null),l=e.ref(!1),c=e.computed(()=>l.value||!!n.value||!!i.value);let f=null,g=null;function s(){n.value=null,r.value=null,i.value=null,l.value=!1}function m(){if(f){try{f()}catch{}f=null}}async function d(p){await o();const k=t.value;k&&(m(),s(),g={layerIds:p.layerIds||null,serviceKey:p.serviceKey,mapKey:p.mapKey??null,idProperty:p.idProperty??"id"},k.on("click",a),f=()=>{k.off("click",a)})}function a(p){var x;const k=t.value;if(!k||!g)return;(x=g.layerIds)!=null&&x.length&&g.layerIds;const w=k.queryRenderedFeatures(p.point)[0];if(!w){s();return}y(w)}async function y(p){var x,$;if(!g)return;const k=g.idProperty||"id",h=((x=p==null?void 0:p.properties)==null?void 0:x[k])??(p==null?void 0:p.id)??(($=p==null?void 0:p.properties)==null?void 0:$.id);if(!h){K.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),s();return}const w=new URLSearchParams;w.set("layer",g.serviceKey),w.set("id",String(h)),g.mapKey&&w.set("map",String(g.mapKey)),l.value=!0,i.value=null,r.value=p,n.value=null;try{const _=await fetch(`/api/map-format?${w.toString()}`);if(!_.ok)throw new Error(`Failed to fetch card data (${_.status})`);n.value=await _.json()}catch{i.value=null,n.value=null,K.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"})}finally{l.value=!1}}function u(){s()}function b(){m(),s(),g=null}return e.onBeforeUnmount(()=>{b()}),{cardData:n,cardFeature:r,cardError:i,cardLoading:l,isOpen:c,enable:d,disable:b,close:u}}const Tc={key:0,class:"absolute top-4 right-4 z-30 w-[320px] max-h-[80%] overflow-hidden rounded-2xl border border-slate-200 bg-white/95 shadow-2xl backdrop-blur-md flex flex-col"},Pc={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},zc={class:"min-w-0"},Uc={key:0,class:"text-base font-semibold text-slate-900 truncate"},Oc={key:1,class:"text-xs text-slate-500 truncate"},qc={class:"flex-1 overflow-y-auto px-4 py-3 space-y-3 text-sm text-slate-700"},Rc={key:0,class:"text-center text-xs text-slate-500"},Hc={key:1,class:"text-center text-xs text-red-500"},Zc=["innerHTML"],Kc={key:1,class:"space-y-2"},Wc={class:"text-xs font-semibold text-slate-500 uppercase tracking-wide"},Yc={class:"text-sm text-right text-slate-800 whitespace-pre-wrap"},Gc={key:2,class:"text-center text-xs text-slate-400"},Jc=D(e.defineComponent({__name:"MapCard",props:{fields:{},layerIds:{},serviceKey:{},mapKey:{},idProperty:{}},setup(t){const o=t,n=e.computed(()=>o.fields??[]),r=e.computed(()=>{var x;return((x=o.layerIds)==null?void 0:x.map($=>String($)))??[]}),{cardData:i,cardError:l,cardLoading:c,cardFeature:f,enable:g,disable:s,close:m,isOpen:d}=Mc(),a=e.computed(()=>n.value.find(x=>x.meta==="title")),y=e.computed(()=>n.value.find(x=>x.meta==="subtitle")),u=e.computed(()=>{var B,S,T;const x=((B=i.value)==null?void 0:B.rows)??{},$=a.value;if(!$)return((T=(S=f.value)==null?void 0:S.properties)==null?void 0:T.name)||"";const _=$.name||$.title||"";return(x==null?void 0:x[_])??""}),b=e.computed(()=>{var B;const x=((B=i.value)==null?void 0:B.rows)??{},$=y.value;if(!$)return"";const _=$.name||$.title||"";return(x==null?void 0:x[_])??""}),p=e.computed(()=>{var x;return((x=i.value)==null?void 0:x.html)??""}),k=e.computed(()=>{var _,B;const x=((_=i.value)==null?void 0:_.rows)??{};return n.value.length?n.value.filter(S=>S.meta!=="title"&&S.meta!=="subtitle").map(S=>{const T=S.name||"",N=S.ua||S.label||S.title||T,M=T?x==null?void 0:x[T]:void 0;return{key:T||N,label:N||T,value:M??"—"}}).filter(S=>S.label):(((B=i.value)==null?void 0:B.columns)??[]).filter(S=>!S.hidden_card).map(S=>({key:S.name,label:S.ua||S.name,value:(x==null?void 0:x[S.name])??"—"})).filter(S=>S.label)}),h=e.computed(()=>d.value);function w(){m()}return e.watch(()=>({layerIds:r.value,serviceKey:o.serviceKey,mapKey:o.mapKey,idProperty:o.idProperty}),({layerIds:x,serviceKey:$,mapKey:_,idProperty:B})=>{if(!$){s();return}g({layerIds:x,serviceKey:String($),mapKey:_?String(_):null,idProperty:B?String(B):"id"})},{immediate:!0,deep:!0}),(x,$)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createElementBlock("div",Tc,[e.createElementVNode("div",Pc,[e.createElementVNode("div",zc,[u.value?(e.openBlock(),e.createElementBlock("p",Uc,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0),b.value?(e.openBlock(),e.createElementBlock("p",Oc,e.toDisplayString(b.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",class:"inline-flex h-7 w-7 items-center justify-center rounded-full bg-slate-100 text-slate-500 hover:bg-slate-200 hover:text-slate-700",onClick:w},[...$[0]||($[0]=[e.createElementVNode("span",{class:"sr-only"},"Close",-1),e.createTextVNode(" ✕ ",-1)])])]),e.createElementVNode("div",qc,[e.unref(c)?(e.openBlock(),e.createElementBlock("div",Rc,"Завантаження даних…")):e.unref(l)?(e.openBlock(),e.createElementBlock("div",Hc,e.toDisplayString(e.unref(l)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[p.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"prose prose-sm max-w-none",innerHTML:p.value},null,8,Zc)):k.value.length?(e.openBlock(),e.createElementBlock("div",Kc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,_=>(e.openBlock(),e.createElementBlock("div",{key:_.key,class:"flex items-start justify-between gap-3 border-b border-slate-100 pb-2"},[e.createElementVNode("span",Wc,e.toDisplayString(_.label),1),e.createElementVNode("span",Yc,e.toDisplayString(_.value),1)]))),128))])):(e.openBlock(),e.createElementBlock("div",Gc,"Даних не знайдено."))],64))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-478c3bff"]]),Qc={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Xc={class:"flex-1 relative overflow-hidden"},ed={class:"absolute top-0 left-0 w-full z-20"},td={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},od={class:"flex items-center gap-3"},nd={class:"font-semibold text-lg text-gray-800 line-clamp-1"},rd={class:"text-xs text-gray-500 truncate"},ld=["title"],ad={class:"w-full h-full bg-gradient-to-br from-sky-50 via-white to-blue-50 flex items-center justify-center relative pt-[64px]"},sd={class:"relative w-full h-full"},id={class:"absolute top-4 left-4 z-20"},cd={class:"absolute bottom-4 left-4 z-20"},dd={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},md={class:"flex-1 flex flex-col h-full"},pd={class:"px-3 pt-3 pb-2 border-b border-gray-100"},ud={class:"items-center justify-center text-muted-foreground grid w-full grid-cols-6 h-12 p-1 bg-gray-50 rounded-xl shadow-sm"},fd=["aria-selected","aria-controls","id","tabindex","onClick"],gd={class:"leading-none"},yd={class:"flex flex-col flex-1 overflow-y-hidden p-3"},hd=e.defineComponent({__name:"service",setup(t){const o=Ee.useRoute(),n=Ee.useRouter(),r=o.params.id,i=e.ref(null),l=e.ref([]),c=e.ref(null),f=e.ref(""),g=e.ref([]),s=e.ref([]),m=e.ref([]),d=e.ref(null),a=e.computed(()=>{var B,S,T;const _=(T=(S=(B=d.value)==null?void 0:B.layerHandle)==null?void 0:S.ids)==null?void 0:T.layerId;return _!=null?[String(_)]:[]}),y=e.computed(()=>{var _,B;return((_=c.value)==null?void 0:_.id)??((B=c.value)==null?void 0:B.service_id)??null}),u=e.computed(()=>{var _;return((_=c.value)==null?void 0:_.service_key)??null}),b=e.computed(()=>{var S,T,N;if((S=c.value)!=null&&S.map_key)return c.value.map_key;if((T=c.value)!=null&&T.service_map_key)return c.value.service_map_key;const _=(N=c.value)==null?void 0:N.source_path;if(!_)return null;const B=_.split(".")[0];return B.startsWith("data_")?B.slice(5):B}),p=e.computed(()=>{var _,B;return((_=c.value)==null?void 0:_.pk)||((B=c.value)==null?void 0:B.pk_field)||"id"}),k=[{key:"style",label:"Style",icon:hi},{key:"popup",label:"Popup",icon:Li},{key:"filter",label:"Filter",icon:ji},{key:"legend",label:"Legend",icon:wi},{key:"card",label:"Card",icon:Bi}],h=k.map(_=>_.key),w=e.ref("style");e.onMounted(async()=>{const _=o.query.tab;_&&h.includes(_)&&(w.value=_),await x()}),e.watch(w,_=>{o.query.tab!==_&&n.replace({query:{...o.query,tab:_}})}),e.watch(()=>o.query.tab,_=>{_&&h.includes(_)&&w.value!==_&&(w.value=_)});const x=async()=>{var _,B,S;try{const T=await fetch(`/api/gis-service/${r}`);if(!T.ok)throw new Error(`${T.status}`);const N=await T.json();l.value=N||{},g.value=(N==null?void 0:N.popup)||[],s.value=(N==null?void 0:N.card)||[],i.value=((_=N==null?void 0:N.tokens)==null?void 0:_.edit)||null,c.value=N||null,f.value=N.style||"",g.value=((B=c.value)==null?void 0:B.popup)||[],s.value=((S=c.value)==null?void 0:S.card)||[]}catch(T){console.error("Failed to fetch map info",T)}try{const N=await(await fetch(`/api/data/gis.services.table/${r}`)).json()}catch(T){console.error("Failed to fetch map info",T)}};e.watch(()=>{var _;return(_=c.value)==null?void 0:_.style},_=>{_?typeof _=="string"?f.value=_:f.value=JSON.parse(JSON.stringify(_)):f.value=""},{deep:!0});const $={style:Ui,popup:Gi,legend:rc,card:lc,filter:ac};return(_,B)=>{var S,T,N,M;return e.openBlock(),e.createElementBlock("div",Qc,[e.createElementVNode("div",Xc,[e.createElementVNode("div",ed,[e.createElementVNode("div",td,[e.createElementVNode("div",od,[e.createElementVNode("button",{onClick:B[0]||(B[0]=F=>_.$router.back()),class:"inline-flex items-center px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition"},[...B[5]||(B[5]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1),e.createTextVNode(" Назад ",-1)])]),e.createElementVNode("div",null,[e.createElementVNode("div",nd,e.toDisplayString((S=c.value)==null?void 0:S.name),1),e.createElementVNode("div",rd," Сервіс: "+e.toDisplayString((T=c.value)==null?void 0:T.service_key),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:(N=c.value)==null?void 0:N.description},e.toDisplayString((M=c.value)==null?void 0:M.description),9,ld)])]),e.createElementVNode("div",ad,[e.createElementVNode("div",sd,[e.createVNode(ic,null,{default:e.withCtx(()=>{var F,ne,Y;return[(F=c.value)!=null&&F.service_id?(e.openBlock(),e.createBlock(jc,{key:0,ref_key:"mapLayerRef",ref:d,id:(ne=c.value)==null?void 0:ne.service_id,layer:c.value,"style-yaml":f.value},null,8,["id","layer","style-yaml"])):e.createCommentVNode("",!0),y.value?(e.openBlock(),e.createBlock(Dc,{key:1,"layer-id":y.value},null,8,["layer-id"])):e.createCommentVNode("",!0),e.createElementVNode("div",id,[e.createVNode(yc)]),e.createElementVNode("div",cd,[e.createVNode(xc,{items:((Y=c.value)==null?void 0:Y.legend)||null},null,8,["items"])]),e.createVNode(vc,{fields:g.value,"layer-ids":a.value},null,8,["fields","layer-ids"]),e.createVNode(Jc,{fields:s.value,"layer-ids":a.value,"service-key":u.value,"map-key":b.value,"id-property":p.value},null,8,["fields","layer-ids","service-key","map-key","id-property"])]}),_:1})])])]),e.createElementVNode("div",dd,[e.createElementVNode("div",md,[e.createElementVNode("div",pd,[e.createElementVNode("div",ud,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(k,F=>e.createElementVNode("button",{key:F.key,type:"button",role:"tab","aria-selected":w.value===F.key,"aria-controls":`radix-r0-content-${F.key}`,id:`radix-r0-trigger-${F.key}`,class:e.normalizeClass(["whitespace-nowrap ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 flex flex-col items-center justify-center gap-0.5 py-1 px-1 text-[9px] font-medium transition-all duration-300 hover:bg-white/70 rounded-lg group",w.value===F.key?"bg-white shadow-sm text-gray-700":""]),tabindex:w.value===F.key?0:-1,onClick:ne=>w.value=F.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(F.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",gd,e.toDisplayString(F.label),1)],10,fd)),64))])]),e.createElementVNode("div",yd,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent($[w.value]),{"map-info":c.value,token:y.value,fields:l.value.fields,"filter-fields":l.value.filters,"style-yaml":f.value,"onUpdate:styleYaml":B[1]||(B[1]=F=>f.value=F),"popup-fields":g.value,"onUpdate:popupFields":B[2]||(B[2]=F=>g.value=F),"card-fields":s.value,"onUpdate:cardFields":B[3]||(B[3]=F=>s.value=F),"filter-scheme":m.value,"onUpdate:filterScheme":B[4]||(B[4]=F=>m.value=F),onUpdate:x},null,40,["map-info","token","fields","filter-fields","style-yaml","popup-fields","card-fields","filter-scheme"]))])])])])}}});function bd(t){t.component("MapCustom",Fe)}X.MapCustom=Fe,X.Register=ui,X.Service=hd,X.default=Fe,X.install=bd,Object.defineProperties(X,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|