@opengis/gis 0.2.77 → 0.2.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,153 +1,164 @@
1
- (function(ye,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("@opengis/core"),require("@opengis/form")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","@opengis/core","@opengis/form"],e):(ye=typeof globalThis<"u"?globalThis:ye||self,e(ye.MapCustom={},ye.Vue,ye.vueRouter,ye.openGIScore,ye.openGISform))})(this,function(ye,e,he,ce,Bn){"use strict";/**
1
+ (function(xe,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("@opengis/core"),require("@opengis/form")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","@opengis/core","@opengis/form"],e):(xe=typeof globalThis<"u"?globalThis:xe||self,e(xe.MapCustom={},xe.Vue,xe.vueRouter,xe.openGIScore,xe.openGISform))})(this,(function(xe,e,be,ue,An){"use strict";/**
2
2
  * @license lucide-vue-next v0.514.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
- */const Vn=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),_l=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,o,r)=>r?r.toUpperCase():o.toLowerCase()),El=t=>{const n=_l(t);return n.charAt(0).toUpperCase()+n.slice(1)},Nl=(...t)=>t.filter((n,o,r)=>!!n&&n.trim()!==""&&r.indexOf(n)===o).join(" ").trim();/**
6
+ */const Tn=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Mr=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,o,l)=>l?l.toUpperCase():o.toLowerCase()),Fr=t=>{const n=Mr(t);return n.charAt(0).toUpperCase()+n.slice(1)},Dr=(...t)=>t.filter((n,o,l)=>!!n&&n.trim()!==""&&l.indexOf(n)===o).join(" ").trim();/**
7
7
  * @license lucide-vue-next v0.514.0 - ISC
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
11
- */var vt={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"};/**
11
+ */var At={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"};/**
12
12
  * @license lucide-vue-next v0.514.0 - ISC
13
13
  *
14
14
  * This source code is licensed under the ISC license.
15
15
  * See the LICENSE file in the root directory of this source tree.
16
- */const Bl=({size:t,strokeWidth:n=2,absoluteStrokeWidth:o,color:r,iconNode:l,name:a,class:i,...s},{slots:f})=>e.h("svg",{...vt,width:t||vt.width,height:t||vt.height,stroke:r||vt.stroke,"stroke-width":o?Number(n)*24/Number(t):n,class:Nl("lucide",...a?[`lucide-${Vn(El(a))}-icon`,`lucide-${Vn(a)}`]:["lucide-icon"]),...s},[...l.map(u=>e.h(...u)),...f.default?[f.default()]:[]]);/**
16
+ */const Ir=({size:t,strokeWidth:n=2,absoluteStrokeWidth:o,color:l,iconNode:r,name:a,class:i,...s},{slots:u})=>e.h("svg",{...At,width:t||At.width,height:t||At.height,stroke:l||At.stroke,"stroke-width":o?Number(n)*24/Number(t):n,class:Dr("lucide",...a?[`lucide-${Tn(Fr(a))}-icon`,`lucide-${Tn(a)}`]:["lucide-icon"]),...s},[...r.map(p=>e.h(...p)),...u.default?[u.default()]:[]]);/**
17
17
  * @license lucide-vue-next v0.514.0 - ISC
18
18
  *
19
19
  * This source code is licensed under the ISC license.
20
20
  * See the LICENSE file in the root directory of this source tree.
21
- */const Ve=(t,n)=>(o,{slots:r})=>e.h(Bl,{...o,iconNode:n,name:t},r);/**
21
+ */const Ee=(t,n)=>(o,{slots:l})=>e.h(Ir,{...o,iconNode:n,name:t},l);/**
22
22
  * @license lucide-vue-next v0.514.0 - ISC
23
23
  *
24
24
  * This source code is licensed under the ISC license.
25
25
  * See the LICENSE file in the root directory of this source tree.
26
- */const Cn=Ve("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
26
+ */const Mn=Ee("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
27
27
  * @license lucide-vue-next v0.514.0 - ISC
28
28
  *
29
29
  * This source code is licensed under the ISC license.
30
30
  * See the LICENSE file in the root directory of this source tree.
31
- */const $n=Ve("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
31
+ */const Fn=Ee("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
32
32
  * @license lucide-vue-next v0.514.0 - ISC
33
33
  *
34
34
  * This source code is licensed under the ISC license.
35
35
  * See the LICENSE file in the root directory of this source tree.
36
- */const Vl=Ve("arrow-up-left",[["path",{d:"M7 17V7h10",key:"11bw93"}],["path",{d:"M17 17 7 7",key:"2786uv"}]]);/**
36
+ */const jr=Ee("arrow-up-left",[["path",{d:"M7 17V7h10",key:"11bw93"}],["path",{d:"M17 17 7 7",key:"2786uv"}]]);/**
37
37
  * @license lucide-vue-next v0.514.0 - ISC
38
38
  *
39
39
  * This source code is licensed under the ISC license.
40
40
  * See the LICENSE file in the root directory of this source tree.
41
- */const Cl=Ve("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
41
+ */const zr=Ee("brush-cleaning",[["path",{d:"m16 22-1-4",key:"1ow2iv"}],["path",{d:"M19 13.99a1 1 0 0 0 1-1V12a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v.99a1 1 0 0 0 1 1",key:"iw8jdu"}],["path",{d:"M5 14h14l1.973 6.767A1 1 0 0 1 20 22H4a1 1 0 0 1-.973-1.233z",key:"1soew8"}],["path",{d:"m8 22 1-4",key:"s3unb"}]]);/**
42
42
  * @license lucide-vue-next v0.514.0 - ISC
43
43
  *
44
44
  * This source code is licensed under the ISC license.
45
45
  * See the LICENSE file in the root directory of this source tree.
46
- */const $l=Ve("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
46
+ */const Or=Ee("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
47
47
  * @license lucide-vue-next v0.514.0 - ISC
48
48
  *
49
49
  * This source code is licensed under the ISC license.
50
50
  * See the LICENSE file in the root directory of this source tree.
51
- */const vl=Ve("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
51
+ */const Rr=Ee("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
52
52
  * @license lucide-vue-next v0.514.0 - ISC
53
53
  *
54
54
  * This source code is licensed under the ISC license.
55
55
  * See the LICENSE file in the root directory of this source tree.
56
- */const Sl=Ve("clipboard-copy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]);/**
56
+ */const Pr=Ee("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
57
57
  * @license lucide-vue-next v0.514.0 - ISC
58
58
  *
59
59
  * This source code is licensed under the ISC license.
60
60
  * See the LICENSE file in the root directory of this source tree.
61
- */const Al=Ve("contrast",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 18a6 6 0 0 0 0-12v12z",key:"j4l70d"}]]);/**
61
+ */const Ur=Ee("clipboard-copy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]);/**
62
62
  * @license lucide-vue-next v0.514.0 - ISC
63
63
  *
64
64
  * This source code is licensed under the ISC license.
65
65
  * See the LICENSE file in the root directory of this source tree.
66
- */const Ll=Ve("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/**
66
+ */const qr=Ee("contrast",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 18a6 6 0 0 0 0-12v12z",key:"j4l70d"}]]);/**
67
67
  * @license lucide-vue-next v0.514.0 - ISC
68
68
  *
69
69
  * This source code is licensed under the ISC license.
70
70
  * See the LICENSE file in the root directory of this source tree.
71
- */const Tl=Ve("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/**
71
+ */const Hr=Ee("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/**
72
72
  * @license lucide-vue-next v0.514.0 - ISC
73
73
  *
74
74
  * This source code is licensed under the ISC license.
75
75
  * See the LICENSE file in the root directory of this source tree.
76
- */const vn=Ve("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
76
+ */const Wr=Ee("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/**
77
77
  * @license lucide-vue-next v0.514.0 - ISC
78
78
  *
79
79
  * This source code is licensed under the ISC license.
80
80
  * See the LICENSE file in the root directory of this source tree.
81
- */const Fl=Ve("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);/**
81
+ */const Dn=Ee("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
82
82
  * @license lucide-vue-next v0.514.0 - ISC
83
83
  *
84
84
  * This source code is licensed under the ISC license.
85
85
  * See the LICENSE file in the root directory of this source tree.
86
- */const Ml=Ve("pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);/**
86
+ */const Yr=Ee("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);/**
87
87
  * @license lucide-vue-next v0.514.0 - ISC
88
88
  *
89
89
  * This source code is licensed under the ISC license.
90
90
  * See the LICENSE file in the root directory of this source tree.
91
- */const qt=Ve("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/**
91
+ */const Zr=Ee("pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);/**
92
92
  * @license lucide-vue-next v0.514.0 - ISC
93
93
  *
94
94
  * This source code is licensed under the ISC license.
95
95
  * See the LICENSE file in the root directory of this source tree.
96
- */const Sn=Ve("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);/**
96
+ */const Gr=Ee("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);/**
97
97
  * @license lucide-vue-next v0.514.0 - ISC
98
98
  *
99
99
  * This source code is licensed under the ISC license.
100
100
  * See the LICENSE file in the root directory of this source tree.
101
- */const An=Ve("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"}]]);/**
101
+ */const Yt=Ee("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/**
102
102
  * @license lucide-vue-next v0.514.0 - ISC
103
103
  *
104
104
  * This source code is licensed under the ISC license.
105
105
  * See the LICENSE file in the root directory of this source tree.
106
- */const Ln=Ve("trash-2",[["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"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/**
106
+ */const In=Ee("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);/**
107
107
  * @license lucide-vue-next v0.514.0 - ISC
108
108
  *
109
109
  * This source code is licensed under the ISC license.
110
110
  * See the LICENSE file in the root directory of this source tree.
111
- */const Dl=Ve("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"}]]);/**
111
+ */const jn=Ee("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"}]]);/**
112
112
  * @license lucide-vue-next v0.514.0 - ISC
113
113
  *
114
114
  * This source code is licensed under the ISC license.
115
115
  * See the LICENSE file in the root directory of this source tree.
116
- */const yt=Ve("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),Il={class:"flex items-center justify-center col-span-3 gap-2"},jl={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},zl=e.defineComponent({__name:"vs-datatable-controls",props:e.mergeModels({index:{},data:{},scheme:{}},{columns:{type:Array,default:()=>[]},columnsModifiers:{}}),emits:["update:columns"],setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=e.defineAsyncComponent(()=>import("@opengis/core").then(x=>x.VsModal)),r=t,l=e.useModel(t,"columns"),a=e.ref(!1),i=e.ref({}),s=e.ref({...r.data||{}});e.watch(()=>r.data,x=>{s.value={...x||{}}},{deep:!0});const f=()=>l.value=l.value.filter((x,c)=>c!==r.index),u=async()=>{const x=i.value.validate();if(x){ce.notify({type:"warning",title:"Validation",message:Object.entries(x).map(([c,g])=>`${c}: ${g}`).join(`
117
- `)});return}l.value[r.index]=s.value,a.value=!1};return(x,c)=>(e.openBlock(),e.createElementBlock("div",Il,[e.createElementVNode("button",{onClick:c[0]||(c[0]=g=>{a.value=!0}),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(An),{class:"w-4 h-4"})]),e.createElementVNode("button",{onClick:f,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(Dl),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{teleport:"#modal",size:"lg",visible:a.value,"onUpdate:visible":c[4]||(c[4]=g=>a.value=g),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",jl,[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:c[3]||(c[3]=g=>a.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:u}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(n),{values:s.value,"onUpdate:values":c[1]||(c[1]=g=>s.value=g),schema:t.scheme,form:i.value,"onUpdate:form":c[2]||(c[2]=g=>i.value=g)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),Ol={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")})}},Rl={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"},Tn=t=>Rl[t==null?void 0:t.toLowerCase()]||"gray",Pl=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],Fn=t=>{var n;return Pl.includes((n=t||"")==null?void 0:n.toLowerCase())},oe=(t,n)=>{const o=t.__vccOpts||t;for(const[r,l]of n)o[r]=l;return o},Ul={},ql={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:"w-4 h-4 text-gray-700 lucide lucide-type",__v0_r:"0,5361,5384"};function Hl(t,n){return e.openBlock(),e.createElementBlock("svg",ql,[...n[0]||(n[0]=[e.createElementVNode("polyline",{points:"4 7 4 4 20 4 20 7"},null,-1),e.createElementVNode("line",{x1:"9",x2:"15",y1:"20",y2:"20"},null,-1),e.createElementVNode("line",{x1:"12",x2:"12",y1:"4",y2:"20"},null,-1)])])}const Wl=oe(Ul,[["render",Hl]]),Yl={},Zl={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:"w-4 h-4 text-gray-700 lucide lucide-hash",__v0_r:"0,5361,5384"};function Gl(t,n){return e.openBlock(),e.createElementBlock("svg",Zl,[...n[0]||(n[0]=[e.createElementVNode("line",{x1:"4",x2:"20",y1:"9",y2:"9"},null,-1),e.createElementVNode("line",{x1:"4",x2:"20",y1:"15",y2:"15"},null,-1),e.createElementVNode("line",{x1:"10",x2:"8",y1:"3",y2:"21"},null,-1),e.createElementVNode("line",{x1:"16",x2:"14",y1:"3",y2:"21"},null,-1)])])}const Kl=oe(Yl,[["render",Gl]]),Xl={},Jl={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:"w-4 h-4 text-gray-700 lucide lucide-calendar",__v0_r:"0,5361,5384"};function Ql(t,n){return e.openBlock(),e.createElementBlock("svg",Jl,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M8 2v4"},null,-1),e.createElementVNode("path",{d:"M16 2v4"},null,-1),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"4",rx:"2"},null,-1),e.createElementVNode("path",{d:"M3 10h18"},null,-1)])])}const er=oe(Xl,[["render",Ql]]),tr={},nr={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:"w-4 h-4 text-gray-700 lucide lucide-calendar",__v0_r:"0,5361,5384"};function or(t,n){return e.openBlock(),e.createElementBlock("svg",nr,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M8 2v4"},null,-1),e.createElementVNode("path",{d:"M16 2v4"},null,-1),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"4",rx:"2"},null,-1),e.createElementVNode("path",{d:"M3 10h18"},null,-1)])])}const lr=oe(tr,[["render",or]]),rr={},ar={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:"w-4 h-4 text-gray-700 lucide lucide-code",__v0_r:"0,5361,5384"};function ir(t,n){return e.openBlock(),e.createElementBlock("svg",ar,[...n[0]||(n[0]=[e.createElementVNode("polyline",{points:"16 18 22 12 16 6"},null,-1),e.createElementVNode("polyline",{points:"8 6 2 12 8 18"},null,-1)])])}const sr=oe(rr,[["render",ir]]),cr={},dr={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:"w-4 h-4 text-gray-700 lucide lucide-toggle-left",__v0_r:"0,5361,5384"};function ur(t,n){return e.openBlock(),e.createElementBlock("svg",dr,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6"},null,-1),e.createElementVNode("circle",{cx:"8",cy:"12",r:"2"},null,-1)])])}const pr=oe(cr,[["render",ur]]),mr={},fr={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:"w-4 h-4 text-gray-700 lucide lucide-file-text",__v0_r:"0,5361,5384"};function gr(t,n){return e.openBlock(),e.createElementBlock("svg",fr,[...n[0]||(n[0]=[e.createStaticVNode('<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path>',5)])])}const yr=oe(mr,[["render",gr]]),hr={},xr={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:"w-4 h-4 text-gray-700 lucide lucide-image",__v0_r:"0,5361,5384"};function br(t,n){return e.openBlock(),e.createElementBlock("svg",xr,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"},null,-1),e.createElementVNode("circle",{cx:"9",cy:"9",r:"2"},null,-1),e.createElementVNode("path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"},null,-1)])])}const kr=oe(hr,[["render",br]]),wr={},_r={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:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Er(t,n){return e.openBlock(),e.createElementBlock("svg",_r,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Nr=oe(wr,[["render",Er]]),Br={},Vr={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:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Cr(t,n){return e.openBlock(),e.createElementBlock("svg",Vr,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const $r=oe(Br,[["render",Cr]]),vr={},Sr={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:"w-4 h-4 text-gray-700 lucide lucide-link2",__v0_r:"0,5361,5384"};function Ar(t,n){return e.openBlock(),e.createElementBlock("svg",Sr,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M9 17H7A5 5 0 0 1 7 7h2"},null,-1),e.createElementVNode("path",{d:"M15 7h2a5 5 0 1 1 0 10h-2"},null,-1),e.createElementVNode("line",{x1:"8",x2:"16",y1:"12",y2:"12"},null,-1)])])}const Lr=oe(vr,[["render",Ar]]),Tr={},Fr={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:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Mr(t,n){return e.openBlock(),e.createElementBlock("svg",Fr,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Dr=oe(Tr,[["render",Mr]]),Ir={},jr={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:"w-4 h-4 text-gray-700 lucide lucide-link2",__v0_r:"0,5361,5384"};function zr(t,n){return e.openBlock(),e.createElementBlock("svg",jr,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M9 17H7A5 5 0 0 1 7 7h2"},null,-1),e.createElementVNode("path",{d:"M15 7h2a5 5 0 1 1 0 10h-2"},null,-1),e.createElementVNode("line",{x1:"8",x2:"16",y1:"12",y2:"12"},null,-1)])])}const Or=oe(Ir,[["render",zr]]),Rr={},Pr={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:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Ur(t,n){return e.openBlock(),e.createElementBlock("svg",Pr,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const qr=oe(Rr,[["render",Ur]]),Hr={},Wr={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",height:"800px",width:"800px",version:"1.1",id:"_x32_",viewBox:"0 0 512 512","xml:space":"preserve"};function Yr(t,n){return e.openBlock(),e.createElementBlock("svg",Wr,[...n[0]||(n[0]=[e.createElementVNode("g",null,[e.createElementVNode("path",{class:"st0",d:"M511.989,292.396c0.021-16.486-6.344-33.136-18.945-45.703L273.605,27.242 C262.3,15.936,247.175,9.22,231.184,8.407L66.821,0.032l1.184,0.066C66.974,0.044,65.866,0,64.67,0 C47.58,0,31.105,6.783,18.944,18.955C6.783,31.106-0.001,47.58,0.011,64.67c0,1.076,0.034,2.172,0.078,3.27l8.297,163.254 c0.835,15.981,7.54,31.106,18.857,42.421l219.451,219.451c12.578,12.589,29.217,18.955,45.703,18.934 c16.496,0.021,33.124-6.356,45.703-18.934l154.956-154.945l-11.92-11.92l11.932,11.909 C505.645,325.521,512.011,308.881,511.989,292.396z M314.26,469.216c-6.08,6.08-13.895,9.044-21.864,9.067 c-7.969-0.023-15.783-2.986-21.864-9.067L51.082,249.765c-5.4-5.4-8.616-12.633-9.023-20.305L33.762,66.238l-0.034-1.569 c0-8.188,3.238-16.048,9.055-21.875c5.839-5.839,13.697-9.077,21.886-9.077l1.502,0.044l163.288,8.319 c7.683,0.396,14.904,3.6,20.305,9.012l219.45,219.45c6.059,6.069,9.033,13.884,9.056,21.853 c-0.023,7.968-2.986,15.794-9.067,21.886h0.011L314.26,469.216z"}),e.createElementVNode("path",{class:"st0",d:"M105.632,105.642c-15.366,15.378-15.366,40.27,0,55.636c15.366,15.366,40.259,15.366,55.625,0 c15.366-15.366,15.366-40.259,0-55.636C145.891,90.276,120.998,90.276,105.632,105.642z"})],-1)])])}const Zr=oe(Hr,[["render",Yr]]),Gr={},Kr={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function Xr(t,n){return e.openBlock(),e.createElementBlock("svg",Kr,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z",stroke:"#323232","stroke-width":"2"},null,-1),e.createElementVNode("path",{d:"M9 12L10.6828 13.6828V13.6828C10.858 13.858 11.142 13.858 11.3172 13.6828V13.6828L15 10",stroke:"#323232","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const Mn={IconText:Wl,IconNumber:Kl,IconDate:er,IconDatetime:lr,IconRichtext:sr,IconBoolean:pr,IconFile:yr,IconImage:kr,IconArray:Nr,IconSelect:$r,IconSlug:Lr,IconDatalist:Dr,IconReference:Or,IconReferenceList:qr,IconBadge:Zr,IconCheck:oe(Gr,[["render",Xr]])},Jr={key:0,class:"flex items-center justify-between mb-6"},Qr={class:"flex justify-end w-full"},ea={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},ta={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},na={class:"table-fixed w-full text-[13px]"},oa={class:"bg-gray-50 border-b border-gray-200"},la={key:0},ra=["onDragstart","onDragover","onDrop"],aa={key:0,class:"flex w-fit items-center gap-2 text-left"},ia={class:"flex-1 min-w-0"},sa={class:"font-medium text-gray-900 truncate"},ca={class:"text-xs text-gray-500"},da={key:1,class:"flex items-center justify-center"},ua={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"},pa={key:1,class:"text-gray-500 text-sm"},ma={key:3},fa={class:"px-6 py-4"},ga={key:1},ya=["colspan"],Ze=oe(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:n}){function o($){return $.charAt(0).toUpperCase()+$.slice(1)}const r=e.defineAsyncComponent(()=>import("@opengis/core").then($=>$.VsModal)),l=e.defineAsyncComponent(()=>import("@opengis/form")),a=e.useModel(t,"modelValue"),i=t,s=e.ref({}),f=e.ref(!1),u=e.ref({}),x=e.ref(null),c=e.useSlots(),g=$=>!!($&&c[$]);n({openCreateDialog:()=>{f.value=!0}});const d=e.computed({get(){return Array.isArray(a.value)?a.value:a.value&&Array.isArray(a.value.columns)?a.value.columns:[]},set($){Array.isArray(a.value)?a.value=$:a.value&&Array.isArray(a.value.columns)&&(a.value.columns=$)}}),y=e.computed(()=>{const $=i.columnsScheme.map(w=>w.key);return $.includes("name")&&$.includes("label")||$.includes("id")&&$.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...i.columnsScheme.filter(w=>!["name","id","label"].includes(w.key))]:i.columnsScheme});function m(){f.value=!1,u.value={},x.value=null}async function h(){const $=s.value.validate();if($){ce.notify({type:"warning",title:"Validation",message:Object.entries($).map(([w,C])=>`${w}: ${C}`).join(`
118
- `)});return}if(x.value===null)d.value=[...d.value,{...u.value}];else{const w=[...d.value];w[x.value]={...u.value},d.value=w}m()}const p=e.ref(null),E=e.ref(null),A=$=>{p.value=$},F=$=>{E.value=$},D=$=>{if(p.value===null||p.value===$){p.value=null,E.value=null;return}const w=[...d.value],[C]=w.splice(p.value,1);w.splice($,0,C),d.value=w,p.value=null,E.value=null};return($,w)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",Jr,[e.createElementVNode("div",Qr,[e.createElementVNode("button",{onClick:w[0]||(w[0]=C=>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"},[...w[4]||(w[4]=[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",ea,[e.createElementVNode("div",ta,[e.createElementVNode("table",na,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,C=>(e.openBlock(),e.createElementBlock("col",{key:C.key,style:e.normalizeStyle(C.type==="main"?`width: ${t.mainColWidth}`:C.width?`width: ${C.width}`:"auto")},null,4))),128)),w[5]||(w[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",oa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,C=>(e.openBlock(),e.createElementBlock("th",{key:C.key,class:"px-6 py-4"},e.toDisplayString(C.label),1))),128)),w[6]||(w[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),d.value.length?(e.openBlock(),e.createElementBlock("tbody",la,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(C,_)=>(e.openBlock(),e.createElementBlock("tr",{key:C.id||C.name||_,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":p.value===_,"border-t-2 border-b-2 border-blue-500 bg-blue-50":E.value===_}]),draggable:"true",onDragstart:I=>A(_),onDragover:e.withModifiers(I=>F(_),["prevent"]),onDrop:I=>D(_)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,I=>(e.openBlock(),e.createElementBlock("td",{key:I.key,class:"px-6 py-4 align-middle text-center"},[I.type==="main"?(e.openBlock(),e.createElementBlock("div",aa,[w[7]||(w[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(Fn)(C.format==="yes/no"?"check":C.format||C.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(Tn)(C.format==="yes/no"?"check":C.format||C.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(C.format==="yes/no"?"icon-check":e.unref(Mn)["Icon"+o(C.format||C.type)]||e.unref(Mn).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",ia,[e.withDirectives((e.openBlock(),e.createElementBlock("p",sa,[e.createTextVNode(e.toDisplayString(C.name||C.id),1)])),[[e.unref(Ol)]]),e.createElementVNode("p",ca,e.toDisplayString(C.label||C.ua||C.name||C.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[I.slot&&g(I.slot)?e.renderSlot($.$slots,I.slot,{key:0,row:C,column:I,value:C[I.key],rowIndex:_},void 0,!0):I.type==="color"?(e.openBlock(),e.createElementBlock("div",da,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${C[I.key]}]`])},null,2)])):["format","type","meta"].includes(I.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[C[I.key]?(e.openBlock(),e.createElementBlock("span",ua,e.toDisplayString(C[I.key]),1)):(e.openBlock(),e.createElementBlock("span",pa,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",ma,e.toDisplayString(C[I.key]),1))],64))]))),128)),e.createElementVNode("td",fa,[e.createVNode(zl,{columns:d.value,"onUpdate:columns":w[1]||(w[1]=I=>d.value=I),data:C,index:_,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,ra))),128))])):(e.openBlock(),e.createElementBlock("tr",ga,[e.createElementVNode("td",{colspan:y.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,ya)]))])])]),e.createVNode(e.unref(r),{teleport:"#modal",title:"Створити поле",size:"lg",visible:f.value,"onUpdate:visible":w[3]||(w[3]=C=>f.value=C)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:m,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"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(l),{ref_key:"form",ref:s,modelValue:u.value,"onUpdate:modelValue":w[2]||(w[2]=C=>u.value=C),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-93fedaf0"]]),ha={class:"p-4 text-[13px]"},xa={class:"grid grid-cols-2 gap-x-6 gap-y-2"},ba=["id","checked","onChange"],ka={class:"ml-2 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"},Ea={key:0,class:"text-xs text-[#B2C9D6]"},Na={class:"flex justify-end gap-2 p-4 border-t w-full"},lt=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:n}){const o=e.useModel(t,"visible"),r=e.useModel(t,"selection"),l=t,a=n,i=e.defineAsyncComponent(()=>import("@opengis/core").then(A=>A.VsModal)),s=e.computed(()=>Array.isArray(l.fields)?l.fields.filter(Boolean):[]),f=A=>(A==null?void 0:A.name)??(A==null?void 0:A.id)??(A==null?void 0:A.key)??(A==null?void 0:A.code)??(A==null?void 0:A.field)??(A==null?void 0:A.value)??"",u=A=>String(f(A)??"").trim(),x=A=>(A==null?void 0:A.title)??(A==null?void 0:A.label)??u(A),c=A=>String((A==null?void 0:A.type)??"").trim(),g=e.computed(()=>new Set(r.value.map(A=>String(A??"").trim()))),d=A=>g.value.has(u(A)),y=A=>{const F=u(A);if(!F)return;const D=new Set(g.value);D.has(F)?D.delete(F):D.add(F),r.value=Array.from(D)},m=e.computed(()=>l.confirmText||"Імпортувати"),h=e.computed(()=>l.cancelText||"Скасувати"),p=()=>{o.value=!1,a("cancel")},E=()=>{a("confirm"),o.value=!1};return(A,F)=>(e.openBlock(),e.createBlock(e.unref(i),{visible:o.value,"onUpdate:visible":F[0]||(F[0]=D=>o.value=D),teleport:"#modal",title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Na,[e.createElementVNode("button",{onClick:p,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(h.value),1),e.createElementVNode("button",{onClick:E,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(m.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",ha,[e.createElementVNode("div",xa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,D=>(e.openBlock(),e.createElementBlock("label",{key:u(D),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${u(D)}`,checked:d(D),onChange:$=>y(D)},null,40,ba),e.createElementVNode("div",ka,[e.unref(Fn)(D.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(Tn)(D.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${D.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",wa,e.toDisplayString(u(D)),1),e.createElementVNode("p",_a,e.toDisplayString(x(D)),1),c(D)?(e.openBlock(),e.createElementBlock("p",Ea,e.toDisplayString(c(D)),1)):e.createCommentVNode("",!0)])])]))),128))])])]),_:1},8,["visible","title"]))}});function rt(t){return t==null?"":String(t).trim()}function Ge(t){return rt((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 at(t,n,o){const r=Array.isArray(t)?[...t]:[],l=Array.isArray(n)?n:[],{selectedKeys:a,resolveKey:i}=o,s=new Set;for(const c of a){const g=rt(c);g&&s.add(g)}if(s.size===0)return[];const f=c=>rt(i(c)),u=[],x=new Set;for(const c of r){const g=f(c);!g||!s.has(g)||(u.push(c),x.add(g))}for(const c of l){const g=f(c);!g||x.has(g)||!s.has(g)||(u.push(c),x.add(g))}return u}const Ba={class:"vs-form"},Va={class:"vs-form__body auto-rows-max container"},Ca={class:"flex flex-wrap"},$a={class:"h-fit w-full mb-6 px-2"},va={class:"h-fit w-full flex flex-wrap"},Sa={class:"w-full"},Aa=e.defineComponent({__name:"list-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),a=E=>Ge(E||{}),i=e.defineAsyncComponent(()=>import("@opengis/form")),s=e.ref(),f=e.ref(!1),u=e.ref([]),x=()=>{const E=g.value.map(A=>a(A)).filter(A=>A.length>0);u.value=[...E],f.value=!0},c=e.computed(()=>{var E,A;return((E=n.value)==null?void 0:E.token)||((A=n.value)==null?void 0:A.id)||"register-form"}),g=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.columns)||(n.value.columns=[]),n.value.columns),set:E=>{n.value||(n.value={}),n.value.columns=Array.isArray(E)?E:[]}}),d=e.computed({get:()=>n.value||{},set:E=>{var F;const A=Array.isArray((F=n.value)==null?void 0:F.columns)?n.value.columns:[];n.value={...n.value,...E,columns:A}}});e.watch(()=>s.value,E=>{o.value=E||null},{immediate:!0}),e.watch(f,E=>{E||(u.value=[])});const y=()=>{const E=new Set(u.value.map(D=>rt(D)).filter(D=>D.length>0)),A=Array.isArray(g.value)?[...g.value]:[],F=l.value.filter(D=>E.has(a(D))).map(D=>{const $=a(D),w=D.title??D.label??$;return{...D,name:$,label:w,type:D.type||"text",meta:D.meta??"features"}});g.value=at(A,F,{selectedKeys:u.value,resolveKey:a}),f.value=!1,u.value=[]},m={table_name:{type:"select",label:"Таблиця",required:!0,data:"pg.table_name",placeholder:"Таблиця в БД",validators:["required"],col:6},name:{type:"text",label:"Назва",required:!0,placeholder:"Назва",validators:["required"],col:6},query:{type:"text",label:"Умова",placeholder:"Умова",col:6},order:{type:"text",label:"Сортування",placeholder:"Сортування",col:6},description:{type:"textarea",label:"Опис",placeholder:"Опис",col:12}},h=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Назва",type:"text"},{key:"meta",label:"Мета",type:"text"}],p={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},label:{type:"text",label:"Назва",validators:["required"]},format:{type:"radio",label:"Формат",position:"horizontal",options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Badge",id:"badge"},{text:"Tags",id:"tags"}],validators:["required"]},is_export:{type:"switcher",label:"Експорт",info:"Чи експортувати дані колонки?",view:"switcher"},meta:{type:"combobox",label:"Мета",mode:"combo",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:"select",label:"Класифікатор",data:"admin.cls.name",conditions:["format","in",["select","badge","tags"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(E,A)=>(e.openBlock(),e.createElementBlock("div",Ba,[e.createElementVNode("div",Va,[e.createElementVNode("div",Ca,[e.createElementVNode("div",$a,[(e.openBlock(),e.createBlock(e.unref(i),{ref_key:"formEl",ref:s,key:c.value,schema:m,modelValue:d.value,"onUpdate:modelValue":A[0]||(A[0]=F=>d.value=F)},null,8,["modelValue"]))]),e.createElementVNode("div",va,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:x,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[4]||(A[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",Sa,[e.createVNode(Ze,{modelValue:g.value,"onUpdate:modelValue":A[1]||(A[1]=F=>g.value=F),"columns-scheme":h,"form-scheme":p,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(lt,{visible:f.value,"onUpdate:visible":A[2]||(A[2]=F=>f.value=F),selection:u.value,"onUpdate:selection":A[3]||(A[3]=F=>u.value=F),fields:l.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:y},null,8,["visible","selection","fields"])]))}}),La={class:"vs-form"},Ta={class:"vs-form__body auto-rows-max container"},Fa={class:"flex flex-wrap"},Ma={class:"h-fit w-full flex flex-wrap"},Da={class:"w-full"},Ia=e.defineComponent({__name:"filter-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),a=d=>Ge(d||{}),i=e.ref(!1),s=e.ref([]),f=()=>{const d=u.value.map(y=>a(y)).filter(y=>y.length>0);s.value=[...d],i.value=!0},u=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:d=>{n.value||(n.value={}),n.value.filters=Array.isArray(d)?d:[]}});e.watch(i,d=>{d||(s.value=[])});const x=()=>{const d=new Set(s.value.map(h=>rt(h)).filter(h=>h.length>0)),y=Array.isArray(u.value)?[...u.value]:[],m=l.value.filter(h=>d.has(a(h))).map(h=>({name:a(h),label:h.title??h.label??a(h),type:h.type||"text"}));u.value=at(y,m,{selectedKeys:s.value,resolveKey:a}),i.value=!1,s.value=[]},c=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],g={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},type:{type:"radio",label:"Тип",required:!0,position:"horizontal",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Select",id:"select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"text",label:"Класифікатор",conditions:["type","in",["select","autocomplete","check"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,y)=>(e.openBlock(),e.createElementBlock("div",La,[e.createElementVNode("div",Ta,[e.createElementVNode("div",Fa,[y[4]||(y[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",Ma,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:f,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"},[...y[3]||(y[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",Da,[e.createVNode(Ze,{modelValue:u.value,"onUpdate:modelValue":y[0]||(y[0]=m=>u.value=m),"columns-scheme":c,"form-scheme":g,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(lt,{visible:i.value,"onUpdate:visible":y[1]||(y[1]=m=>i.value=m),selection:s.value,"onUpdate:selection":y[2]||(y[2]=m=>s.value=m),fields:l.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:x},null,8,["visible","selection","fields"])]))}}),ja={class:"vs-form"},za={class:"vs-form__body auto-rows-max container"},Oa={class:"flex flex-wrap"},Ra={class:"h-fit w-full flex flex-wrap"},Pa={class:"w-full"},Ua=e.defineComponent({__name:"card-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),a=d=>Ge(d||{}),i=e.ref(!1),s=e.ref([]),f=()=>{const d=u.value.map(y=>a(y)).filter(y=>y.length>0);s.value=[...d],i.value=!0},u=e.computed({get:()=>n.value.card,set:d=>{n.value||(n.value={}),n.value.card=Array.isArray(d)?d:[]}});e.watch(i,d=>{var y;if(d){const m=((y=u.value)==null?void 0:y.map(h=>h.name))||[];s.value=[...m]}});const x=()=>{const d=new Set(s.value.map(h=>rt(h)).filter(h=>h.length>0)),y=Array.isArray(u.value)?[...u.value]:[],m=l.value.filter(h=>d.has(a(h))).map(h=>{const p=a(h),E=h.title??h.label??p;return{...h,name:p,label:E,format:h.format||h.type||"text",meta:h.meta||"title"}});u.value=at(y,m,{selectedKeys:s.value,resolveKey:a}),i.value=!1,s.value=[]},c=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Назва",type:"text"},{key:"format",label:"Формат",type:"text"}],g={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},label:{type:"text",label:"Назва",validators:["required"]},format:{type:"radio",label:"Формат",position:"horizontal",options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Badge",id:"badge"},{text:"Tags",id:"tags"}],validators:["required"]},data:{type:"text",label:"Класифікатор",conditions:["format","in",["select","badge","tags"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,y)=>(e.openBlock(),e.createElementBlock("div",ja,[e.createElementVNode("div",za,[e.createElementVNode("div",Oa,[y[4]||(y[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",Ra,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:f,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"},[...y[3]||(y[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",Pa,[e.createVNode(Ze,{modelValue:u.value,"onUpdate:modelValue":y[0]||(y[0]=m=>u.value=m),"columns-scheme":c,"form-scheme":g,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(lt,{visible:i.value,"onUpdate:visible":y[1]||(y[1]=m=>i.value=m),selection:s.value,"onUpdate:selection":y[2]||(y[2]=m=>s.value=m),fields:l.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:x},null,8,["visible","selection","fields"])]))}}),qa=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function ht(t){if(!t)return"";const[n,o]=t.split(" ");if(!n)return t;const[r,l,a]=n.split("-");if(!r||!l||!a)return t;const i=parseInt(l,10),s=qa[i]||l;let f=`${parseInt(a,10)} ${s} ${r}`;if(o){const u=o.split(".")[0],[x,c,g]=u.split(":");x&&c&&g?f+=`, ${x}:${c}:${g}`:x&&c?f+=`, ${x}:${c}`:x&&(f+=`, ${x}`)}return f}const Ha={class:"flex flex-col md:flex-row md:justify-between lg:flex-row lg:justify-between p-3 md:p-3.5 lg:p-4 pb-2 bg-slate-50 gap-3 md:gap-3.5 lg:gap-4"},Wa={class:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between md:gap-3 lg:flex-row lg:items-center lg:justify-between lg:gap-0"},Ya={class:"flex flex-col gap-2 md:flex-row md:items-center"},Za={class:"text-base md:text-base lg:text-lg font-bold line-clamp-2"},Ga={key:0,class:"flex flex-wrap items-center gap-1 md:gap-1.5 lg:gap-2 md:ml-2 lg:ml-2"},Ka={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 whitespace-nowrap","data-v0-t":"badge"},Xa={key:0,class:"flex flex-wrap items-center gap-1 md:gap-1.5 lg:gap-2"},Ja={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 whitespace-nowrap"},Qa={class:"p-3 md:p-3.5 lg:p-4 pt-2"},ei={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-2 md:gap-2.5 lg:gap-3 text-sm"},ti={class:"text-gray-500 shrink-0 md:max-w-[50%]"},ni={class:"font-medium flex flex-wrap gap-1"},oi={class:"items-center p-3 bg-slate-50 flex flex-col md:flex-row justify-end gap-2"},li=["href"],ri=["href"],Dn=e.defineComponent({__name:"template-1",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),a=e.computed(()=>n.columns.filter(c=>c.meta==="category")),i=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),f=(c,g)=>{if(g)return c[g]},u=c=>{const g=f(c,n.id_key);return`${n.path}?id=${g}`},x=(c,g)=>{const d=f(c,n.id_key);return`/map?layers=${g}&info=${g},${d}`};return(c,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var y,m,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",Ha,[e.createElementVNode("div",Wa,[e.createElementVNode("div",Ya,[e.createElementVNode("h2",Za,e.toDisplayString(d[`${(y=l.value)==null?void 0:y.name}_text`]||d[(m=l.value)==null?void 0:m.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Ga,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,p=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:p.name},[d[p.name]?(e.openBlock(),e.createElementBlock("div",Ka,e.toDisplayString(d[`${p.name}_text`]||d[p.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)])]),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Xa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,p=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:p.name},[d[p.name]?(e.openBlock(),e.createElementBlock("span",Ja,e.toDisplayString(d[`${p.name}_text`]||d[p.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Qa,[e.createElementVNode("div",ei,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,p=>{var E;return e.openBlock(),e.createElementBlock("div",{key:p.name,class:"flex flex-col md:flex-row md:items-center lg:flex-row lg:items-center gap-1 md:gap-1.5 lg:gap-1.5"},[e.createElementVNode("span",ti,e.toDisplayString((p==null?void 0:p.ua)||p.label||p.name)+": ",1),e.createElementVNode("span",ni,[Array.isArray(d[p==null?void 0:p.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[(p==null?void 0:p.name)+"_text"]||d[p==null?void 0:p.name],(A,F)=>(e.openBlock(),e.createElementBlock("span",{key:F,class:"bg-gray-100 px-2 py-0 border-[0.01rem] border-gray-300 rounded-lg whitespace-nowrap"},e.toDisplayString(A),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[p.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ht)(d[p==null?void 0:p.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((E=d[(p==null?void 0:p.name)+"_data"])==null?void 0:E.text)||d[(p==null?void 0:p.name)+"_text"]||d[p==null?void 0:p.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",oi,[!t.hideDetailsButton&&r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:x(d,d==null?void 0:d.service_id),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"},[...g[0]||(g[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-map-pin-check-inside ml-1 h-3.5 w-3.5"},[e.createElementVNode("path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}),e.createElementVNode("path",{d:"m9 10 2 2 4-4"})],-1)])],8,li)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:u(d),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"},[...g[1]||(g[1]=[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,ri))])])}),128))}}),ai={class:"p-0"},ii={class:"border-l-4 border-l-slate-400"},si={class:"p-4"},ci={class:"flex flex-wrap items-center gap-2 mb-3"},di={class:"text-lg font-bold"},ui={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"},pi={key:1,class:"flex"},mi={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"},fi={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3 text-sm border-t pt-3"},gi={class:"text-xs text-gray-500 mb-1"},yi={class:"font-medium"},hi={class:"flex justify-end gap-2 mt-3 border-t pt-3"},xi=["href"],bi=["href"],In=e.defineComponent({__name:"template-2",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),a=e.computed(()=>n.columns.filter(c=>c.meta==="category")),i=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),f=(c,g)=>{if(g)return c[g]},u=c=>{const g=f(c,n.id_key);return`${n.path}?id=${g}`},x=(c,g)=>{const d=f(c,n.id_key);return`/map?layers=${g}&info=${g},${d}`};return(c,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var y,m,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",ai,[e.createElementVNode("div",ii,[e.createElementVNode("div",si,[e.createElementVNode("div",ci,[e.createElementVNode("h2",di,e.toDisplayString(d[`${(y=l.value)==null?void 0:y.name}_text`]||d[(m=l.value)==null?void 0:m.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,p=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:p.name},[d[p.name]?(e.openBlock(),e.createElementBlock("div",ui,e.toDisplayString(d[`${p.name}_text`]||d[p.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",pi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,p=>(e.openBlock(),e.createElementBlock("div",{key:p.name,class:"flex flex-wrap gap-1 ml-2"},[d[p.name]?(e.openBlock(),e.createElementBlock("span",mi,e.toDisplayString(d[`${p.name}_text`]||d[p.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",fi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,p=>{var E;return e.openBlock(),e.createElementBlock("div",{key:p.name},[e.createElementVNode("p",gi,e.toDisplayString(p.ua),1),e.createElementVNode("p",yi,[Array.isArray(d[p==null?void 0:p.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[p==null?void 0:p.name],(A,F)=>(e.openBlock(),e.createElementBlock("span",{key:F,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},[p.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ht)(d[p==null?void 0:p.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((E=d[(p==null?void 0:p.name)+"_data"])==null?void 0:E.text)||d[(p==null?void 0:p.name)+"_text"]||d[p==null?void 0:p.name]||"Немає даних"),1)],64))],64))])])}),128))]),e.createElementVNode("div",hi,[!t.hideDetailsButton&&r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:x(d,d==null?void 0:d.service_id),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"},[...g[0]||(g[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-map-pin-check-inside ml-1 h-3.5 w-3.5"},[e.createElementVNode("path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}),e.createElementVNode("path",{d:"m9 10 2 2 4-4"})],-1)])],8,xi)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:u(d),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"},[...g[1]||(g[1]=[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,bi))])])])])])}),128))}}),ki={class:"space-y-4"},wi={class:"flex flex-col lg:flex-row lg:items-center py-2 px-2 lg:px-3"},_i={class:"flex-1"},Ei={class:"grid grid-cols-1 lg:grid-cols-12 gap-2 w-full text-xs"},Ni={class:"col-span-1 lg:col-span-4"},Bi={class:"flex items-start"},Vi={class:"flex flex-col"},Ci={class:"font-bold text-xs lg:text-sm"},$i={key:0,class:"flex flex-wrap gap-1 mt-1"},vi={key:0,class:"inline-flex items-center rounded-full bg-secondary text-secondary-foreground text-[9px] lg:text-[10px] px-1.5 py-0"},Si={key:1,class:"flex flex-wrap gap-1 mt-1"},Ai={key:0,class:"inline-flex items-center rounded-full bg-gray-100 text-gray-800 text-[10px] lg:text-xs px-2 py-0.5 font-semibold"},Li={class:"col-span-1 lg:col-span-7 mt-2 lg:mt-0"},Ti={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2 lg:gap-3"},Fi={class:"text-[9px] lg:text-[10px] text-gray-500 mb-1"},Mi={class:"truncate font-medium text-xs lg:text-sm"},Di={class:"flex items-center justify-center gap-2 mt-3 lg:mt-0"},Ii=["href"],ji=["href"],jn=e.defineComponent({__name:"template-3",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),r=g=>(g==null?void 0:g.service_id)&&(g==null?void 0:g.is_map)&&g[n.id_key]&&(g==null?void 0:g.geom),l=e.computed(()=>n.columns.find(g=>g.meta==="title")),a=e.computed(()=>n.columns.filter(g=>g.meta==="category")),i=e.computed(()=>n.columns.filter(g=>g.meta==="tags")),s=e.computed(()=>n.columns.filter(g=>g.meta!=="title")),f=e.computed(()=>"bg-blue-500"),u=(g,d)=>{if(d)return g[d]},x=g=>{const d=u(g,n.id_key);return`${n.path}?id=${d}`},c=(g,d)=>{const y=u(g,n.id_key);return`/map?layers=${d}&info=${d},${y}`};return(g,d)=>(e.openBlock(),e.createElementBlock("div",ki,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>{var m,h,p;return e.openBlock(),e.createElementBlock("div",{key:y.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",wi,[e.createElementVNode("div",_i,[e.createElementVNode("div",Ei,[e.createElementVNode("div",Ni,[e.createElementVNode("div",Bi,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-6 lg:h-8 rounded-full mr-2 lg:mr-3 mt-1",f.value])},null,2),e.createElementVNode("div",Vi,[e.createElementVNode("p",Ci,e.toDisplayString(y[`${(m=l.value)==null?void 0:m.name}_text`]||y[(h=l.value)==null?void 0:h.name]||y[(p=l.value)==null?void 0:p.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",$i,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,E=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:E.name},[y[E.name]?(e.openBlock(),e.createElementBlock("span",vi,e.toDisplayString(y[`${E.name}_text`]||y[E.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Si,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,E=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:E.name},[y[E.name]?(e.openBlock(),e.createElementBlock("span",Ai,e.toDisplayString(y[`${E.name}_text`]||y[E.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",Li,[e.createElementVNode("div",Ti,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,E=>{var A;return e.openBlock(),e.createElementBlock("div",{key:E.name},[e.createElementVNode("p",Fi,e.toDisplayString(E.ua),1),e.createElementVNode("p",Mi,[Array.isArray(y[E.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(y[E.name],(F,D)=>(e.openBlock(),e.createElementBlock("span",{key:D,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1 text-[10px] lg:text-xs"},e.toDisplayString(F),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[E.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ht)(y[E.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((A=y[E.name+"_data"])==null?void 0:A.text)||y[E.name+"_text"]||y[E.name]||"Немає даних"),1)],64))],64))])])}),128))])])])]),e.createElementVNode("div",Di,[!t.hideDetailsButton&&r(y)?(e.openBlock(),e.createElementBlock("a",{key:0,href:c(y,y.service_id),class:"inline-flex items-center justify-center gap-2 text-xs lg:text-sm font-medium hover:bg-accent hover:text-accent-foreground h-8 lg:h-9 rounded-md px-2 lg:px-3"},[...d[0]||(d[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:"h-3 w-3 lg:h-3.5 lg:w-3.5"},[e.createElementVNode("path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}),e.createElementVNode("path",{d:"m9 10 2 2 4-4"})],-1)])],8,Ii)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:x(y),class:"flex items-center justify-center hover:bg-accent hover:text-accent-foreground rounded-md h-8 w-8 lg:h-7 lg:w-7"},[...d[1]||(d[1]=[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:"h-3.5 w-3.5 lg:h-4 lg:w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,ji))])])])}),128))]))}}),zi={class:"flex flex-col space-y-1.5 p-6 pb-2"},Oi={class:"flex items-center gap-2 flex-wrap"},Ri={class:"tracking-tight text-lg font-medium"},Pi={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"},Ui={key:1,class:"flex"},qi={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"},Hi={class:"p-6 pt-0 pb-4"},Wi={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Yi={class:"text-sm text-gray-500"},Zi={class:"font-medium"},Gi={class:"flex items-center p-6 pt-0 gap-2"},Ki=["href"],Xi=["href"],zn=e.defineComponent({__name:"template-4",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),a=e.computed(()=>n.columns.filter(c=>c.meta==="category")),i=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),f=(c,g)=>{if(g)return c[g]},u=c=>{const g=f(c,n.id_key);return`${n.path}?id=${g}`},x=(c,g)=>{const d=f(c,n.id_key);return`/map?layers=${g}&info=${g},${d}`};return(c,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var y,m,h;return e.openBlock(),e.createElementBlock("div",{key:d.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",zi,[e.createElementVNode("div",Oi,[e.createElementVNode("h3",Ri,e.toDisplayString(d[`${(y=l.value)==null?void 0:y.name}_text`]||d[(m=l.value)==null?void 0:m.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,p=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:p.name},[d[p.name]?(e.openBlock(),e.createElementBlock("div",Pi,e.toDisplayString(d[`${p.name}_text`]||d[p.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Ui,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,p=>(e.openBlock(),e.createElementBlock("div",{key:p.name,class:"flex flex-wrap gap-1 ml-2"},[d[p.name]?(e.openBlock(),e.createElementBlock("span",qi,e.toDisplayString(d[`${p.name}_text`]||d[p.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Hi,[e.createElementVNode("div",Wi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,p=>{var E;return e.openBlock(),e.createElementBlock("div",{key:p.name},[e.createElementVNode("p",Yi,e.toDisplayString(p.ua),1),e.createElementVNode("p",Zi,[Array.isArray(d[p==null?void 0:p.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[p==null?void 0:p.name],(A,F)=>(e.openBlock(),e.createElementBlock("span",{key:F,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},[p.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ht)(d[p==null?void 0:p.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((E=d[(p==null?void 0:p.name)+"_data"])==null?void 0:E.text)||d[(p==null?void 0:p.name)+"_text"]||d[p==null?void 0:p.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Gi,[!t.hideDetailsButton&&r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:x(d,d==null?void 0:d.service_id),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,Ki)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:u(d),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,Xi))])])}),128))}}),Ji={class:"grid grid-cols-1 lg:grid-cols-12 lg:divide-x divide-y lg:divide-y-0 divide-gray-100"},Qi={key:0,class:"w-full lg:w-auto lg:col-span-1"},es=["src"],ts={key:1,class:"hidden lg:flex lg:col-span-1 items-center justify-center py-4 lg:py-0"},ns={class:"col-span-1 lg:col-span-7 p-4 lg:p-4"},os={class:"flex flex-col mb-3 lg:flex-row lg:items-center lg:mb-1"},ls={class:"text-base lg:text-base font-bold text-gray-900 mb-2 lg:mr-2 lg:mb-0"},rs={class:"flex flex-wrap gap-2 lg:gap-0"},as={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 lg:ml-2"},is={class:"text-sm text-gray-600 line-clamp-2 lg:line-clamp-1 mb-3 lg:mb-2"},ss={class:"grid grid-cols-1 md:grid-cols-2 gap-y-3 md:gap-x-4 md:gap-y-1 text-sm"},cs={class:"flex items-center mb-1 md:mb-0 md:mr-1 max-w-[50%]"},ds=["innerHTML"],us={class:"text-gray-500 font-medium md:font-normal"},ps={class:"text-gray-600 break-words line-clamp-2"},ms={class:"col-span-1 lg:col-span-2 p-4 lg:p-3 bg-gray-50 flex flex-col justify-center border-t lg:border-t-0 lg:border-l border-gray-100"},fs={class:"text-xs text-gray-500 mb-2 lg:mb-1.5"},gs={key:0,class:"flex flex-wrap gap-1.5 lg:gap-1"},ys={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-2 py-0.5 lg:px-1.5 lg:py-0"},hs={class:"col-span-1 lg:col-span-2 flex flex-col justify-center items-stretch lg:items-center bg-gray-50 border-t lg:border-t-0 lg:border-l border-gray-100 p-4 lg:p-2"},xs={class:"w-full space-y-2"},bs=["href"],ks=["href"],On=e.defineComponent({__name:"template-5",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),r=d=>(d==null?void 0:d.service_id)&&(d==null?void 0:d.is_map)&&d[n.id_key]&&(d==null?void 0:d.geom),l=e.computed(()=>n.columns.find(d=>d.meta==="title")),a=e.computed(()=>n.columns.filter(d=>d.meta==="category")),i=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),s=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),f=e.computed(()=>n.columns.find(d=>d.meta==="image")),u=e.computed(()=>n.columns.find(d=>d.meta==="desc")||n.columns.find(d=>d.name==="description")),x=(d,y)=>{if(y)return d[y]},c=d=>{const y=x(d,n.id_key);return`${n.path}?id=${y}`},g=(d,y)=>{const m=x(d,n.id_key);return`/map?layers=${y}&info=${y},${m}`};return(d,y)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,m=>{var h,p,E,A,F,D,$,w,C;return e.openBlock(),e.createElementBlock("div",{key:m.id,class:"bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200 hover:shadow-md"},[e.createElementVNode("div",Ji,[f.value?(e.openBlock(),e.createElementBlock("div",Qi,[m[(h=f.value)==null?void 0:h.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:m[(p=f.value)==null?void 0:p.name],alt:"image",class:"object-cover w-full h-48 lg:h-full lg:w-auto"},null,8,es)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",ts,[...y[0]||(y[0]=[e.createElementVNode("div",{class:"w-3 h-12 rounded-sm bg-blue-500",title:"Пріоритет: Високий","aria-hidden":"true"},null,-1)])])),e.createElementVNode("div",ns,[e.createElementVNode("div",os,[e.createElementVNode("h3",ls,e.toDisplayString(m[`${(E=l.value)==null?void 0:E.name}_text`]||m[(A=l.value)==null?void 0:A.name]||m[(F=l.value)==null?void 0:F.label]||"Не вказано"),1),e.createElementVNode("div",rs,[Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,_=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:_.name},[m[_.name]?(e.openBlock(),e.createElementBlock("div",as,e.toDisplayString(m[`${_.name}_text`]||m[_.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)])]),e.createElementVNode("p",is,e.toDisplayString((($=m[((D=u.value)==null?void 0:D.name)+"_data"])==null?void 0:$.text)||m[((w=u.value)==null?void 0:w.name)+"_text"]||m[(C=u.value)==null?void 0:C.name]),1),e.createElementVNode("div",ss,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,_=>{var I;return e.openBlock(),e.createElementBlock("div",{key:_.name,class:"flex flex-col md:flex-row md:items-center"},[e.createElementVNode("div",cs,[_.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:_.icon},null,8,ds)):e.createCommentVNode("",!0),e.createElementVNode("span",us,e.toDisplayString((_==null?void 0:_.ua)||_.label||_.name)+":",1)]),e.createElementVNode("span",ps,[Array.isArray(m[_==null?void 0:_.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(m[_==null?void 0:_.name],(q,P)=>(e.openBlock(),e.createElementBlock("span",{key:P,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1 inline-block"},e.toDisplayString(q),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[_.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ht)(m[_==null?void 0:_.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((I=m[(_==null?void 0:_.name)+"_data"])==null?void 0:I.text)||m[(_==null?void 0:_.name)+"_text"]||m[_==null?void 0:_.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",ms,[e.createElementVNode("p",fs," Теги: "+e.toDisplayString(i.value.length&&m[i.value[0].name]?"":"відсутні"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",gs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,_=>(e.openBlock(),e.createElementBlock("div",{key:_.name,class:"flex flex-wrap gap-1"},[m[_.name]?(e.openBlock(),e.createElementBlock("span",ys,e.toDisplayString(m[`${_.name}_text`]||m[_.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",hs,[e.createElementVNode("div",xs,[!t.hideDetailsButton&&r(m)?(e.openBlock(),e.createElementBlock("a",{key:0,href:g(m,m==null?void 0:m.service_id),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,bs)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:c(m),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,ks))])])])])}),128))}}),Rn={template1:Dn,template2:In,template3:jn,template4:zn,template5:On},ws={class:"space-y-4"},_s={class:"flex items-center gap-4"},Es={class:"text-lg font-semibold mb-4"},Ns={key:1,class:"text-gray-400 text-center py-12"},Bs={key:2,class:"text-gray-400 text-center py-12"},Vs=e.defineComponent({__name:"preview-tab",props:e.mergeModels({hideDetailsButton:{type:Boolean,default:!1}},{data:{default:{}},dataModifiers:{}}),emits:["update:data"],setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=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"}],l={view:{type:"radio",label:"Вигляд",position:"horizontal",required:!0,options:r,col:12}},a=e.computed(()=>{var x;return Array.isArray((x=o.value)==null?void 0:x.columns)?o.value.columns:[]}),i=e.computed(()=>{var x;return((x=o.value)==null?void 0:x.view)||"template1"}),s=e.computed(()=>Rn[i.value]||Rn.template1),f=e.computed(()=>{var g;const x=(g=o.value)==null?void 0:g.view;if(!x)return"template1";const c=r.find(d=>d.id===x);return(c==null?void 0:c.text)||x}),u=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5).map(c=>{var g,d;return{...c,service_id:(g=o.value)==null?void 0:g.service_id,is_map:(d=o.value)==null?void 0:d.is_map}}));return(x,c)=>(e.openBlock(),e.createElementBlock("div",ws,[e.createElementVNode("div",_s,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:l,modelValue:o.value,"onUpdate:modelValue":c[0]||(c[0]=g=>o.value=g)},null,8,["modelValue"]))]),e.createElementVNode("h2",Es," Превʼю таблиці ("+e.toDisplayString(f.value)+") ",1),s.value&&u.value.length&&a.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{items:u.value,columns:a.value,path:"#",id_key:"id","hide-details-button":t.hideDetailsButton,key:i.value},null,8,["items","columns","hide-details-button"])):u.value.length?(e.openBlock(),e.createElementBlock("div",Bs," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",Ns," Немає даних для превʼю "))]))}}),Cs={class:"relative h-screen flex flex-col bg-white p-8"},$s={class:"flex-1 flex flex-col min-h-0 overflow-hidden"},vs={class:"max-w-6xl mx-auto flex-1 flex flex-col min-h-0 w-full"},Ss={class:"flex items-center justify-between mb-6 flex-shrink-0"},As={class:"flex items-center gap-2"},Ls={class:"w-full flex-shrink-0 mb-6"},Ts={class:"flex items-center w-full h-10 max-w-md grid-cols-3 p-1 bg-white border border-gray-200 rounded-md text-muted-foreground"},Fs=["onClick"],Ms={class:"flex-1 min-h-0 overflow-y-auto"},Ds=e.defineComponent({__name:"register",props:{hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=he.useRoute(),o=he.useRouter(),r=e.ref("list"),l=e.ref(""),a=[{name:"Список",id:"list"},{name:"Фільтри",id:"filters"},{name:"Картка",id:"card"},{name:"Перегляд",id:"preview"}],i={list:Aa,filters:Ia,card:Ua,preview:Vs},s=a.map(d=>d.id),f=e.ref({columns:[],filters:[],card:[],tableData:[]}),u=e.ref([]),x=async()=>{var y;if(!((y=f.value)==null?void 0:y.token)){ce.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}try{const m=await fetch(`/api/gis-registry/${n.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(f.value)});if(!m.ok)throw new Error(`Failed to save content: ${m.status}`);ce.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(m){ce.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(m)}},c=async d=>{try{const m=await(await fetch(`/api/gis-registry/${d}`)).json(),h=Array.isArray(m==null?void 0:m.rows)?m.rows:[];f.value.tableData=h.slice(0,3)}catch(y){console.error("Помилка завантаження превʼю:",y)}},g=async()=>{var d,y;try{const h=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),p=((d=h==null?void 0:h.rows)==null?void 0:d[0])||{};l.value=p.register_key||"",f.value={...p,columns:Array.isArray(p.columns)?p.columns:[],filters:Array.isArray(p.filters)?p.filters:[],card:Array.isArray(p.card)?p.card:[],tableData:Array.isArray(p.tableData)?p.tableData:[]},(y=h==null?void 0:h.tokens)!=null&&y.edit&&(f.value.token=h.tokens.edit),u.value=Array.isArray(h==null?void 0:h.fields)?h.fields:[]}catch(m){console.error("Помилка завантаження даних:",m)}};return e.onMounted(async()=>{const d=n.query.tab;typeof d=="string"&&s.includes(d)&&(r.value=d),await g(),l.value&&await c(l.value)}),e.watch(r,d=>{n.query.tab!==d&&o.replace({query:{...n.query,tab:d}})}),e.watch(()=>n.query.tab,d=>{typeof d=="string"&&s.includes(d)&&r.value!==d&&(r.value=d)}),(d,y)=>(e.openBlock(),e.createElementBlock("main",Cs,[e.createElementVNode("div",$s,[e.createElementVNode("div",vs,[e.createElementVNode("div",Ss,[y[2]||(y[2]=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",As,[e.createElementVNode("button",{onClick:y[0]||(y[0]=m=>e.unref(o).back()),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"}," Повернутися "),e.createElementVNode("button",{onClick:x,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",Ls,[e.createElementVNode("div",Ts,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,m=>e.createElementVNode("button",{key:m.id,onClick:h=>r.value=m.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",m.id===r.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(m.name),11,Fs)),64))])]),e.createElementVNode("div",Ms,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i[r.value]),{data:f.value,"onUpdate:data":y[1]||(y[1]=m=>f.value=m),fields:u.value,"hide-details-button":t.hideDetailsButton,key:r.value},null,40,["data","fields","hide-details-button"]))])])])]))}});/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function Pn(t){return typeof t>"u"||t===null}function Is(t){return typeof t=="object"&&t!==null}function js(t){return Array.isArray(t)?t:Pn(t)?[]:[t]}function zs(t,n){var o,r,l,a;if(n)for(a=Object.keys(n),o=0,r=a.length;o<r;o+=1)l=a[o],t[l]=n[l];return t}function Os(t,n){var o="",r;for(r=0;r<n;r+=1)o+=t;return o}function Rs(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var Ps=Pn,Us=Is,qs=js,Hs=Os,Ws=Rs,Ys=zs,Ce={isNothing:Ps,isObject:Us,toArray:qs,repeat:Hs,isNegativeZero:Ws,extend:Ys};function Un(t,n){var o="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(o+='in "'+t.mark.name+'" '),o+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!n&&t.mark.snippet&&(o+=`
116
+ */const zn=Ee("trash-2",[["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"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/**
117
+ * @license lucide-vue-next v0.514.0 - ISC
118
+ *
119
+ * This source code is licensed under the ISC license.
120
+ * See the LICENSE file in the root directory of this source tree.
121
+ */const Kr=Ee("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"}]]);/**
122
+ * @license lucide-vue-next v0.514.0 - ISC
123
+ *
124
+ * This source code is licensed under the ISC license.
125
+ * See the LICENSE file in the root directory of this source tree.
126
+ */const yt=Ee("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),Xr={class:"flex items-center justify-center col-span-3 gap-2"},Jr={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},Qr=e.defineComponent({__name:"vs-datatable-controls",props:e.mergeModels({index:{},data:{},scheme:{}},{columns:{type:Array,default:()=>[]},columnsModifiers:{}}),emits:["update:columns"],setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=e.defineAsyncComponent(()=>import("@opengis/core").then(w=>w.VsModal)),l=t,r=e.useModel(t,"columns"),a=e.ref(!1),i=e.ref({}),s=e.ref({...l.data||{}});e.watch(()=>l.data,w=>{s.value={...w||{}}},{deep:!0});const u=()=>r.value=r.value.filter((w,c)=>c!==l.index),p=async()=>{const w=i.value.validate();if(w){ue.notify({type:"warning",title:"Validation",message:Object.entries(w).map(([c,y])=>`${c}: ${y}`).join(`
127
+ `)});return}r.value[l.index]=s.value,a.value=!1};return(w,c)=>(e.openBlock(),e.createElementBlock("div",Xr,[e.createElementVNode("button",{onClick:c[0]||(c[0]=y=>{a.value=!0}),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(jn),{class:"w-4 h-4"})]),e.createElementVNode("button",{onClick:u,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(Kr),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{teleport:"#modal",size:"lg",visible:a.value,"onUpdate:visible":c[4]||(c[4]=y=>a.value=y),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",Jr,[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:c[3]||(c[3]=y=>a.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:p}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(n),{values:s.value,"onUpdate:values":c[1]||(c[1]=y=>s.value=y),schema:t.scheme,form:i.value,"onUpdate:form":c[2]||(c[2]=y=>i.value=y)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),el={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")})}},tl={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"},On=t=>tl[t==null?void 0:t.toLowerCase()]||"gray",nl=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],Rn=t=>{var n;return nl.includes((n=t||"")==null?void 0:n.toLowerCase())},ae=(t,n)=>{const o=t.__vccOpts||t;for(const[l,r]of n)o[l]=r;return o},ol={},rl={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:"w-4 h-4 text-gray-700 lucide lucide-type",__v0_r:"0,5361,5384"};function ll(t,n){return e.openBlock(),e.createElementBlock("svg",rl,[...n[0]||(n[0]=[e.createElementVNode("polyline",{points:"4 7 4 4 20 4 20 7"},null,-1),e.createElementVNode("line",{x1:"9",x2:"15",y1:"20",y2:"20"},null,-1),e.createElementVNode("line",{x1:"12",x2:"12",y1:"4",y2:"20"},null,-1)])])}const al=ae(ol,[["render",ll]]),il={},sl={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:"w-4 h-4 text-gray-700 lucide lucide-hash",__v0_r:"0,5361,5384"};function cl(t,n){return e.openBlock(),e.createElementBlock("svg",sl,[...n[0]||(n[0]=[e.createElementVNode("line",{x1:"4",x2:"20",y1:"9",y2:"9"},null,-1),e.createElementVNode("line",{x1:"4",x2:"20",y1:"15",y2:"15"},null,-1),e.createElementVNode("line",{x1:"10",x2:"8",y1:"3",y2:"21"},null,-1),e.createElementVNode("line",{x1:"16",x2:"14",y1:"3",y2:"21"},null,-1)])])}const dl=ae(il,[["render",cl]]),ul={},pl={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:"w-4 h-4 text-gray-700 lucide lucide-calendar",__v0_r:"0,5361,5384"};function ml(t,n){return e.openBlock(),e.createElementBlock("svg",pl,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M8 2v4"},null,-1),e.createElementVNode("path",{d:"M16 2v4"},null,-1),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"4",rx:"2"},null,-1),e.createElementVNode("path",{d:"M3 10h18"},null,-1)])])}const fl=ae(ul,[["render",ml]]),gl={},yl={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:"w-4 h-4 text-gray-700 lucide lucide-calendar",__v0_r:"0,5361,5384"};function hl(t,n){return e.openBlock(),e.createElementBlock("svg",yl,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M8 2v4"},null,-1),e.createElementVNode("path",{d:"M16 2v4"},null,-1),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"4",rx:"2"},null,-1),e.createElementVNode("path",{d:"M3 10h18"},null,-1)])])}const xl=ae(gl,[["render",hl]]),bl={},kl={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:"w-4 h-4 text-gray-700 lucide lucide-code",__v0_r:"0,5361,5384"};function wl(t,n){return e.openBlock(),e.createElementBlock("svg",kl,[...n[0]||(n[0]=[e.createElementVNode("polyline",{points:"16 18 22 12 16 6"},null,-1),e.createElementVNode("polyline",{points:"8 6 2 12 8 18"},null,-1)])])}const _l=ae(bl,[["render",wl]]),El={},Nl={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:"w-4 h-4 text-gray-700 lucide lucide-toggle-left",__v0_r:"0,5361,5384"};function Bl(t,n){return e.openBlock(),e.createElementBlock("svg",Nl,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6"},null,-1),e.createElementVNode("circle",{cx:"8",cy:"12",r:"2"},null,-1)])])}const Vl=ae(El,[["render",Bl]]),Cl={},$l={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:"w-4 h-4 text-gray-700 lucide lucide-file-text",__v0_r:"0,5361,5384"};function vl(t,n){return e.openBlock(),e.createElementBlock("svg",$l,[...n[0]||(n[0]=[e.createStaticVNode('<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path>',5)])])}const Sl=ae(Cl,[["render",vl]]),Ll={},Al={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:"w-4 h-4 text-gray-700 lucide lucide-image",__v0_r:"0,5361,5384"};function Tl(t,n){return e.openBlock(),e.createElementBlock("svg",Al,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"},null,-1),e.createElementVNode("circle",{cx:"9",cy:"9",r:"2"},null,-1),e.createElementVNode("path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"},null,-1)])])}const Ml=ae(Ll,[["render",Tl]]),Fl={},Dl={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:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Il(t,n){return e.openBlock(),e.createElementBlock("svg",Dl,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const jl=ae(Fl,[["render",Il]]),zl={},Ol={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:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Rl(t,n){return e.openBlock(),e.createElementBlock("svg",Ol,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Pl=ae(zl,[["render",Rl]]),Ul={},ql={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:"w-4 h-4 text-gray-700 lucide lucide-link2",__v0_r:"0,5361,5384"};function Hl(t,n){return e.openBlock(),e.createElementBlock("svg",ql,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M9 17H7A5 5 0 0 1 7 7h2"},null,-1),e.createElementVNode("path",{d:"M15 7h2a5 5 0 1 1 0 10h-2"},null,-1),e.createElementVNode("line",{x1:"8",x2:"16",y1:"12",y2:"12"},null,-1)])])}const Wl=ae(Ul,[["render",Hl]]),Yl={},Zl={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:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Gl(t,n){return e.openBlock(),e.createElementBlock("svg",Zl,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Kl=ae(Yl,[["render",Gl]]),Xl={},Jl={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:"w-4 h-4 text-gray-700 lucide lucide-link2",__v0_r:"0,5361,5384"};function Ql(t,n){return e.openBlock(),e.createElementBlock("svg",Jl,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M9 17H7A5 5 0 0 1 7 7h2"},null,-1),e.createElementVNode("path",{d:"M15 7h2a5 5 0 1 1 0 10h-2"},null,-1),e.createElementVNode("line",{x1:"8",x2:"16",y1:"12",y2:"12"},null,-1)])])}const ea=ae(Xl,[["render",Ql]]),ta={},na={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:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function oa(t,n){return e.openBlock(),e.createElementBlock("svg",na,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const ra=ae(ta,[["render",oa]]),la={},aa={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",height:"800px",width:"800px",version:"1.1",id:"_x32_",viewBox:"0 0 512 512","xml:space":"preserve"};function ia(t,n){return e.openBlock(),e.createElementBlock("svg",aa,[...n[0]||(n[0]=[e.createElementVNode("g",null,[e.createElementVNode("path",{class:"st0",d:"M511.989,292.396c0.021-16.486-6.344-33.136-18.945-45.703L273.605,27.242 C262.3,15.936,247.175,9.22,231.184,8.407L66.821,0.032l1.184,0.066C66.974,0.044,65.866,0,64.67,0 C47.58,0,31.105,6.783,18.944,18.955C6.783,31.106-0.001,47.58,0.011,64.67c0,1.076,0.034,2.172,0.078,3.27l8.297,163.254 c0.835,15.981,7.54,31.106,18.857,42.421l219.451,219.451c12.578,12.589,29.217,18.955,45.703,18.934 c16.496,0.021,33.124-6.356,45.703-18.934l154.956-154.945l-11.92-11.92l11.932,11.909 C505.645,325.521,512.011,308.881,511.989,292.396z M314.26,469.216c-6.08,6.08-13.895,9.044-21.864,9.067 c-7.969-0.023-15.783-2.986-21.864-9.067L51.082,249.765c-5.4-5.4-8.616-12.633-9.023-20.305L33.762,66.238l-0.034-1.569 c0-8.188,3.238-16.048,9.055-21.875c5.839-5.839,13.697-9.077,21.886-9.077l1.502,0.044l163.288,8.319 c7.683,0.396,14.904,3.6,20.305,9.012l219.45,219.45c6.059,6.069,9.033,13.884,9.056,21.853 c-0.023,7.968-2.986,15.794-9.067,21.886h0.011L314.26,469.216z"}),e.createElementVNode("path",{class:"st0",d:"M105.632,105.642c-15.366,15.378-15.366,40.27,0,55.636c15.366,15.366,40.259,15.366,55.625,0 c15.366-15.366,15.366-40.259,0-55.636C145.891,90.276,120.998,90.276,105.632,105.642z"})],-1)])])}const sa=ae(la,[["render",ia]]),ca={},da={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function ua(t,n){return e.openBlock(),e.createElementBlock("svg",da,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z",stroke:"#323232","stroke-width":"2"},null,-1),e.createElementVNode("path",{d:"M9 12L10.6828 13.6828V13.6828C10.858 13.858 11.142 13.858 11.3172 13.6828V13.6828L15 10",stroke:"#323232","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const Pn={IconText:al,IconNumber:dl,IconDate:fl,IconDatetime:xl,IconRichtext:_l,IconBoolean:Vl,IconFile:Sl,IconImage:Ml,IconArray:jl,IconSelect:Pl,IconSlug:Wl,IconDatalist:Kl,IconReference:ea,IconReferenceList:ra,IconBadge:sa,IconCheck:ae(ca,[["render",ua]])},pa={key:0,class:"flex items-center justify-between mb-6"},ma={class:"flex justify-end w-full"},fa={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},ga={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},ya={class:"table-fixed w-full text-[13px]"},ha={class:"bg-gray-50 border-b border-gray-200"},xa={key:0},ba=["onDragstart","onDragover","onDrop"],ka={key:0,class:"flex w-fit items-center gap-2 text-left"},wa={class:"flex-1 min-w-0"},_a={class:"font-medium text-gray-900 truncate"},Ea={class:"text-xs text-gray-500"},Na={key:1,class:"flex items-center justify-center"},Ba={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"},Va={key:1,class:"text-gray-500 text-sm"},Ca={key:3},$a={class:"px-6 py-4"},va={key:1},Sa=["colspan"],We=ae(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:n}){function o(B){return B.charAt(0).toUpperCase()+B.slice(1)}const l=e.defineAsyncComponent(()=>import("@opengis/core").then(B=>B.VsModal)),r=e.defineAsyncComponent(()=>import("@opengis/form")),a=e.useModel(t,"modelValue"),i=t,s=e.ref({}),u=e.ref(!1),p=e.ref({}),w=e.ref(null),c=e.useSlots(),y=B=>!!(B&&c[B]);n({openCreateDialog:()=>{u.value=!0}});const d=e.computed({get(){return Array.isArray(a.value)?a.value:a.value&&Array.isArray(a.value.columns)?a.value.columns:[]},set(B){Array.isArray(a.value)?a.value=B:a.value&&Array.isArray(a.value.columns)&&(a.value.columns=B)}}),m=e.computed(()=>{const B=i.columnsScheme.map(V=>V.key);return B.includes("name")&&B.includes("label")||B.includes("id")&&B.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...i.columnsScheme.filter(V=>!["name","id","label"].includes(V.key))]:i.columnsScheme});function g(){u.value=!1,p.value={},w.value=null}async function h(){const B=s.value.validate();if(B){ue.notify({type:"warning",title:"Validation",message:Object.entries(B).map(([V,v])=>`${V}: ${v}`).join(`
128
+ `)});return}if(w.value===null)d.value=[...d.value,{...p.value}];else{const V=[...d.value];V[w.value]={...p.value},d.value=V}g()}const f=e.ref(null),k=e.ref(null),E=B=>{f.value=B},T=B=>{k.value=B},j=B=>{if(f.value===null||f.value===B){f.value=null,k.value=null;return}const V=[...d.value],[v]=V.splice(f.value,1);V.splice(B,0,v),d.value=V,f.value=null,k.value=null};return(B,V)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",pa,[e.createElementVNode("div",ma,[e.createElementVNode("button",{onClick:V[0]||(V[0]=v=>u.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"},[...V[4]||(V[4]=[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",fa,[e.createElementVNode("div",ga,[e.createElementVNode("table",ya,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,v=>(e.openBlock(),e.createElementBlock("col",{key:v.key,style:e.normalizeStyle(v.type==="main"?`width: ${t.mainColWidth}`:v.width?`width: ${v.width}`:"auto")},null,4))),128)),V[5]||(V[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",ha,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,v=>(e.openBlock(),e.createElementBlock("th",{key:v.key,class:"px-6 py-4"},e.toDisplayString(v.label),1))),128)),V[6]||(V[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),d.value.length?(e.openBlock(),e.createElementBlock("tbody",xa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(v,S)=>(e.openBlock(),e.createElementBlock("tr",{key:v.id||v.name||S,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":f.value===S,"border-t-2 border-b-2 border-blue-500 bg-blue-50":k.value===S}]),draggable:"true",onDragstart:M=>E(S),onDragover:e.withModifiers(M=>T(S),["prevent"]),onDrop:M=>j(S)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,M=>(e.openBlock(),e.createElementBlock("td",{key:M.key,class:"px-6 py-4 align-middle text-center"},[M.type==="main"?(e.openBlock(),e.createElementBlock("div",ka,[V[7]||(V[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(Rn)(v.format==="yes/no"?"check":v.format||v.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(On)(v.format==="yes/no"?"check":v.format||v.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(v.format==="yes/no"?"icon-check":e.unref(Pn)["Icon"+o(v.format||v.type)]||e.unref(Pn).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",wa,[e.withDirectives((e.openBlock(),e.createElementBlock("p",_a,[e.createTextVNode(e.toDisplayString(v.name||v.id),1)])),[[e.unref(el)]]),e.createElementVNode("p",Ea,e.toDisplayString(v.label||v.ua||v.name||v.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[M.slot&&y(M.slot)?e.renderSlot(B.$slots,M.slot,{key:0,row:v,column:M,value:v[M.key],rowIndex:S},void 0,!0):M.type==="color"?(e.openBlock(),e.createElementBlock("div",Na,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${v[M.key]}]`])},null,2)])):["format","type","meta"].includes(M.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[v[M.key]?(e.openBlock(),e.createElementBlock("span",Ba,e.toDisplayString(v[M.key]),1)):(e.openBlock(),e.createElementBlock("span",Va,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",Ca,e.toDisplayString(v[M.key]),1))],64))]))),128)),e.createElementVNode("td",$a,[e.createVNode(Qr,{columns:d.value,"onUpdate:columns":V[1]||(V[1]=M=>d.value=M),data:v,index:S,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,ba))),128))])):(e.openBlock(),e.createElementBlock("tr",va,[e.createElementVNode("td",{colspan:m.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,Sa)]))])])]),e.createVNode(e.unref(l),{teleport:"#modal",title:"Створити поле",size:"lg",visible:u.value,"onUpdate:visible":V[3]||(V[3]=v=>u.value=v)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:g,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"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(r),{ref_key:"form",ref:s,modelValue:p.value,"onUpdate:modelValue":V[2]||(V[2]=v=>p.value=v),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-93fedaf0"]]),La={class:"p-4 text-[13px]"},Aa={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Ta=["id","checked","onChange"],Ma={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},Fa={class:"font-medium text-gray-900 truncate"},Da={class:"text-xs text-gray-500"},Ia={key:0,class:"text-xs text-[#B2C9D6]"},ja={class:"flex justify-end gap-2 p-4 border-t w-full"},lt=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:n}){const o=e.useModel(t,"visible"),l=e.useModel(t,"selection"),r=t,a=n,i=e.defineAsyncComponent(()=>import("@opengis/core").then(E=>E.VsModal)),s=e.computed(()=>Array.isArray(r.fields)?r.fields.filter(Boolean):[]),u=E=>(E==null?void 0:E.name)??(E==null?void 0:E.id)??(E==null?void 0:E.key)??(E==null?void 0:E.code)??(E==null?void 0:E.field)??(E==null?void 0:E.value)??"",p=E=>String(u(E)??"").trim(),w=E=>(E==null?void 0:E.title)??(E==null?void 0:E.label)??p(E),c=E=>String((E==null?void 0:E.type)??"").trim(),y=e.computed(()=>new Set(l.value.map(E=>String(E??"").trim()))),d=E=>y.value.has(p(E)),m=E=>{const T=p(E);if(!T)return;const j=new Set(y.value);j.has(T)?j.delete(T):j.add(T),l.value=Array.from(j)},g=e.computed(()=>r.confirmText||"Імпортувати"),h=e.computed(()=>r.cancelText||"Скасувати"),f=()=>{o.value=!1,a("cancel")},k=()=>{a("confirm"),o.value=!1};return(E,T)=>(e.openBlock(),e.createBlock(e.unref(i),{visible:o.value,"onUpdate:visible":T[0]||(T[0]=j=>o.value=j),teleport:"#modal",title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",ja,[e.createElementVNode("button",{onClick:f,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(h.value),1),e.createElementVNode("button",{onClick:k,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(g.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",La,[e.createElementVNode("div",Aa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,j=>(e.openBlock(),e.createElementBlock("label",{key:p(j),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${p(j)}`,checked:d(j),onChange:B=>m(j)},null,40,Ta),e.createElementVNode("div",Ma,[e.unref(Rn)(j.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(On)(j.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${j.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",Fa,e.toDisplayString(p(j)),1),e.createElementVNode("p",Da,e.toDisplayString(w(j)),1),c(j)?(e.openBlock(),e.createElementBlock("p",Ia,e.toDisplayString(c(j)),1)):e.createCommentVNode("",!0)])])]))),128))])])]),_:1},8,["visible","title"]))}});function at(t){return t==null?"":String(t).trim()}function Ye(t){return at((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 it(t,n,o){const l=Array.isArray(t)?[...t]:[],r=Array.isArray(n)?n:[],{selectedKeys:a,resolveKey:i}=o,s=new Set;for(const c of a){const y=at(c);y&&s.add(y)}if(s.size===0)return[];const u=c=>at(i(c)),p=[],w=new Set;for(const c of l){const y=u(c);!y||!s.has(y)||(p.push(c),w.add(y))}for(const c of r){const y=u(c);!y||w.has(y)||!s.has(y)||(p.push(c),w.add(y))}return p}const za={class:"vs-form"},Oa={class:"vs-form__body auto-rows-max container"},Ra={class:"flex flex-wrap"},Pa={class:"h-fit w-full mb-6 px-2"},Ua={class:"h-fit w-full flex flex-wrap"},qa={class:"w-full"},Ha=e.defineComponent({__name:"list-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),l=t,r=e.computed(()=>Array.isArray(l.fields)?l.fields:[]),a=k=>Ye(k||{}),i=e.defineAsyncComponent(()=>import("@opengis/form")),s=e.ref(),u=e.ref(!1),p=e.ref([]),w=()=>{const k=y.value.map(E=>a(E)).filter(E=>E.length>0);p.value=[...k],u.value=!0},c=e.computed(()=>{var k,E;return((k=n.value)==null?void 0:k.token)||((E=n.value)==null?void 0:E.id)||"register-form"}),y=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.columns)||(n.value.columns=[]),n.value.columns),set:k=>{n.value||(n.value={}),n.value.columns=Array.isArray(k)?k:[]}}),d=e.computed({get:()=>n.value||{},set:k=>{var T;const E=Array.isArray((T=n.value)==null?void 0:T.columns)?n.value.columns:[];n.value={...n.value,...k,columns:E}}});e.watch(()=>s.value,k=>{o.value=k||null},{immediate:!0}),e.watch(u,k=>{k||(p.value=[])});const m=()=>{const k=new Set(p.value.map(j=>at(j)).filter(j=>j.length>0)),E=Array.isArray(y.value)?[...y.value]:[],T=r.value.filter(j=>k.has(a(j))).map(j=>{const B=a(j),V=j.title??j.label??B;return{...j,name:B,label:V,type:j.type||"text",meta:j.meta??"features"}});y.value=it(E,T,{selectedKeys:p.value,resolveKey:a}),u.value=!1,p.value=[]},g={table_name:{type:"select",label:"Таблиця",required:!0,data:"pg.table_name",placeholder:"Таблиця в БД",validators:["required"],col:6},name:{type:"text",label:"Назва",required:!0,placeholder:"Назва",validators:["required"],col:6},query:{type:"text",label:"Умова",placeholder:"Умова",col:6},order:{type:"text",label:"Сортування",placeholder:"Сортування",col:6},description:{type:"textarea",label:"Опис",placeholder:"Опис",col:12}},h=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Назва",type:"text"},{key:"meta",label:"Мета",type:"text"}],f={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},label:{type:"text",label:"Назва",validators:["required"]},format:{type:"radio",label:"Формат",position:"horizontal",options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Badge",id:"badge"},{text:"Tags",id:"tags"}],validators:["required"]},is_export:{type:"switcher",label:"Експорт",info:"Чи експортувати дані колонки?",view:"switcher"},meta:{type:"combobox",label:"Мета",mode:"combo",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:"select",label:"Класифікатор",data:"admin.cls.name",conditions:["format","in",["select","badge","tags"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(k,E)=>(e.openBlock(),e.createElementBlock("div",za,[e.createElementVNode("div",Oa,[e.createElementVNode("div",Ra,[e.createElementVNode("div",Pa,[(e.openBlock(),e.createBlock(e.unref(i),{ref_key:"formEl",ref:s,key:c.value,schema:g,modelValue:d.value,"onUpdate:modelValue":E[0]||(E[0]=T=>d.value=T)},null,8,["modelValue"]))]),e.createElementVNode("div",Ua,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:w,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"},[...E[4]||(E[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",qa,[e.createVNode(We,{modelValue:y.value,"onUpdate:modelValue":E[1]||(E[1]=T=>y.value=T),"columns-scheme":h,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(lt,{visible:u.value,"onUpdate:visible":E[2]||(E[2]=T=>u.value=T),selection:p.value,"onUpdate:selection":E[3]||(E[3]=T=>p.value=T),fields:r.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:m},null,8,["visible","selection","fields"])]))}}),Wa={class:"vs-form"},Ya={class:"vs-form__body auto-rows-max container"},Za={class:"flex flex-wrap"},Ga={class:"h-fit w-full flex flex-wrap"},Ka={class:"w-full"},Xa=e.defineComponent({__name:"filter-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),l=t,r=e.computed(()=>Array.isArray(l.fields)?l.fields:[]),a=d=>Ye(d||{}),i=e.ref(!1),s=e.ref([]),u=()=>{const d=p.value.map(m=>a(m)).filter(m=>m.length>0);s.value=[...d],i.value=!0},p=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:d=>{n.value||(n.value={}),n.value.filters=Array.isArray(d)?d:[]}});e.watch(i,d=>{d||(s.value=[])});const w=()=>{const d=new Set(s.value.map(h=>at(h)).filter(h=>h.length>0)),m=Array.isArray(p.value)?[...p.value]:[],g=r.value.filter(h=>d.has(a(h))).map(h=>({name:a(h),label:h.title??h.label??a(h),type:h.type||"text"}));p.value=it(m,g,{selectedKeys:s.value,resolveKey:a}),i.value=!1,s.value=[]},c=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],y={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},type:{type:"radio",label:"Тип",required:!0,position:"horizontal",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Select",id:"select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"text",label:"Класифікатор",conditions:["type","in",["select","autocomplete","check"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,m)=>(e.openBlock(),e.createElementBlock("div",Wa,[e.createElementVNode("div",Ya,[e.createElementVNode("div",Za,[m[4]||(m[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",Ga,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:u,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"},[...m[3]||(m[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",Ka,[e.createVNode(We,{modelValue:p.value,"onUpdate:modelValue":m[0]||(m[0]=g=>p.value=g),"columns-scheme":c,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(lt,{visible:i.value,"onUpdate:visible":m[1]||(m[1]=g=>i.value=g),selection:s.value,"onUpdate:selection":m[2]||(m[2]=g=>s.value=g),fields:r.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:w},null,8,["visible","selection","fields"])]))}}),Ja={class:"vs-form"},Qa={class:"vs-form__body auto-rows-max container"},ei={class:"flex flex-wrap"},ti={class:"h-fit w-full flex flex-wrap"},ni={class:"w-full"},oi=e.defineComponent({__name:"card-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),l=t,r=e.computed(()=>Array.isArray(l.fields)?l.fields:[]),a=d=>Ye(d||{}),i=e.ref(!1),s=e.ref([]),u=()=>{const d=p.value.map(m=>a(m)).filter(m=>m.length>0);s.value=[...d],i.value=!0},p=e.computed({get:()=>n.value.card,set:d=>{n.value||(n.value={}),n.value.card=Array.isArray(d)?d:[]}});e.watch(i,d=>{var m;if(d){const g=((m=p.value)==null?void 0:m.map(h=>h.name))||[];s.value=[...g]}});const w=()=>{const d=new Set(s.value.map(h=>at(h)).filter(h=>h.length>0)),m=Array.isArray(p.value)?[...p.value]:[],g=r.value.filter(h=>d.has(a(h))).map(h=>{const f=a(h),k=h.title??h.label??f;return{...h,name:f,label:k,format:h.format||h.type||"text",meta:h.meta||"title"}});p.value=it(m,g,{selectedKeys:s.value,resolveKey:a}),i.value=!1,s.value=[]},c=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Назва",type:"text"},{key:"format",label:"Формат",type:"text"}],y={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},label:{type:"text",label:"Назва",validators:["required"]},format:{type:"radio",label:"Формат",position:"horizontal",options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Badge",id:"badge"},{text:"Tags",id:"tags"}],validators:["required"]},data:{type:"text",label:"Класифікатор",conditions:["format","in",["select","badge","tags"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,m)=>(e.openBlock(),e.createElementBlock("div",Ja,[e.createElementVNode("div",Qa,[e.createElementVNode("div",ei,[m[4]||(m[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",ti,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:u,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"},[...m[3]||(m[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",ni,[e.createVNode(We,{modelValue:p.value,"onUpdate:modelValue":m[0]||(m[0]=g=>p.value=g),"columns-scheme":c,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(lt,{visible:i.value,"onUpdate:visible":m[1]||(m[1]=g=>i.value=g),selection:s.value,"onUpdate:selection":m[2]||(m[2]=g=>s.value=g),fields:r.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:w},null,8,["visible","selection","fields"])]))}}),ri=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function ht(t){if(!t)return"";const[n,o]=t.split(" ");if(!n)return t;const[l,r,a]=n.split("-");if(!l||!r||!a)return t;const i=parseInt(r,10),s=ri[i]||r;let u=`${parseInt(a,10)} ${s} ${l}`;if(o){const p=o.split(".")[0],[w,c,y]=p.split(":");w&&c&&y?u+=`, ${w}:${c}:${y}`:w&&c?u+=`, ${w}:${c}`:w&&(u+=`, ${w}`)}return u}function xt(t,n={dateStyle:"short"}){if(t==null||t==="")return"";const o=new Date(t);return Number.isNaN(o.getTime())?"":new Intl.DateTimeFormat(void 0,n).format(o)}const li={class:"flex flex-col md:flex-row md:justify-between lg:flex-row lg:justify-between p-3 md:p-3.5 lg:p-4 pb-2 bg-slate-50 gap-3 md:gap-3.5 lg:gap-4"},ai={class:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between md:gap-3 lg:flex-row lg:items-center lg:justify-between lg:gap-0"},ii={class:"flex flex-col gap-2 md:flex-row md:items-center"},si={class:"text-base md:text-base lg:text-lg font-bold line-clamp-2"},ci={key:0,class:"flex flex-wrap items-center gap-1 md:gap-1.5 lg:gap-2 md:ml-2 lg:ml-2"},di={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 whitespace-nowrap","data-v0-t":"badge"},ui={key:0,class:"flex flex-wrap items-center gap-1 md:gap-1.5 lg:gap-2"},pi={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 whitespace-nowrap"},mi={class:"p-3 md:p-3.5 lg:p-4 pt-2"},fi={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-2 md:gap-2.5 lg:gap-3 text-sm"},gi={class:"text-gray-500 shrink-0 md:max-w-[50%]"},yi={class:"font-medium flex flex-wrap gap-1"},hi={class:"items-center p-3 bg-slate-50 flex flex-col md:flex-row justify-end gap-2"},xi=["href"],bi=["href"],Un=e.defineComponent({__name:"template-1",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),r=e.computed(()=>n.columns.find(c=>c.meta==="title")),a=e.computed(()=>n.columns.filter(c=>c.meta==="category")),i=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),u=(c,y)=>{if(y)return c[y]},p=c=>{const y=u(c,n.id_key);return`${n.path}?id=${y}`},w=(c,y)=>{const d=u(c,n.id_key);return`/map?layers=${y}&info=${y},${d}`};return(c,y)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var m,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",li,[e.createElementVNode("div",ai,[e.createElementVNode("div",ii,[e.createElementVNode("h2",si,e.toDisplayString(d[`${(m=r.value)==null?void 0:m.name}_text`]||d[(g=r.value)==null?void 0:g.name]||d[(h=r.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",ci,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.name},[d[f.name]?(e.openBlock(),e.createElementBlock("div",di,e.toDisplayString(d[`${f.name}_text`]||d[f.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)])]),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",ui,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.name},[d[f.name]?(e.openBlock(),e.createElementBlock("span",pi,e.toDisplayString(d[`${f.name}_text`]||d[f.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",mi,[e.createElementVNode("div",fi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,f=>{var k;return e.openBlock(),e.createElementBlock("div",{key:f.name,class:"flex flex-col md:flex-row md:items-center lg:flex-row lg:items-center gap-1 md:gap-1.5 lg:gap-1.5"},[e.createElementVNode("span",gi,e.toDisplayString((f==null?void 0:f.ua)||f.label||f.name)+": ",1),e.createElementVNode("span",yi,[Array.isArray(d[f==null?void 0:f.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[(f==null?void 0:f.name)+"_text"]||d[f==null?void 0:f.name],(E,T)=>(e.openBlock(),e.createElementBlock("span",{key:T,class:"bg-gray-100 px-2 py-0 border-[0.01rem] border-gray-300 rounded-lg whitespace-nowrap"},e.toDisplayString(E),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[f.format==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(xt)(d[f==null?void 0:f.name])||"Немає даних"),1)],64)):f.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(ht)(d[f==null?void 0:f.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(((k=d[(f==null?void 0:f.name)+"_data"])==null?void 0:k.text)||d[(f==null?void 0:f.name)+"_text"]||d[f==null?void 0:f.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",hi,[!t.hideDetailsButton&&l(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:w(d,d==null?void 0:d.service_id),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"},[...y[0]||(y[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-map-pin-check-inside ml-1 h-3.5 w-3.5"},[e.createElementVNode("path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}),e.createElementVNode("path",{d:"m9 10 2 2 4-4"})],-1)])],8,xi)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:p(d),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"},[...y[1]||(y[1]=[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,bi))])])}),128))}}),ki={class:"p-0"},wi={class:"border-l-4 border-l-slate-400"},_i={class:"p-4"},Ei={class:"flex flex-wrap items-center gap-2 mb-3"},Ni={class:"text-lg font-bold"},Bi={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"},Vi={key:1,class:"flex"},Ci={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"},$i={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3 text-sm border-t pt-3"},vi={class:"text-xs text-gray-500 mb-1"},Si={class:"font-medium"},Li={class:"flex justify-end gap-2 mt-3 border-t pt-3"},Ai=["href"],Ti=["href"],qn=e.defineComponent({__name:"template-2",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),r=e.computed(()=>n.columns.find(c=>c.meta==="title")),a=e.computed(()=>n.columns.filter(c=>c.meta==="category")),i=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),u=(c,y)=>{if(y)return c[y]},p=c=>{const y=u(c,n.id_key);return`${n.path}?id=${y}`},w=(c,y)=>{const d=u(c,n.id_key);return`/map?layers=${y}&info=${y},${d}`};return(c,y)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var m,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",ki,[e.createElementVNode("div",wi,[e.createElementVNode("div",_i,[e.createElementVNode("div",Ei,[e.createElementVNode("h2",Ni,e.toDisplayString(d[`${(m=r.value)==null?void 0:m.name}_text`]||d[(g=r.value)==null?void 0:g.name]||d[(h=r.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.name},[d[f.name]?(e.openBlock(),e.createElementBlock("div",Bi,e.toDisplayString(d[`${f.name}_text`]||d[f.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Vi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,f=>(e.openBlock(),e.createElementBlock("div",{key:f.name,class:"flex flex-wrap gap-1 ml-2"},[d[f.name]?(e.openBlock(),e.createElementBlock("span",Ci,e.toDisplayString(d[`${f.name}_text`]||d[f.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",$i,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,f=>{var k;return e.openBlock(),e.createElementBlock("div",{key:f.name},[e.createElementVNode("p",vi,e.toDisplayString(f.ua),1),e.createElementVNode("p",Si,[Array.isArray(d[f==null?void 0:f.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[f==null?void 0:f.name],(E,T)=>(e.openBlock(),e.createElementBlock("span",{key:T,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(E),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[f.format==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(xt)(d[f==null?void 0:f.name])||"Немає даних"),1)],64)):f.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(ht)(d[f==null?void 0:f.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(((k=d[(f==null?void 0:f.name)+"_data"])==null?void 0:k.text)||d[(f==null?void 0:f.name)+"_text"]||d[f==null?void 0:f.name]||"Немає даних"),1)],64))],64))])])}),128))]),e.createElementVNode("div",Li,[!t.hideDetailsButton&&l(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:w(d,d==null?void 0:d.service_id),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"},[...y[0]||(y[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-map-pin-check-inside ml-1 h-3.5 w-3.5"},[e.createElementVNode("path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}),e.createElementVNode("path",{d:"m9 10 2 2 4-4"})],-1)])],8,Ai)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:p(d),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"},[...y[1]||(y[1]=[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,Ti))])])])])])}),128))}}),Mi={class:"space-y-4"},Fi={class:"flex flex-col lg:flex-row lg:items-center py-2 px-2 lg:px-3"},Di={class:"flex-1"},Ii={class:"grid grid-cols-1 lg:grid-cols-12 gap-2 w-full text-xs"},ji={class:"col-span-1 lg:col-span-4"},zi={class:"flex items-start"},Oi={class:"flex flex-col"},Ri={class:"font-bold text-xs lg:text-sm"},Pi={key:0,class:"flex flex-wrap gap-1 mt-1"},Ui={key:0,class:"inline-flex items-center rounded-full bg-secondary text-secondary-foreground text-[9px] lg:text-[10px] px-1.5 py-0"},qi={key:1,class:"flex flex-wrap gap-1 mt-1"},Hi={key:0,class:"inline-flex items-center rounded-full bg-gray-100 text-gray-800 text-[10px] lg:text-xs px-2 py-0.5 font-semibold"},Wi={class:"col-span-1 lg:col-span-7 mt-2 lg:mt-0"},Yi={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2 lg:gap-3"},Zi={class:"text-[9px] lg:text-[10px] text-gray-500 mb-1"},Gi={class:"truncate font-medium text-xs lg:text-sm"},Ki={class:"flex items-center justify-center gap-2 mt-3 lg:mt-0"},Xi=["href"],Ji=["href"],Hn=e.defineComponent({__name:"template-3",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=y=>(y==null?void 0:y.service_id)&&(y==null?void 0:y.is_map)&&y[n.id_key]&&(y==null?void 0:y.geom),r=e.computed(()=>n.columns.find(y=>y.meta==="title")),a=e.computed(()=>n.columns.filter(y=>y.meta==="category")),i=e.computed(()=>n.columns.filter(y=>y.meta==="tags")),s=e.computed(()=>n.columns.filter(y=>y.meta!=="title")),u=e.computed(()=>"bg-blue-500"),p=(y,d)=>{if(d)return y[d]},w=y=>{const d=p(y,n.id_key);return`${n.path}?id=${d}`},c=(y,d)=>{const m=p(y,n.id_key);return`/map?layers=${d}&info=${d},${m}`};return(y,d)=>(e.openBlock(),e.createElementBlock("div",Mi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,m=>{var g,h,f;return e.openBlock(),e.createElementBlock("div",{key:m.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",Fi,[e.createElementVNode("div",Di,[e.createElementVNode("div",Ii,[e.createElementVNode("div",ji,[e.createElementVNode("div",zi,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-6 lg:h-8 rounded-full mr-2 lg:mr-3 mt-1",u.value])},null,2),e.createElementVNode("div",Oi,[e.createElementVNode("p",Ri,e.toDisplayString(m[`${(g=r.value)==null?void 0:g.name}_text`]||m[(h=r.value)==null?void 0:h.name]||m[(f=r.value)==null?void 0:f.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Pi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,k=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:k.name},[m[k.name]?(e.openBlock(),e.createElementBlock("span",Ui,e.toDisplayString(m[`${k.name}_text`]||m[k.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",qi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,k=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:k.name},[m[k.name]?(e.openBlock(),e.createElementBlock("span",Hi,e.toDisplayString(m[`${k.name}_text`]||m[k.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",Wi,[e.createElementVNode("div",Yi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,k=>{var E;return e.openBlock(),e.createElementBlock("div",{key:k.name},[e.createElementVNode("p",Zi,e.toDisplayString(k.ua),1),e.createElementVNode("p",Gi,[Array.isArray(m[k.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(m[k.name],(T,j)=>(e.openBlock(),e.createElementBlock("span",{key:j,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1 text-[10px] lg:text-xs"},e.toDisplayString(T),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[k.format==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(xt)(m[k.name])||"Немає даних"),1)],64)):k.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(ht)(m[k.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(((E=m[k.name+"_data"])==null?void 0:E.text)||m[k.name+"_text"]||m[k.name]||"Немає даних"),1)],64))],64))])])}),128))])])])]),e.createElementVNode("div",Ki,[!t.hideDetailsButton&&l(m)?(e.openBlock(),e.createElementBlock("a",{key:0,href:c(m,m.service_id),class:"inline-flex items-center justify-center gap-2 text-xs lg:text-sm font-medium hover:bg-accent hover:text-accent-foreground h-8 lg:h-9 rounded-md px-2 lg:px-3"},[...d[0]||(d[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:"h-3 w-3 lg:h-3.5 lg:w-3.5"},[e.createElementVNode("path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}),e.createElementVNode("path",{d:"m9 10 2 2 4-4"})],-1)])],8,Xi)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:w(m),class:"flex items-center justify-center hover:bg-accent hover:text-accent-foreground rounded-md h-8 w-8 lg:h-7 lg:w-7"},[...d[1]||(d[1]=[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:"h-3.5 w-3.5 lg:h-4 lg:w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,Ji))])])])}),128))]))}}),Qi={class:"flex flex-col space-y-1.5 p-6 pb-2"},es={class:"flex items-center gap-2 flex-wrap"},ts={class:"tracking-tight text-lg font-medium"},ns={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"},os={key:1,class:"flex"},rs={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"},ls={class:"p-6 pt-0 pb-4"},as={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},is={class:"text-sm text-gray-500"},ss={class:"font-medium"},cs={class:"flex items-center p-6 pt-0 gap-2"},ds=["href"],us=["href"],Wn=e.defineComponent({__name:"template-4",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),r=e.computed(()=>n.columns.find(c=>c.meta==="title")),a=e.computed(()=>n.columns.filter(c=>c.meta==="category")),i=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),u=(c,y)=>{if(y)return c[y]},p=c=>{const y=u(c,n.id_key);return`${n.path}?id=${y}`},w=(c,y)=>{const d=u(c,n.id_key);return`/map?layers=${y}&info=${y},${d}`};return(c,y)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var m,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.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",Qi,[e.createElementVNode("div",es,[e.createElementVNode("h3",ts,e.toDisplayString(d[`${(m=r.value)==null?void 0:m.name}_text`]||d[(g=r.value)==null?void 0:g.name]||d[(h=r.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.name},[d[f.name]?(e.openBlock(),e.createElementBlock("div",ns,e.toDisplayString(d[`${f.name}_text`]||d[f.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",os,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,f=>(e.openBlock(),e.createElementBlock("div",{key:f.name,class:"flex flex-wrap gap-1 ml-2"},[d[f.name]?(e.openBlock(),e.createElementBlock("span",rs,e.toDisplayString(d[`${f.name}_text`]||d[f.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ls,[e.createElementVNode("div",as,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,f=>{var k;return e.openBlock(),e.createElementBlock("div",{key:f.name},[e.createElementVNode("p",is,e.toDisplayString(f.ua),1),e.createElementVNode("p",ss,[Array.isArray(d[f==null?void 0:f.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[f==null?void 0:f.name],(E,T)=>(e.openBlock(),e.createElementBlock("span",{key:T,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(E),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[f.format==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(xt)(d[f==null?void 0:f.name])||"Немає даних"),1)],64)):f.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(ht)(d[f==null?void 0:f.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(((k=d[(f==null?void 0:f.name)+"_data"])==null?void 0:k.text)||d[(f==null?void 0:f.name)+"_text"]||d[f==null?void 0:f.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",cs,[!t.hideDetailsButton&&l(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:w(d,d==null?void 0:d.service_id),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,ds)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:p(d),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,us))])])}),128))}}),ps={class:"grid grid-cols-1 lg:grid-cols-12 lg:divide-x divide-y lg:divide-y-0 divide-gray-100"},ms={key:0,class:"w-full lg:w-auto lg:col-span-1"},fs=["src"],gs={key:1,class:"hidden lg:flex lg:col-span-1 items-center justify-center py-4 lg:py-0"},ys={class:"col-span-1 lg:col-span-7 p-4 lg:p-4"},hs={class:"flex flex-col mb-3 lg:flex-row lg:items-center lg:mb-1"},xs={class:"text-base lg:text-base font-bold text-gray-900 mb-2 lg:mr-2 lg:mb-0"},bs={class:"flex flex-wrap gap-2 lg:gap-0"},ks={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 lg:ml-2"},ws={class:"text-sm text-gray-600 line-clamp-2 lg:line-clamp-1 mb-3 lg:mb-2"},_s={class:"grid grid-cols-1 md:grid-cols-2 gap-y-3 md:gap-x-4 md:gap-y-1 text-sm"},Es={class:"flex items-center mb-1 md:mb-0 md:mr-1 max-w-[50%]"},Ns=["innerHTML"],Bs={class:"text-gray-500 font-medium md:font-normal"},Vs={class:"text-gray-600 break-words line-clamp-2"},Cs={class:"col-span-1 lg:col-span-2 p-4 lg:p-3 bg-gray-50 flex flex-col justify-center border-t lg:border-t-0 lg:border-l border-gray-100"},$s={class:"text-xs text-gray-500 mb-2 lg:mb-1.5"},vs={key:0,class:"flex flex-wrap gap-1.5 lg:gap-1"},Ss={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-2 py-0.5 lg:px-1.5 lg:py-0"},Ls={class:"col-span-1 lg:col-span-2 flex flex-col justify-center items-stretch lg:items-center bg-gray-50 border-t lg:border-t-0 lg:border-l border-gray-100 p-4 lg:p-2"},As={class:"w-full space-y-2"},Ts=["href"],Ms=["href"],Yn=e.defineComponent({__name:"template-5",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]},hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=d=>(d==null?void 0:d.service_id)&&(d==null?void 0:d.is_map)&&d[n.id_key]&&(d==null?void 0:d.geom),r=e.computed(()=>n.columns.find(d=>d.meta==="title")),a=e.computed(()=>n.columns.filter(d=>d.meta==="category")),i=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),s=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),u=e.computed(()=>n.columns.find(d=>d.meta==="image")),p=e.computed(()=>n.columns.find(d=>d.meta==="desc")||n.columns.find(d=>d.name==="description")),w=(d,m)=>{if(m)return d[m]},c=d=>{const m=w(d,n.id_key);return`${n.path}?id=${m}`},y=(d,m)=>{const g=w(d,n.id_key);return`/map?layers=${m}&info=${m},${g}`};return(d,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,g=>{var h,f,k,E,T,j,B,V,v;return e.openBlock(),e.createElementBlock("div",{key:g.id,class:"bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200 hover:shadow-md"},[e.createElementVNode("div",ps,[u.value?(e.openBlock(),e.createElementBlock("div",ms,[g[(h=u.value)==null?void 0:h.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:g[(f=u.value)==null?void 0:f.name],alt:"image",class:"object-cover w-full h-48 lg:h-full lg:w-auto"},null,8,fs)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",gs,[...m[0]||(m[0]=[e.createElementVNode("div",{class:"w-3 h-12 rounded-sm bg-blue-500",title:"Пріоритет: Високий","aria-hidden":"true"},null,-1)])])),e.createElementVNode("div",ys,[e.createElementVNode("div",hs,[e.createElementVNode("h3",xs,e.toDisplayString(g[`${(k=r.value)==null?void 0:k.name}_text`]||g[(E=r.value)==null?void 0:E.name]||g[(T=r.value)==null?void 0:T.label]||"Не вказано"),1),e.createElementVNode("div",bs,[Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,S=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:S.name},[g[S.name]?(e.openBlock(),e.createElementBlock("div",ks,e.toDisplayString(g[`${S.name}_text`]||g[S.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)])]),e.createElementVNode("p",ws,e.toDisplayString(((B=g[((j=p.value)==null?void 0:j.name)+"_data"])==null?void 0:B.text)||g[((V=p.value)==null?void 0:V.name)+"_text"]||g[(v=p.value)==null?void 0:v.name]),1),e.createElementVNode("div",_s,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,S=>{var M;return e.openBlock(),e.createElementBlock("div",{key:S.name,class:"flex flex-col md:flex-row md:items-center"},[e.createElementVNode("div",Es,[S.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:S.icon},null,8,Ns)):e.createCommentVNode("",!0),e.createElementVNode("span",Bs,e.toDisplayString((S==null?void 0:S.ua)||S.label||S.name)+":",1)]),e.createElementVNode("span",Vs,[Array.isArray(g[S==null?void 0:S.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(g[S==null?void 0:S.name],(R,I)=>(e.openBlock(),e.createElementBlock("span",{key:I,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1 inline-block"},e.toDisplayString(R),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[S.format==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(xt)(g[S==null?void 0:S.name])||"Немає даних"),1)],64)):S.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(ht)(g[S==null?void 0:S.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(((M=g[(S==null?void 0:S.name)+"_data"])==null?void 0:M.text)||g[(S==null?void 0:S.name)+"_text"]||g[S==null?void 0:S.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Cs,[e.createElementVNode("p",$s," Теги: "+e.toDisplayString(i.value.length&&g[i.value[0].name]?"":"відсутні"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",vs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,S=>(e.openBlock(),e.createElementBlock("div",{key:S.name,class:"flex flex-wrap gap-1"},[g[S.name]?(e.openBlock(),e.createElementBlock("span",Ss,e.toDisplayString(g[`${S.name}_text`]||g[S.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ls,[e.createElementVNode("div",As,[!t.hideDetailsButton&&l(g)?(e.openBlock(),e.createElementBlock("a",{key:0,href:y(g,g==null?void 0:g.service_id),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,Ts)):e.createCommentVNode("",!0),t.hideDetailsButton?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("a",{key:1,href:c(g),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,Ms))])])])])}),128))}}),Zn={template1:Un,template2:qn,template3:Hn,template4:Wn,template5:Yn},Fs={class:"space-y-4"},Ds={class:"flex items-center gap-4"},Is={class:"text-lg font-semibold mb-4"},js={key:1,class:"text-gray-400 text-center py-12"},zs={key:2,class:"text-gray-400 text-center py-12"},Os=e.defineComponent({__name:"preview-tab",props:e.mergeModels({hideDetailsButton:{type:Boolean,default:!1}},{data:{default:{}},dataModifiers:{}}),emits:["update:data"],setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=e.useModel(t,"data"),l=[{text:"template1",id:"template1"},{text:"template2",id:"template2"},{text:"template3",id:"template3"},{text:"template4",id:"template4"},{text:"template5",id:"template5"}],r={view:{type:"radio",label:"Вигляд",position:"horizontal",required:!0,options:l,col:12}},a=e.computed(()=>{var w;return Array.isArray((w=o.value)==null?void 0:w.columns)?o.value.columns:[]}),i=e.computed(()=>{var w;return((w=o.value)==null?void 0:w.view)||"template1"}),s=e.computed(()=>Zn[i.value]||Zn.template1),u=e.computed(()=>{var y;const w=(y=o.value)==null?void 0:y.view;if(!w)return"template1";const c=l.find(d=>d.id===w);return(c==null?void 0:c.text)||w}),p=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5).map(c=>{var y,d;return{...c,service_id:(y=o.value)==null?void 0:y.service_id,is_map:(d=o.value)==null?void 0:d.is_map}}));return(w,c)=>(e.openBlock(),e.createElementBlock("div",Fs,[e.createElementVNode("div",Ds,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:r,modelValue:o.value,"onUpdate:modelValue":c[0]||(c[0]=y=>o.value=y)},null,8,["modelValue"]))]),e.createElementVNode("h2",Is," Превʼю таблиці ("+e.toDisplayString(u.value)+") ",1),s.value&&p.value.length&&a.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{items:p.value,columns:a.value,path:"#",id_key:"id","hide-details-button":t.hideDetailsButton,key:i.value},null,8,["items","columns","hide-details-button"])):p.value.length?(e.openBlock(),e.createElementBlock("div",zs," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",js," Немає даних для превʼю "))]))}}),Rs={class:"relative h-screen flex flex-col bg-white p-8"},Ps={class:"flex-1 flex flex-col min-h-0 overflow-hidden"},Us={class:"max-w-6xl mx-auto flex-1 flex flex-col min-h-0 w-full"},qs={class:"flex items-center justify-between mb-6 flex-shrink-0"},Hs={class:"flex items-center gap-2"},Ws={class:"w-full flex-shrink-0 mb-6"},Ys={class:"flex items-center w-full h-10 max-w-md grid-cols-3 p-1 bg-white border border-gray-200 rounded-md text-muted-foreground"},Zs=["onClick"],Gs={class:"flex-1 min-h-0 overflow-y-auto"},Ks=e.defineComponent({__name:"register",props:{hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=be.useRoute(),o=be.useRouter(),l=e.ref("list"),r=e.ref(""),a=[{name:"Список",id:"list"},{name:"Фільтри",id:"filters"},{name:"Картка",id:"card"},{name:"Перегляд",id:"preview"}],i={list:Ha,filters:Xa,card:oi,preview:Os},s=a.map(d=>d.id),u=e.ref({columns:[],filters:[],card:[],tableData:[]}),p=e.ref([]),w=async()=>{var m;if(!((m=u.value)==null?void 0:m.token)){ue.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}try{const g=await fetch(`/api/gis-registry/${n.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(u.value)});if(!g.ok)throw new Error(`Failed to save content: ${g.status}`);ue.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(g){ue.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(g)}},c=async d=>{try{const g=await(await fetch(`/api/gis-registry/${d}`)).json(),h=Array.isArray(g==null?void 0:g.rows)?g.rows:[];u.value.tableData=h.slice(0,3)}catch(m){console.error("Помилка завантаження превʼю:",m)}},y=async()=>{var d,m;try{const h=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),f=((d=h==null?void 0:h.rows)==null?void 0:d[0])||{};r.value=f.register_key||"",u.value={...f,columns:Array.isArray(f.columns)?f.columns:[],filters:Array.isArray(f.filters)?f.filters:[],card:Array.isArray(f.card)?f.card:[],tableData:Array.isArray(f.tableData)?f.tableData:[]},(m=h==null?void 0:h.tokens)!=null&&m.edit&&(u.value.token=h.tokens.edit),p.value=Array.isArray(h==null?void 0:h.fields)?h.fields:[]}catch(g){console.error("Помилка завантаження даних:",g)}};return e.onMounted(async()=>{const d=n.query.tab;typeof d=="string"&&s.includes(d)&&(l.value=d),await y(),r.value&&await c(r.value)}),e.watch(l,d=>{n.query.tab!==d&&o.replace({query:{...n.query,tab:d}})}),e.watch(()=>n.query.tab,d=>{typeof d=="string"&&s.includes(d)&&l.value!==d&&(l.value=d)}),(d,m)=>(e.openBlock(),e.createElementBlock("main",Rs,[e.createElementVNode("div",Ps,[e.createElementVNode("div",Us,[e.createElementVNode("div",qs,[m[2]||(m[2]=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",Hs,[e.createElementVNode("button",{onClick:m[0]||(m[0]=g=>e.unref(o).back()),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"}," Повернутися "),e.createElementVNode("button",{onClick:w,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",Ws,[e.createElementVNode("div",Ys,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,g=>e.createElementVNode("button",{key:g.id,onClick:h=>l.value=g.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",g.id===l.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(g.name),11,Zs)),64))])]),e.createElementVNode("div",Gs,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i[l.value]),{data:u.value,"onUpdate:data":m[1]||(m[1]=g=>u.value=g),fields:p.value,"hide-details-button":t.hideDetailsButton,key:l.value},null,40,["data","fields","hide-details-button"]))])])])]))}});/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function Gn(t){return typeof t>"u"||t===null}function Xs(t){return typeof t=="object"&&t!==null}function Js(t){return Array.isArray(t)?t:Gn(t)?[]:[t]}function Qs(t,n){var o,l,r,a;if(n)for(a=Object.keys(n),o=0,l=a.length;o<l;o+=1)r=a[o],t[r]=n[r];return t}function ec(t,n){var o="",l;for(l=0;l<n;l+=1)o+=t;return o}function tc(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var nc=Gn,oc=Xs,rc=Js,lc=ec,ac=tc,ic=Qs,Ce={isNothing:nc,isObject:oc,toArray:rc,repeat:lc,isNegativeZero:ac,extend:ic};function Kn(t,n){var o="",l=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(o+='in "'+t.mark.name+'" '),o+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!n&&t.mark.snippet&&(o+=`
119
129
 
120
- `+t.mark.snippet),r+" "+o):r}function xt(t,n){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=n,this.message=Un(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}xt.prototype=Object.create(Error.prototype),xt.prototype.constructor=xt,xt.prototype.toString=function(n){return this.name+": "+Un(this,n)};var Me=xt;function Ht(t,n,o,r,l){var a="",i="",s=Math.floor(l/2)-1;return r-n>s&&(a=" ... ",n=r-s+a.length),o-r>s&&(i=" ...",o=r+s-i.length),{str:a+t.slice(n,o).replace(/\t/g,"→")+i,pos:r-n+a.length}}function Wt(t,n){return Ce.repeat(" ",n-t.length)+t}function Zs(t,n){if(n=Object.create(n||null),!t.buffer)return null;n.maxLength||(n.maxLength=79),typeof n.indent!="number"&&(n.indent=1),typeof n.linesBefore!="number"&&(n.linesBefore=3),typeof n.linesAfter!="number"&&(n.linesAfter=2);for(var o=/\r?\n|\r|\0/g,r=[0],l=[],a,i=-1;a=o.exec(t.buffer);)l.push(a.index),r.push(a.index+a[0].length),t.position<=a.index&&i<0&&(i=r.length-2);i<0&&(i=r.length-1);var s="",f,u,x=Math.min(t.line+n.linesAfter,l.length).toString().length,c=n.maxLength-(n.indent+x+3);for(f=1;f<=n.linesBefore&&!(i-f<0);f++)u=Ht(t.buffer,r[i-f],l[i-f],t.position-(r[i]-r[i-f]),c),s=Ce.repeat(" ",n.indent)+Wt((t.line-f+1).toString(),x)+" | "+u.str+`
121
- `+s;for(u=Ht(t.buffer,r[i],l[i],t.position,c),s+=Ce.repeat(" ",n.indent)+Wt((t.line+1).toString(),x)+" | "+u.str+`
122
- `,s+=Ce.repeat("-",n.indent+x+3+u.pos)+`^
123
- `,f=1;f<=n.linesAfter&&!(i+f>=l.length);f++)u=Ht(t.buffer,r[i+f],l[i+f],t.position-(r[i]-r[i+f]),c),s+=Ce.repeat(" ",n.indent)+Wt((t.line+f+1).toString(),x)+" | "+u.str+`
124
- `;return s.replace(/\n$/,"")}var Gs=Zs,Ks=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Xs=["scalar","sequence","mapping"];function Js(t){var n={};return t!==null&&Object.keys(t).forEach(function(o){t[o].forEach(function(r){n[String(r)]=o})}),n}function Qs(t,n){if(n=n||{},Object.keys(n).forEach(function(o){if(Ks.indexOf(o)===-1)throw new Me('Unknown option "'+o+'" is met in definition of "'+t+'" YAML type.')}),this.options=n,this.tag=t,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(o){return o},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.representName=n.representName||null,this.defaultStyle=n.defaultStyle||null,this.multi=n.multi||!1,this.styleAliases=Js(n.styleAliases||null),Xs.indexOf(this.kind)===-1)throw new Me('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var ve=Qs;function qn(t,n){var o=[];return t[n].forEach(function(r){var l=o.length;o.forEach(function(a,i){a.tag===r.tag&&a.kind===r.kind&&a.multi===r.multi&&(l=i)}),o[l]=r}),o}function ec(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,o;function r(l){l.multi?(t.multi[l.kind].push(l),t.multi.fallback.push(l)):t[l.kind][l.tag]=t.fallback[l.tag]=l}for(n=0,o=arguments.length;n<o;n+=1)arguments[n].forEach(r);return t}function Yt(t){return this.extend(t)}Yt.prototype.extend=function(n){var o=[],r=[];if(n instanceof ve)r.push(n);else if(Array.isArray(n))r=r.concat(n);else if(n&&(Array.isArray(n.implicit)||Array.isArray(n.explicit)))n.implicit&&(o=o.concat(n.implicit)),n.explicit&&(r=r.concat(n.explicit));else throw new Me("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");o.forEach(function(a){if(!(a instanceof ve))throw new Me("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Me("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Me("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(a){if(!(a instanceof ve))throw new Me("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var l=Object.create(Yt.prototype);return l.implicit=(this.implicit||[]).concat(o),l.explicit=(this.explicit||[]).concat(r),l.compiledImplicit=qn(l,"implicit"),l.compiledExplicit=qn(l,"explicit"),l.compiledTypeMap=ec(l.compiledImplicit,l.compiledExplicit),l};var Hn=Yt,Wn=new ve("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}}),Yn=new ve("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}}),Zn=new ve("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}}),Gn=new Hn({explicit:[Wn,Yn,Zn]});function tc(t){if(t===null)return!0;var n=t.length;return n===1&&t==="~"||n===4&&(t==="null"||t==="Null"||t==="NULL")}function nc(){return null}function oc(t){return t===null}var Kn=new ve("tag:yaml.org,2002:null",{kind:"scalar",resolve:tc,construct:nc,predicate:oc,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function lc(t){if(t===null)return!1;var n=t.length;return n===4&&(t==="true"||t==="True"||t==="TRUE")||n===5&&(t==="false"||t==="False"||t==="FALSE")}function rc(t){return t==="true"||t==="True"||t==="TRUE"}function ac(t){return Object.prototype.toString.call(t)==="[object Boolean]"}var Xn=new ve("tag:yaml.org,2002:bool",{kind:"scalar",resolve:lc,construct:rc,predicate:ac,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"});function ic(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function sc(t){return 48<=t&&t<=55}function cc(t){return 48<=t&&t<=57}function dc(t){if(t===null)return!1;var n=t.length,o=0,r=!1,l;if(!n)return!1;if(l=t[o],(l==="-"||l==="+")&&(l=t[++o]),l==="0"){if(o+1===n)return!0;if(l=t[++o],l==="b"){for(o++;o<n;o++)if(l=t[o],l!=="_"){if(l!=="0"&&l!=="1")return!1;r=!0}return r&&l!=="_"}if(l==="x"){for(o++;o<n;o++)if(l=t[o],l!=="_"){if(!ic(t.charCodeAt(o)))return!1;r=!0}return r&&l!=="_"}if(l==="o"){for(o++;o<n;o++)if(l=t[o],l!=="_"){if(!sc(t.charCodeAt(o)))return!1;r=!0}return r&&l!=="_"}}if(l==="_")return!1;for(;o<n;o++)if(l=t[o],l!=="_"){if(!cc(t.charCodeAt(o)))return!1;r=!0}return!(!r||l==="_")}function uc(t){var n=t,o=1,r;if(n.indexOf("_")!==-1&&(n=n.replace(/_/g,"")),r=n[0],(r==="-"||r==="+")&&(r==="-"&&(o=-1),n=n.slice(1),r=n[0]),n==="0")return 0;if(r==="0"){if(n[1]==="b")return o*parseInt(n.slice(2),2);if(n[1]==="x")return o*parseInt(n.slice(2),16);if(n[1]==="o")return o*parseInt(n.slice(2),8)}return o*parseInt(n,10)}function pc(t){return Object.prototype.toString.call(t)==="[object Number]"&&t%1===0&&!Ce.isNegativeZero(t)}var Jn=new ve("tag:yaml.org,2002:int",{kind:"scalar",resolve:dc,construct:uc,predicate:pc,represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),mc=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function fc(t){return!(t===null||!mc.test(t)||t[t.length-1]==="_")}function gc(t){var n,o;return n=t.replace(/_/g,"").toLowerCase(),o=n[0]==="-"?-1:1,"+-".indexOf(n[0])>=0&&(n=n.slice(1)),n===".inf"?o===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:n===".nan"?NaN:o*parseFloat(n,10)}var yc=/^[-+]?[0-9]+e/;function hc(t,n){var o;if(isNaN(t))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Ce.isNegativeZero(t))return"-0.0";return o=t.toString(10),yc.test(o)?o.replace("e",".e"):o}function xc(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Ce.isNegativeZero(t))}var Qn=new ve("tag:yaml.org,2002:float",{kind:"scalar",resolve:fc,construct:gc,predicate:xc,represent:hc,defaultStyle:"lowercase"}),eo=Gn.extend({implicit:[Kn,Xn,Jn,Qn]}),to=eo,no=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),oo=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function bc(t){return t===null?!1:no.exec(t)!==null||oo.exec(t)!==null}function kc(t){var n,o,r,l,a,i,s,f=0,u=null,x,c,g;if(n=no.exec(t),n===null&&(n=oo.exec(t)),n===null)throw new Error("Date resolve error");if(o=+n[1],r=+n[2]-1,l=+n[3],!n[4])return new Date(Date.UTC(o,r,l));if(a=+n[4],i=+n[5],s=+n[6],n[7]){for(f=n[7].slice(0,3);f.length<3;)f+="0";f=+f}return n[9]&&(x=+n[10],c=+(n[11]||0),u=(x*60+c)*6e4,n[9]==="-"&&(u=-u)),g=new Date(Date.UTC(o,r,l,a,i,s,f)),u&&g.setTime(g.getTime()-u),g}function wc(t){return t.toISOString()}var lo=new ve("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:bc,construct:kc,instanceOf:Date,represent:wc});function _c(t){return t==="<<"||t===null}var ro=new ve("tag:yaml.org,2002:merge",{kind:"scalar",resolve:_c}),Zt=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
125
- \r`;function Ec(t){if(t===null)return!1;var n,o,r=0,l=t.length,a=Zt;for(o=0;o<l;o++)if(n=a.indexOf(t.charAt(o)),!(n>64)){if(n<0)return!1;r+=6}return r%8===0}function Nc(t){var n,o,r=t.replace(/[\r\n=]/g,""),l=r.length,a=Zt,i=0,s=[];for(n=0;n<l;n++)n%4===0&&n&&(s.push(i>>16&255),s.push(i>>8&255),s.push(i&255)),i=i<<6|a.indexOf(r.charAt(n));return o=l%4*6,o===0?(s.push(i>>16&255),s.push(i>>8&255),s.push(i&255)):o===18?(s.push(i>>10&255),s.push(i>>2&255)):o===12&&s.push(i>>4&255),new Uint8Array(s)}function Bc(t){var n="",o=0,r,l,a=t.length,i=Zt;for(r=0;r<a;r++)r%3===0&&r&&(n+=i[o>>18&63],n+=i[o>>12&63],n+=i[o>>6&63],n+=i[o&63]),o=(o<<8)+t[r];return l=a%3,l===0?(n+=i[o>>18&63],n+=i[o>>12&63],n+=i[o>>6&63],n+=i[o&63]):l===2?(n+=i[o>>10&63],n+=i[o>>4&63],n+=i[o<<2&63],n+=i[64]):l===1&&(n+=i[o>>2&63],n+=i[o<<4&63],n+=i[64],n+=i[64]),n}function Vc(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var ao=new ve("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ec,construct:Nc,predicate:Vc,represent:Bc}),Cc=Object.prototype.hasOwnProperty,$c=Object.prototype.toString;function vc(t){if(t===null)return!0;var n=[],o,r,l,a,i,s=t;for(o=0,r=s.length;o<r;o+=1){if(l=s[o],i=!1,$c.call(l)!=="[object Object]")return!1;for(a in l)if(Cc.call(l,a))if(!i)i=!0;else return!1;if(!i)return!1;if(n.indexOf(a)===-1)n.push(a);else return!1}return!0}function Sc(t){return t!==null?t:[]}var io=new ve("tag:yaml.org,2002:omap",{kind:"sequence",resolve:vc,construct:Sc}),Ac=Object.prototype.toString;function Lc(t){if(t===null)return!0;var n,o,r,l,a,i=t;for(a=new Array(i.length),n=0,o=i.length;n<o;n+=1){if(r=i[n],Ac.call(r)!=="[object Object]"||(l=Object.keys(r),l.length!==1))return!1;a[n]=[l[0],r[l[0]]]}return!0}function Tc(t){if(t===null)return[];var n,o,r,l,a,i=t;for(a=new Array(i.length),n=0,o=i.length;n<o;n+=1)r=i[n],l=Object.keys(r),a[n]=[l[0],r[l[0]]];return a}var so=new ve("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:Lc,construct:Tc}),Fc=Object.prototype.hasOwnProperty;function Mc(t){if(t===null)return!0;var n,o=t;for(n in o)if(Fc.call(o,n)&&o[n]!==null)return!1;return!0}function Dc(t){return t!==null?t:{}}var co=new ve("tag:yaml.org,2002:set",{kind:"mapping",resolve:Mc,construct:Dc}),Gt=to.extend({implicit:[lo,ro],explicit:[ao,io,so,co]}),Ke=Object.prototype.hasOwnProperty,St=1,uo=2,po=3,At=4,Kt=1,Ic=2,mo=3,jc=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,zc=/[\x85\u2028\u2029]/,Oc=/[,\[\]\{\}]/,fo=/^(?:!|!!|![a-z\-]+!)$/i,go=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function yo(t){return Object.prototype.toString.call(t)}function Re(t){return t===10||t===13}function tt(t){return t===9||t===32}function De(t){return t===9||t===32||t===10||t===13}function it(t){return t===44||t===91||t===93||t===123||t===125}function Rc(t){var n;return 48<=t&&t<=57?t-48:(n=t|32,97<=n&&n<=102?n-97+10:-1)}function Pc(t){return t===120?2:t===117?4:t===85?8:0}function Uc(t){return 48<=t&&t<=57?t-48:-1}function ho(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?`
126
- `:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"…":t===95?" ":t===76?"\u2028":t===80?"\u2029":""}function qc(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}for(var xo=new Array(256),bo=new Array(256),st=0;st<256;st++)xo[st]=ho(st)?1:0,bo[st]=ho(st);function Hc(t,n){this.input=t,this.filename=n.filename||null,this.schema=n.schema||Gt,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function ko(t,n){var o={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return o.snippet=Gs(o),new Me(n,o)}function J(t,n){throw ko(t,n)}function Lt(t,n){t.onWarning&&t.onWarning.call(null,ko(t,n))}var wo={YAML:function(n,o,r){var l,a,i;n.version!==null&&J(n,"duplication of %YAML directive"),r.length!==1&&J(n,"YAML directive accepts exactly one argument"),l=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),l===null&&J(n,"ill-formed argument of the YAML directive"),a=parseInt(l[1],10),i=parseInt(l[2],10),a!==1&&J(n,"unacceptable YAML version of the document"),n.version=r[0],n.checkLineBreaks=i<2,i!==1&&i!==2&&Lt(n,"unsupported YAML version of the document")},TAG:function(n,o,r){var l,a;r.length!==2&&J(n,"TAG directive accepts exactly two arguments"),l=r[0],a=r[1],fo.test(l)||J(n,"ill-formed tag handle (first argument) of the TAG directive"),Ke.call(n.tagMap,l)&&J(n,'there is a previously declared suffix for "'+l+'" tag handle'),go.test(a)||J(n,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{J(n,"tag prefix is malformed: "+a)}n.tagMap[l]=a}};function Xe(t,n,o,r){var l,a,i,s;if(n<o){if(s=t.input.slice(n,o),r)for(l=0,a=s.length;l<a;l+=1)i=s.charCodeAt(l),i===9||32<=i&&i<=1114111||J(t,"expected valid JSON character");else jc.test(s)&&J(t,"the stream contains non-printable characters");t.result+=s}}function _o(t,n,o,r){var l,a,i,s;for(Ce.isObject(o)||J(t,"cannot merge mappings; the provided source object is unacceptable"),l=Object.keys(o),i=0,s=l.length;i<s;i+=1)a=l[i],Ke.call(n,a)||(n[a]=o[a],r[a]=!0)}function ct(t,n,o,r,l,a,i,s,f){var u,x;if(Array.isArray(l))for(l=Array.prototype.slice.call(l),u=0,x=l.length;u<x;u+=1)Array.isArray(l[u])&&J(t,"nested arrays are not supported inside keys"),typeof l=="object"&&yo(l[u])==="[object Object]"&&(l[u]="[object Object]");if(typeof l=="object"&&yo(l)==="[object Object]"&&(l="[object Object]"),l=String(l),n===null&&(n={}),r==="tag:yaml.org,2002:merge")if(Array.isArray(a))for(u=0,x=a.length;u<x;u+=1)_o(t,n,a[u],o);else _o(t,n,a,o);else!t.json&&!Ke.call(o,l)&&Ke.call(n,l)&&(t.line=i||t.line,t.lineStart=s||t.lineStart,t.position=f||t.position,J(t,"duplicated mapping key")),l==="__proto__"?Object.defineProperty(n,l,{configurable:!0,enumerable:!0,writable:!0,value:a}):n[l]=a,delete o[l];return n}function Xt(t){var n;n=t.input.charCodeAt(t.position),n===10?t.position++:n===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):J(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function Ee(t,n,o){for(var r=0,l=t.input.charCodeAt(t.position);l!==0;){for(;tt(l);)l===9&&t.firstTabInLine===-1&&(t.firstTabInLine=t.position),l=t.input.charCodeAt(++t.position);if(n&&l===35)do l=t.input.charCodeAt(++t.position);while(l!==10&&l!==13&&l!==0);if(Re(l))for(Xt(t),l=t.input.charCodeAt(t.position),r++,t.lineIndent=0;l===32;)t.lineIndent++,l=t.input.charCodeAt(++t.position);else break}return o!==-1&&r!==0&&t.lineIndent<o&&Lt(t,"deficient indentation"),r}function Tt(t){var n=t.position,o;return o=t.input.charCodeAt(n),!!((o===45||o===46)&&o===t.input.charCodeAt(n+1)&&o===t.input.charCodeAt(n+2)&&(n+=3,o=t.input.charCodeAt(n),o===0||De(o)))}function Jt(t,n){n===1?t.result+=" ":n>1&&(t.result+=Ce.repeat(`
127
- `,n-1))}function Wc(t,n,o){var r,l,a,i,s,f,u,x,c=t.kind,g=t.result,d;if(d=t.input.charCodeAt(t.position),De(d)||it(d)||d===35||d===38||d===42||d===33||d===124||d===62||d===39||d===34||d===37||d===64||d===96||(d===63||d===45)&&(l=t.input.charCodeAt(t.position+1),De(l)||o&&it(l)))return!1;for(t.kind="scalar",t.result="",a=i=t.position,s=!1;d!==0;){if(d===58){if(l=t.input.charCodeAt(t.position+1),De(l)||o&&it(l))break}else if(d===35){if(r=t.input.charCodeAt(t.position-1),De(r))break}else{if(t.position===t.lineStart&&Tt(t)||o&&it(d))break;if(Re(d))if(f=t.line,u=t.lineStart,x=t.lineIndent,Ee(t,!1,-1),t.lineIndent>=n){s=!0,d=t.input.charCodeAt(t.position);continue}else{t.position=i,t.line=f,t.lineStart=u,t.lineIndent=x;break}}s&&(Xe(t,a,i,!1),Jt(t,t.line-f),a=i=t.position,s=!1),tt(d)||(i=t.position+1),d=t.input.charCodeAt(++t.position)}return Xe(t,a,i,!1),t.result?!0:(t.kind=c,t.result=g,!1)}function Yc(t,n){var o,r,l;if(o=t.input.charCodeAt(t.position),o!==39)return!1;for(t.kind="scalar",t.result="",t.position++,r=l=t.position;(o=t.input.charCodeAt(t.position))!==0;)if(o===39)if(Xe(t,r,t.position,!0),o=t.input.charCodeAt(++t.position),o===39)r=t.position,t.position++,l=t.position;else return!0;else Re(o)?(Xe(t,r,l,!0),Jt(t,Ee(t,!1,n)),r=l=t.position):t.position===t.lineStart&&Tt(t)?J(t,"unexpected end of the document within a single quoted scalar"):(t.position++,l=t.position);J(t,"unexpected end of the stream within a single quoted scalar")}function Zc(t,n){var o,r,l,a,i,s;if(s=t.input.charCodeAt(t.position),s!==34)return!1;for(t.kind="scalar",t.result="",t.position++,o=r=t.position;(s=t.input.charCodeAt(t.position))!==0;){if(s===34)return Xe(t,o,t.position,!0),t.position++,!0;if(s===92){if(Xe(t,o,t.position,!0),s=t.input.charCodeAt(++t.position),Re(s))Ee(t,!1,n);else if(s<256&&xo[s])t.result+=bo[s],t.position++;else if((i=Pc(s))>0){for(l=i,a=0;l>0;l--)s=t.input.charCodeAt(++t.position),(i=Rc(s))>=0?a=(a<<4)+i:J(t,"expected hexadecimal character");t.result+=qc(a),t.position++}else J(t,"unknown escape sequence");o=r=t.position}else Re(s)?(Xe(t,o,r,!0),Jt(t,Ee(t,!1,n)),o=r=t.position):t.position===t.lineStart&&Tt(t)?J(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}J(t,"unexpected end of the stream within a double quoted scalar")}function Gc(t,n){var o=!0,r,l,a,i=t.tag,s,f=t.anchor,u,x,c,g,d,y=Object.create(null),m,h,p,E;if(E=t.input.charCodeAt(t.position),E===91)x=93,d=!1,s=[];else if(E===123)x=125,d=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),E=t.input.charCodeAt(++t.position);E!==0;){if(Ee(t,!0,n),E=t.input.charCodeAt(t.position),E===x)return t.position++,t.tag=i,t.anchor=f,t.kind=d?"mapping":"sequence",t.result=s,!0;o?E===44&&J(t,"expected the node content, but found ','"):J(t,"missed comma between flow collection entries"),h=m=p=null,c=g=!1,E===63&&(u=t.input.charCodeAt(t.position+1),De(u)&&(c=g=!0,t.position++,Ee(t,!0,n))),r=t.line,l=t.lineStart,a=t.position,dt(t,n,St,!1,!0),h=t.tag,m=t.result,Ee(t,!0,n),E=t.input.charCodeAt(t.position),(g||t.line===r)&&E===58&&(c=!0,E=t.input.charCodeAt(++t.position),Ee(t,!0,n),dt(t,n,St,!1,!0),p=t.result),d?ct(t,s,y,h,m,p,r,l,a):c?s.push(ct(t,null,y,h,m,p,r,l,a)):s.push(m),Ee(t,!0,n),E=t.input.charCodeAt(t.position),E===44?(o=!0,E=t.input.charCodeAt(++t.position)):o=!1}J(t,"unexpected end of the stream within a flow collection")}function Kc(t,n){var o,r,l=Kt,a=!1,i=!1,s=n,f=0,u=!1,x,c;if(c=t.input.charCodeAt(t.position),c===124)r=!1;else if(c===62)r=!0;else return!1;for(t.kind="scalar",t.result="";c!==0;)if(c=t.input.charCodeAt(++t.position),c===43||c===45)Kt===l?l=c===43?mo:Ic:J(t,"repeat of a chomping mode identifier");else if((x=Uc(c))>=0)x===0?J(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):i?J(t,"repeat of an indentation width identifier"):(s=n+x-1,i=!0);else break;if(tt(c)){do c=t.input.charCodeAt(++t.position);while(tt(c));if(c===35)do c=t.input.charCodeAt(++t.position);while(!Re(c)&&c!==0)}for(;c!==0;){for(Xt(t),t.lineIndent=0,c=t.input.charCodeAt(t.position);(!i||t.lineIndent<s)&&c===32;)t.lineIndent++,c=t.input.charCodeAt(++t.position);if(!i&&t.lineIndent>s&&(s=t.lineIndent),Re(c)){f++;continue}if(t.lineIndent<s){l===mo?t.result+=Ce.repeat(`
128
- `,a?1+f:f):l===Kt&&a&&(t.result+=`
129
- `);break}for(r?tt(c)?(u=!0,t.result+=Ce.repeat(`
130
- `,a?1+f:f)):u?(u=!1,t.result+=Ce.repeat(`
131
- `,f+1)):f===0?a&&(t.result+=" "):t.result+=Ce.repeat(`
132
- `,f):t.result+=Ce.repeat(`
133
- `,a?1+f:f),a=!0,i=!0,f=0,o=t.position;!Re(c)&&c!==0;)c=t.input.charCodeAt(++t.position);Xe(t,o,t.position,!1)}return!0}function Eo(t,n){var o,r=t.tag,l=t.anchor,a=[],i,s=!1,f;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=a),f=t.input.charCodeAt(t.position);f!==0&&(t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,J(t,"tab characters must not be used in indentation")),!(f!==45||(i=t.input.charCodeAt(t.position+1),!De(i))));){if(s=!0,t.position++,Ee(t,!0,-1)&&t.lineIndent<=n){a.push(null),f=t.input.charCodeAt(t.position);continue}if(o=t.line,dt(t,n,po,!1,!0),a.push(t.result),Ee(t,!0,-1),f=t.input.charCodeAt(t.position),(t.line===o||t.lineIndent>n)&&f!==0)J(t,"bad indentation of a sequence entry");else if(t.lineIndent<n)break}return s?(t.tag=r,t.anchor=l,t.kind="sequence",t.result=a,!0):!1}function Xc(t,n,o){var r,l,a,i,s,f,u=t.tag,x=t.anchor,c={},g=Object.create(null),d=null,y=null,m=null,h=!1,p=!1,E;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=c),E=t.input.charCodeAt(t.position);E!==0;){if(!h&&t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,J(t,"tab characters must not be used in indentation")),r=t.input.charCodeAt(t.position+1),a=t.line,(E===63||E===58)&&De(r))E===63?(h&&(ct(t,c,g,d,y,null,i,s,f),d=y=m=null),p=!0,h=!0,l=!0):h?(h=!1,l=!0):J(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,E=r;else{if(i=t.line,s=t.lineStart,f=t.position,!dt(t,o,uo,!1,!0))break;if(t.line===a){for(E=t.input.charCodeAt(t.position);tt(E);)E=t.input.charCodeAt(++t.position);if(E===58)E=t.input.charCodeAt(++t.position),De(E)||J(t,"a whitespace character is expected after the key-value separator within a block mapping"),h&&(ct(t,c,g,d,y,null,i,s,f),d=y=m=null),p=!0,h=!1,l=!1,d=t.tag,y=t.result;else if(p)J(t,"can not read an implicit mapping pair; a colon is missed");else return t.tag=u,t.anchor=x,!0}else if(p)J(t,"can not read a block mapping entry; a multiline key may not be an implicit key");else return t.tag=u,t.anchor=x,!0}if((t.line===a||t.lineIndent>n)&&(h&&(i=t.line,s=t.lineStart,f=t.position),dt(t,n,At,!0,l)&&(h?y=t.result:m=t.result),h||(ct(t,c,g,d,y,m,i,s,f),d=y=m=null),Ee(t,!0,-1),E=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>n)&&E!==0)J(t,"bad indentation of a mapping entry");else if(t.lineIndent<n)break}return h&&ct(t,c,g,d,y,null,i,s,f),p&&(t.tag=u,t.anchor=x,t.kind="mapping",t.result=c),p}function Jc(t){var n,o=!1,r=!1,l,a,i;if(i=t.input.charCodeAt(t.position),i!==33)return!1;if(t.tag!==null&&J(t,"duplication of a tag property"),i=t.input.charCodeAt(++t.position),i===60?(o=!0,i=t.input.charCodeAt(++t.position)):i===33?(r=!0,l="!!",i=t.input.charCodeAt(++t.position)):l="!",n=t.position,o){do i=t.input.charCodeAt(++t.position);while(i!==0&&i!==62);t.position<t.length?(a=t.input.slice(n,t.position),i=t.input.charCodeAt(++t.position)):J(t,"unexpected end of the stream within a verbatim tag")}else{for(;i!==0&&!De(i);)i===33&&(r?J(t,"tag suffix cannot contain exclamation marks"):(l=t.input.slice(n-1,t.position+1),fo.test(l)||J(t,"named tag handle cannot contain such characters"),r=!0,n=t.position+1)),i=t.input.charCodeAt(++t.position);a=t.input.slice(n,t.position),Oc.test(a)&&J(t,"tag suffix cannot contain flow indicator characters")}a&&!go.test(a)&&J(t,"tag name cannot contain such characters: "+a);try{a=decodeURIComponent(a)}catch{J(t,"tag name is malformed: "+a)}return o?t.tag=a:Ke.call(t.tagMap,l)?t.tag=t.tagMap[l]+a:l==="!"?t.tag="!"+a:l==="!!"?t.tag="tag:yaml.org,2002:"+a:J(t,'undeclared tag handle "'+l+'"'),!0}function Qc(t){var n,o;if(o=t.input.charCodeAt(t.position),o!==38)return!1;for(t.anchor!==null&&J(t,"duplication of an anchor property"),o=t.input.charCodeAt(++t.position),n=t.position;o!==0&&!De(o)&&!it(o);)o=t.input.charCodeAt(++t.position);return t.position===n&&J(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(n,t.position),!0}function ed(t){var n,o,r;if(r=t.input.charCodeAt(t.position),r!==42)return!1;for(r=t.input.charCodeAt(++t.position),n=t.position;r!==0&&!De(r)&&!it(r);)r=t.input.charCodeAt(++t.position);return t.position===n&&J(t,"name of an alias node must contain at least one character"),o=t.input.slice(n,t.position),Ke.call(t.anchorMap,o)||J(t,'unidentified alias "'+o+'"'),t.result=t.anchorMap[o],Ee(t,!0,-1),!0}function dt(t,n,o,r,l){var a,i,s,f=1,u=!1,x=!1,c,g,d,y,m,h;if(t.listener!==null&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,a=i=s=At===o||po===o,r&&Ee(t,!0,-1)&&(u=!0,t.lineIndent>n?f=1:t.lineIndent===n?f=0:t.lineIndent<n&&(f=-1)),f===1)for(;Jc(t)||Qc(t);)Ee(t,!0,-1)?(u=!0,s=a,t.lineIndent>n?f=1:t.lineIndent===n?f=0:t.lineIndent<n&&(f=-1)):s=!1;if(s&&(s=u||l),(f===1||At===o)&&(St===o||uo===o?m=n:m=n+1,h=t.position-t.lineStart,f===1?s&&(Eo(t,h)||Xc(t,h,m))||Gc(t,m)?x=!0:(i&&Kc(t,m)||Yc(t,m)||Zc(t,m)?x=!0:ed(t)?(x=!0,(t.tag!==null||t.anchor!==null)&&J(t,"alias node should not have any properties")):Wc(t,m,St===o)&&(x=!0,t.tag===null&&(t.tag="?")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):f===0&&(x=s&&Eo(t,h))),t.tag===null)t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);else if(t.tag==="?"){for(t.result!==null&&t.kind!=="scalar"&&J(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,g=t.implicitTypes.length;c<g;c+=1)if(y=t.implicitTypes[c],y.resolve(t.result)){t.result=y.construct(t.result),t.tag=y.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else if(t.tag!=="!"){if(Ke.call(t.typeMap[t.kind||"fallback"],t.tag))y=t.typeMap[t.kind||"fallback"][t.tag];else for(y=null,d=t.typeMap.multi[t.kind||"fallback"],c=0,g=d.length;c<g;c+=1)if(t.tag.slice(0,d[c].tag.length)===d[c].tag){y=d[c];break}y||J(t,"unknown tag !<"+t.tag+">"),t.result!==null&&y.kind!==t.kind&&J(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+y.kind+'", not "'+t.kind+'"'),y.resolve(t.result,t.tag)?(t.result=y.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):J(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||x}function td(t){var n=t.position,o,r,l,a=!1,i;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(i=t.input.charCodeAt(t.position))!==0&&(Ee(t,!0,-1),i=t.input.charCodeAt(t.position),!(t.lineIndent>0||i!==37));){for(a=!0,i=t.input.charCodeAt(++t.position),o=t.position;i!==0&&!De(i);)i=t.input.charCodeAt(++t.position);for(r=t.input.slice(o,t.position),l=[],r.length<1&&J(t,"directive name must not be less than one character in length");i!==0;){for(;tt(i);)i=t.input.charCodeAt(++t.position);if(i===35){do i=t.input.charCodeAt(++t.position);while(i!==0&&!Re(i));break}if(Re(i))break;for(o=t.position;i!==0&&!De(i);)i=t.input.charCodeAt(++t.position);l.push(t.input.slice(o,t.position))}i!==0&&Xt(t),Ke.call(wo,r)?wo[r](t,r,l):Lt(t,'unknown document directive "'+r+'"')}if(Ee(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Ee(t,!0,-1)):a&&J(t,"directives end mark is expected"),dt(t,t.lineIndent-1,At,!1,!0),Ee(t,!0,-1),t.checkLineBreaks&&zc.test(t.input.slice(n,t.position))&&Lt(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Tt(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Ee(t,!0,-1));return}if(t.position<t.length-1)J(t,"end of the stream or a document separator is expected");else return}function No(t,n){t=String(t),n=n||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`
134
- `),t.charCodeAt(0)===65279&&(t=t.slice(1)));var o=new Hc(t,n),r=t.indexOf("\0");for(r!==-1&&(o.position=r,J(o,"null byte is not allowed in input")),o.input+="\0";o.input.charCodeAt(o.position)===32;)o.lineIndent+=1,o.position+=1;for(;o.position<o.length-1;)td(o);return o.documents}function nd(t,n,o){n!==null&&typeof n=="object"&&typeof o>"u"&&(o=n,n=null);var r=No(t,o);if(typeof n!="function")return r;for(var l=0,a=r.length;l<a;l+=1)n(r[l])}function od(t,n){var o=No(t,n);if(o.length!==0){if(o.length===1)return o[0];throw new Me("expected a single document in the stream, but found more")}}var ld=nd,rd=od,Bo={loadAll:ld,load:rd},Vo=Object.prototype.toString,Co=Object.prototype.hasOwnProperty,Qt=65279,ad=9,bt=10,id=13,sd=32,cd=33,dd=34,en=35,ud=37,pd=38,md=39,fd=42,$o=44,gd=45,Ft=58,yd=61,hd=62,xd=63,bd=64,vo=91,So=93,kd=96,Ao=123,wd=124,Lo=125,Ae={};Ae[0]="\\0",Ae[7]="\\a",Ae[8]="\\b",Ae[9]="\\t",Ae[10]="\\n",Ae[11]="\\v",Ae[12]="\\f",Ae[13]="\\r",Ae[27]="\\e",Ae[34]='\\"',Ae[92]="\\\\",Ae[133]="\\N",Ae[160]="\\_",Ae[8232]="\\L",Ae[8233]="\\P";var _d=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Ed=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function Nd(t,n){var o,r,l,a,i,s,f;if(n===null)return{};for(o={},r=Object.keys(n),l=0,a=r.length;l<a;l+=1)i=r[l],s=String(n[i]),i.slice(0,2)==="!!"&&(i="tag:yaml.org,2002:"+i.slice(2)),f=t.compiledTypeMap.fallback[i],f&&Co.call(f.styleAliases,s)&&(s=f.styleAliases[s]),o[i]=s;return o}function Bd(t){var n,o,r;if(n=t.toString(16).toUpperCase(),t<=255)o="x",r=2;else if(t<=65535)o="u",r=4;else if(t<=4294967295)o="U",r=8;else throw new Me("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+o+Ce.repeat("0",r-n.length)+n}var Vd=1,kt=2;function Cd(t){this.schema=t.schema||Gt,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=Ce.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=Nd(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType=t.quotingType==='"'?kt:Vd,this.forceQuotes=t.forceQuotes||!1,this.replacer=typeof t.replacer=="function"?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function To(t,n){for(var o=Ce.repeat(" ",n),r=0,l=-1,a="",i,s=t.length;r<s;)l=t.indexOf(`
135
- `,r),l===-1?(i=t.slice(r),r=s):(i=t.slice(r,l+1),r=l+1),i.length&&i!==`
136
- `&&(a+=o),a+=i;return a}function tn(t,n){return`
137
- `+Ce.repeat(" ",t.indent*n)}function $d(t,n){var o,r,l;for(o=0,r=t.implicitTypes.length;o<r;o+=1)if(l=t.implicitTypes[o],l.resolve(n))return!0;return!1}function Mt(t){return t===sd||t===ad}function wt(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==Qt||65536<=t&&t<=1114111}function Fo(t){return wt(t)&&t!==Qt&&t!==id&&t!==bt}function Mo(t,n,o){var r=Fo(t),l=r&&!Mt(t);return(o?r:r&&t!==$o&&t!==vo&&t!==So&&t!==Ao&&t!==Lo)&&t!==en&&!(n===Ft&&!l)||Fo(n)&&!Mt(n)&&t===en||n===Ft&&l}function vd(t){return wt(t)&&t!==Qt&&!Mt(t)&&t!==gd&&t!==xd&&t!==Ft&&t!==$o&&t!==vo&&t!==So&&t!==Ao&&t!==Lo&&t!==en&&t!==pd&&t!==fd&&t!==cd&&t!==wd&&t!==yd&&t!==hd&&t!==md&&t!==dd&&t!==ud&&t!==bd&&t!==kd}function Sd(t){return!Mt(t)&&t!==Ft}function _t(t,n){var o=t.charCodeAt(n),r;return o>=55296&&o<=56319&&n+1<t.length&&(r=t.charCodeAt(n+1),r>=56320&&r<=57343)?(o-55296)*1024+r-56320+65536:o}function Do(t){var n=/^\n* /;return n.test(t)}var Io=1,nn=2,jo=3,zo=4,ut=5;function Ad(t,n,o,r,l,a,i,s){var f,u=0,x=null,c=!1,g=!1,d=r!==-1,y=-1,m=vd(_t(t,0))&&Sd(_t(t,t.length-1));if(n||i)for(f=0;f<t.length;u>=65536?f+=2:f++){if(u=_t(t,f),!wt(u))return ut;m=m&&Mo(u,x,s),x=u}else{for(f=0;f<t.length;u>=65536?f+=2:f++){if(u=_t(t,f),u===bt)c=!0,d&&(g=g||f-y-1>r&&t[y+1]!==" ",y=f);else if(!wt(u))return ut;m=m&&Mo(u,x,s),x=u}g=g||d&&f-y-1>r&&t[y+1]!==" "}return!c&&!g?m&&!i&&!l(t)?Io:a===kt?ut:nn:o>9&&Do(t)?ut:i?a===kt?ut:nn:g?zo:jo}function Ld(t,n,o,r,l){t.dump=function(){if(n.length===0)return t.quotingType===kt?'""':"''";if(!t.noCompatMode&&(_d.indexOf(n)!==-1||Ed.test(n)))return t.quotingType===kt?'"'+n+'"':"'"+n+"'";var a=t.indent*Math.max(1,o),i=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),s=r||t.flowLevel>-1&&o>=t.flowLevel;function f(u){return $d(t,u)}switch(Ad(n,s,t.indent,i,f,t.quotingType,t.forceQuotes&&!r,l)){case Io:return n;case nn:return"'"+n.replace(/'/g,"''")+"'";case jo:return"|"+Oo(n,t.indent)+Ro(To(n,a));case zo:return">"+Oo(n,t.indent)+Ro(To(Td(n,i),a));case ut:return'"'+Fd(n)+'"';default:throw new Me("impossible error: invalid scalar style")}}()}function Oo(t,n){var o=Do(t)?String(n):"",r=t[t.length-1]===`
138
- `,l=r&&(t[t.length-2]===`
130
+ `+t.mark.snippet),l+" "+o):l}function bt(t,n){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=n,this.message=Kn(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}bt.prototype=Object.create(Error.prototype),bt.prototype.constructor=bt,bt.prototype.toString=function(n){return this.name+": "+Kn(this,n)};var De=bt;function Zt(t,n,o,l,r){var a="",i="",s=Math.floor(r/2)-1;return l-n>s&&(a=" ... ",n=l-s+a.length),o-l>s&&(i=" ...",o=l+s-i.length),{str:a+t.slice(n,o).replace(/\t/g,"→")+i,pos:l-n+a.length}}function Gt(t,n){return Ce.repeat(" ",n-t.length)+t}function sc(t,n){if(n=Object.create(n||null),!t.buffer)return null;n.maxLength||(n.maxLength=79),typeof n.indent!="number"&&(n.indent=1),typeof n.linesBefore!="number"&&(n.linesBefore=3),typeof n.linesAfter!="number"&&(n.linesAfter=2);for(var o=/\r?\n|\r|\0/g,l=[0],r=[],a,i=-1;a=o.exec(t.buffer);)r.push(a.index),l.push(a.index+a[0].length),t.position<=a.index&&i<0&&(i=l.length-2);i<0&&(i=l.length-1);var s="",u,p,w=Math.min(t.line+n.linesAfter,r.length).toString().length,c=n.maxLength-(n.indent+w+3);for(u=1;u<=n.linesBefore&&!(i-u<0);u++)p=Zt(t.buffer,l[i-u],r[i-u],t.position-(l[i]-l[i-u]),c),s=Ce.repeat(" ",n.indent)+Gt((t.line-u+1).toString(),w)+" | "+p.str+`
131
+ `+s;for(p=Zt(t.buffer,l[i],r[i],t.position,c),s+=Ce.repeat(" ",n.indent)+Gt((t.line+1).toString(),w)+" | "+p.str+`
132
+ `,s+=Ce.repeat("-",n.indent+w+3+p.pos)+`^
133
+ `,u=1;u<=n.linesAfter&&!(i+u>=r.length);u++)p=Zt(t.buffer,l[i+u],r[i+u],t.position-(l[i]-l[i+u]),c),s+=Ce.repeat(" ",n.indent)+Gt((t.line+u+1).toString(),w)+" | "+p.str+`
134
+ `;return s.replace(/\n$/,"")}var cc=sc,dc=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],uc=["scalar","sequence","mapping"];function pc(t){var n={};return t!==null&&Object.keys(t).forEach(function(o){t[o].forEach(function(l){n[String(l)]=o})}),n}function mc(t,n){if(n=n||{},Object.keys(n).forEach(function(o){if(dc.indexOf(o)===-1)throw new De('Unknown option "'+o+'" is met in definition of "'+t+'" YAML type.')}),this.options=n,this.tag=t,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(o){return o},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.representName=n.representName||null,this.defaultStyle=n.defaultStyle||null,this.multi=n.multi||!1,this.styleAliases=pc(n.styleAliases||null),uc.indexOf(this.kind)===-1)throw new De('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var Se=mc;function Xn(t,n){var o=[];return t[n].forEach(function(l){var r=o.length;o.forEach(function(a,i){a.tag===l.tag&&a.kind===l.kind&&a.multi===l.multi&&(r=i)}),o[r]=l}),o}function fc(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,o;function l(r){r.multi?(t.multi[r.kind].push(r),t.multi.fallback.push(r)):t[r.kind][r.tag]=t.fallback[r.tag]=r}for(n=0,o=arguments.length;n<o;n+=1)arguments[n].forEach(l);return t}function Kt(t){return this.extend(t)}Kt.prototype.extend=function(n){var o=[],l=[];if(n instanceof Se)l.push(n);else if(Array.isArray(n))l=l.concat(n);else if(n&&(Array.isArray(n.implicit)||Array.isArray(n.explicit)))n.implicit&&(o=o.concat(n.implicit)),n.explicit&&(l=l.concat(n.explicit));else throw new De("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");o.forEach(function(a){if(!(a instanceof Se))throw new De("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new De("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new De("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),l.forEach(function(a){if(!(a instanceof Se))throw new De("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var r=Object.create(Kt.prototype);return r.implicit=(this.implicit||[]).concat(o),r.explicit=(this.explicit||[]).concat(l),r.compiledImplicit=Xn(r,"implicit"),r.compiledExplicit=Xn(r,"explicit"),r.compiledTypeMap=fc(r.compiledImplicit,r.compiledExplicit),r};var Jn=Kt,Qn=new Se("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}}),eo=new Se("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}}),to=new Se("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}}),no=new Jn({explicit:[Qn,eo,to]});function gc(t){if(t===null)return!0;var n=t.length;return n===1&&t==="~"||n===4&&(t==="null"||t==="Null"||t==="NULL")}function yc(){return null}function hc(t){return t===null}var oo=new Se("tag:yaml.org,2002:null",{kind:"scalar",resolve:gc,construct:yc,predicate:hc,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function xc(t){if(t===null)return!1;var n=t.length;return n===4&&(t==="true"||t==="True"||t==="TRUE")||n===5&&(t==="false"||t==="False"||t==="FALSE")}function bc(t){return t==="true"||t==="True"||t==="TRUE"}function kc(t){return Object.prototype.toString.call(t)==="[object Boolean]"}var ro=new Se("tag:yaml.org,2002:bool",{kind:"scalar",resolve:xc,construct:bc,predicate:kc,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"});function wc(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function _c(t){return 48<=t&&t<=55}function Ec(t){return 48<=t&&t<=57}function Nc(t){if(t===null)return!1;var n=t.length,o=0,l=!1,r;if(!n)return!1;if(r=t[o],(r==="-"||r==="+")&&(r=t[++o]),r==="0"){if(o+1===n)return!0;if(r=t[++o],r==="b"){for(o++;o<n;o++)if(r=t[o],r!=="_"){if(r!=="0"&&r!=="1")return!1;l=!0}return l&&r!=="_"}if(r==="x"){for(o++;o<n;o++)if(r=t[o],r!=="_"){if(!wc(t.charCodeAt(o)))return!1;l=!0}return l&&r!=="_"}if(r==="o"){for(o++;o<n;o++)if(r=t[o],r!=="_"){if(!_c(t.charCodeAt(o)))return!1;l=!0}return l&&r!=="_"}}if(r==="_")return!1;for(;o<n;o++)if(r=t[o],r!=="_"){if(!Ec(t.charCodeAt(o)))return!1;l=!0}return!(!l||r==="_")}function Bc(t){var n=t,o=1,l;if(n.indexOf("_")!==-1&&(n=n.replace(/_/g,"")),l=n[0],(l==="-"||l==="+")&&(l==="-"&&(o=-1),n=n.slice(1),l=n[0]),n==="0")return 0;if(l==="0"){if(n[1]==="b")return o*parseInt(n.slice(2),2);if(n[1]==="x")return o*parseInt(n.slice(2),16);if(n[1]==="o")return o*parseInt(n.slice(2),8)}return o*parseInt(n,10)}function Vc(t){return Object.prototype.toString.call(t)==="[object Number]"&&t%1===0&&!Ce.isNegativeZero(t)}var lo=new Se("tag:yaml.org,2002:int",{kind:"scalar",resolve:Nc,construct:Bc,predicate:Vc,represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Cc=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function $c(t){return!(t===null||!Cc.test(t)||t[t.length-1]==="_")}function vc(t){var n,o;return n=t.replace(/_/g,"").toLowerCase(),o=n[0]==="-"?-1:1,"+-".indexOf(n[0])>=0&&(n=n.slice(1)),n===".inf"?o===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:n===".nan"?NaN:o*parseFloat(n,10)}var Sc=/^[-+]?[0-9]+e/;function Lc(t,n){var o;if(isNaN(t))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Ce.isNegativeZero(t))return"-0.0";return o=t.toString(10),Sc.test(o)?o.replace("e",".e"):o}function Ac(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Ce.isNegativeZero(t))}var ao=new Se("tag:yaml.org,2002:float",{kind:"scalar",resolve:$c,construct:vc,predicate:Ac,represent:Lc,defaultStyle:"lowercase"}),io=no.extend({implicit:[oo,ro,lo,ao]}),so=io,co=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),uo=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Tc(t){return t===null?!1:co.exec(t)!==null||uo.exec(t)!==null}function Mc(t){var n,o,l,r,a,i,s,u=0,p=null,w,c,y;if(n=co.exec(t),n===null&&(n=uo.exec(t)),n===null)throw new Error("Date resolve error");if(o=+n[1],l=+n[2]-1,r=+n[3],!n[4])return new Date(Date.UTC(o,l,r));if(a=+n[4],i=+n[5],s=+n[6],n[7]){for(u=n[7].slice(0,3);u.length<3;)u+="0";u=+u}return n[9]&&(w=+n[10],c=+(n[11]||0),p=(w*60+c)*6e4,n[9]==="-"&&(p=-p)),y=new Date(Date.UTC(o,l,r,a,i,s,u)),p&&y.setTime(y.getTime()-p),y}function Fc(t){return t.toISOString()}var po=new Se("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Tc,construct:Mc,instanceOf:Date,represent:Fc});function Dc(t){return t==="<<"||t===null}var mo=new Se("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Dc}),Xt=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
135
+ \r`;function Ic(t){if(t===null)return!1;var n,o,l=0,r=t.length,a=Xt;for(o=0;o<r;o++)if(n=a.indexOf(t.charAt(o)),!(n>64)){if(n<0)return!1;l+=6}return l%8===0}function jc(t){var n,o,l=t.replace(/[\r\n=]/g,""),r=l.length,a=Xt,i=0,s=[];for(n=0;n<r;n++)n%4===0&&n&&(s.push(i>>16&255),s.push(i>>8&255),s.push(i&255)),i=i<<6|a.indexOf(l.charAt(n));return o=r%4*6,o===0?(s.push(i>>16&255),s.push(i>>8&255),s.push(i&255)):o===18?(s.push(i>>10&255),s.push(i>>2&255)):o===12&&s.push(i>>4&255),new Uint8Array(s)}function zc(t){var n="",o=0,l,r,a=t.length,i=Xt;for(l=0;l<a;l++)l%3===0&&l&&(n+=i[o>>18&63],n+=i[o>>12&63],n+=i[o>>6&63],n+=i[o&63]),o=(o<<8)+t[l];return r=a%3,r===0?(n+=i[o>>18&63],n+=i[o>>12&63],n+=i[o>>6&63],n+=i[o&63]):r===2?(n+=i[o>>10&63],n+=i[o>>4&63],n+=i[o<<2&63],n+=i[64]):r===1&&(n+=i[o>>2&63],n+=i[o<<4&63],n+=i[64],n+=i[64]),n}function Oc(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var fo=new Se("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ic,construct:jc,predicate:Oc,represent:zc}),Rc=Object.prototype.hasOwnProperty,Pc=Object.prototype.toString;function Uc(t){if(t===null)return!0;var n=[],o,l,r,a,i,s=t;for(o=0,l=s.length;o<l;o+=1){if(r=s[o],i=!1,Pc.call(r)!=="[object Object]")return!1;for(a in r)if(Rc.call(r,a))if(!i)i=!0;else return!1;if(!i)return!1;if(n.indexOf(a)===-1)n.push(a);else return!1}return!0}function qc(t){return t!==null?t:[]}var go=new Se("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Uc,construct:qc}),Hc=Object.prototype.toString;function Wc(t){if(t===null)return!0;var n,o,l,r,a,i=t;for(a=new Array(i.length),n=0,o=i.length;n<o;n+=1){if(l=i[n],Hc.call(l)!=="[object Object]"||(r=Object.keys(l),r.length!==1))return!1;a[n]=[r[0],l[r[0]]]}return!0}function Yc(t){if(t===null)return[];var n,o,l,r,a,i=t;for(a=new Array(i.length),n=0,o=i.length;n<o;n+=1)l=i[n],r=Object.keys(l),a[n]=[r[0],l[r[0]]];return a}var yo=new Se("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:Wc,construct:Yc}),Zc=Object.prototype.hasOwnProperty;function Gc(t){if(t===null)return!0;var n,o=t;for(n in o)if(Zc.call(o,n)&&o[n]!==null)return!1;return!0}function Kc(t){return t!==null?t:{}}var ho=new Se("tag:yaml.org,2002:set",{kind:"mapping",resolve:Gc,construct:Kc}),Jt=so.extend({implicit:[po,mo],explicit:[fo,go,yo,ho]}),Ze=Object.prototype.hasOwnProperty,Tt=1,xo=2,bo=3,Mt=4,Qt=1,Xc=2,ko=3,Jc=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Qc=/[\x85\u2028\u2029]/,ed=/[,\[\]\{\}]/,wo=/^(?:!|!!|![a-z\-]+!)$/i,_o=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Eo(t){return Object.prototype.toString.call(t)}function Pe(t){return t===10||t===13}function Je(t){return t===9||t===32}function Ie(t){return t===9||t===32||t===10||t===13}function st(t){return t===44||t===91||t===93||t===123||t===125}function td(t){var n;return 48<=t&&t<=57?t-48:(n=t|32,97<=n&&n<=102?n-97+10:-1)}function nd(t){return t===120?2:t===117?4:t===85?8:0}function od(t){return 48<=t&&t<=57?t-48:-1}function No(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?`
136
+ `:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"…":t===95?" ":t===76?"\u2028":t===80?"\u2029":""}function rd(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}for(var Bo=new Array(256),Vo=new Array(256),ct=0;ct<256;ct++)Bo[ct]=No(ct)?1:0,Vo[ct]=No(ct);function ld(t,n){this.input=t,this.filename=n.filename||null,this.schema=n.schema||Jt,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Co(t,n){var o={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return o.snippet=cc(o),new De(n,o)}function oe(t,n){throw Co(t,n)}function Ft(t,n){t.onWarning&&t.onWarning.call(null,Co(t,n))}var $o={YAML:function(n,o,l){var r,a,i;n.version!==null&&oe(n,"duplication of %YAML directive"),l.length!==1&&oe(n,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(l[0]),r===null&&oe(n,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),i=parseInt(r[2],10),a!==1&&oe(n,"unacceptable YAML version of the document"),n.version=l[0],n.checkLineBreaks=i<2,i!==1&&i!==2&&Ft(n,"unsupported YAML version of the document")},TAG:function(n,o,l){var r,a;l.length!==2&&oe(n,"TAG directive accepts exactly two arguments"),r=l[0],a=l[1],wo.test(r)||oe(n,"ill-formed tag handle (first argument) of the TAG directive"),Ze.call(n.tagMap,r)&&oe(n,'there is a previously declared suffix for "'+r+'" tag handle'),_o.test(a)||oe(n,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{oe(n,"tag prefix is malformed: "+a)}n.tagMap[r]=a}};function Ge(t,n,o,l){var r,a,i,s;if(n<o){if(s=t.input.slice(n,o),l)for(r=0,a=s.length;r<a;r+=1)i=s.charCodeAt(r),i===9||32<=i&&i<=1114111||oe(t,"expected valid JSON character");else Jc.test(s)&&oe(t,"the stream contains non-printable characters");t.result+=s}}function vo(t,n,o,l){var r,a,i,s;for(Ce.isObject(o)||oe(t,"cannot merge mappings; the provided source object is unacceptable"),r=Object.keys(o),i=0,s=r.length;i<s;i+=1)a=r[i],Ze.call(n,a)||(n[a]=o[a],l[a]=!0)}function dt(t,n,o,l,r,a,i,s,u){var p,w;if(Array.isArray(r))for(r=Array.prototype.slice.call(r),p=0,w=r.length;p<w;p+=1)Array.isArray(r[p])&&oe(t,"nested arrays are not supported inside keys"),typeof r=="object"&&Eo(r[p])==="[object Object]"&&(r[p]="[object Object]");if(typeof r=="object"&&Eo(r)==="[object Object]"&&(r="[object Object]"),r=String(r),n===null&&(n={}),l==="tag:yaml.org,2002:merge")if(Array.isArray(a))for(p=0,w=a.length;p<w;p+=1)vo(t,n,a[p],o);else vo(t,n,a,o);else!t.json&&!Ze.call(o,r)&&Ze.call(n,r)&&(t.line=i||t.line,t.lineStart=s||t.lineStart,t.position=u||t.position,oe(t,"duplicated mapping key")),r==="__proto__"?Object.defineProperty(n,r,{configurable:!0,enumerable:!0,writable:!0,value:a}):n[r]=a,delete o[r];return n}function en(t){var n;n=t.input.charCodeAt(t.position),n===10?t.position++:n===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):oe(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function Ne(t,n,o){for(var l=0,r=t.input.charCodeAt(t.position);r!==0;){for(;Je(r);)r===9&&t.firstTabInLine===-1&&(t.firstTabInLine=t.position),r=t.input.charCodeAt(++t.position);if(n&&r===35)do r=t.input.charCodeAt(++t.position);while(r!==10&&r!==13&&r!==0);if(Pe(r))for(en(t),r=t.input.charCodeAt(t.position),l++,t.lineIndent=0;r===32;)t.lineIndent++,r=t.input.charCodeAt(++t.position);else break}return o!==-1&&l!==0&&t.lineIndent<o&&Ft(t,"deficient indentation"),l}function Dt(t){var n=t.position,o;return o=t.input.charCodeAt(n),!!((o===45||o===46)&&o===t.input.charCodeAt(n+1)&&o===t.input.charCodeAt(n+2)&&(n+=3,o=t.input.charCodeAt(n),o===0||Ie(o)))}function tn(t,n){n===1?t.result+=" ":n>1&&(t.result+=Ce.repeat(`
137
+ `,n-1))}function ad(t,n,o){var l,r,a,i,s,u,p,w,c=t.kind,y=t.result,d;if(d=t.input.charCodeAt(t.position),Ie(d)||st(d)||d===35||d===38||d===42||d===33||d===124||d===62||d===39||d===34||d===37||d===64||d===96||(d===63||d===45)&&(r=t.input.charCodeAt(t.position+1),Ie(r)||o&&st(r)))return!1;for(t.kind="scalar",t.result="",a=i=t.position,s=!1;d!==0;){if(d===58){if(r=t.input.charCodeAt(t.position+1),Ie(r)||o&&st(r))break}else if(d===35){if(l=t.input.charCodeAt(t.position-1),Ie(l))break}else{if(t.position===t.lineStart&&Dt(t)||o&&st(d))break;if(Pe(d))if(u=t.line,p=t.lineStart,w=t.lineIndent,Ne(t,!1,-1),t.lineIndent>=n){s=!0,d=t.input.charCodeAt(t.position);continue}else{t.position=i,t.line=u,t.lineStart=p,t.lineIndent=w;break}}s&&(Ge(t,a,i,!1),tn(t,t.line-u),a=i=t.position,s=!1),Je(d)||(i=t.position+1),d=t.input.charCodeAt(++t.position)}return Ge(t,a,i,!1),t.result?!0:(t.kind=c,t.result=y,!1)}function id(t,n){var o,l,r;if(o=t.input.charCodeAt(t.position),o!==39)return!1;for(t.kind="scalar",t.result="",t.position++,l=r=t.position;(o=t.input.charCodeAt(t.position))!==0;)if(o===39)if(Ge(t,l,t.position,!0),o=t.input.charCodeAt(++t.position),o===39)l=t.position,t.position++,r=t.position;else return!0;else Pe(o)?(Ge(t,l,r,!0),tn(t,Ne(t,!1,n)),l=r=t.position):t.position===t.lineStart&&Dt(t)?oe(t,"unexpected end of the document within a single quoted scalar"):(t.position++,r=t.position);oe(t,"unexpected end of the stream within a single quoted scalar")}function sd(t,n){var o,l,r,a,i,s;if(s=t.input.charCodeAt(t.position),s!==34)return!1;for(t.kind="scalar",t.result="",t.position++,o=l=t.position;(s=t.input.charCodeAt(t.position))!==0;){if(s===34)return Ge(t,o,t.position,!0),t.position++,!0;if(s===92){if(Ge(t,o,t.position,!0),s=t.input.charCodeAt(++t.position),Pe(s))Ne(t,!1,n);else if(s<256&&Bo[s])t.result+=Vo[s],t.position++;else if((i=nd(s))>0){for(r=i,a=0;r>0;r--)s=t.input.charCodeAt(++t.position),(i=td(s))>=0?a=(a<<4)+i:oe(t,"expected hexadecimal character");t.result+=rd(a),t.position++}else oe(t,"unknown escape sequence");o=l=t.position}else Pe(s)?(Ge(t,o,l,!0),tn(t,Ne(t,!1,n)),o=l=t.position):t.position===t.lineStart&&Dt(t)?oe(t,"unexpected end of the document within a double quoted scalar"):(t.position++,l=t.position)}oe(t,"unexpected end of the stream within a double quoted scalar")}function cd(t,n){var o=!0,l,r,a,i=t.tag,s,u=t.anchor,p,w,c,y,d,m=Object.create(null),g,h,f,k;if(k=t.input.charCodeAt(t.position),k===91)w=93,d=!1,s=[];else if(k===123)w=125,d=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),k=t.input.charCodeAt(++t.position);k!==0;){if(Ne(t,!0,n),k=t.input.charCodeAt(t.position),k===w)return t.position++,t.tag=i,t.anchor=u,t.kind=d?"mapping":"sequence",t.result=s,!0;o?k===44&&oe(t,"expected the node content, but found ','"):oe(t,"missed comma between flow collection entries"),h=g=f=null,c=y=!1,k===63&&(p=t.input.charCodeAt(t.position+1),Ie(p)&&(c=y=!0,t.position++,Ne(t,!0,n))),l=t.line,r=t.lineStart,a=t.position,ut(t,n,Tt,!1,!0),h=t.tag,g=t.result,Ne(t,!0,n),k=t.input.charCodeAt(t.position),(y||t.line===l)&&k===58&&(c=!0,k=t.input.charCodeAt(++t.position),Ne(t,!0,n),ut(t,n,Tt,!1,!0),f=t.result),d?dt(t,s,m,h,g,f,l,r,a):c?s.push(dt(t,null,m,h,g,f,l,r,a)):s.push(g),Ne(t,!0,n),k=t.input.charCodeAt(t.position),k===44?(o=!0,k=t.input.charCodeAt(++t.position)):o=!1}oe(t,"unexpected end of the stream within a flow collection")}function dd(t,n){var o,l,r=Qt,a=!1,i=!1,s=n,u=0,p=!1,w,c;if(c=t.input.charCodeAt(t.position),c===124)l=!1;else if(c===62)l=!0;else return!1;for(t.kind="scalar",t.result="";c!==0;)if(c=t.input.charCodeAt(++t.position),c===43||c===45)Qt===r?r=c===43?ko:Xc:oe(t,"repeat of a chomping mode identifier");else if((w=od(c))>=0)w===0?oe(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):i?oe(t,"repeat of an indentation width identifier"):(s=n+w-1,i=!0);else break;if(Je(c)){do c=t.input.charCodeAt(++t.position);while(Je(c));if(c===35)do c=t.input.charCodeAt(++t.position);while(!Pe(c)&&c!==0)}for(;c!==0;){for(en(t),t.lineIndent=0,c=t.input.charCodeAt(t.position);(!i||t.lineIndent<s)&&c===32;)t.lineIndent++,c=t.input.charCodeAt(++t.position);if(!i&&t.lineIndent>s&&(s=t.lineIndent),Pe(c)){u++;continue}if(t.lineIndent<s){r===ko?t.result+=Ce.repeat(`
138
+ `,a?1+u:u):r===Qt&&a&&(t.result+=`
139
+ `);break}for(l?Je(c)?(p=!0,t.result+=Ce.repeat(`
140
+ `,a?1+u:u)):p?(p=!1,t.result+=Ce.repeat(`
141
+ `,u+1)):u===0?a&&(t.result+=" "):t.result+=Ce.repeat(`
142
+ `,u):t.result+=Ce.repeat(`
143
+ `,a?1+u:u),a=!0,i=!0,u=0,o=t.position;!Pe(c)&&c!==0;)c=t.input.charCodeAt(++t.position);Ge(t,o,t.position,!1)}return!0}function So(t,n){var o,l=t.tag,r=t.anchor,a=[],i,s=!1,u;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=a),u=t.input.charCodeAt(t.position);u!==0&&(t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,oe(t,"tab characters must not be used in indentation")),!(u!==45||(i=t.input.charCodeAt(t.position+1),!Ie(i))));){if(s=!0,t.position++,Ne(t,!0,-1)&&t.lineIndent<=n){a.push(null),u=t.input.charCodeAt(t.position);continue}if(o=t.line,ut(t,n,bo,!1,!0),a.push(t.result),Ne(t,!0,-1),u=t.input.charCodeAt(t.position),(t.line===o||t.lineIndent>n)&&u!==0)oe(t,"bad indentation of a sequence entry");else if(t.lineIndent<n)break}return s?(t.tag=l,t.anchor=r,t.kind="sequence",t.result=a,!0):!1}function ud(t,n,o){var l,r,a,i,s,u,p=t.tag,w=t.anchor,c={},y=Object.create(null),d=null,m=null,g=null,h=!1,f=!1,k;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=c),k=t.input.charCodeAt(t.position);k!==0;){if(!h&&t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,oe(t,"tab characters must not be used in indentation")),l=t.input.charCodeAt(t.position+1),a=t.line,(k===63||k===58)&&Ie(l))k===63?(h&&(dt(t,c,y,d,m,null,i,s,u),d=m=g=null),f=!0,h=!0,r=!0):h?(h=!1,r=!0):oe(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,k=l;else{if(i=t.line,s=t.lineStart,u=t.position,!ut(t,o,xo,!1,!0))break;if(t.line===a){for(k=t.input.charCodeAt(t.position);Je(k);)k=t.input.charCodeAt(++t.position);if(k===58)k=t.input.charCodeAt(++t.position),Ie(k)||oe(t,"a whitespace character is expected after the key-value separator within a block mapping"),h&&(dt(t,c,y,d,m,null,i,s,u),d=m=g=null),f=!0,h=!1,r=!1,d=t.tag,m=t.result;else if(f)oe(t,"can not read an implicit mapping pair; a colon is missed");else return t.tag=p,t.anchor=w,!0}else if(f)oe(t,"can not read a block mapping entry; a multiline key may not be an implicit key");else return t.tag=p,t.anchor=w,!0}if((t.line===a||t.lineIndent>n)&&(h&&(i=t.line,s=t.lineStart,u=t.position),ut(t,n,Mt,!0,r)&&(h?m=t.result:g=t.result),h||(dt(t,c,y,d,m,g,i,s,u),d=m=g=null),Ne(t,!0,-1),k=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>n)&&k!==0)oe(t,"bad indentation of a mapping entry");else if(t.lineIndent<n)break}return h&&dt(t,c,y,d,m,null,i,s,u),f&&(t.tag=p,t.anchor=w,t.kind="mapping",t.result=c),f}function pd(t){var n,o=!1,l=!1,r,a,i;if(i=t.input.charCodeAt(t.position),i!==33)return!1;if(t.tag!==null&&oe(t,"duplication of a tag property"),i=t.input.charCodeAt(++t.position),i===60?(o=!0,i=t.input.charCodeAt(++t.position)):i===33?(l=!0,r="!!",i=t.input.charCodeAt(++t.position)):r="!",n=t.position,o){do i=t.input.charCodeAt(++t.position);while(i!==0&&i!==62);t.position<t.length?(a=t.input.slice(n,t.position),i=t.input.charCodeAt(++t.position)):oe(t,"unexpected end of the stream within a verbatim tag")}else{for(;i!==0&&!Ie(i);)i===33&&(l?oe(t,"tag suffix cannot contain exclamation marks"):(r=t.input.slice(n-1,t.position+1),wo.test(r)||oe(t,"named tag handle cannot contain such characters"),l=!0,n=t.position+1)),i=t.input.charCodeAt(++t.position);a=t.input.slice(n,t.position),ed.test(a)&&oe(t,"tag suffix cannot contain flow indicator characters")}a&&!_o.test(a)&&oe(t,"tag name cannot contain such characters: "+a);try{a=decodeURIComponent(a)}catch{oe(t,"tag name is malformed: "+a)}return o?t.tag=a:Ze.call(t.tagMap,r)?t.tag=t.tagMap[r]+a:r==="!"?t.tag="!"+a:r==="!!"?t.tag="tag:yaml.org,2002:"+a:oe(t,'undeclared tag handle "'+r+'"'),!0}function md(t){var n,o;if(o=t.input.charCodeAt(t.position),o!==38)return!1;for(t.anchor!==null&&oe(t,"duplication of an anchor property"),o=t.input.charCodeAt(++t.position),n=t.position;o!==0&&!Ie(o)&&!st(o);)o=t.input.charCodeAt(++t.position);return t.position===n&&oe(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(n,t.position),!0}function fd(t){var n,o,l;if(l=t.input.charCodeAt(t.position),l!==42)return!1;for(l=t.input.charCodeAt(++t.position),n=t.position;l!==0&&!Ie(l)&&!st(l);)l=t.input.charCodeAt(++t.position);return t.position===n&&oe(t,"name of an alias node must contain at least one character"),o=t.input.slice(n,t.position),Ze.call(t.anchorMap,o)||oe(t,'unidentified alias "'+o+'"'),t.result=t.anchorMap[o],Ne(t,!0,-1),!0}function ut(t,n,o,l,r){var a,i,s,u=1,p=!1,w=!1,c,y,d,m,g,h;if(t.listener!==null&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,a=i=s=Mt===o||bo===o,l&&Ne(t,!0,-1)&&(p=!0,t.lineIndent>n?u=1:t.lineIndent===n?u=0:t.lineIndent<n&&(u=-1)),u===1)for(;pd(t)||md(t);)Ne(t,!0,-1)?(p=!0,s=a,t.lineIndent>n?u=1:t.lineIndent===n?u=0:t.lineIndent<n&&(u=-1)):s=!1;if(s&&(s=p||r),(u===1||Mt===o)&&(Tt===o||xo===o?g=n:g=n+1,h=t.position-t.lineStart,u===1?s&&(So(t,h)||ud(t,h,g))||cd(t,g)?w=!0:(i&&dd(t,g)||id(t,g)||sd(t,g)?w=!0:fd(t)?(w=!0,(t.tag!==null||t.anchor!==null)&&oe(t,"alias node should not have any properties")):ad(t,g,Tt===o)&&(w=!0,t.tag===null&&(t.tag="?")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):u===0&&(w=s&&So(t,h))),t.tag===null)t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);else if(t.tag==="?"){for(t.result!==null&&t.kind!=="scalar"&&oe(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,y=t.implicitTypes.length;c<y;c+=1)if(m=t.implicitTypes[c],m.resolve(t.result)){t.result=m.construct(t.result),t.tag=m.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else if(t.tag!=="!"){if(Ze.call(t.typeMap[t.kind||"fallback"],t.tag))m=t.typeMap[t.kind||"fallback"][t.tag];else for(m=null,d=t.typeMap.multi[t.kind||"fallback"],c=0,y=d.length;c<y;c+=1)if(t.tag.slice(0,d[c].tag.length)===d[c].tag){m=d[c];break}m||oe(t,"unknown tag !<"+t.tag+">"),t.result!==null&&m.kind!==t.kind&&oe(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+m.kind+'", not "'+t.kind+'"'),m.resolve(t.result,t.tag)?(t.result=m.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):oe(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||w}function gd(t){var n=t.position,o,l,r,a=!1,i;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(i=t.input.charCodeAt(t.position))!==0&&(Ne(t,!0,-1),i=t.input.charCodeAt(t.position),!(t.lineIndent>0||i!==37));){for(a=!0,i=t.input.charCodeAt(++t.position),o=t.position;i!==0&&!Ie(i);)i=t.input.charCodeAt(++t.position);for(l=t.input.slice(o,t.position),r=[],l.length<1&&oe(t,"directive name must not be less than one character in length");i!==0;){for(;Je(i);)i=t.input.charCodeAt(++t.position);if(i===35){do i=t.input.charCodeAt(++t.position);while(i!==0&&!Pe(i));break}if(Pe(i))break;for(o=t.position;i!==0&&!Ie(i);)i=t.input.charCodeAt(++t.position);r.push(t.input.slice(o,t.position))}i!==0&&en(t),Ze.call($o,l)?$o[l](t,l,r):Ft(t,'unknown document directive "'+l+'"')}if(Ne(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Ne(t,!0,-1)):a&&oe(t,"directives end mark is expected"),ut(t,t.lineIndent-1,Mt,!1,!0),Ne(t,!0,-1),t.checkLineBreaks&&Qc.test(t.input.slice(n,t.position))&&Ft(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Dt(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Ne(t,!0,-1));return}if(t.position<t.length-1)oe(t,"end of the stream or a document separator is expected");else return}function Lo(t,n){t=String(t),n=n||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`
144
+ `),t.charCodeAt(0)===65279&&(t=t.slice(1)));var o=new ld(t,n),l=t.indexOf("\0");for(l!==-1&&(o.position=l,oe(o,"null byte is not allowed in input")),o.input+="\0";o.input.charCodeAt(o.position)===32;)o.lineIndent+=1,o.position+=1;for(;o.position<o.length-1;)gd(o);return o.documents}function yd(t,n,o){n!==null&&typeof n=="object"&&typeof o>"u"&&(o=n,n=null);var l=Lo(t,o);if(typeof n!="function")return l;for(var r=0,a=l.length;r<a;r+=1)n(l[r])}function hd(t,n){var o=Lo(t,n);if(o.length!==0){if(o.length===1)return o[0];throw new De("expected a single document in the stream, but found more")}}var xd=yd,bd=hd,Ao={loadAll:xd,load:bd},To=Object.prototype.toString,Mo=Object.prototype.hasOwnProperty,nn=65279,kd=9,kt=10,wd=13,_d=32,Ed=33,Nd=34,on=35,Bd=37,Vd=38,Cd=39,$d=42,Fo=44,vd=45,It=58,Sd=61,Ld=62,Ad=63,Td=64,Do=91,Io=93,Md=96,jo=123,Fd=124,zo=125,Ae={};Ae[0]="\\0",Ae[7]="\\a",Ae[8]="\\b",Ae[9]="\\t",Ae[10]="\\n",Ae[11]="\\v",Ae[12]="\\f",Ae[13]="\\r",Ae[27]="\\e",Ae[34]='\\"',Ae[92]="\\\\",Ae[133]="\\N",Ae[160]="\\_",Ae[8232]="\\L",Ae[8233]="\\P";var Dd=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Id=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function jd(t,n){var o,l,r,a,i,s,u;if(n===null)return{};for(o={},l=Object.keys(n),r=0,a=l.length;r<a;r+=1)i=l[r],s=String(n[i]),i.slice(0,2)==="!!"&&(i="tag:yaml.org,2002:"+i.slice(2)),u=t.compiledTypeMap.fallback[i],u&&Mo.call(u.styleAliases,s)&&(s=u.styleAliases[s]),o[i]=s;return o}function zd(t){var n,o,l;if(n=t.toString(16).toUpperCase(),t<=255)o="x",l=2;else if(t<=65535)o="u",l=4;else if(t<=4294967295)o="U",l=8;else throw new De("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+o+Ce.repeat("0",l-n.length)+n}var Od=1,wt=2;function Rd(t){this.schema=t.schema||Jt,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=Ce.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=jd(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType=t.quotingType==='"'?wt:Od,this.forceQuotes=t.forceQuotes||!1,this.replacer=typeof t.replacer=="function"?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Oo(t,n){for(var o=Ce.repeat(" ",n),l=0,r=-1,a="",i,s=t.length;l<s;)r=t.indexOf(`
145
+ `,l),r===-1?(i=t.slice(l),l=s):(i=t.slice(l,r+1),l=r+1),i.length&&i!==`
146
+ `&&(a+=o),a+=i;return a}function rn(t,n){return`
147
+ `+Ce.repeat(" ",t.indent*n)}function Pd(t,n){var o,l,r;for(o=0,l=t.implicitTypes.length;o<l;o+=1)if(r=t.implicitTypes[o],r.resolve(n))return!0;return!1}function jt(t){return t===_d||t===kd}function _t(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==nn||65536<=t&&t<=1114111}function Ro(t){return _t(t)&&t!==nn&&t!==wd&&t!==kt}function Po(t,n,o){var l=Ro(t),r=l&&!jt(t);return(o?l:l&&t!==Fo&&t!==Do&&t!==Io&&t!==jo&&t!==zo)&&t!==on&&!(n===It&&!r)||Ro(n)&&!jt(n)&&t===on||n===It&&r}function Ud(t){return _t(t)&&t!==nn&&!jt(t)&&t!==vd&&t!==Ad&&t!==It&&t!==Fo&&t!==Do&&t!==Io&&t!==jo&&t!==zo&&t!==on&&t!==Vd&&t!==$d&&t!==Ed&&t!==Fd&&t!==Sd&&t!==Ld&&t!==Cd&&t!==Nd&&t!==Bd&&t!==Td&&t!==Md}function qd(t){return!jt(t)&&t!==It}function Et(t,n){var o=t.charCodeAt(n),l;return o>=55296&&o<=56319&&n+1<t.length&&(l=t.charCodeAt(n+1),l>=56320&&l<=57343)?(o-55296)*1024+l-56320+65536:o}function Uo(t){var n=/^\n* /;return n.test(t)}var qo=1,ln=2,Ho=3,Wo=4,pt=5;function Hd(t,n,o,l,r,a,i,s){var u,p=0,w=null,c=!1,y=!1,d=l!==-1,m=-1,g=Ud(Et(t,0))&&qd(Et(t,t.length-1));if(n||i)for(u=0;u<t.length;p>=65536?u+=2:u++){if(p=Et(t,u),!_t(p))return pt;g=g&&Po(p,w,s),w=p}else{for(u=0;u<t.length;p>=65536?u+=2:u++){if(p=Et(t,u),p===kt)c=!0,d&&(y=y||u-m-1>l&&t[m+1]!==" ",m=u);else if(!_t(p))return pt;g=g&&Po(p,w,s),w=p}y=y||d&&u-m-1>l&&t[m+1]!==" "}return!c&&!y?g&&!i&&!r(t)?qo:a===wt?pt:ln:o>9&&Uo(t)?pt:i?a===wt?pt:ln:y?Wo:Ho}function Wd(t,n,o,l,r){t.dump=(function(){if(n.length===0)return t.quotingType===wt?'""':"''";if(!t.noCompatMode&&(Dd.indexOf(n)!==-1||Id.test(n)))return t.quotingType===wt?'"'+n+'"':"'"+n+"'";var a=t.indent*Math.max(1,o),i=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),s=l||t.flowLevel>-1&&o>=t.flowLevel;function u(p){return Pd(t,p)}switch(Hd(n,s,t.indent,i,u,t.quotingType,t.forceQuotes&&!l,r)){case qo:return n;case ln:return"'"+n.replace(/'/g,"''")+"'";case Ho:return"|"+Yo(n,t.indent)+Zo(Oo(n,a));case Wo:return">"+Yo(n,t.indent)+Zo(Oo(Yd(n,i),a));case pt:return'"'+Zd(n)+'"';default:throw new De("impossible error: invalid scalar style")}})()}function Yo(t,n){var o=Uo(t)?String(n):"",l=t[t.length-1]===`
148
+ `,r=l&&(t[t.length-2]===`
139
149
  `||t===`
140
- `),a=l?"+":r?"":"-";return o+a+`
141
- `}function Ro(t){return t[t.length-1]===`
142
- `?t.slice(0,-1):t}function Td(t,n){for(var o=/(\n+)([^\n]*)/g,r=function(){var u=t.indexOf(`
143
- `);return u=u!==-1?u:t.length,o.lastIndex=u,Po(t.slice(0,u),n)}(),l=t[0]===`
144
- `||t[0]===" ",a,i;i=o.exec(t);){var s=i[1],f=i[2];a=f[0]===" ",r+=s+(!l&&!a&&f!==""?`
145
- `:"")+Po(f,n),l=a}return r}function Po(t,n){if(t===""||t[0]===" ")return t;for(var o=/ [^ ]/g,r,l=0,a,i=0,s=0,f="";r=o.exec(t);)s=r.index,s-l>n&&(a=i>l?i:s,f+=`
146
- `+t.slice(l,a),l=a+1),i=s;return f+=`
147
- `,t.length-l>n&&i>l?f+=t.slice(l,i)+`
148
- `+t.slice(i+1):f+=t.slice(l),f.slice(1)}function Fd(t){for(var n="",o=0,r,l=0;l<t.length;o>=65536?l+=2:l++)o=_t(t,l),r=Ae[o],!r&&wt(o)?(n+=t[l],o>=65536&&(n+=t[l+1])):n+=r||Bd(o);return n}function Md(t,n,o){var r="",l=t.tag,a,i,s;for(a=0,i=o.length;a<i;a+=1)s=o[a],t.replacer&&(s=t.replacer.call(o,String(a),s)),(qe(t,n,s,!1,!1)||typeof s>"u"&&qe(t,n,null,!1,!1))&&(r!==""&&(r+=","+(t.condenseFlow?"":" ")),r+=t.dump);t.tag=l,t.dump="["+r+"]"}function Uo(t,n,o,r){var l="",a=t.tag,i,s,f;for(i=0,s=o.length;i<s;i+=1)f=o[i],t.replacer&&(f=t.replacer.call(o,String(i),f)),(qe(t,n+1,f,!0,!0,!1,!0)||typeof f>"u"&&qe(t,n+1,null,!0,!0,!1,!0))&&((!r||l!=="")&&(l+=tn(t,n)),t.dump&&bt===t.dump.charCodeAt(0)?l+="-":l+="- ",l+=t.dump);t.tag=a,t.dump=l||"[]"}function Dd(t,n,o){var r="",l=t.tag,a=Object.keys(o),i,s,f,u,x;for(i=0,s=a.length;i<s;i+=1)x="",r!==""&&(x+=", "),t.condenseFlow&&(x+='"'),f=a[i],u=o[f],t.replacer&&(u=t.replacer.call(o,f,u)),qe(t,n,f,!1,!1)&&(t.dump.length>1024&&(x+="? "),x+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),qe(t,n,u,!1,!1)&&(x+=t.dump,r+=x));t.tag=l,t.dump="{"+r+"}"}function Id(t,n,o,r){var l="",a=t.tag,i=Object.keys(o),s,f,u,x,c,g;if(t.sortKeys===!0)i.sort();else if(typeof t.sortKeys=="function")i.sort(t.sortKeys);else if(t.sortKeys)throw new Me("sortKeys must be a boolean or a function");for(s=0,f=i.length;s<f;s+=1)g="",(!r||l!=="")&&(g+=tn(t,n)),u=i[s],x=o[u],t.replacer&&(x=t.replacer.call(o,u,x)),qe(t,n+1,u,!0,!0,!0)&&(c=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,c&&(t.dump&&bt===t.dump.charCodeAt(0)?g+="?":g+="? "),g+=t.dump,c&&(g+=tn(t,n)),qe(t,n+1,x,!0,c)&&(t.dump&&bt===t.dump.charCodeAt(0)?g+=":":g+=": ",g+=t.dump,l+=g));t.tag=a,t.dump=l||"{}"}function qo(t,n,o){var r,l,a,i,s,f;for(l=o?t.explicitTypes:t.implicitTypes,a=0,i=l.length;a<i;a+=1)if(s=l[a],(s.instanceOf||s.predicate)&&(!s.instanceOf||typeof n=="object"&&n instanceof s.instanceOf)&&(!s.predicate||s.predicate(n))){if(o?s.multi&&s.representName?t.tag=s.representName(n):t.tag=s.tag:t.tag="?",s.represent){if(f=t.styleMap[s.tag]||s.defaultStyle,Vo.call(s.represent)==="[object Function]")r=s.represent(n,f);else if(Co.call(s.represent,f))r=s.represent[f](n,f);else throw new Me("!<"+s.tag+'> tag resolver accepts not "'+f+'" style');t.dump=r}return!0}return!1}function qe(t,n,o,r,l,a,i){t.tag=null,t.dump=o,qo(t,o,!1)||qo(t,o,!0);var s=Vo.call(t.dump),f=r,u;r&&(r=t.flowLevel<0||t.flowLevel>n);var x=s==="[object Object]"||s==="[object Array]",c,g;if(x&&(c=t.duplicates.indexOf(o),g=c!==-1),(t.tag!==null&&t.tag!=="?"||g||t.indent!==2&&n>0)&&(l=!1),g&&t.usedDuplicates[c])t.dump="*ref_"+c;else{if(x&&g&&!t.usedDuplicates[c]&&(t.usedDuplicates[c]=!0),s==="[object Object]")r&&Object.keys(t.dump).length!==0?(Id(t,n,t.dump,l),g&&(t.dump="&ref_"+c+t.dump)):(Dd(t,n,t.dump),g&&(t.dump="&ref_"+c+" "+t.dump));else if(s==="[object Array]")r&&t.dump.length!==0?(t.noArrayIndent&&!i&&n>0?Uo(t,n-1,t.dump,l):Uo(t,n,t.dump,l),g&&(t.dump="&ref_"+c+t.dump)):(Md(t,n,t.dump),g&&(t.dump="&ref_"+c+" "+t.dump));else if(s==="[object String]")t.tag!=="?"&&Ld(t,t.dump,n,a,f);else{if(s==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Me("unacceptable kind of an object to dump "+s)}t.tag!==null&&t.tag!=="?"&&(u=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?u="!"+u:u.slice(0,18)==="tag:yaml.org,2002:"?u="!!"+u.slice(18):u="!<"+u+">",t.dump=u+" "+t.dump)}return!0}function jd(t,n){var o=[],r=[],l,a;for(on(t,o,r),l=0,a=r.length;l<a;l+=1)n.duplicates.push(o[r[l]]);n.usedDuplicates=new Array(a)}function on(t,n,o){var r,l,a;if(t!==null&&typeof t=="object")if(l=n.indexOf(t),l!==-1)o.indexOf(l)===-1&&o.push(l);else if(n.push(t),Array.isArray(t))for(l=0,a=t.length;l<a;l+=1)on(t[l],n,o);else for(r=Object.keys(t),l=0,a=r.length;l<a;l+=1)on(t[r[l]],n,o)}function zd(t,n){n=n||{};var o=new Cd(n);o.noRefs||jd(t,o);var r=t;return o.replacer&&(r=o.replacer.call({"":r},"",r)),qe(o,0,r,!0,!0)?o.dump+`
149
- `:""}var Od=zd,Rd={dump:Od};function ln(t,n){return function(){throw new Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+n+" instead, which is now safe by default.")}}var Pd=ve,Ud=Hn,qd=Gn,Hd=eo,Wd=to,Yd=Gt,Ho=Bo.load,Zd=Bo.loadAll,Wo=Rd.dump,Gd=Me,Kd={binary:ao,float:Qn,map:Zn,null:Kn,pairs:so,set:co,timestamp:lo,bool:Xn,int:Jn,merge:ro,omap:io,seq:Yn,str:Wn},Xd=ln("safeLoad","load"),Jd=ln("safeLoadAll","loadAll"),Qd=ln("safeDump","dump"),Yo={Type:Pd,Schema:Ud,FAILSAFE_SCHEMA:qd,JSON_SCHEMA:Hd,CORE_SCHEMA:Wd,DEFAULT_SCHEMA:Yd,load:Ho,loadAll:Zd,dump:Wo,YAMLException:Gd,types:Kd,safeLoad:Xd,safeLoadAll:Jd,safeDump:Qd};const pt="#9ca3af";function rn(t){return!t||typeof t!="object"||Array.isArray(t)?null:{...t}}const eu={},tu={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 nu(t,n){return e.openBlock(),e.createElementBlock("svg",tu,[...n[0]||(n[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 Zo=oe(eu,[["render",nu]]),ou={},lu={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 ru(t,n){return e.openBlock(),e.createElementBlock("svg",lu,[...n[0]||(n[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 au=oe(ou,[["render",ru]]),iu={},su={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 cu(t,n){return e.openBlock(),e.createElementBlock("svg",su,[...n[0]||(n[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 du=oe(iu,[["render",cu]]),uu={},pu={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 mu(t,n){return e.openBlock(),e.createElementBlock("svg",pu,[...n[0]||(n[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 fu=oe(uu,[["render",mu]]),gu={},yu={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 hu(t,n){return e.openBlock(),e.createElementBlock("svg",yu,[...n[0]||(n[0]=[e.createElementVNode("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"},null,-1)])])}const xu=oe(gu,[["render",hu]]),Dt=e.defineComponent({__name:"MonacoEditor",props:{modelValue:{},language:{},theme:{}},emits:["update:modelValue","load"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(null);let a=null,i=null,s=!1;function f(){return new Promise((x,c)=>{if(i)return x(i);if(window.monaco)return i=window.monaco,x(i);const g=y=>{if([...document.styleSheets].some(h=>{var p;return(p=h==null?void 0:h.href)==null?void 0:p.includes(y)}))return;const m=document.createElement("link");m.rel="stylesheet",m.href=y,document.head.appendChild(m)},d=y=>new Promise((m,h)=>{const p=document.createElement("script");p.src=y,p.onload=()=>m(!0),p.onerror=h,document.body.appendChild(p)});g("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),d("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"],()=>{i=window.monaco,x(i)})}).catch(c)})}function u(){var x,c;!l.value||!i||(a&&a.dispose(),a=i.editor.create(l.value,{value:o.modelValue||"",language:o.language||"yaml",theme:o.theme||"vs-light",automaticLayout:!0,minimap:{enabled:!1}}),(c=(x=i.languages)==null?void 0:x.css)!=null&&c.cssDefaults&&i.languages.css.cssDefaults.setDiagnosticsOptions({validate:!1,lint:{}}),a.onDidChangeModelContent(()=>{s||r("update:modelValue",a.getValue())}))}return e.watch(()=>o.modelValue,x=>{if(!a)return;const c=a.getValue();x!==c&&(s=!0,a.setValue(x||""),s=!1)}),e.watch(()=>o.language,x=>{a&&i&&i.editor.setModelLanguage(a.getModel(),x||"yaml")}),e.watch(()=>o.theme,x=>{a&&i&&i.editor.setTheme(x||"vs-light")}),e.onMounted(async()=>{await f(),u()}),e.onBeforeUnmount(()=>{a&&a.dispose()}),(x,c)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"editorContainer",ref:l,class:"w-full h-full"},null,512))}}),bu={class:"flex flex-col flex-1 overflow-hidden"},ku={class:"flex justify-end gap-2"},wu=["href"],_u={class:"flex flex-col flex-1 overflow-hidden"},Eu={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},Nu={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},Bu=e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{},styleText:{}},emits:["update:style-yaml","update:style-text","update"],setup(t,{emit:n}){const o=t,r=n,l=e.ref("");e.watch(()=>o.styleText,f=>{const u=f??"";l.value!==u&&(l.value=u)},{immediate:!0}),e.watch(l,async f=>{var x,c;const u=f??"";o.styleText!==u&&r("update:style-text",u);try{const g=f?Ho(f):null;if((x=g==null?void 0:g.colorAttr)!=null&&x.length&&((c=o.styleYaml)==null?void 0:c.colorAttr)!==g.colorAttr){const d=await a(g.colorAttr);g.colors=d.reduce((m,h,p)=>({...m,[h.id.toString()]:i[p]}),{});const y=Wo(g);y!==l.value&&(l.value=y)}JSON.stringify(g)!==JSON.stringify(o.styleYaml)&&r("update:style-yaml",g&&typeof g=="object"?g:null)}catch{o.styleYaml!==null&&r("update:style-yaml",null)}});async function a(f){return(await fetch(`/api/gis-service/${o.token}/${f}`).then(x=>x.json())).rows}const i=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],s=async()=>{const f=o.styleYaml?JSON.stringify(o.styleYaml):o.styleText?o.styleText:"null";try{await fetch(`/api/gis-service/${o.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:f})}),r("update"),ce.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(u){ce.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(u)}};return(f,u)=>(e.openBlock(),e.createElementBlock("div",bu,[e.createElementVNode("div",ku,[e.createElementVNode("a",{target:"_blank",href:"/api/gis-service/"+o.token+"/col",class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Атрибути ",8,wu),e.createElementVNode("button",{onClick:s,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"},[...u[1]||(u[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-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",_u,[e.createElementVNode("div",Eu,[u[2]||(u[2]=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",Nu,[e.createVNode(Dt,{modelValue:l.value,"onUpdate:modelValue":u[0]||(u[0]=x=>l.value=x),language:"yaml",theme:"vs-light"},null,8,["modelValue"])])])])]))}});function mt(t){if(t==null)return null;const n=Number(typeof t=="string"?t.trim():t);return Number.isFinite(n)?n:null}function ft(t){if(!t)return null;if(Array.isArray(t)&&t.length>=2){const n=mt(t[0]),o=mt(t[1]);return n!=null&&o!=null?[n,o]:null}if(typeof t=="object"){const n=t;if(Array.isArray(n.coordinates))return ft(n.coordinates);const o=n.lng??n.lon??n.long??n.longitude??n.x,r=n.lat??n.latitude??n.y;if(o!=null&&r!=null){const l=mt(o),a=mt(r);if(l!=null&&a!=null)return[l,a]}}if(typeof t=="string"&&t.includes(",")){const[n,o]=t.split(","),r=mt(n),l=mt(o);return r!=null&&l!=null?[r,l]:null}return null}const Go=Symbol("MapContext");function Vu(t){const n=e.shallowRef(null),o=e.ref(!1);let r=!1;const l=[],a=()=>{r=!0,l.length&&l.forEach(g=>g())},i=()=>{const g=t.container;return typeof g=="string"?document.getElementById(g):(g==null?void 0:g.value)!==void 0?g.value:g},s=()=>r?Promise.resolve():new Promise(g=>l.push(g)),f=(g,d)=>{if(g==null)return d;const y=Number(typeof g=="string"?g.trim():g);return Number.isFinite(y)?y:d},u=async()=>{var A,F,D,$,w,C,_;if(typeof window>"u"||n.value)return;const g=i();if(!g)throw new Error("Map container not found");const d=t.settings||null,y=ft((A=d==null?void 0:d.map)==null?void 0:A.center)||[30,50],m=f((F=d==null?void 0:d.map)==null?void 0:F.zoom,7),h=f((D=d==null?void 0:d.map)==null?void 0:D.maxZoom,20),E={...{attributionControl:!1,center:y,zoom:m,maxZoom:h,minZoom:4},...t.mapOptions||{},container:g};E.maxZoom==null&&(E.maxZoom=h),n.value=new maplibregl.Map(E),($=t.controls)!=null&&$.navigation&&n.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(w=t.controls)!=null&&w.scale&&n.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(C=t.controls)!=null&&C.fullscreen&&n.value.addControl(new maplibregl.FullscreenControl,"top-right"),(_=t.controls)!=null&&_.geolocate&&n.value.addControl(new maplibregl.GeolocateControl(typeof t.controls.geolocate=="object"?t.controls.geolocate:{}),"top-right"),n.value.once("load",()=>{o.value=!0,a()})},x=()=>{n.value&&(n.value.remove(),n.value=null,o.value=!1)};e.onMounted(u),e.onUnmounted(x);const c={map:n,ready:s,flyTo:g=>{var d;return(d=n.value)==null?void 0:d.flyTo(g)},fitBounds:(g,d)=>{var y;return(y=n.value)==null?void 0:y.fitBounds(g,d)},setCenter:g=>{var d;return(d=n.value)==null?void 0:d.setCenter(g)},setZoom:g=>{var d;return(d=n.value)==null?void 0:d.setZoom(g)},addControl:(g,d)=>{var y;return(y=n.value)==null?void 0:y.addControl(g,d)},removeControl:g=>{var d;return(d=n.value)==null?void 0:d.removeControl(g)},on:(g,d,y)=>{var m,h;return typeof d=="string"?((m=n.value)==null||m.on(g,d,y),()=>{var p;return(p=n.value)==null?void 0:p.off(g,d,y)}):((h=n.value)==null||h.on(g,d),()=>{var p;return(p=n.value)==null?void 0:p.off(g,d)})},off:(g,d,y)=>{var m,h;typeof d=="string"?(m=n.value)==null||m.off(g,d,y):(h=n.value)==null||h.off(g,d)},project:g=>{var d;return(d=n.value)==null?void 0:d.project(g)},unproject:g=>{var d;return(d=n.value)==null?void 0:d.unproject(g)}};return e.provide(Go,c),c}function Se(t){if(t)return{map:t,flyTo:t.value.flyTo,fitBounds:t.value.fitBounds};const n=e.inject(Go);if(!n)throw new Error("useMap() called outside of a Map provider");return n}const Cu=["Noto Sans Regular"],$u=12,vu="#0f172a",Su="#fff",Au=14;function Ne(t,n){if(!t)return;for(const r of n)if(Object.prototype.hasOwnProperty.call(t,r)&&t[r]!==void 0)return t[r];const o=t.text;if(o&&typeof o=="object"){for(const r of n)if(Object.prototype.hasOwnProperty.call(o,r)&&o[r]!==void 0)return o[r]}}function Lu(t){return t?Array.isArray(t)?t:[t]:Cu}function an(t,n){if(typeof t=="number")return Number.isFinite(t)?t:n;if(t==null||t==="")return n;const o=Number(t);return Number.isFinite(o)?o:n}function Tu(t){if(t==null)return null;if(Array.isArray(t))return t;const n=String(t).trim(),o=n.match(/^\{([^{}]+)\}$/);return o?["get",o[1]]:n}function Fu(t,n){const o=[];if(t!=null&&o.push(t),n&&o.push(["!",["has","point_count"]]),!!o.length)return o.length===1?o[0]:["all",...o]}function Mu(t,n={}){if(!t)return[];const o=Ne(t,["text-field","textField","textFieldValue","labelText","label"]);if(!o)return[];const r=Tu(o);if(!r)return[];const l=r,a=(n.geometry||t.type||"point").toString().toLowerCase(),i=Ne(t,["text-font","textFont"]),s=an(Ne(t,["text-size","textSize"]),$u),f=Ne(t,["text-allow-overlap","textAllowOverlap"]),u=Ne(t,["text-minzoom","textMinZoom","textZoom","text-zoom"]),x=Ne(t,["text-maxzoom","textMaxZoom","maxzoom"]),c=Ne(t,["text-color","textColor"])||vu,g=Ne(t,["text-halo-color","textHaloColor"])||Su,d=Ne(t,["text-halo-width","textHaloWidth"]),y=Ne(t,["text-halo-blur","textHaloBlur"]),m=Ne(t,["text-offset","textOffset"]),h=Ne(t,["text-anchor","textAnchor"]),p=Ne(t,["text-justify","textJustify"]),E=Ne(t,["text-letter-spacing","textLetterSpacing"]),A=Ne(t,["text-transform","textTransform"]),F=Ne(t,["symbol-placement","symbolPlacement"]),D=Ne(t,["symbol-spacing","symbolSpacing"]),$=Ne(t,["text-rotation-alignment","textRotationAlignment"]),w=Ne(t,["text-pitch-alignment","textPitchAlignment"]),C=Ne(t,["text-opacity","textOpacity"]),_={"text-field":l,"text-font":Lu(i),"text-size":s,"text-allow-overlap":f??!1};m&&(_["text-offset"]=m),a!=="line"&&(_["text-anchor"]=h??"center"),p&&(_["text-justify"]=p),E!==void 0&&(_["text-letter-spacing"]=E),A&&(_["text-transform"]=A),D!==void 0&&(_["symbol-spacing"]=D),a==="line"?(_["symbol-placement"]=F||"line",_["text-rotation-alignment"]=$||"map",_["text-pitch-alignment"]=w||"map"):($&&(_["text-rotation-alignment"]=$),w&&(_["text-pitch-alignment"]=w),F&&(_["symbol-placement"]=F)),h&&a==="line"&&(_["text-anchor"]=h);const I={"text-color":c,"text-opacity":C??1};I["text-halo-color"]=g,d!==void 0&&(I["text-halo-width"]=d),y!==void 0&&(I["text-halo-blur"]=y);const q={type:"symbol",layout:_,paint:I},P=an(u,Au);if(q.minzoom=P,x!==void 0){const v=an(x,void 0);v!==void 0&&(q.maxzoom=v)}const M=Fu(n.filter,n.excludeClusters);return M&&(q.filter=M),[q]}const sn=new Map,cn={};function dn(t){if(t.colorAttr&&t.colors){const n=Object.entries(t.colors).flat();return["match",["get",t.colorAttr],...n,pt]}return null}function Du(t){if(!t.icon||!t.colors)return null;const n=[],o=t.icon.split("+")[0];return Object.values(t.colors).forEach(r=>{n.push(`${o}+${r.replace("#","")}.png`)}),["match",["get",t.colorAttr],...Object.entries(t.colors).reduce((r,[l,a],i)=>r.concat([l,n[i]]),[]),t.icon]}function gt(t,n){n&&(Array.isArray(n)?t.push(...n):t.push(n))}function Iu(t,n){const o=(t==null?void 0:t.clusterZoom)??(t==null?void 0:t.pointZoom)??(t==null?void 0:t.iconZoom)??12,r=Number(o);if(!Number.isFinite(r))return null;const l=["get","point_count"],a=["has","point_count"],i=["!",a],u={type:"circle",maxzoom:r,filter:a,paint:{"circle-color":["step",l,"#3b82f6",10,"#fde047",100,"#fbbf24",1e3,"#fda4af",1e4,"#fb7185",1e6,"#a21caf"],"circle-radius":["step",l,16,10,22,100,28,1e3,34,1e4,40,1e6,48],"circle-stroke-color":"#fff","circle-stroke-width":1}},x={type:"symbol",maxzoom:r,filter:a,layout:{"text-field":["to-string",["coalesce",["get","point_count_abbreviated"],l]],"text-font":["Noto Sans Regular"],"text-size":12,"text-allow-overlap":!0},paint:{"text-color":"#fff","text-halo-color":"#172554","text-halo-width":1.25}},c={...n,filter:["all",i,n.filter||!0]};return[u,x,c]}function Ko(t,n){const o=dn(t);if(t.icon&&!t.iconZoom&&!t.clusterZoom)return;const r={type:"circle",maxzoom:n||t.iconZoom||22,paint:{"circle-stroke-color":(t==null?void 0:t.stroke)||"#fff","circle-opacity":t.opacity||1,"circle-color":o||t.color||pt,"circle-stroke-width":t.width||1,"circle-radius":t.radius||5}},l=Iu(t,r);return l||r}function ju(t){const n=dn(t);return{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":n||t.color||pt,"fill-opacity":t.opacity||.3,"fill-outline-color":t.stroke||pt}}}function zu(t){return{type:"line",paint:{"line-color":dn(t)||t.color||pt,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function Ou(t){const n=Du(t);return{type:"symbol",minzoom:t.iconZoom||0,layout:{"icon-image":n||t.icon,"icon-size":1,"icon-allow-overlap":!0,"icon-ignore-placement":!0}}}function Xo(t,n={}){if(!t)return[];if(!Ru(t))return[];const o=[];t.icon&&gt(o,Ou(t)),t.pointZoom&&gt(o,Ko(t,t.pointZoom)),t.type==="polygon"?gt(o,ju(t)):t.type==="line"?gt(o,zu(t)):gt(o,Ko(t));const l=n.sourceType!=="raster"?Mu(t,{geometry:t.type||"point",filter:t.filter,excludeClusters:!!t.clusterZoom}):[];return gt(o,l),o.filter(Boolean)}function Ru(t){return t?!!(new Set(["point","line","polygon"]).has(t.type)||t.icon||t.attrType||t.color||t.stroke||t.radius||t.width||t.colorAttr&&t.colors&&typeof t.colors=="object"&&Object.keys(t.colors).length>0):!1}function Jo(t,{sourceType:n,filter:o,allowFallback:r=!1}={}){let l=rn(t);if(l&&o&&(l.filter=o),l)return Xo(l,{sourceType:n});if(r&&["vector","geojson"].includes(n||"")){const a={type:"point",color:pt};return o&&(a.filter=o),Xo(a,{sourceType:n})}return[]}function Pu(t){return{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:t}}]}}}async function Qo(t,n,o){const r=[n],l=n.split("+")[0];Object.values(o||{}).forEach(a=>{r.push(`${l}+${a.replace("#","")}.png`)});for(const a of r){if(t.getImage(a))continue;const i=await t.loadImage(`/api/gis-icon/${a}`);t.addImage(a,i.data)}}function ue(t,n,o){var P,M;if(!t)return cn;if(!n)return cn[t];const{map:r,ready:l=()=>Promise.resolve()}=Se(o),a=t||((P=n.layer)==null?void 0:P.id),i=n.sourceId??t,s={...n};s.point&&(s.source=Pu(s.point)),!s.layer&&((M=s.source)==null?void 0:M.type)==="raster"&&(s.layer={id:i,type:"raster",source:i}),s.layer&&!s.layer.source&&Object.assign(s.layer,{source:i});let f=!1,u=!1;const x=()=>{var v,b,k,N,B,T,L,j,U,Y;if(!(u||!r.value)){if(s.source&&!r.value.getSource(i)&&r.value.addSource(i,s.source),!r.value.getLayer(a)){const re=s.beforeId===0?(b=(v=r.value.getStyle().layers)==null?void 0:v[0])==null?void 0:b.id:s.beforeId;(N=(k=s.layer)==null?void 0:k.style)!=null&&N.icon&&Qo(r.value,s.layer.style.icon,s.layer.style.colors);const X=((B=s.source)==null?void 0:B.type)||((T=s.layer)==null?void 0:T.type),ee=s.layer&&(s.layer.type||s.layer.ref)?s.layer:null,fe=(L=s.layer)==null?void 0:L.style,pe=((j=s.layer)==null?void 0:j["source-layer"])||((U=s.source)==null?void 0:U["source-layer"])||s.sourceLayer||i,me=s.style||fe,R=Jo(me,{sourceType:X,filter:(Y=s.layer)==null?void 0:Y.filter,allowFallback:!ee});if(!R.length){if(ee){const H={...ee,id:ee.id||a,source:ee.source||i};X==="vector"&&pe&&(H["source-layer"]=H["source-layer"]||pe),r.value.addLayer(H,re)}return}R.forEach((H,W)=>{const te={...H,id:`${a}${W||""}`,source:i};X==="vector"&&pe&&(te["source-layer"]=pe),r.value.addLayer(te,re)})}f=!0}};l().then(x);const c=(v,b)=>r.value?(r.value.on(v,a,b),()=>{var k;return(k=r.value)==null?void 0:k.off(v,a,b)}):()=>{},g=v=>{const b=r.value;if(!b)return;const k=b.getStyle(),N=k==null?void 0:k.layers;N!=null&&N.length&&N.filter(B=>B.source===a).forEach(B=>{b.setLayoutProperty(B.id,"visibility",v?"visible":"none")})},d=(v=!0)=>{var k,N,B;if(!r.value)return;(((B=(N=(k=r.value).getStyle)==null?void 0:N.call(k))==null?void 0:B.layers)??[]).filter(T=>T.source===a).forEach(T=>{r.value.removeLayer(T.id)}),u=!0,s.source&&v&&r.value.getSource(i)&&r.value.removeSource(i)},y=async v=>{var B,T,L,j,U;if(!r.value)return;v!=null&&v.icon&&Qo(r.value,v.icon,v.colors);const b=((B=s.source)==null?void 0:B.type)||((T=s.layer)==null?void 0:T.type),k=((L=s.layer)==null?void 0:L["source-layer"])||((j=s.source)==null?void 0:j["source-layer"])||s.sourceLayer||i,N=Jo(v,{sourceType:b,filter:(U=s.layer)==null?void 0:U.filter,allowFallback:!0});d(!1),N.forEach((Y,re)=>{var ee;const X={...Y,id:`${a}${re}`,source:((ee=s.layer)==null?void 0:ee.source)||i};b==="vector"&&k&&(X["source-layer"]=X["source-layer"]||k),r.value.addLayer(X)})},m=v=>{r.value&&Object.entries(v).forEach(([b,k])=>{r.value.setPaintProperty(a,b,k)})},h=(v,b,k)=>{const N=r.value;if(N)switch(b){case"raster":N.setPaintProperty(v,"raster-opacity",k);break;case"fill":N.setPaintProperty(v,"fill-opacity",k);break;case"line":N.setPaintProperty(v,"line-opacity",k);break;case"circle":N.setPaintProperty(v,"circle-opacity",k);break;case"symbol":N.setPaintProperty(v,"icon-opacity",k),N.setPaintProperty(v,"text-opacity",k);break}},_={ids:{layerId:a,sourceId:i},isMounted:()=>{var v;return f&&!!((v=r.value)!=null&&v.getLayer(a))},setVisible:g,updatePaint:m,updateLayout:v=>{r.value&&Object.entries(v).forEach(([b,k])=>{r.value.setLayoutProperty(a,b,k)})},updateFilter:v=>{r.value&&r.value.setFilter(a,v)},setOpacity:v=>{var N;if(!r.value)return;const k=(((N=r.value.getStyle())==null?void 0:N.layers)||[]).filter(B=>B.source===i);if(!k.length){const B=r.value.getLayer(a);B&&h(a,B.type,v);return}k.forEach(B=>h(B.id,B.type,v))},setData:v=>{if(!r.value)return;const b=r.value.getSource(i);b&&"setData"in b&&b.setData(v)},setTiles:v=>{if(!r.value)return;const b=r.value.getSource(i);b&&"setTiles"in b&&b.setTiles(v)},setStyle:y,setFilter:v=>{var k,N;if(!r.value)return;const b=r.value.getSource(i);if(b&&"setTiles"in b&&((N=(k=s.source)==null?void 0:k.tiles)!=null&&N[0])){const B=s.source.tiles[0];b.setTiles([`${B}${B.includes("?")?"&":"?"}filter=${v}`])}},setFeatureState:(v,b)=>{r.value&&r.value.setFeatureState({source:i,...v},b)},removeFeatureState:(v,b)=>{r.value&&r.value.removeFeatureState({source:i,...v},b?{key:b}:void 0)},remove:d,card:s.card,popup:s.popup,opts:s,getSource:()=>{var v;return(v=r.value)==null?void 0:v.getSource(i)},getLayer:()=>{var v;return(v=r.value)==null?void 0:v.getLayer(a)},on:c};sn.set(a,_);const I=()=>{sn.get(a)===_&&sn.delete(a)},q=_.remove;return _.remove=()=>{I(),q()},e.onBeforeUnmount(_.remove),cn[t]=_,_}const Uu={class:"flex flex-col flex-1 min-h-0"},qu={class:"flex flex-col flex-1 min-h-0"},Hu=e.defineComponent({__name:"vs-tab-popup",props:{token:{},fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,y=>l.value=y||[],{immediate:!0}),e.watch(l,y=>{const m=ue(o.token);m&&(m.popup=y),r("update:columns",y)});const a=e.ref("list"),i=e.ref(!1),s=e.ref([]),f=[{key:"name",label:"Назва",type:"main"}],u={name:{type:"text",label:"Назва",disabled:!0,validators:["required"]},label:{type:"text",label:"Найменування",validators:["required"]},meta:{type:"radio",label:"Meta",mode:"combo",options:[{text:"Заголовок",id:"title"},{text:"Властивість",id:"feature"},{text:"Бейдж",id:"badge"}]},data:{type:"text",label:"Data"}};function x(){s.value=l.value.map(y=>y.name||y.id),i.value=!0}function c(){var p;const y=[...l.value],m=((p=o.fields)==null?void 0:p.filter(E=>s.value.includes(E.name)))||[],h=at(y,m,{selectedKeys:s.value,resolveKey:E=>Ge(E)});l.value=h,i.value=!1,s.value=[]}function g(){i.value=!1,s.value=[]}function d(){let y=[];a.value==="all"?y=o.fields||[]:a.value==="none"?y=[]:y=l.value,y.filter(m=>!m.label).forEach(m=>m.label=m.ua),r("save",y)}return(y,m)=>(e.openBlock(),e.createElementBlock("div",Uu,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:x,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Імпорт "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Зберегти попап ")]),e.createElementVNode("div",qu,[a.value==="list"?(e.openBlock(),e.createBlock(Ze,{key:0,modelValue:l.value,"onUpdate:modelValue":m[0]||(m[0]=h=>l.value=h),"columns-scheme":f,"form-scheme":u,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(lt,{visible:i.value,"onUpdate:visible":m[1]||(m[1]=h=>i.value=h),selection:s.value,"onUpdate:selection":m[2]||(m[2]=h=>s.value=h),fields:t.fields,title:"Імпорт полів","id-prefix":"import-popup",onConfirm:c,onCancel:g},null,8,["visible","selection","fields"])]))}}),Wu={class:"flex flex-col flex-1 min-h-0"},Yu={class:"flex justify-between mb-3 gap-2"},Zu={class:"p-4 space-y-4 text-sm"},Gu={class:"space-y-1"},Ku={class:"space-y-1"},Xu={class:"flex items-center gap-3"},Ju={class:"flex justify-end gap-2 p-4 border-t"},Qu=e.defineComponent({__name:"vs-tab-legend",props:{mapInfo:{},token:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,y=>{l.value=y||[]}),e.watch(l,y=>{r("update:columns",y)});const a=e.ref(!1),i=e.ref({name:"",color:"#2E86DE"}),s=e.defineAsyncComponent(()=>import("@opengis/core").then(y=>y.VsModal)),f=[{key:"name",label:"Назва"},{key:"color",label:"Колір",type:"color"}],u={name:{type:"text",label:"Назва",validators:["required"]},color:{type:"color",label:"Колір",validators:["required"]}};function x(y){y&&c(),a.value=y}function c(){i.value={name:"",color:"#2E86DE"}}function g(){var p,E;const y=(p=i.value.name)==null?void 0:p.trim();if(!y){ce.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const m=((E=i.value.color)==null?void 0:E.trim())||"#2E86DE";if(l.value.some(A=>Ge(A)===Ge({name:y}))){ce.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}l.value=[...l.value,{name:y,color:m}],c(),a.value=!1}function d(){r("save",l.value)}return(y,m)=>(e.openBlock(),e.createElementBlock("div",Wu,[e.createElementVNode("div",Yu,[e.createElementVNode("button",{onClick:m[0]||(m[0]=h=>a.value=!0),class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Додати "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Зберегти легенду ")]),e.createVNode(Ze,{modelValue:l.value,"onUpdate:modelValue":m[1]||(m[1]=h=>l.value=h),"columns-scheme":f,"form-scheme":u,"main-col-width":"250px","add-button":!1},null,8,["modelValue"]),e.createVNode(e.unref(s),{teleport:"#modal",visible:a.value,title:"Новий елемент легенди","onUpdate:visible":x},{footer:e.withCtx(()=>[e.createElementVNode("div",Ju,[e.createElementVNode("button",{type:"button",class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed",onClick:m[5]||(m[5]=h=>x(!1))}," Скасувати "),e.createElementVNode("button",{type:"button",class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed",onClick:g}," Додати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",Zu,[e.createElementVNode("div",Gu,[m[6]||(m[6]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Назва ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[2]||(m[2]=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",Ku,[m[7]||(m[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Колір ",-1)),e.createElementVNode("div",Xu,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[3]||(m[3]=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":m[4]||(m[4]=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]])])])])]),_:1},8,["visible"])]))}}),ep={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},tp=["onClick"],np=["aria-checked","value"],op={key:0},lp=e.defineComponent({__name:"view-mode-toggle",props:{modelValue:{},options:{},showHtml:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:n}){const o=t,r=n,l=i=>r("update:modelValue",i),a=o.options||[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"}];return(i,s)=>(e.openBlock(),e.createElementBlock("div",ep,[s[1]||(s[1]=e.createElementVNode("label",{class:"text-sm font-medium text-gray-600"},"Режим відображення",-1)),e.createElementVNode("div",{role:"radiogroup",class:e.normalizeClass(["grid gap-2",`grid-cols-${e.unref(a).length}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),f=>(e.openBlock(),e.createElementBlock("div",{key:f.value,onClick:u=>l(f.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===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":t.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"},[t.modelValue===f.value?(e.openBlock(),e.createElementBlock("span",op,[...s[0]||(s[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,np),e.createElementVNode("label",{class:e.normalizeClass(["text-xs font-medium cursor-pointer",t.modelValue===f.value?"text-gray-700":"text-gray-600"])},e.toDisplayString(f.label),3)],10,tp))),128))],2)]))}}),rp={class:"flex flex-col flex-1 min-h-0"},ap={class:"flex flex-col flex-1 min-h-0"},ip=e.defineComponent({__name:"vs-tab-card",props:{fields:{},columns:{},viewMode:{},html:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,h=>l.value=h||[],{immediate:!0}),e.watch(l,h=>r("update:columns",h));const a=e.ref(o.viewMode??"list");e.watch(()=>o.viewMode,h=>{h&&h!==a.value&&(a.value=h)});const i=e.ref(o.html??"");e.watch(()=>o.html,h=>{typeof h=="string"&&h!==i.value&&(i.value=h)},{immediate:!0});const s=e.ref(!1),f=e.ref([]),u=[{key:"name",label:"Name",type:"main"}],x={name:{type:"text",label:"Name",validators:["required"],disabled:!0},label:{type:"text",label:"Label",validators:["required"]},format:{type:"radio",label:"Format",mode:"inline",validators:["required"],options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Tags",id:"tags"}]},is_admin:{type:"Switcher",label:"Тільки для адміністративної частини"},data:{type:"text",label:"Data"}};function c(){f.value=a.value==="html"?[]:l.value.map(h=>h.name||h.id),s.value=!0}function g(){var A;const h=[...l.value],p=((A=o.fields)==null?void 0:A.filter(F=>f.value.includes(F.name)).map(F=>{const{type:D,format:$,...w}=F;return{...w,format:$??D??"text"}}))||[],E=at(h,p,{selectedKeys:f.value,resolveKey:F=>Ge(F)});if(l.value=E,a.value==="html"&&p.length){const F=p.map(w=>{const C=w.label??"",_=w.name??w.id??"";return`<dd>${C}</dd>
150
- <dt>{{ ${_} }}</dt>`}).join(`
151
- `),$=(i.value??"").trimEnd();i.value=$?`${$}
152
- ${F}`:F}s.value=!1,f.value=[]}function d(){s.value=!1,f.value=[]}function y(){const h=a.value==="html"?"html":"list",p={card_mode:h};h==="html"?p.html=i.value:h==="list"&&(p.list=l.value),r("save","card",p)}const m=[{value:"all",label:"Всі"},{value:"list",label:"Список"},{value:"none",label:"Жодне"},{value:"html",label:"HTML"}];return(h,p)=>(e.openBlock(),e.createElementBlock("div",rp,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:c,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Імпорт "),e.createElementVNode("button",{onClick:y,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Зберегти ")]),e.createVNode(lp,{modelValue:a.value,"onUpdate:modelValue":p[0]||(p[0]=E=>a.value=E),options:m},null,8,["modelValue"]),e.createElementVNode("div",ap,[a.value==="list"?(e.openBlock(),e.createBlock(Ze,{key:0,modelValue:l.value,"onUpdate:modelValue":p[1]||(p[1]=E=>l.value=E),"columns-scheme":u,"form-scheme":x,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):a.value==="html"?(e.openBlock(),e.createBlock(Dt,{key:1,modelValue:i.value,"onUpdate:modelValue":p[2]||(p[2]=E=>i.value=E),language:"html",theme:"vs-light",class:"flex-1 min-h-0"},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(lt,{visible:s.value,"onUpdate:visible":p[3]||(p[3]=E=>s.value=E),selection:f.value,"onUpdate:selection":p[4]||(p[4]=E=>f.value=E),fields:t.fields,title:"Імпорт полів для картки","id-prefix":"import-card",onConfirm:g,onCancel:d},null,8,["visible","selection","fields"])]))}}),sp={class:"flex flex-col flex-1 min-h-0"},cp=e.defineComponent({__name:"vs-tab-filter",props:{fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n;console.log(o.columns);const l=e.ref(o.columns||[]);e.watch(()=>o.columns,y=>l.value=y||[],{immediate:!0}),e.watch(l,y=>r("update:columns",y),{deep:!0,immediate:!0});const a=e.ref("list"),i=e.ref(!1),s=e.ref([]),f=[{key:"id",label:"Name"},{key:"label",label:"UA"}],u={name:{type:"text",label:"Name",disabled:!0,validators:["required"]},label:{type:"text",label:"UA",validators:["required"]},type:{type:"radio",label:"Тип",position:"horizontal",validators:["required"],options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Select",id:"select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"text",label:"Класифікатор",conditions:["type","in",["autocomplete","select","check"]],validators:["required"]}};function x(){s.value=l.value.map(y=>y.name||y.id),i.value=!0}function c(){var p;const y=[...l.value],m=((p=o.fields)==null?void 0:p.filter(E=>s.value.includes(E.name)))||[],h=at(y,m,{selectedKeys:s.value,resolveKey:E=>Ge(E)});l.value=h,i.value=!1,s.value=[]}function g(){i.value=!1,s.value=[]}function d(){let y=[];a.value==="all"?y=o.fields||[]:a.value==="none"?y=[]:y=l.value,r("save",y)}return(y,m)=>(e.openBlock(),e.createElementBlock("div",sp,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:x,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Імпорт "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Зберегти фільтр ")]),a.value==="list"?(e.openBlock(),e.createBlock(Ze,{key:0,modelValue:l.value,"onUpdate:modelValue":m[0]||(m[0]=h=>l.value=h),"columns-scheme":f,"form-scheme":u,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0),e.createVNode(lt,{visible:i.value,"onUpdate:visible":m[1]||(m[1]=h=>i.value=h),selection:s.value,"onUpdate:selection":m[2]||(m[2]=h=>s.value=h),fields:t.fields,title:"Імпорт полів","id-prefix":"import-filter",onConfirm:c,onCancel:g},null,8,["visible","selection","fields"])]))}}),It=e.defineComponent({__name:"MapView",setup(t,{expose:n}){var u,x;const o=e.ref(null),r=e.ref(null),l=((x=(u=e.getCurrentInstance())==null?void 0:u.appContext.config.globalProperties)==null?void 0:x.$settings)||null,a=Vu({container:o,mapOptions:{style:{version:8,sources:{},layers:[]},doubleClickZoom:!1},controls:{navigation:!0,scale:!0},settings:l});async function i(){var g;await e.nextTick();const c=(g=a.map)==null?void 0:g.value;c!=null&&c.resize&&c.resize()}function s(){typeof ResizeObserver>"u"||r.value||!o.value||(r.value=new ResizeObserver(()=>{i()}),r.value.observe(o.value))}function f(){var c;(c=r.value)==null||c.disconnect(),r.value=null}return e.onMounted(()=>{i(),s(),window.addEventListener("resize",i)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",i),f()}),n({ctx:a}),(c,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"el",ref:o,class:"w-full h-full rounded-xl overflow-hidden"},[e.renderSlot(c.$slots,"default")],512))}}),dp=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleSpec:{}},setup(t,{expose:n}){var y,m,h,p;const{map:o,flyTo:r,setZoom:l}=Se(),a=((m=(y=e.getCurrentInstance())==null?void 0:y.appContext.config.globalProperties)==null?void 0:m.$settings)||null,i=t,s=i.id;String(i.id);const f=`${location.origin}/api/vtile/${i.id}/ua/{z}/{x}/{y}.vmt?all=1`,u=ue(s,{source:{type:"vector",tiles:[f],minzoom:0,maxzoom:14},popup:i.layer.popup,layer:{style:(h=i.layer)==null?void 0:h.style}});n({layerHandle:u}),r({center:i.layer.center||((p=a==null?void 0:a.map)==null?void 0:p.center)||[30,50],animate:!1});let x=null;function c(){if(!(u!=null&&u.setTiles))return;const E=f.includes("?")?"&":"?",A=`${f}${E}_=${Date.now()}`;u.setTiles([A])}function g(){x&&clearTimeout(x),x=setTimeout(()=>{x=null,d().catch(E=>console.error("Failed to update map layer",E))},300)}async function d(){o.value&&(c(),u.setStyle(i.styleSpec??null))}return e.watch(()=>i.styleSpec,g,{deep:!0}),e.onBeforeUnmount(()=>{u.remove()}),(E,A)=>null}}),Et=e.ref(null);function up(){Et.value=null}function pp(t){const n=e.ref(!1),o=()=>typeof t=="string"?t:t.value;e.watch(Et,i=>{i!==o()&&n.value&&(n.value=!1)});function r(){Et.value=o(),n.value=!0}function l(){Et.value===o()&&(Et.value=null),n.value=!1}function a(){n.value?l():r()}return{isOpen:n,open:r,close:l,toggle:a}}const mp={class:"map-filter"},fp={class:"map-filter__header"},gp={class:"map-filter__title"},yp={"aria-hidden":"true"},un="#map-filter-popover-host",jt=oe(e.defineComponent({__name:"MapFilterPopover",props:{count:{},layer:{},catalogAnchor:{},disabled:{type:Boolean}},setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/filter")),o=t,r=e.computed(()=>{var L;return((L=o.layer)==null?void 0:L.id)??""}),l=e.computed(()=>`filter-popover-${r.value}`),{isOpen:a,close:i,toggle:s}=pp(l),f=e.reactive({top:0,left:0,transform:"translateX(-50%)"}),u=e.ref(null),x=e.ref(null);let c=null;const g=e.ref({}),d=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0}),y=e.computed(()=>a.value),m=e.computed(()=>{var L;return Array.isArray((L=o.layer)==null?void 0:L.filters)?o.layer.filters:[]}),h=e.computed(()=>m.value.length>0),p=e.computed(()=>{var L;return((L=o.layer)==null?void 0:L.name)??""}),E=e.computed(()=>m.value),A=e.ref(null),F=e.computed(()=>m.value.length),D=e.computed(()=>F.value<=2),$=e.computed(()=>D.value?"body":typeof window>"u"||A.value?un:"body"),w=e.computed(()=>{if(!y.value||!D.value)return{};const L=typeof window<"u"?window.innerWidth:280,U=Math.max(280,L-16*2);return{position:"absolute",top:`${f.top}px`,left:`${f.left}px`,transform:f.transform,zIndex:1e3,width:"280px",maxWidth:`${U}px`}});function C(){i()}function _(L,j,U=8){const Y=window.scrollY+U,re=window.scrollY+window.innerHeight-U;let X=L;return X+j>re&&(X=re-j),X<Y&&(X=Y),X}function I(){var fe,pe,me;if(!u.value||!D.value)return;const L=u.value.getBoundingClientRect(),j=window.scrollX+8,U=window.scrollX+window.innerWidth-8,Y=((fe=x.value)==null?void 0:fe.offsetWidth)||280,re=((pe=x.value)==null?void 0:pe.offsetHeight)||0;let X=0,ee=0;if((me=o.catalogAnchor)!=null&&me.value){const R=o.catalogAnchor.value.getBoundingClientRect(),H=R.top+window.scrollY;X=_(H,re,8);const W=R.right+window.scrollX+12,te=U-Y,le=j;ee=Math.min(Math.max(W,le),Math.max(le,te))}else{const R=L.bottom+window.scrollY+8;X=_(R,re,8);let H=L.left+window.scrollX;H<j&&(H=j),H+Y>U&&(H=Math.max(j,U-Y)),ee=H}f.left=ee,f.top=X,f.transform="none"}function q(){D.value||T(),s(),a.value&&D.value&&e.nextTick(()=>{I(),N(),requestAnimationFrame(()=>I())})}function P(){o.disabled||q()}e.watch(y,L=>{L&&D.value?e.nextTick(()=>{I(),N(),requestAnimationFrame(()=>I())}):(B(),D.value||T())}),e.watch(E,()=>{!y.value||!D.value||e.nextTick(()=>I())},{deep:!0}),e.watch(D,L=>{y.value&&(L?e.nextTick(()=>{I(),N()}):(B(),T()))}),e.watch(()=>o.disabled,L=>{L&&(i(),g.value={})});function M(){!y.value||!D.value||I()}function v(L){const j=r.value;if(!j)return;const U=ue(j);if(!(U!=null&&U.setFilter))return;g.value=L;const Y=Object.entries(L).map(([re,X])=>`${re}=${X}`).join("|");U.setFilter(Y)}function b(L){if(!o.disabled)return;const j=L.currentTarget;if(!j)return;const U=j.getBoundingClientRect();d.left=U.left+U.width/2+window.scrollX,d.top=U.bottom+8+window.scrollY,d.visible=!0}function k(){d.visible=!1}e.onMounted(()=>{T(),window.addEventListener("resize",M),window.addEventListener("scroll",M,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",M),window.removeEventListener("scroll",M,!0),B()});function N(){B(),!(!x.value||!D.value)&&(c=new ResizeObserver(()=>{!y.value||!D.value||I()}),c.observe(x.value))}function B(){c&&(c.disconnect(),c=null)}function T(){typeof window>"u"||typeof document>"u"||(A.value=document.querySelector(un))}return(L,j)=>h.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mapLayer-filter",ref_key:"anchor",ref:u},[e.createElementVNode("a",{class:e.normalizeClass(["mapLayer-filter__trigger",{"mapLayer-filter__trigger--disabled":o.disabled}]),href:"#",onClick:e.withModifiers(P,["prevent","stop"]),onMouseenter:b,onMouseleave:k,onFocus:b,onBlur:k},[...j[2]||(j[2]=[e.createElementVNode("div",{class:"mapLayer-filter__icon"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M3 4h18l-7 8v6l-4 2v-8z"})])],-1)])],34),y.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:$.value},[e.createElementVNode("div",{class:e.normalizeClass(["vst-popover__content inline-block z-50 rounded-[16px] bg-white text-sm text-gray-500 rounded-md shadow-lg bottom mapLayer-filter__popover",{"mapLayer-filter__popover--static":!D.value}]),style:e.normalizeStyle(w.value),ref_key:"panel",ref:x,onClick:j[1]||(j[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",mp,[e.createElementVNode("div",fp,[e.createElementVNode("h3",gp,e.toDisplayString(p.value||"Фільтр"),1),e.createElementVNode("button",{type:"button",class:"map-filter__close",onClick:C},[e.createElementVNode("span",yp,[e.createVNode(e.unref(yt),{class:"h-4 w-4"})]),j[3]||(j[3]=e.createElementVNode("span",{class:"sr-only"},"Закрити",-1))])]),e.createVNode(e.unref(n),{view:"inline",schema:E.value,value:g.value,limit:10,onChange:j[0]||(j[0]=U=>v(U.data)),width:250},null,8,["schema","value"])])],6)],8,["to"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${d.top}px`,left:`${d.left}px`})},e.toDisplayString(d.text),5)):e.createCommentVNode("",!0)]))],512)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-cc1f0579"]]),hp={key:0,class:"flex justify-center items-center h-[40px] w-[40px] bg-white text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full"},pn=oe(e.defineComponent({__name:"MapFilterWidget",props:{filters:{},title:{},layerId:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",null,[t.filters.length>0?(e.openBlock(),e.createElementBlock("div",hp,[e.createVNode(jt,{layer:{filters:t.filters,id:t.layerId},count:t.filters.length},null,8,["layer","count"])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-98772410"]]),xp={class:"flex flex-row gap-x-3 z-10 relative widget"},bp=["onClick"],kp=["src","alt"],Nt=e.defineComponent({__name:"BaseMaps",setup(t){var d,y,m;const n={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:{}},o={z:13,x:4790,y:2762};function r(h){if(h)return h.replace(/{z}/gi,String(o.z)).replace(/{x}/gi,String(o.x)).replace(/{y}/gi,String(o.y))}function l(h,p){let E=h||`layers-${Object.keys(p).length}`,A=1;for(;p[E];)E=`${h}-${A}`,A+=1;return E}const a=e.getCurrentInstance(),i=(d=a==null?void 0:a.appContext.config.globalProperties)==null?void 0:d.$settings,s=i==null?void 0:i.map,f=e.computed(()=>{const h=Array.isArray(s==null?void 0:s.basemaps)?s==null?void 0:s.basemaps:[];if(!h.length)return{};const p={};return h.forEach((E,A)=>{const F=E.name??E.title??`basemap-${A}`,D=(E.id??F??`basemap-${A}`).toString().toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,""),$=l(D||`basemap-${A}`,p),w=E.preview||(E.url?r(E.url):void 0);p[$]={url:E.url,preview:w,title:F}}),p}),u=e.computed(()=>{const h=f.value;return Object.keys(h).length?h:n}),x=e.ref(Object.keys(u.value)[0]??"gki"),c=ue("base",{source:{type:"raster",tiles:(y=u.value[x.value])!=null&&y.url?[(m=u.value[x.value])==null?void 0:m.url]:[]},beforeId:0});function g(h){if(!u.value[h])return;x.value=h;const p=u.value[h];if(!(p!=null&&p.url)){c.setVisible(!1);return}c.setVisible(!0),c.setTiles([p.url])}return e.watch(()=>u.value,h=>{h[x.value]||(x.value=Object.keys(h)[0]??x.value);const p=h[x.value];p!=null&&p.url?(c.setVisible(!0),c.setTiles([p.url])):c.setVisible(!1)},{immediate:!0}),(h,p)=>(e.openBlock(),e.createElementBlock("div",xp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(E,A)=>(e.openBlock(),e.createElementBlock("div",{key:A,onClick:F=>g(A)},[A!=="none"&&E.url?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["lg:w-14 lg:h-14 w-10 h-10 flex items-center justify-center bg-gray-200 rounded-xl shadow-2xs cursor-pointer transition-all border-4",x.value===A?"border-blue-500":"border-gray-200"])},[E.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:E.preview,alt:E.title,class:"object-cover rounded-lg lg:w-12 lg:h-12 w-8 h-8"},null,8,kp)):e.createCommentVNode("",!0)],2)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["lg:w-14 lg:h-14 w-10 h-10 flex items-center justify-center bg-gray-200/80 rounded-xl shadow-2xs cursor-pointer transition-all border-4",x.value===A?"border-blue-500":"border-gray-200"])},[e.createVNode(e.unref(Ll),{class:"w-4 h-4 text-gray-500"})],2))],8,bp))),128))]))}}),wp={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%"}},_p={class:"flex flex-col gap-1 p-5"},Ep={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},mn=e.defineComponent({__name:"MapLegendWidget",props:{items:{}},setup(t){const n=t,{map:o,ready:r}=Se(),l=e.ref([]);let a=null;function i(x){return x?x.map((c,g)=>{var m;const d=(c==null?void 0:c.name)||(c==null?void 0:c.label)||(c==null?void 0:c.title)||(c==null?void 0:c.id)||`Layer ${g+1}`,y=(c==null?void 0:c.color)||(c==null?void 0:c.fill)||((m=c==null?void 0:c.paint)==null?void 0:m.color)||"#3388ff";return{id:`${d}-${g}`,label:d,color:y}}):[]}function s(x){return x!=null&&x.layers?x.layers.filter(c=>{const g=c.paint||{};return g["fill-color"]||g["line-color"]||g["circle-color"]}).map((c,g)=>{var m;const d=c.paint||{},y=d["fill-color"]||d["line-color"]||d["circle-color"]||"#3388ff";return{id:c.id||`layer-${g}`,label:((m=c.metadata)==null?void 0:m.title)||c.id||`Layer ${g+1}`,color:y}}):[]}async function f(){var g;await r();const x=o.value;if(!x)return;const c=(g=x.getStyle)==null?void 0:g.call(x);l.value=s(c)}function u(){o.value&&(a==null||a())}return e.watch(()=>n.items,async x=>{x!=null?(l.value=i(x),a==null||a()):(await r(),u(),f())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(n.items===void 0||n.items===null)&&(await r(),u(),f())}),e.onBeforeUnmount(()=>{a==null||a(),a=null}),(x,c)=>l.value.length?(e.openBlock(),e.createElementBlock("div",wp,[e.createElementVNode("div",_p,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,g=>(e.openBlock(),e.createElementBlock("div",{key:g.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:g.color})},null,4),e.createElementVNode("span",Ep,[e.createElementVNode("span",null,e.toDisplayString(g.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function Np(){const{map:t,ready:n}=Se(),o=e.ref(null),r=e.ref(null),l=e.ref(null),a=e.ref(null);let i=[];function s(){i.forEach(d=>d()),i=[]}const f=d=>{const y=(d==null?void 0:d.properties)||{};return!!(y.cluster||y.point_count||y.point_count_abbreviated)},u=d=>{var p,E;o.value=[d.point.x,d.point.y];const y=t.value.queryRenderedFeatures(d.point);if(!(y!=null&&y.length)){x();return}const m=y.find(A=>!f(A));if(!m){x();return}const h=ue(m.source)||ue((p=m.layer)==null?void 0:p.id);h!=null&&h.popup&&(r.value=((E=h.popup)==null?void 0:E.fields)||h.popup,a.value=m.properties)},x=()=>{r.value=null,a.value=null,o.value=null};async function c(){await n(),t.value&&(s(),t.value.on("mousemove",u),t.value.on("mouseleave",x))}function g(){s(),r.value=null,a.value=null,o.value=null}return n().then(c),{popupCoords:o,popupFields:r,popupValues:a,disable:g,title:l}}const Bp={class:"min-w-[200px] max-w-[280px] rounded-lg border border-slate-200 bg-white/90 p-3 text-xs shadow-lg backdrop-blur"},Vp={class:"space-y-1.5"},Cp={class:"font-bold text-slate-700"},$p={class:"text-slate-700"},el=e.defineComponent({__name:"MapPopup",setup(t){const{popupCoords:n,popupFields:o,popupValues:r,disable:l}=Np(),{map:a}=Se(),i=e.ref(null),s=e.ref({left:"-9999px",top:"-9999px"}),f=new Intl.NumberFormat("uk-UA",{maximumFractionDigits:2});function u(m,h){if(h==null||h==="")return h;if((m==null?void 0:m.type)==="number"){const p=typeof h=="number"?h:Number(h);if(Number.isFinite(p))return f.format(p)}return h}function x(m,h,p){const E=m.name||m.label||m.title||`field-${p}`,A=m.label||m.title||m.name||E,F=m.name?h[m.name]:void 0,$=(m.name?h[`${m.name}_text`]:void 0)??F??m.value??null;return{key:E,label:A,value:u(m,$)}}const c=e.computed(()=>{const m=o.value||[],h=r.value||{};return m.filter(p=>(p==null?void 0:p.meta)!=="title").map((p,E)=>x(p,h,E)).filter(p=>p.label)}),g=e.computed(()=>{const m=o.value||[],h=r.value||{},p=m.find(E=>(E==null?void 0:E.meta)==="title");return p?x(p,h,0):null}),d=e.computed(()=>{var h;const m=c.value;return(h=g.value)!=null&&h.value?[{...g.value,key:`${g.value.key}-title`,label:"Назва"},...m]:m});function y(){var B,T;if(!d.value.length||!n.value||!i.value){s.value={left:"-9999px",top:"-9999px"};return}const m=i.value,h=m.offsetParent||null,p=(h==null?void 0:h.getBoundingClientRect())??{left:0,top:0,width:window.innerWidth,height:window.innerHeight},E=((T=(B=a.value)==null?void 0:B.getContainer)==null?void 0:T.call(B))||void 0,A=(E==null?void 0:E.getBoundingClientRect())??p,F=A.left-p.left,D=A.top-p.top,$=m.offsetWidth||0,w=m.offsetHeight||0,C=12,_=8,[I,q]=n.value;let P=F+I+C,M=D+q+C;P+$+_>p.width&&(P=F+I-$-C),M+w+_>p.height&&(M=D+q-w-C);const v=_,b=_,k=Math.max(_,p.width-$-_),N=Math.max(_,p.height-w-_);P=Math.min(Math.max(P,v),k),M=Math.min(Math.max(M,b),N),s.value={left:`${P}px`,top:`${M}px`}}return e.watch([n,d],()=>{e.nextTick(()=>y())}),e.onMounted(()=>{window.addEventListener("resize",y)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",y),l()}),(m,h)=>d.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:i,class:"absolute pointer-events-none z-20",style:e.normalizeStyle(s.value)},[e.createElementVNode("div",Bp,[e.createElementVNode("div",Vp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,p=>(e.openBlock(),e.createElementBlock("div",{key:p.key,class:"flex flex-col"},[e.createElementVNode("span",Cp,e.toDisplayString(p.label),1),e.createElementVNode("span",$p,e.toDisplayString(p.value??"—"),1)]))),128))])])],4)):e.createCommentVNode("",!0)}});function vp(){const{map:t,ready:n}=Se(),o=he.useRoute(),r=he.useRouter(),l=e.ref(null),a=e.ref(null),i=e.ref(null),s=e.ref(!1),f=e.ref([]),u=e.ref(0),x=e.computed(()=>f.value.length),c=e.computed(()=>s.value||!!l.value||!!i.value);let g=null,d=!1;function y(){l.value=null,a.value=null,i.value=null,s.value=!1,f.value=[],u.value=0}function m(){if(g){try{g()}catch{}g=null}}async function h(){await n();const P=t.value;P&&(m(),y(),P.on("click",p),g=()=>P.off("click",p),q(C()))}function p(P){const M=t.value;if(!M)return;const v=(M.queryRenderedFeatures(P.point)||[]).filter(b=>{var k;return(k=b==null?void 0:b.properties)==null?void 0:k.id});if(!v.length){y(),I(null);return}f.value=v,u.value=0,E(u.value)}function E(P){const M=f.value[P];if(!M)return;u.value=P;const v=ue(M.source);D(M,v==null?void 0:v.card)}function A(){u.value>=f.value.length-1||E(u.value+1)}function F(){u.value<=0||E(u.value-1)}async function D(P,M){var k,N,B,T;if(!((k=P==null?void 0:P.properties)!=null&&k.id))return;const v=new URLSearchParams;v.set("layer",P.source),v.set("id",String((N=P.properties)==null?void 0:N.id));const b=Array.isArray(M)&&M.length>0;s.value=b,i.value=null,l.value=null,a.value=P||null;try{const L=await fetch(`/api/map-format?${v.toString()}`);if(!L.ok)throw new Error(`Failed (${L.status})`);const j=await L.json(),U=Array.isArray(j.columns)?j.columns:[],Y=Array.isArray(M)?M:[];if(!U.length&&!Y.length){console.error("Configure layer in admin"),$();return}l.value={rows:j.rows||{},fields:Y,columns:U,html:j.html||null},d||I(a.value);const re=(B=j.rows)==null?void 0:B.geom;if(re){const X=typeof re=="string"?JSON.parse(re):re;X&&(a.value={...a.value,geometry:X,properties:{...((T=a.value)==null?void 0:T.properties)||{},geom:X,geom_4326:X}})}}catch(L){console.error("Failed to load feature card:",L),$()}finally{s.value=!1}}function $(){y(),I(null)}function w(){m(),y()}n().then(h),e.onBeforeUnmount(()=>w());function C(){const P=Array.isArray(o.query.info)?o.query.info[0]:o.query.info;return typeof P!="string"?null:P.trim()||null}function _(P){var k,N;const M=(P==null?void 0:P.source)??((k=P==null?void 0:P.layer)==null?void 0:k.id),v=(N=P==null?void 0:P.properties)==null?void 0:N.id;return!M||v===void 0||v===null?null:`${M},${v}`.trim()||null}function I(P){const M=_(P),v=C();if(M===v)return;const b={...o.query};M?b.info=M:delete b.info,r.push({query:b}).catch(()=>{})}async function q(P){if(!P){y();return}if(P===_(a.value))return;const[M,v]=P.split(","),b=M==null?void 0:M.trim(),k=v==null?void 0:v.trim();if(!b||!k){y(),I(null);return}d=!0;try{const N={source:b,properties:{id:k}};f.value=[N],u.value=0;const B=ue(b);await D(N,B==null?void 0:B.card)}finally{d=!1}}return e.watch(()=>C(),P=>{P!==_(a.value)&&(d=!0,q(P).finally(()=>{d=!1}))}),{card:l,cardFeature:a,cardError:i,cardLoading:s,isOpen:c,close:$,next:A,prev:F,count:x,index:u}}function Sp(){const{map:t,ready:n}=Se(),o=e.ref([]),r=e.ref(0),l=e.ref(0),a=e.ref(!1),i=e.ref(null),s=e.ref({}),f=e.ref(null),u=e.ref([]),x=e.computed(()=>o.value[l.value]||null),c=e.computed(()=>o.value.length>0);let g=null;const d=()=>{g==null||g.remove(),g=null},y=C=>C?C.type==="FeatureCollection"?C:C.type==="Feature"?{type:"FeatureCollection",features:[C]}:C.type&&Array.isArray(C.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:C,properties:{}}]}:Array.isArray(C.features)?{type:"FeatureCollection",features:C.features}:C.geometry?y(C.geometry):null:null,m=()=>({type:"line",color:"#0a57ff",width:4,opacity:.95}),h=C=>Number(C.toFixed(5)),p=async C=>{if(await n(),!t.value)return;const _=y(C);_&&(d(),g=ue("feature-highlight",{source:{type:"geojson",data:_},style:m()},t))},E=async(C,_,I)=>{var M,v;const[q,P]=[h(C),h(_)];f.value={x:q,y:P},u.value=I,a.value=!0,i.value=null,o.value=[],s.value={},l.value=0;try{const b=I.map(async L=>{const j=`/api/map-info-point?x=${q}&y=${P}&layers=${L}`,U=await fetch(j);if(!U.ok)return null;const Y=await U.json();if(!Y.count)return null;const X=await(await fetch(`${j}&index=0`)).json();return{layerId:L,data:X,count:Y.count}}),N=(await Promise.all(b)).filter(Boolean);if(N.length===0){r.value=0;return}o.value=N.map(L=>L.data);const[B]=o.value;r.value=N.reduce((L,j)=>L+(j.count||0),0),s.value[0]=B;const T=((M=B==null?void 0:B.data)==null?void 0:M.geom_4326)??((v=B==null?void 0:B.data)==null?void 0:v.geom);await p(T)}catch(b){i.value=b.message}finally{a.value=!1}},A=async C=>{if(!f.value||!u.value.length)return;if(s.value[C]){o.value[C]=s.value[C];return}const{x:_,y:I}=f.value,q=u.value.join(","),P=`/api/map-info-point?x=${_}&y=${I}&index=${C}&layers=${q}`;try{a.value=!0;const M=await fetch(P);if(!M.ok)throw new Error("Failed to fetch feature by index");const v=await M.json();o.value[C]=v,s.value[C]=v}catch(M){i.value=M.message}finally{a.value=!1}},F=async()=>{l.value<r.value-1&&(l.value+=1,s.value[l.value]||await A(l.value))},D=async()=>{l.value>0&&(l.value-=1,s.value[l.value]||await A(l.value))},$=()=>{o.value=[],r.value=0,l.value=0,s.value={},f.value=null,u.value=[],d()};e.watch(l,async()=>{var _,I;const C=x.value;if(C){const q=((_=C==null?void 0:C.data)==null?void 0:_.geom_4326)??((I=C==null?void 0:C.data)==null?void 0:I.geom);await p(q)}});let w=null;return e.onMounted(async()=>{await n(),t.value&&(w=async C=>{const{lng:_,lat:I}=C.lngLat,q=ue(),M=Object.entries(q).map(([v,b])=>{var k,N,B,T;return{id:v,service:((k=b==null?void 0:b.opts)==null?void 0:k.service)??((B=(N=b==null?void 0:b.opts)==null?void 0:N.source)==null?void 0:B.service)??null,count:((T=b==null?void 0:b.opts)==null?void 0:T.count)??null,visible:(()=>{var L;try{return((L=t.value)==null?void 0:L.getLayer(v))?t.value.getLayoutProperty(v,"visibility")!=="none":!0}catch{return!0}})()}}).filter(v=>v.service==="ogc"&&v.visible).map(v=>v.id);M.length>0&&await E(_,I,M)},t.value.on("dblclick",w))}),e.onBeforeUnmount(()=>{t.value&&w&&t.value.off("dblclick",w),d()}),{features:o,count:r,index:l,current:x,loading:a,error:i,active:c,next:F,prev:D,close:$}}const tl=e.defineComponent({__name:"LayerSwitcher",props:{title:{},url:{},id:{},buttonText:{}},emits:["activate"],setup(t,{emit:n}){const o=t,r=n;function l(u){const x=u.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(x)return x;const c=Array.from(u).map(g=>g.charCodeAt(0).toString(16)).join("").slice(0,8);return c?`layer-${c}`:"layer-temp"}const a=e.computed(()=>{var u;return((u=o.id)==null?void 0:u.trim())||l(o.title)}),i=e.computed(()=>o.buttonText||"Показати шар");function s(){return{id:a.value,title:o.title,url:o.url}}function f(){r("activate",s())}return(u,x)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"flex items-center justify-center bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded w-full",onClick:f},[e.renderSlot(u.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(i.value),1)])]))}}),ze=e.ref([]);function Ap(t,n){return typeof t!="string"?"":t.includes("{{")?t.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*}}/g,(o,r)=>{const l=String(r||"").trim();if(!l)return"";const a=n[l];return a!=null?String(a):""}):t}function fn(t){return t==null?"":String(t).trim()}function gn(t){var n,o;(o=(n=t==null?void 0:t.handle)==null?void 0:n.remove)==null||o.call(n)}function Lp(t){return t?typeof(t==null?void 0:t.value)<"u"?t.value:t:null}function Tp(t){var o;if(!(t!=null&&t.getStyle))return;const n=((o=t.getStyle())==null?void 0:o.layers)||[];for(let r=0;r<n.length;r+=1){const l=n[r];if(!(!l||typeof l.id!="string")&&l.type&&l.type!=="background"&&l.type!=="raster")return l.id}}function yn(t){function n(a,i={},s,f){var E,A;const u=fn(a==null?void 0:a.id),x=((E=a==null?void 0:a.title)==null?void 0:E.trim())||u,c=((A=a==null?void 0:a.url)==null?void 0:A.trim())||"";if(!u||!c)return;const g=Ap(c,i);if(!g)return;const d=f??t;if(!d)return;const y=Lp(d);if(!y)return;const m=ze.value.findIndex(F=>F.id===u);m!==-1&&(gn(ze.value[m]),ze.value.splice(m,1));let h=null;const p=a.beforeId??Tp(y);try{h=ue(u,{source:{type:"raster",tiles:[g],tileSize:a.tileSize??256,minzoom:a.minzoom??0,maxzoom:a.maxzoom??19},layer:{id:u,type:"raster",source:u,paint:{"raster-opacity":a.opacity??.85}},beforeId:p},d)}catch(F){const D=(F==null?void 0:F.message)??"";if(!(typeof D=="string"&&D.includes("Map provider")))throw F;return}ze.value=[...ze.value,{id:u,title:x,originalUrl:c,resolvedUrl:g,owner:s??null,handle:h??null}]}function o(a,i){const s=fn(a);if(!s)return;const f=ze.value.findIndex(x=>x.id===s&&(!i||x.owner===i));if(f===-1)return;const[u]=ze.value.splice(f,1);gn(u)}function r(a){if(!ze.value.length)return;const i=[];ze.value.forEach(s=>{(a?s.owner===a:!0)?gn(s):i.push(s)}),ze.value=i}function l(a,i){const s=fn(a);return s?ze.value.some(f=>f.id===s&&(!i||f.owner===i)):!1}return{temporaryLayers:ze,activateTemporaryLayer:n,deactivateTemporaryLayer:o,clearTemporaryLayers:r,isTemporaryLayerActive:l}}const Fp={key:0,class:"card absolute top-4 lg:left-auto right-11 md:left-4 z-[82] w-[calc(100%-36px)] md:w-[400px] max-h-[80%] overflow-hidden rounded-2xl border border-slate-200 bg-white/95 shadow-2xl backdrop-blur-md flex flex-col"},Mp={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},Dp={class:"min-w-0 flex-1"},Ip={class:"text-base font-semibold text-slate-900 truncate"},jp={key:0,class:"flex gap-1 mt-1"},zp=["disabled"],Op=["disabled"],Rp={key:1,class:"flex gap-1 mt-1"},Pp=["disabled"],Up=["disabled"],qp={class:"flex-1 overflow-y-auto px-4 py-3 space-y-4 text-sm text-slate-700"},Hp={key:0,class:"text-center text-xs text-slate-500"},Wp={key:1,class:"text-center text-xs text-red-500"},Yp={key:0,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},Zp={class:"divide-y divide-gray-100 py-[5px]"},Gp={class:"text-gray-900 font-normal"},Kp={key:0,class:"flex gap-1 flex-wrap"},Xp={key:1,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},Jp=["innerHTML"],Qp=["innerHTML"],em={key:2,class:"space-y-3 border-t border-slate-200 pt-3"},tm={key:3,class:"border-t border-slate-100 px-4 py-2 text-right text-xs text-slate-500"},nm={class:"text-xs tracking-[0.02em] leading-none"},om={key:4,class:"space-y-3 border-t border-slate-200 pt-3"},lm={class:"space-y-1"},rm={class:"flex items-center cursor-pointer gap-2 flex-1"},am=["checked","onChange"],im={class:"text-[13px] text-gray-600"},sm={key:0,class:"text-right text-xs text-gray-400 truncate max-w-[40%]"},cm={key:5,class:"text-center text-xs text-slate-400"},dm="map:temporary-layer-request",um=14,nl=oe(e.defineComponent({__name:"MapCardWidget",props:{mapId:{}},setup(t){var Ut,xl;const n=t,o=vp(),r=Sp(),l=e.computed(()=>r.active.value),a=e.computed(()=>l.value||o.isOpen.value),i=e.computed(()=>l.value?r.loading.value:o.cardLoading.value),s=e.computed(()=>l.value?r.error.value:o.cardError.value),f=e.computed(()=>{var V,S;return l.value?((V=r.current.value)==null?void 0:V.html)||null:((S=o.card.value)==null?void 0:S.html)||null}),u=Se(),x=he.useRoute(),{activateTemporaryLayer:c,deactivateTemporaryLayer:g,clearTemporaryLayers:d,isTemporaryLayerActive:y}=yn(u.map);function m(V){window.dispatchEvent(new CustomEvent(dm,{detail:V}))}const h=e.computed(()=>{var V;return((V=o.cardFeature.value)==null?void 0:V.source)??null}),p=e.computed(()=>h.value?`map-card:${h.value}`:"map-card"),E=e.computed(()=>{var G,ne;const V=o.cardFeature.value,S=(V==null?void 0:V.source)||((G=V==null?void 0:V.layer)==null?void 0:G.id),O=((ne=V==null?void 0:V.properties)==null?void 0:ne.id)??(V==null?void 0:V.id);return S&&O!=null?`${S}:${O}`:null}),A=e.ref(null),F=e.ref(null),D=e.ref(0),$=new Map;function w(){if(typeof window>"u")return null;const S=(window.location.pathname||"").match(/\/maps?\/([^/]+)/i);return S&&S[1]?S[1]:null}const C=e.computed(()=>{const V=typeof n.mapId=="string"?n.mapId.trim():"";if(V.length)return V;const S=typeof x.params.slug=="string"?x.params.slug.trim():"";if(S.length)return S;const O=typeof x.query.slug=="string"?x.query.slug.trim():"";return O.length?O:w()}),_=e.ref(null),I=e.ref(null),q=new Map;function P(V){const S=V.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(S)return S;const O=Array.from(V).map(G=>G.charCodeAt(0).toString(16)).join("").slice(0,8);return O?`layer-${O}`:`layer-${Math.random().toString(36).slice(2,8)}`}function M(V){if(typeof V!="string")return"";const S=V.trim();if(!S)return"";if(/^https?:\/\//i.test(S))return S;if(S.startsWith("//"))return typeof window>"u"?`https:${S}`:`${window.location.protocol}${S}`;const O=typeof window<"u"?window.location.origin:"";return S.startsWith("/")?O?`${O}${S}`:S:O?`${O}/${S}`:S}function v(V){const S={},O=/([:@\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;let G;for(;(G=O.exec(V))!==null;){const ne=G[1],ie=G[2]??G[3]??G[4]??"";ne&&(S[ne]=ie)}return S}function b(V,S){for(const O of S)if(V[O]!=null&&String(V[O]).trim().length)return String(V[O]).trim();return""}function k(V){if(!(V!=null&&V.length))return;const S=Number(V);return Number.isFinite(S)?S:void 0}function N(V){if(typeof V!="string"||!V.length)return[];const S=[],O=/<LayerSwitcher\b([^>]*)>([\s\S]*?)<\/LayerSwitcher>/gi;let G=0,ne;const ie=new Set,ke=we=>{let Be=we,Fe=2;for(;ie.has(Be);)Be=`${we}-${Fe}`,Fe+=1;return ie.add(Be),Be};for(;(ne=O.exec(V))!==null;){const[we,Be="",Fe=""]=ne,_e=ne.index;if(_e>G){const wl=V.slice(G,_e);wl.trim().length&&S.push({type:"html",content:wl})}const Oe=v(Be),je=b(Oe,["title"])||"Тимчасовий шар",et=M(b(Oe,["url"]));if(!et){S.push({type:"html",content:we}),G=_e+we.length;continue}const $t=b(Oe,["id"]),_n=b(Oe,["button-text","buttonText","show","show-label","showLabel"]),G1=k(b(Oe,["tile-size","tileSize"])),K1=k(b(Oe,["minzoom","minZoom"])),X1=k(b(Oe,["maxzoom","maxZoom"])),J1=k(b(Oe,["opacity"])),Q1=$t||P(`${je}-${et}`)||P(je),bl=ke(Q1||`layer-${S.length+1}`),En=Fe.trim(),kl=/<[^>]+>/.test(En),ex=kl?En:null,Nn=kl?null:En,tx=_n&&_n.trim().length?_n.trim():Nn&&Nn.trim().length?Nn.trim():void 0;S.push({type:"layer",spec:{id:bl,title:je,url:et,tileSize:G1,minzoom:K1,maxzoom:X1,opacity:J1},componentProps:{title:je,url:et,id:bl,buttonText:tx},slotText:ex}),G=_e+we.length}if(G<V.length){const we=V.slice(G);we.trim().length&&S.push({type:"html",content:we})}return!S.length&&V.trim().length&&S.push({type:"html",content:V}),S}function B(V){if(!V)return null;const S=typeof V.id=="string"?V.id.trim():"",O=typeof V.title=="string"?V.title.trim():"",G=M(typeof V.url=="string"?V.url:"");return!S||!G?null:{id:S,title:O||S,url:G,tileSize:V.tileSize,minzoom:V.minzoom,maxzoom:V.maxzoom,opacity:V.opacity}}const T=e.computed(()=>{if(l.value&&r.current.value)return r.current.value.data??{};const V=o.card.value;return(V==null?void 0:V.rows)??{}}),L=e.computed(()=>{if(l.value&&r.current.value)return r.current.value.fields??[];const V=o.card.value;if(!V)return[];const S=Array.isArray(V.columns)?V.columns:[];return S.length?S:Array.isArray(V.fields)?V.fields:[]}),j=e.computed(()=>{const V=L.value;if(!V.length)return[];const S=T.value;return V.map(O=>({key:O.name,label:O.ua||O.label||O.title||O.name,value:S[O.name]??"—",format:O.format||"text"}))}),U=new Set(["—","-","–","−"]);function Y(V){if(V==null)return!0;if(typeof V=="string"){const S=V.trim();return S.length?U.has(S):!0}return!1}function re(V){if(!V)return[];if(Array.isArray(V))return V;if(typeof V=="string"){const S=V.trim();if(S.startsWith("{")&&S.endsWith("}")){const G=S.slice(1,-1).match(/"((?:[^"\\]|\\.)*)"/g);return G?G.map(ne=>ne.slice(1,-1).replace(/\\"/g,'"')):[]}}return[]}const X=e.ref(!1),ee=e.ref(!0);if(typeof window<"u"){const V=(xl=(Ut=window.localStorage)==null?void 0:Ut.getItem)==null?void 0:xl.call(Ut,"cardHideEmpty"),S=typeof V=="string"&&V.toLowerCase()==="true";X.value=S,ee.value=!S}const fe=e.computed(()=>j.value.filter(V=>Y(V.value)).length),pe=e.computed(()=>X.value&&!ee.value?j.value.filter(V=>!Y(V.value)):j.value);function me(V){const S=typeof V=="string"?V:"";if(!S.length)return{sanitized:"",hiddenCount:0};if(typeof DOMParser>"u")return{sanitized:S,hiddenCount:0};const G=new DOMParser().parseFromString(S,"text/html");let ne=0;return G.querySelectorAll("dd").forEach(ie=>{var Be;const ke=((Be=ie.textContent)==null?void 0:Be.trim())??"",we=ie.closest("div");if(Y(ke)){ne+=1,we?we.remove():ie.remove();return}}),{sanitized:G.body.innerHTML,hiddenCount:ne}}const R=e.computed(()=>me(f.value)),H=e.computed(()=>f.value?R.value.hiddenCount:0),W=e.computed(()=>fe.value+H.value),te=e.computed(()=>{var V;return X.value&&!ee.value&&!!((V=f.value)!=null&&V.trim())}),le=e.computed(()=>X.value&&W.value>0),de=e.computed(()=>ee.value?"Приховати пусті значення":"Показати пусті значення"),xe=e.computed(()=>ee.value?vl:$l);function se(){ee.value=!ee.value}const Ie=e.computed(()=>{const V=te.value?R.value.sanitized:f.value??"";return N(V)}),z=e.computed(()=>Ie.value.filter(V=>V.type==="layer"));function Z(V){return Array.isArray(V)?V.map((S,O)=>{const G=M(typeof(S==null?void 0:S.url)=="string"?S.url:""),ne=typeof(S==null?void 0:S.geohub)=="string"&&S.geohub.trim().length?`/api-hub/tms/${S.geohub.trim()}/ua/{z}/{x}/{y}.png`:"",ie=((S==null?void 0:S.name)||(S==null?void 0:S.title)||(S==null?void 0:S.label)||`Шар ${O+1}`).toString(),ke=(S==null?void 0:S.id)!=null?String(S.id):P(`${ie}-${O+1}`),we=(S==null?void 0:S.buttonText)||(S==null?void 0:S.button_text)||null,Be=(S==null?void 0:S.description)||(S==null?void 0:S.subtitle)||null,Fe=G||M(ne)||"";if(!Fe)return null;const _e={id:ke,title:ie,url:Fe,subtitle:Be,buttonText:we||void 0};return typeof(S==null?void 0:S.tileSize)=="number"&&(_e.tileSize=S.tileSize),typeof(S==null?void 0:S.tile_size)=="number"&&(_e.tileSize=S.tile_size),typeof(S==null?void 0:S.minzoom)=="number"&&(_e.minzoom=S.minzoom),typeof(S==null?void 0:S.maxzoom)=="number"&&(_e.maxzoom=S.maxzoom),typeof(S==null?void 0:S.opacity)=="number"&&(_e.opacity=S.opacity),_e}).filter(Boolean):[]}const ae=e.computed(()=>{var G,ne;const V=o.card.value,S=r.current.value,O=[(G=V==null?void 0:V.rows)==null?void 0:G.layers,V==null?void 0:V.layers,(ne=S==null?void 0:S.data)==null?void 0:ne.layers,S==null?void 0:S.layers];for(const ie of O){const ke=Z(ie);if(ke.length)return ke}return[]}),be=e.computed(()=>Ie.value.length>0||j.value.length>0||ae.value.length>0),Q=e.computed(()=>!o.cardLoading.value&&!!o.card.value);function ge(){const V={},S=_.value;if(S&&typeof S=="object"&&Object.entries(S).forEach(([O,G])=>{typeof G=="string"&&(V[O]=G)}),h.value&&(V.layer=h.value),!V.geohub){const O=typeof(S==null?void 0:S.geohub)=="string"?S.geohub:null,G=typeof(S==null?void 0:S.geohub_key)=="string"?S.geohub_key:null,ne=typeof(S==null?void 0:S.geohubId)=="string"?S.geohubId:null;V.geohub=O||G||ne||V.layer||""}return V}async function Le(){const V=h.value;if(!V)return _.value=null,I.value=null,null;if(I.value===V&&_.value)return _.value;if(q.has(V)){const S=q.get(V);return _.value=S,I.value=V,S}try{const S=await fetch(`/api/gis-service/${encodeURIComponent(V)}`);if(!S.ok)return null;const O=await S.json();return q.set(V,O),_.value=O,I.value=V,O}catch{return null}}async function K(V){if(!(V!=null&&V.id))return;await Le();const S=ge(),O=z.value.find(ke=>ke.spec.id===V.id),G=ae.value.find(ke=>ke.id===V.id),ne=(O==null?void 0:O.spec)||B(G)||B(V);if(!ne||y(ne.id,p.value))return;const ie=p.value||void 0;A.value=ie??null,c(ne,S,ie),m({action:"activate",owner:ie,spec:ne,context:S})}function $e(V){if(!V)return;const S=He()||void 0;g(V,S),m({action:"deactivate",owner:S,spec:{id:V}})}function Te(V){return y(V,He())}function Pe(V,S){const O=S.target;!!(O!=null&&O.checked)?K(V):$e(V.id)}function He(){return A.value||p.value||null}e.watch(h,(V,S)=>{V!==S&&(_.value=null,I.value=null)});const{next:Je,prev:Qe,count:We,index:Ue}=r,nt=e.computed(()=>o.count.value),kn=e.computed(()=>o.index.value),ul=e.computed(()=>nt.value>1),pl=e.computed(()=>l.value?We.value:nt.value),ml=e.computed(()=>l.value?Ue.value:kn.value),fl=o.next,gl=o.prev;function ot(){const V=He();V&&(d(V),m({action:"clear",owner:V}),A.value=null)}function O1(){o.close(),r.close(),ot()}e.watch(a,(V,S)=>{!V&&S&&(ot(),Ye())});function yl(){!o.isOpen.value&&!r.active.value&&ot()}e.watch(()=>o.isOpen.value,()=>{yl()}),e.watch(()=>r.active.value,()=>{yl()}),e.watch(h,(V,S)=>{V&&S&&V!==S&&ot()}),e.watch(Ue,(V,S)=>{V!==S&&ot()}),e.watch(E,(V,S)=>{V&&S&&V!==S&&ot()});function R1(V){if(!V)return null;if(V.geometry)return V.geometry;const S=(V==null?void 0:V.data)??(V==null?void 0:V.properties);return S!=null&&S.geom_4326?S.geom_4326:S!=null&&S.geom?S.geom:null}function Ye(){var V,S;(S=(V=F.value)==null?void 0:V.remove)==null||S.call(V),F.value=null}function P1(V){var O,G,ne;const S=(V==null?void 0:V.type)||((ne=(G=(O=V==null?void 0:V.features)==null?void 0:O[0])==null?void 0:G.geometry)==null?void 0:ne.type)||"";return S.includes("Polygon")?{type:"fill",paint:{"fill-color":"#0a57ff","fill-opacity":.2,"fill-outline-color":"#0a57ff"}}:S.includes("LineString")?{type:"line",paint:{"line-color":"#0a57ff","line-width":3,"line-opacity":.9}}:{type:"circle",paint:{"circle-color":"#0a57ff","circle-opacity":.9,"circle-radius":8,"circle-stroke-color":"#ffffff","circle-stroke-width":2}}}let wn=null;function hl(){const V=Array.isArray(x.query.info)?x.query.info[0]:x.query.info;return typeof V!="string"?null:V.trim()||null}function U1(V){var ne,ie;if(!V)return null;const S=(V==null?void 0:V.source)??((ne=V==null?void 0:V.layer)==null?void 0:ne.id),O=((ie=V==null?void 0:V.properties)==null?void 0:ie.id)??(V==null?void 0:V.id);return!S||O===void 0||O===null?null:`${S},${O}`.trim()||null}function Pt(V,S){if(V){if(Array.isArray(V)){if(V.length>=2&&typeof V[0]=="number"&&typeof V[1]=="number"){S.push([V[0],V[1]]);return}V.forEach(O=>Pt(O,S));return}typeof V=="object"&&(Array.isArray(V.coordinates)&&Pt(V.coordinates,S),Array.isArray(V.features)&&V.features.forEach(O=>Pt(O==null?void 0:O.geometry,S)))}}function q1(V){var we,Be;if(!V)return null;const S=V.type==="FeatureCollection"?(Be=(we=V.features)==null?void 0:we[0])==null?void 0:Be.geometry:V.type==="Feature"?V.geometry:V,O=[];if(Pt(S,O),!O.length)return null;let G=O[0][0],ne=O[0][0],ie=O[0][1],ke=O[0][1];return O.forEach(([Fe,_e])=>{Fe<G&&(G=Fe),Fe>ne&&(ne=Fe),_e<ie&&(ie=_e),_e>ke&&(ke=_e)}),[(G+ne)/2,(ie+ke)/2]}async function H1(V,S){var ie;const O=hl();if(!O)return;const G=U1(V);if(!G||G!==O||wn===O)return;const ne=q1(S);ne&&(await((ie=u.ready)==null?void 0:ie.call(u)),u.flyTo({center:ne,zoom:um}),wn=O)}function W1(V){var ne;if(!V){Ye();return}const S=(ne=u.map)==null?void 0:ne.value,O={type:"FeatureCollection",features:[{type:"Feature",geometry:V,properties:{}}]};Ye();const G=P1(V);if(F.value=ue("feature-card-highlight",{source:{type:"geojson",data:O},layer:{id:"feature-card-highlight",type:G.type,source:"feature-card-highlight",paint:G.paint}},u.map),S!=null&&S.moveLayer){const ie=()=>{try{S.moveLayer("feature-card-highlight")}catch{}},ke=()=>{typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(()=>{window.requestAnimationFrame(ie)}):setTimeout(ie,0)};ke();const we=()=>ke();S.once("styledata",we);const Be=()=>{ke(),S.off("styledata",we),S.off("idle",Be)};S.on("idle",Be)}}function Y1(V){var G,ne;const S=(V==null?void 0:V.source)||((G=V==null?void 0:V.layer)==null?void 0:G.id)||"unknown",O=((ne=V==null?void 0:V.properties)==null?void 0:ne.id)??(V==null?void 0:V.id)??"unknown";return`${S}:${O}`}async function Z1(V){var ie,ke,we,Be,Fe;if(!V)return null;const S=R1(V);if(S)return S;const O=((ie=V==null?void 0:V.properties)==null?void 0:ie.id)??(V==null?void 0:V.id);if(!O)return null;const G=Y1(V);if($.has(G))return $.get(G);const ne=[C.value,V==null?void 0:V.source,(ke=V==null?void 0:V.layer)==null?void 0:ke.id].map(_e=>typeof _e=="string"?_e.trim():"").filter(Boolean);for(const _e of ne)try{const Oe=await fetch(`/api/map-features/${encodeURIComponent(_e)}/${encodeURIComponent(String(O))}`);if(!Oe.ok)continue;const je=await Oe.json(),et=((we=je==null?void 0:je.data)==null?void 0:we.geom)||((Be=je==null?void 0:je.data)==null?void 0:Be.geometry)||((Fe=je==null?void 0:je.data)==null?void 0:Fe.geom_4326)||null,$t=typeof et=="string"?JSON.parse(et):et;if($t)return $.set(G,$t),$t}catch{continue}return null}async function Ct(V){D.value+=1;const S=D.value;if(!V||l.value){Ye();return}if(!Q.value){Ye();return}const O=await Z1(V);if(S===D.value){if(!O){Ye();return}W1(O),H1(V,O)}}return e.watch(()=>o.cardFeature.value,V=>{Ct(V)},{immediate:!0}),e.watch(()=>o.index.value,()=>{l.value||Ct(o.cardFeature.value)}),e.watch(l,V=>{V?Ye():Ct(o.cardFeature.value)}),e.watch(C,()=>{!l.value&&o.cardFeature.value&&Ct(o.cardFeature.value)}),e.watch(Q,V=>{V?Ct(o.cardFeature.value):Ye()}),e.watch(()=>hl(),()=>{wn=null}),e.onBeforeUnmount(()=>{ot(),Ye()}),(V,S)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("div",Fp,[e.createElementVNode("div",Mp,[e.createElementVNode("div",Dp,[e.createElementVNode("p",Ip,[l.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Об’єкт "+e.toDisplayString(ml.value+1)+" / "+e.toDisplayString(pl.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[ul.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Об’єкт "+e.toDisplayString(ml.value+1)+" / "+e.toDisplayString(pl.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Інформація про об’єкт ")],64))],64))])]),l.value&&e.unref(We)>1?(e.openBlock(),e.createElementBlock("div",jp,[e.createElementVNode("button",{onClick:S[0]||(S[0]=(...O)=>e.unref(Qe)&&e.unref(Qe)(...O)),disabled:e.unref(Ue)===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Cn),{class:"h-4 w-4"})],8,zp),e.createElementVNode("button",{onClick:S[1]||(S[1]=(...O)=>e.unref(Je)&&e.unref(Je)(...O)),disabled:e.unref(Ue)===e.unref(We)-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref($n),{class:"h-4 w-4"})],8,Op)])):!l.value&&ul.value?(e.openBlock(),e.createElementBlock("div",Rp,[e.createElementVNode("button",{onClick:S[2]||(S[2]=(...O)=>e.unref(gl)&&e.unref(gl)(...O)),disabled:kn.value===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Cn),{class:"h-4 w-4"})],8,Pp),e.createElementVNode("button",{onClick:S[3]||(S[3]=(...O)=>e.unref(fl)&&e.unref(fl)(...O)),disabled:kn.value===nt.value-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref($n),{class:"h-4 w-4"})],8,Up)])):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 ml-1",onClick:O1}," ✕ ")]),e.createElementVNode("div",qp,[i.value?(e.openBlock(),e.createElementBlock("div",Hp," Завантаження даних… ")):s.value?(e.openBlock(),e.createElementBlock("div",Wp,e.toDisplayString(s.value),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[j.value.length?(e.openBlock(),e.createElementBlock("div",Yp,[e.createElementVNode("dl",Zp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(pe.value,O=>(e.openBlock(),e.createElementBlock("div",{key:O.key,class:"grid grid-cols-1 gap-1 py-3 sm:grid-cols-3 sm:gap-4 even:bg-gray-50 text-[12px]"},[e.createElementVNode("dt",Gp,e.toDisplayString(O.label),1),e.createElementVNode("dd",{class:e.normalizeClass(["text-gray-700 sm:col-span-2 font-normal whitespace-pre-wrap",O.format==="badge"?"font-semibold text-yellow-800":""])},[O.format==="tags"?(e.openBlock(),e.createElementBlock("div",Kp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(re(O.value),(G,ne)=>(e.openBlock(),e.createElementBlock("span",{key:ne,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold text-foreground"},e.toDisplayString(G),1))),128))])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(O.value),1)],64))],2)]))),128))])])):Ie.value.length?(e.openBlock(),e.createElementBlock("div",Xp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ie.value,(O,G)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:G},[O.type==="html"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:O.content},null,8,Jp)):(e.openBlock(),e.createBlock(tl,{key:1,title:O.componentProps.title,url:O.componentProps.url,id:O.componentProps.id,"button-text":O.componentProps.buttonText,onActivate:K},e.createSlots({_:2},[O.slotText?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:O.slotText},null,8,Qp)]),key:"0"}:void 0]),1032,["title","url","id","button-text"]))],64))),128))])):e.createCommentVNode("",!0),z.value.length?(e.openBlock(),e.createElementBlock("div",em,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,O=>(e.openBlock(),e.createBlock(tl,{key:O.spec.id,title:O.componentProps.title,url:O.componentProps.url,id:O.spec.id,"button-text":O.componentProps.buttonText,onActivate:K},null,8,["title","url","id","button-text"]))),128))])):e.createCommentVNode("",!0),le.value?(e.openBlock(),e.createElementBlock("div",tm,[e.createElementVNode("button",{type:"button",class:"flex items-center gap-1 justify-end w-full font-medium text-blue-600 hover:text-blue-800 transition-colors disabled:opacity-60 cursor-pointer",onClick:se},[e.createElementVNode("span",nm,e.toDisplayString(de.value),1),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(xe.value),{class:"h-3 w-3 stroke-[1.5px]"}))])])):e.createCommentVNode("",!0),ae.value.length?(e.openBlock(),e.createElementBlock("div",om,[S[5]||(S[5]=e.createElementVNode("p",{class:"text-xs font-semibold uppercase tracking-wide text-slate-500"},"Шари",-1)),e.createElementVNode("div",lm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ae.value,O=>(e.openBlock(),e.createElementBlock("div",{key:O.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",rm,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:Te(O.id),onChange:G=>Pe(O,G)},null,40,am),S[4]||(S[4]=e.createElementVNode("div",{class:"w-4 h-4 rounded border border-blue-800 flex items-center justify-center peer-checked:bg-blue-600 peer-checked:border-blue-600"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},[e.createElementVNode("path",{d:"M10.6663 1L4.24967 7.41667L1.33301 4.5",stroke:"#fff","stroke-width":"1.4","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),e.createElementVNode("span",im,e.toDisplayString(O.title),1)]),O.subtitle?(e.openBlock(),e.createElementBlock("div",sm,e.toDisplayString(O.subtitle),1)):e.createCommentVNode("",!0)]))),128))])])):e.createCommentVNode("",!0),be.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",cm," Даних не знайдено. "))],64))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-763da13a"]]),ol=e.defineComponent({__name:"MapBoundaryLayer",props:{layerId:{},boundary:{},katottg:{},settingsMap:{}},setup(t){var g,d;const n=t,o=((d=(g=e.getCurrentInstance())==null?void 0:g.appContext.config.globalProperties)==null?void 0:d.$settings)||null,{map:r,ready:l}=Se();let a=null;function i(){a==null||a.remove(),a=null}function s(y){if(!y)return null;if(typeof y=="string")try{y=JSON.parse(y)}catch{return null}return y.type==="FeatureCollection"?y:y.type==="Feature"?{type:"FeatureCollection",features:[y]}:y.type&&Array.isArray(y.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:y,properties:{}}]}:Array.isArray(y.features)?{type:"FeatureCollection",features:y.features}:y.geometry?s(y.geometry):null}function f(y){var p,E,A;return{type:"line",color:"#8e4484",width:2,opacity:((((A=(E=(p=y==null?void 0:y.features)==null?void 0:p[0])==null?void 0:E.geometry)==null?void 0:A.type)||"").includes("Polygon"),.95)}}async function u(y){const m=await fetch(y);if(!m.ok)throw new Error(String(m.status));return m.json()}async function x(y,m){if(y){const h=/^https?:\/\//.test(y)?y:new URL(y,location.origin).toString(),p=await u(h).catch(()=>null),E=s(p);if(E)return E}if(m){const h=await u(`https://data.gki.com.ua/api-user/atu/${encodeURIComponent(m)}`).catch(()=>null),p=s(h);if(p)return p}return null}async function c(){var p,E,A,F;if(!n.layerId||!r.value){i();return}typeof l=="function"&&await l().catch(()=>{});const y=n.boundary??((p=n.settingsMap)==null?void 0:p.boundary)??((E=o==null?void 0:o.map)==null?void 0:E.boundary)??null,m=n.katottg??((A=n.settingsMap)==null?void 0:A.katottg)??((F=o==null?void 0:o.map)==null?void 0:F.katottg)??null;if(!y&&!m){i();return}const h=await x(y,m);if(!h){i();return}i(),a=ue(`${n.layerId}-boundary`,{source:{type:"geojson",data:h},style:f(h)},r)}return e.watch(()=>{var y,m;return[n.layerId,n.boundary,n.katottg,(y=n.settingsMap)==null?void 0:y.boundary,(m=n.settingsMap)==null?void 0:m.katottg,r.value]},()=>{c()},{immediate:!0}),e.onBeforeUnmount(i),(y,m)=>null}}),pm={class:"map-center-control"},mm=["aria-label"],fm={class:"absolute right-full mr-3 px-1.5 py-0.5 bg-gray-700 text-white text-[0.75rem] font-medium rounded-md opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100 pointer-events-none transition-opacity duration-200 whitespace-nowrap","aria-hidden":"true"},hn=oe(e.defineComponent({name:"MapCenterControl",__name:"MapCenterControl",props:{center:{},zoom:{},targetCenter:{},targetZoom:{},targetLabel:{},targetAriaLabel:{}},setup(t){const n=t,{map:o,ready:r}=Se(),l=e.ref(null),a=e.ref(null),i=e.ref(null),s=e.ref(null);function f(y){if(Array.isArray(y)&&y.length>=2){const[m,h]=y.slice(0,2).map(p=>Number(p));return Number.isNaN(m)||Number.isNaN(h)?null:[m,h]}if(y&&typeof y=="object"){const m=y,h=m.lng??m.lon??m.long??m.x,p=m.lat??m.y;if(h!=null&&p!=null){const E=Number(h),A=Number(p);if(!Number.isNaN(E)&&!Number.isNaN(A))return[E,A]}}if(typeof y=="string"){const m=y.split(",").map(h=>Number(h.trim()));if(m.length>=2&&m.every(h=>!Number.isNaN(h)))return[m[0],m[1]]}return null}e.watch(()=>n.center,y=>{const m=f(y);m&&(l.value=m)},{immediate:!0}),e.watch(()=>n.zoom,y=>{const m=Number(y);Number.isNaN(m)||(a.value=m)},{immediate:!0}),e.watch(()=>n.targetCenter,y=>{i.value=f(y)},{immediate:!0}),e.watch(()=>n.targetZoom,y=>{const m=Number(y);s.value=Number.isNaN(m)?null:m},{immediate:!0});const u=e.computed(()=>{var y;return((y=n.targetLabel)==null?void 0:y.trim())||"Точка"}),x=e.computed(()=>n.targetAriaLabel||"Перейти до точки"),c=e.computed(()=>!!i.value);e.onMounted(async()=>{await(r==null?void 0:r());const y=o.value;if(y){if(!l.value){const m=y.getCenter();l.value=[m.lng,m.lat]}a.value==null&&(a.value=y.getZoom())}});function g(){const y=o.value;if(!y)return;const m=l.value||(()=>{const p=y.getCenter();return[p.lng,p.lat]})(),h=a.value??y.getZoom();y.flyTo({center:m,zoom:h})}function d(){const y=o.value;if(!y||!i.value)return;const m=s.value??a.value??y.getZoom();y.flyTo({center:i.value,zoom:m})}return(y,m)=>(e.openBlock(),e.createElementBlock("div",pm,[c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,id:"center-btn",type:"button",class:"group relative flex items-center justify-center w-9 h-9 rounded-xl shadow-lg transition-transform transition-shadow duration-200 bg-white text-gray-700 hover:bg-gray-50 hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400/60 focus-visible:ring-offset-2","aria-label":"Повернути центр",onClick:e.withModifiers(g,["stop"])},[m[0]||(m[0]=e.createElementVNode("span",{class:"absolute right-full mr-3 px-1.5 py-0.5 bg-gray-700 text-white text-[0.75rem] font-medium rounded-md opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100 pointer-events-none transition-opacity duration-200 whitespace-nowrap","aria-hidden":"true"},"Центр мапи",-1)),e.createVNode(e.unref(Tl),{class:"w-4 h-4"})])),c.value?(e.openBlock(),e.createElementBlock("button",{key:1,id:"goto-target-btn",type:"button",class:"group relative flex items-center justify-center w-9 h-9 rounded-xl shadow-lg transition-transform transition-shadow duration-200 bg-white text-gray-700 hover:bg-gray-50 hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400/60 focus-visible:ring-offset-2","aria-label":x.value,onClick:e.withModifiers(d,["stop"])},[e.createElementVNode("span",fm,e.toDisplayString(u.value),1),e.createVNode(e.unref(Fl),{class:"w-4 h-4"})],8,mm)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-80ea583c"]]),gm={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},ym={class:"flex-1 relative overflow-hidden"},hm={class:"absolute top-0 left-0 w-full z-20"},xm={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},bm={class:"flex items-center gap-3 h-[2.75rem]"},km={class:"font-semibold text-lg text-gray-800 line-clamp-1"},wm={key:0,class:"text-xs text-gray-500 truncate"},_m=["title"],Em={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]"},Nm={class:"relative w-full h-full"},Bm={style:{top:"17px",left:"230px",position:"absolute","z-index":"1"}},Vm={class:"absolute top-4 left-4 z-20"},Cm={class:"absolute top-[6.5rem] right-2 space-y-1 z-20"},$m={class:"absolute bottom-4 left-4 z-20"},vm={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},Sm={class:"flex-1 flex flex-col h-full"},Am={class:"px-3 pt-3 pb-2 border-b border-gray-100"},Lm={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"},Tm=["aria-selected","onClick"],Fm={class:"leading-none"},Mm={class:"flex flex-col flex-1 overflow-y-hidden p-3"},Dm=oe(e.defineComponent({__name:"service",props:{hideServiceKey:{type:Boolean,default:!1}},setup(t){var P,M;const n=he.useRoute(),o=he.useRouter(),{id:r}=n.params,l=e.ref(null),a=e.ref({}),i=e.ref(null),s=((M=(P=e.getCurrentInstance())==null?void 0:P.appContext.config.globalProperties)==null?void 0:M.$settings)||null,f=e.ref(null),u=e.ref(""),x=e.ref([]),c=e.ref([]),g=e.ref([]),d=e.ref("list"),y=e.ref(""),m=e.ref([]),h=e.computed(()=>{var v,b;return((v=i.value)==null?void 0:v.id)??((b=i.value)==null?void 0:b.service_id)??null}),p=e.computed(()=>{const v=(s==null?void 0:s.map)||null,b=(v==null?void 0:v.boundary)??null,k=(v==null?void 0:v.katottg)??null;return!b&&!k?null:{boundary:b,katottg:k}}),E=[{key:"style",label:"Стиль",icon:Zo},{key:"popup",label:"Попап",icon:fu},{key:"filter",label:"Фільтр",icon:xu},{key:"legend",label:"Легенда",icon:au},{key:"card",label:"Картка",icon:du}],A=E.map(v=>v.key),F=e.ref("style");e.onMounted(async()=>{const v=n.query.tab;v&&A.includes(v)&&(F.value=v),await w()}),e.watch(F,v=>{n.query.tab!==v&&o.replace({query:{...n.query,tab:v}})}),e.watch(()=>n.query.tab,v=>{v&&A.includes(v)&&F.value!==v&&(F.value=v)});function D(v){if(!v)return null;try{return JSON.parse(JSON.stringify(v))}catch(b){return console.warn("Failed to clone style",b),null}}function $(v){if(!v)return null;if(typeof v=="string")try{return rn(Yo.load(v)||null)}catch(b){return console.warn("Failed to parse style yaml",b),null}return rn(D(v))}const w=async()=>{try{const v=await fetch(`/api/gis-service/${r}`);if(!v.ok)throw new Error(`${v.status}`);const b=await v.json();a.value=b||{},l.value=r;const k=$(b.style);i.value=b?{...b,style:D(k)}:null,f.value=k,u.value=typeof(b==null?void 0:b.style)=="string"?b.style:k?Yo.dump(k):"",c.value=(b==null?void 0:b.popup)||[],d.value=b.card_mode==="html"?"html":"list",g.value=b.card,y.value=b.html,x.value=(b==null?void 0:b.legend)||[],m.value=(b==null?void 0:b.filters)||[]}catch(v){console.error("Failed to fetch map info",v)}};e.watch(()=>{var v;return(v=i.value)==null?void 0:v.style},v=>{f.value=$(v)},{deep:!0});async function C(v,b){await I({[v]:b},v)}function _(){const v=D(f.value);i.value=i.value?{...i.value,style:v}:i.value}async function I(v,b){if(i.value={...i.value||{},...v},typeof v.html<"u"&&(a.value={...a.value||{},html:v.html}),!!h.value)try{if(!(await fetch(`/api/gis-service/${h.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)})).ok)throw new Error("Save failed");ce.notify({type:"success",title:"Успіх",message:`${b} saved`}),await w()}catch(k){ce.notify({type:"error",title:"Помилка",message:`Failed to save ${b}`}),console.error(k)}}async function q(v,b){if(v!=="card"){await C(v,b);return}const k=(b==null?void 0:b.card_mode)==="html"?"html":"list",N=k==="html"&&typeof(b==null?void 0:b.html)=="string"?b.html:"",B=(k==="html"?[]:null)||(Array.isArray(b==null?void 0:b.list)?b.list:[]);g.value=B,d.value=k,y.value=N;const T={card_mode:k};k==="html"&&(T.html=N),k==="list"&&(T.card=B),await I(T,"card")}return(v,b)=>{var k,N,B,T;return e.openBlock(),e.createElementBlock("div",gm,[e.createElementVNode("div",ym,[e.createElementVNode("div",hm,[e.createElementVNode("div",xm,[e.createElementVNode("div",bm,[e.createElementVNode("button",{onClick:b[0]||(b[0]=L=>v.$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[10]||(b[10]=[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",km,e.toDisplayString((k=i.value)==null?void 0:k.name),1),t.hideServiceKey?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",wm," Сервіс: "+e.toDisplayString((N=i.value)==null?void 0:N.service_key),1))])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:(B=i.value)==null?void 0:B.description},e.toDisplayString((T=i.value)==null?void 0:T.description),9,_m)])]),e.createElementVNode("div",Em,[e.createElementVNode("div",Nm,[e.createVNode(It,null,{default:e.withCtx(()=>{var L,j,U,Y,re,X,ee;return[(L=i.value)!=null&&L.service_id?(e.openBlock(),e.createBlock(dp,{key:0,id:(j=i.value)==null?void 0:j.service_id,layer:i.value,"style-spec":((U=i.value)==null?void 0:U.style)||null},null,8,["id","layer","style-spec"])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createBlock(ol,{key:1,"layer-id":h.value,boundary:((Y=i.value)==null?void 0:Y.boundary)||((re=p.value)==null?void 0:re.boundary)||null,katottg:((X=i.value)==null?void 0:X.katottg)||((ee=p.value)==null?void 0:ee.katottg)||null},null,8,["layer-id","boundary","katottg"])):e.createCommentVNode("",!0),e.createElementVNode("div",Bm,[h.value?(e.openBlock(),e.createBlock(pn,{key:0,"layer-id":h.value,filters:m.value},null,8,["layer-id","filters"])):e.createCommentVNode("",!0)]),b[11]||(b[11]=e.createElementVNode("div",{id:"map-filter-popover-host",class:"map-widget__filter-host"},null,-1)),e.createElementVNode("div",Vm,[e.createVNode(Nt)]),e.createElementVNode("div",Cm,[e.createVNode(hn),a.value.center?(e.openBlock(),e.createBlock(hn,{key:0,targetCenter:a.value.center,targetLabel:"Ценр даних"},null,8,["targetCenter"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",$m,[e.createVNode(mn,{items:x.value||null},null,8,["items"])]),e.createVNode(el),e.createVNode(nl,{html:a.value.html},null,8,["html"])]}),_:1})])])]),e.createElementVNode("div",vm,[e.createElementVNode("div",Sm,[e.createElementVNode("div",Am,[e.createElementVNode("div",Lm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,L=>e.createElementVNode("button",{key:L.key,type:"button",role:"tab","aria-selected":F.value===L.key,class:e.normalizeClass(["whitespace-nowrap 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",F.value===L.key?"bg-white shadow-sm text-gray-700":""]),onClick:j=>F.value=L.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(L.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Fm,e.toDisplayString(L.label),1)],10,Tm)),64))])]),e.createElementVNode("div",Mm,[F.value==="style"?(e.openBlock(),e.createBlock(Bu,{key:0,token:h.value,"style-text":u.value,"style-yaml":f.value,"onUpdate:styleYaml":b[1]||(b[1]=L=>f.value=L),"onUpdate:styleText":b[2]||(b[2]=L=>u.value=L),onUpdate:_},null,8,["token","style-text","style-yaml"])):F.value==="legend"?(e.openBlock(),e.createBlock(Qu,{key:1,token:h.value,columns:x.value,"onUpdate:columns":b[3]||(b[3]=L=>x.value=L),onSave:b[4]||(b[4]=L=>C("legend",L))},null,8,["token","columns"])):F.value==="popup"?(e.openBlock(),e.createBlock(Hu,{key:2,token:h.value,columns:c.value,fields:a.value.fields,"onUpdate:columns":b[5]||(b[5]=L=>c.value=L),onSave:b[6]||(b[6]=L=>C("popup",L))},null,8,["token","columns","fields"])):F.value==="card"?(e.openBlock(),e.createBlock(ip,{key:3,token:h.value,columns:g.value,fields:a.value.fields,"view-mode":d.value,html:y.value,"onUpdate:columns":b[7]||(b[7]=L=>g.value=L),onSave:q},null,8,["token","columns","fields","view-mode","html"])):F.value==="filter"?(e.openBlock(),e.createBlock(cp,{key:4,token:h.value,fields:a.value.fields,columns:m.value,"onUpdate:columns":b[8]||(b[8]=L=>m.value=L),onSave:b[9]||(b[9]=L=>C("filters",L))},null,8,["token","fields","columns"])):e.createCommentVNode("",!0)])])])])}}}),[["__scopeId","data-v-5195b994"]]),Im={class:"flex-1 overflow-y-auto p-4 sm:p-6"},jm={class:"space-y-3"},zm={class:"bg-white p-3 rounded-xl border border-gray-200 shadow-sm"},Om={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2"},Rm={class:"text-xs text-gray-500 mb-1"},Pm={key:0,class:"text-base text-md font-semibold text-gray-900"},Um={key:1,class:"text-base text-md font-semibold text-gray-900"},qm={class:"bg-white p-3 rounded-xl border border-gray-200 shadow-sm"},Hm={class:"space-y-2"},Wm={class:"bg-gradient-to-br from-blue-50 to-blue-100/30 p-4 rounded-lg border border-blue-200"},Ym={class:"text-sm font-semibold text-gray-900"},Zm={class:"text-xs text-gray-600 mt-1"},Gm={class:"grid grid-cols-2 gap-3"},Km={class:"text-xs text-gray-500 mb-1"},Xm={class:"text-sm font-semibold text-gray-900"},Jm={class:"bg-gray-50 p-4 rounded-lg"},Qm={class:"grid grid-cols-2 gap-4"},ef={class:"text-xs text-gray-500 mb-1"},tf={class:"text-sm font-semibold text-gray-900"},nf=e.defineComponent({directives:{tooltip:ce.TooltipDirective},__name:"raster-info-tab",props:{details:{}},setup(t){return(n,o)=>{const r=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",Im,[e.createElementVNode("div",jm,[e.createElementVNode("div",zm,[o[0]||(o[0]=e.createElementVNode("div",{class:"mb-4"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Основні параметри")],-1)),e.createElementVNode("div",Om,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.baseParams,l=>(e.openBlock(),e.createElementBlock("div",{key:l.label,class:"bg-gray-50 p-2 rounded-lg"},[e.createElementVNode("p",Rm,e.toDisplayString(l.label),1),l.tooltip?e.withDirectives((e.openBlock(),e.createElementBlock("p",Pm,[e.createTextVNode(e.toDisplayString(l.value),1)])),[[r,l.tooltip]]):(e.openBlock(),e.createElementBlock("p",Um,e.toDisplayString(l.value),1))]))),128))])]),e.createElementVNode("div",qm,[o[3]||(o[3]=e.createElementVNode("div",{class:"mb-2"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Просторова інформація")],-1)),e.createElementVNode("div",Hm,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("p",{class:"text-xs text-gray-500 mb-2"},"Система координат",-1)),e.createElementVNode("div",Wm,[e.createElementVNode("p",Ym,e.toDisplayString(t.details.spatial.crs.code),1),e.createElementVNode("p",Zm,e.toDisplayString(t.details.spatial.crs.description),1)])]),e.createElementVNode("div",null,[o[2]||(o[2]=e.createElementVNode("p",{class:"text-xs text-gray-500 mb-2"},"Межі покриття",-1)),e.createElementVNode("div",Gm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.spatial.bounds,l=>(e.openBlock(),e.createElementBlock("div",{key:l.label,class:"bg-gray-50 p-2 rounded-lg border border-gray-200"},[e.createElementVNode("p",Km,e.toDisplayString(l.label),1),e.createElementVNode("p",Xm,e.toDisplayString(l.value),1)]))),128))])]),e.createElementVNode("div",Jm,[e.createElementVNode("div",Qm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.spatial.resolution,l=>(e.openBlock(),e.createElementBlock("div",{key:l.label},[e.createElementVNode("p",ef,e.toDisplayString(l.label),1),e.createElementVNode("p",tf,e.toDisplayString(l.value),1)]))),128))])])])])])])}}}),of={class:"flex-1 overflow-y-auto space-y-3 pr-1"},lf={class:"font-medium text-sm text-gray-800"},rf={class:"text-xs text-gray-500"},af=e.defineComponent({__name:"raster-files-tab",props:{files:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",of,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.files,r=>(e.openBlock(),e.createElementBlock("div",{key:r.name,class:"border border-gray-100 rounded-xl p-4 shadow-sm bg-white flex items-start justify-between"},[e.createElementVNode("div",null,[e.createElementVNode("p",lf,e.toDisplayString(r.name),1),e.createElementVNode("p",rf,e.toDisplayString(r.resolution)+" • "+e.toDisplayString(r.size)+"MB",1)]),e.createElementVNode("span",{class:e.normalizeClass(["text-[11px] font-semibold px-2 py-0.5 rounded-full",r.statusClass])},e.toDisplayString(r.status),3)]))),128))]))}}),sf={},cf={xmlns:"http://www.w3.org/2000/svg",width:"12px",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"};function df(t,n){return e.openBlock(),e.createElementBlock("svg",cf,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M20,16v4a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4H8",fill:"none",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},null,-1),e.createElementVNode("polygon",{fill:"none",points:"12.5 15.8 22 6.2 17.8 2 8.3 11.5 8 16 12.5 15.8",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},null,-1)])])}const uf=oe(sf,[["render",df]]),pf={},mf={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 ff(t,n){return e.openBlock(),e.createElementBlock("svg",mf,[...n[0]||(n[0]=[e.createElementVNode("circle",{cx:"12",cy:"12",r:"9"},null,-1),e.createElementVNode("line",{x1:"12",y1:"8",x2:"12",y2:"8"},null,-1),e.createElementVNode("path",{d:"M11 12h1v4h1"},null,-1)])])}const gf=oe(pf,[["render",ff]]),yf={class:"absolute top-[5.5rem] left-4 z-30 flex items-center gap-2 rounded-full bg-white/90 px-3 py-1 text-xs font-medium text-slate-600 shadow-sm backdrop-blur"},hf=e.defineComponent({__name:"RasterLayer",props:{tileUrl:{},extent:{},layerId:{},beforeId:{}},setup(t){const n=t,o=n.layerId||"raster-preview-layer",r=`${o}-source`,l=n.extent&&n.extent.length===4?[...n.extent]:void 0,a=ue(o,{sourceId:r,source:{type:"raster",tiles:n.tileUrl?[n.tileUrl]:[],tileSize:256,...l?{bounds:l}:{}},layer:{id:`${o}-raster`,type:"raster",paint:{"raster-opacity":.95}},beforeId:n.beforeId??null}),{fitBounds:i}=Se(),s=e.ref(.95);e.watch(()=>n.tileUrl,x=>{if(!x){a.setVisible(!1);return}a.setVisible(!0),a.setTiles([x])},{immediate:!0}),e.watch(()=>s.value,x=>{a.setOpacity(x)},{immediate:!0});let f=null;e.watch(()=>n.extent,x=>{if(!x||x.length!==4)return;const c=x.join(",");c!==f&&(f=c,i==null||i([[x[0],x[1]],[x[2],x[3]]],{padding:40,maxZoom:17}))},{immediate:!0});const u=e.computed(()=>`${Math.round(s.value*100)}%`);return(x,c)=>(e.openBlock(),e.createElementBlock("div",yf,[c[1]||(c[1]=e.createElementVNode("span",null,"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"1",step:"0.01","onUpdate:modelValue":c[0]||(c[0]=g=>s.value=g),class:"h-1 w-28 cursor-pointer appearance-none rounded-full bg-slate-300 focus:outline-none",style:{"accent-color":"#3b82f6"}},null,512),[[e.vModelText,s.value,void 0,{number:!0}]]),e.createElementVNode("span",null,e.toDisplayString(u.value),1)]))}}),xf={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},bf={class:"flex-1 relative overflow-hidden"},kf={class:"absolute top-0 left-0 w-full z-20"},wf={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},_f={class:"flex items-center gap-3"},Ef={class:"font-semibold text-lg text-gray-800 line-clamp-1"},Nf={key:0,class:"text-xs text-gray-500 truncate"},Bf=["title"],Vf={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]"},Cf={class:"relative w-full h-full"},$f={class:"absolute top-4 left-4 z-20"},vf={class:"w-[520px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},Sf={class:"flex-1 flex flex-col h-full"},Af={class:"px-3 pt-3 pb-2 border-b border-gray-100"},Lf={class:"items-center justify-center text-muted-foreground grid w-full grid-cols-2 h-12 p-1 bg-gray-50 rounded-xl shadow-sm"},Tf=["aria-selected","onClick"],Ff={class:"leading-none"},Mf={class:"flex flex-col flex-1 overflow-y-hidden p-4"},Df={key:0,class:"mb-3 text-xs text-slate-500"},If={key:1,class:"mb-3 text-xs text-rose-600"},jf=e.defineComponent({__name:"raster",setup(t){const n=[{cardClass:"bg-gradient-to-br from-green-50 to-green-100/30 border-green-200",titleClass:"text-green-900"},{cardClass:"bg-gradient-to-br from-blue-50 to-blue-100/30 border-blue-200",titleClass:"text-blue-900"},{cardClass:"bg-gradient-to-br from-purple-50 to-purple-100/30 border-purple-200",titleClass:"text-purple-900"},{cardClass:"bg-gradient-to-br from-gray-50 to-gray-100/30 border-gray-200",titleClass:"text-gray-900"}],o=he.useRouter(),r=he.useRoute(),l=e.computed(()=>{var k;const b=(k=r.params)==null?void 0:k.id;return typeof b=="string"?b:void 0}),a=e.ref(null),i=e.ref(!1),s=e.ref(null),f=e.computed(()=>{var k;const b=(k=a.value)==null?void 0:k.url;return b?/^https?:\/\//i.test(b)||typeof window>"u"||typeof location>"u"?b:`${location.origin}${b}`:""}),u=e.computed(()=>{var b;return((b=a.value)==null?void 0:b.extent)??null}),x=e.computed(()=>l.value?`raster-${l.value}`:void 0),c=e.computed(()=>{const b=x.value??"raster",k=u.value&&u.value.length===4?u.value.join(","):"no-extent";return`${b}-${k}`}),g=e.computed(()=>!!f.value),d=e.computed(()=>{var L,j;const b=a.value,k=b==null?void 0:b.extent,N=l.value,B=N??"—",T=N?`Растер ${N}`:"Растер";return{id:B,name:(b==null?void 0:b.name)||((j=(L=b==null?void 0:b.files)==null?void 0:L[0])==null?void 0:j.name)||T,description:b!=null&&b.extension?`Формат ${b.extension.toUpperCase()}`:"Попередній перегляд растрового шару. Реальні метадані підвантажуються.",coverage:k&&k.length===4?`${v(k[0])}, ${v(k[1])} → ${v(k[2])}, ${v(k[3])}`:"Покриття уточнюється",crs:b!=null&&b.srid?`EPSG:${b.srid}`:"EPSG:4326",source:b!=null&&b.proj4?b.proj4:"Джерело: Mapnik",updatedAt:b!=null&&b.cache?"Дані кешовано":"Нові дані"}}),y=e.computed(()=>{const b=a.value;return b?[b.source_path,b.description,b.is_public?"Публічна":"Не публічна",b.is_active?"Архівна":"Активна"].filter(k=>k).join(", "):""}),m=[{key:"info",label:"Інформація",icon:gf},{key:"files",label:"Файли",icon:uf}],h=m.map(b=>b.key),p=e.ref(h.includes(r.query.tab)?r.query.tab:"info");e.watch(()=>r.query.tab,b=>{b&&h.includes(b)&&p.value!==b&&(p.value=b)}),e.watch(p,b=>{r.query.tab!==b&&o.replace({query:{...r.query,tab:b}})});const E=e.computed(()=>D(a.value)),A=e.computed(()=>w(a.value));e.watch(l,()=>{F()},{immediate:!0});async function F(){const b=l.value;if(!b){a.value=null,s.value=null;return}i.value=!0,s.value=null;try{const k=await fetch(`/api/gis-raster/${encodeURIComponent(b)}`);if(!k.ok)throw new Error(`HTTP ${k.status}`);const N=await k.json();a.value=N}catch(k){console.error("Failed to load raster info",k),a.value=null,s.value=k instanceof Error?k.message:String(k)}finally{i.value=!1}}function D(b){var k;return(k=b==null?void 0:b.files)!=null&&k.length?b.files.map(N=>({name:N.name,resolution:$(N.name,b),size:N.size||"—",status:"Готово",statusClass:"bg-emerald-50 text-emerald-600 border border-emerald-100"})):[]}function $(b,k){const N=b.toLowerCase();return N.endsWith(".tfw")?"Georeference":N.endsWith(".xml")?"Опис":N.endsWith(".tif")||N.endsWith(".tiff")?k!=null&&k.resolution?k.resolution:"Растер":(k==null?void 0:k.resolution)??"Файл"}function w(b){return b?{baseParams:_(b),spatial:{crs:{code:b.srid?`EPSG:${b.srid}`:"EPSG:4326",description:b.proj4||"WGS 84 — World Geodetic System 1984"},bounds:I(b.extent),resolution:q(b)},statistics:P(b),technical:M(b)}:null}function C(b){return b!=null&&b.length?b.map(N=>{var T;if(!N)return"";const B=N.trim().split(/\s+/)[0];return((T=B==null?void 0:B[0])==null?void 0:T.toUpperCase())||""}).filter(Boolean).join(""):""}function _(b){var L,j;const k=b.bands_count??((L=b.bands)==null?void 0:L.length)??"—",N=C(b.bands),B=(b.bands??[]).map(U=>U.trim()).filter(U=>U.length>0),T=B.length?B.join(", "):void 0;return[{label:"Розмір растру, px",value:b.width&&b.height?`${b.width}×${b.height}`:"—"},{label:"Формат файлу",value:((j=b.extension)==null?void 0:j.toUpperCase())??"—"},{label:"Розмір файлу, mb",value:b.total_size?`${b.total_size}`:"—"},{label:"Кількість каналів",value:typeof k=="number"?`${k}${N?` (${N})`:""}`:`${k}${N?` (${N})`:""}`,tooltip:T},{label:"Глибина кольору",value:b.color_depth?`${b.color_depth} біт/канал`:"—"},{label:"Стиснення",value:b.compression||"—"}]}function I(b){return!b||b.length!==4?[]:[{label:"Північ",value:v(b[3],"N")},{label:"Схід",value:v(b[2],"E")},{label:"Південь",value:v(b[1],"S")},{label:"Захід",value:v(b[0],"W")}]}function q(b){const k=[{label:"Роздільна здатність",value:b.resolution||"—"}];return b.width&&b.height&&k.push({label:"Розмір пікселя",value:`${b.width} × ${b.height} px`}),k}function P(b){var k;return(k=b.bands)!=null&&k.length?b.bands.map((N,B)=>{const T=n[B%n.length];return{label:`Канал ${B+1}${N?` (${N})`:""}`,cardClass:T.cardClass,titleClass:T.titleClass,metrics:[{label:"Назва",value:N||`Канал ${B+1}`},{label:"Глибина",value:b.color_depth?`${b.color_depth} біт`:"—"},{label:"Статус",value:b.cache?"Кешовано":"Готово"}]}}):[]}function M(b){var k;return[{label:"Тип даних",value:b.color_depth?`Unsigned Integer ${b.color_depth}-bit`:"—"},{label:"Компресія",value:b.compression||"—"},{label:"Кольорова інтерпретація",value:((k=b.bands)==null?void 0:k.join(", "))||"—"},{label:"SRID",value:b.srid?`EPSG:${b.srid}`:"—"},{label:"Проекція (proj4)",value:b.proj4||"—"},{label:"URL тайла",value:b.url||"—"}]}function v(b,k){if(b==null||Number.isNaN(b))return"—";const N=`${b.toFixed(5)}°`;return k?`${N} ${k}`:N}return(b,k)=>(e.openBlock(),e.createElementBlock("div",xf,[e.createElementVNode("div",bf,[e.createElementVNode("div",kf,[e.createElementVNode("div",wf,[e.createElementVNode("div",_f,[e.createElementVNode("button",{type:"button",onClick:k[0]||(k[0]=N=>e.unref(o).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"},[...k[1]||(k[1]=[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",Ef,e.toDisplayString(d.value.name),1),y.value?(e.openBlock(),e.createElementBlock("div",Nf,e.toDisplayString(y.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:d.value.description},e.toDisplayString(d.value.description),9,Bf)])]),e.createElementVNode("div",Vf,[e.createElementVNode("div",Cf,[e.createVNode(It,null,{default:e.withCtx(()=>[g.value?(e.openBlock(),e.createBlock(hf,{key:c.value,"tile-url":f.value,extent:u.value,"layer-id":x.value},null,8,["tile-url","extent","layer-id"])):e.createCommentVNode("",!0),e.createElementVNode("div",$f,[e.createVNode(Nt)])]),_:1})])])]),e.createElementVNode("div",vf,[e.createElementVNode("div",Sf,[e.createElementVNode("div",Af,[e.createElementVNode("div",Lf,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(m,N=>e.createElementVNode("button",{key:N.key,type:"button",role:"tab","aria-selected":p.value===N.key,class:e.normalizeClass(["whitespace-nowrap 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",p.value===N.key?"bg-white shadow-sm text-gray-700":""]),onClick:B=>p.value=N.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(N.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Ff,e.toDisplayString(N.label),1)],10,Tf)),64))])]),e.createElementVNode("div",Mf,[i.value?(e.openBlock(),e.createElementBlock("div",Df," Завантаження метаданих растру… ")):s.value?(e.openBlock(),e.createElementBlock("div",If," Не вдалося отримати дані: "+e.toDisplayString(s.value),1)):e.createCommentVNode("",!0),p.value==="files"?(e.openBlock(),e.createBlock(af,{key:2,files:E.value},null,8,["files"])):A.value?(e.openBlock(),e.createBlock(nf,{key:3,details:A.value},null,8,["details"])):e.createCommentVNode("",!0)])])])]))}}),zf={},Of={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-table"};function Rf(t,n){return e.openBlock(),e.createElementBlock("svg",Of,[...n[0]||(n[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 Pf=oe(zf,[["render",Rf]]),Uf={class:"flex flex-col h-full"},qf={class:"flex justify-end mb-3 gap-2"},Hf=e.defineComponent({__name:"cartocss-css-tab",props:{modelValue:{}},emits:["update:modelValue","save"],setup(t,{emit:n}){const o=t,r=n,l=e.computed({get:()=>o.modelValue,set:a=>r("update:modelValue",a)});return(a,i)=>(e.openBlock(),e.createElementBlock("div",Uf,[e.createElementVNode("div",qf,[e.createElementVNode("button",{type:"button",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",onClick:i[0]||(i[0]=s=>a.$emit("save"))},[...i[2]||(i[2]=[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:"h-3.5 w-3.5"},[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 2H5a 2 2 0 0 1-2-2V5a 2 2 0 0 1 2-2z"}),e.createElementVNode("path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a 1 1 0 0 0-1 1v7"}),e.createElementVNode("path",{d:"M7 3v4a1 1 0 0 0 1 1h7"})],-1),e.createTextVNode(" Зберегти ",-1)])])]),e.createVNode(Dt,{modelValue:l.value,"onUpdate:modelValue":i[1]||(i[1]=s=>l.value=s),language:"css",class:"flex-1 rounded-lg overflow-hidden"},null,8,["modelValue"])]))}}),Wf={class:"flex flex-col flex-1 min-h-0"},Yf={class:"flex justify-between mb-3 gap-2"},Zf={class:"text-left"},Gf={class:"font-medium text-gray-900"},Kf={class:"text-xs text-gray-500"},Xf={class:"flex justify-center gap-2"},Jf=["checked","onChange"],Qf={class:"text-sm font-medium text-gray-900"},e0=e.defineComponent({__name:"cartocss-data-tab",props:{modelValue:{default:[]},modelModifiers:{}},emits:e.mergeModels(["save"],["update:modelValue"]),setup(t,{emit:n}){const o=[{key:"table",label:"Таблиця",slot:"datasetCell"},{key:"active",label:"Активний",slot:"activeCell",width:"140px"},{key:"zoom",label:"Min Зум",slot:"zoomCell",width:"140px"}],r={table:{type:"text",label:"Таблиця",validators:["required"]},query:{type:"text",label:"Query"},srid:{type:"number",label:"SRID"},key:{type:"text",label:"Ключ",validators:["required"]},columns:{type:"text",label:"Колонки"},active:{type:"switcher",label:"Активний"},minzoom:{type:"number",label:"Min Зум"},maxzoom:{type:"number",label:"Max Зум"},proj4text:{type:"text",label:"PROJ4"}},l=e.defineAsyncComponent(()=>import("@opengis/core").then(m=>m.VsModal)),a=e.defineAsyncComponent(()=>import("@opengis/form")),i=e.useModel(t,"modelValue"),s=n,f=e.ref(!1),u=e.ref({table:"",query:"",srid:"",key:"",columns:"",minzoom:"0-12",maxzoom:"12-20",proj4text:"",active:!0}),x={table:{type:"text",label:"Таблиця",validators:["required"]},key:{type:"text",label:"Ключ",validators:["required"]},columns:{type:"text",label:"Колонки"},query:{type:"text",label:"Query"},srid:{type:"number",label:"SRID"},active:{type:"switcher",label:"Активна"},minzoom:{type:"number",label:"Min Зум"},maxzoom:{type:"number",label:"Max Зум"},proj4text:{type:"text",label:"PROJ4"}};function c(){u.value={table:"",query:"",srid:"",key:"",columns:"",minzoom:"",maxzoom:"",proj4text:"",active:!0},f.value=!0}function g(){f.value=!1}function d(){var p,E;const m=(p=u.value.table)==null?void 0:p.trim(),h=(E=u.value.key)==null?void 0:E.trim();if(!m||!h){ce.notify({type:"warning",title:"Перевірка",message:"Вкажіть таблицю та підпис"});return}i.value=[...Array.isArray(i.value)?i.value:[],{...u.value,table:m,key:h}],f.value=!1}function y(m,h){var E;const p=((E=h==null?void 0:h.target)==null?void 0:E.checked)??!1;m.active=p,i.value=Array.isArray(i.value)?[...i.value]:[]}return(m,h)=>(e.openBlock(),e.createElementBlock("div",Wf,[e.createElementVNode("div",Yf,[e.createElementVNode("button",{type:"button",class:"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 hover:from-gray-600 hover:to-gray-500",onClick:c}," Додати таблицю "),e.createElementVNode("button",{type:"button",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",onClick:h[0]||(h[0]=p=>s("save"))}," Зберегти ")]),e.createVNode(Ze,{modelValue:i.value,"onUpdate:modelValue":h[1]||(h[1]=p=>i.value=p),"columns-scheme":o,"form-scheme":r,"add-button":!1,"main-col-width":"260px"},{datasetCell:e.withCtx(({row:p})=>[e.createElementVNode("div",Zf,[e.createElementVNode("div",Gf,e.toDisplayString(p.table),1),e.createElementVNode("div",Kf,e.toDisplayString(p.key),1)])]),activeCell:e.withCtx(({row:p})=>[e.createElementVNode("label",Xf,[e.createElementVNode("input",{type:"checkbox",class:"h-4 w-4 text-sky-500 border-gray-300 rounded focus:ring-sky-300",checked:p.active,onChange:E=>y(p,E)},null,40,Jf)])]),zoomCell:e.withCtx(({row:p})=>[e.createElementVNode("div",Qf,e.toDisplayString(p.zoom),1)]),_:1},8,["modelValue"]),e.createVNode(e.unref(l),{teleport:"#modal",visible:f.value,"onUpdate:visible":h[3]||(h[3]=p=>f.value=p),title:"Нова таблиця CartoCSS"},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end gap-2 p-4 border-т"},[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-gray-100 text-gray-700",onClick:g}," Скасувати "),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:d}," Додати ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(a),{values:u.value,"onUpdate:values":h[2]||(h[2]=p=>u.value=p),schema:x},null,8,["values"])]),_:1},8,["visible"])]))}}),t0=e.defineComponent({__name:"CartocssLayerLoader",props:{layerId:{type:String,required:!0},tileUrl:{type:String,default:""},title:{type:String,default:""},active:{type:Boolean,default:!1},owner:{type:String,default:""},opacity:{type:Number,default:.85}},setup(t){const n=t,o=Se(),{activateTemporaryLayer:r,deactivateTemporaryLayer:l}=yn(o.map),a=e.computed(()=>{var x;const u=`${(x=n==null?void 0:n.tileUrl)==null?void 0:x.trim()}`;return u?typeof window>"u"||typeof location>"u"||/^https?:\/\//i.test(u)?u:u.startsWith("//")?`${window.location.protocol}${u}`:u.startsWith("/")?`${location.origin}${u}`:`${location.origin}/${u}`:""});let i="",s="";function f(){const u=n.active&&!!a.value;i&&(!u||i!==n.layerId)&&(l(i,s||void 0),i="",s=""),u&&(r({id:n.layerId,title:n.title||n.layerId,url:a.value,opacity:n.opacity},{},n.owner),i=n.layerId,s=n.owner||"")}return e.watch(()=>[n.layerId,a.value,n.active,n.owner],f,{immediate:!0}),e.onUnmounted(()=>{i&&(l(i,s||void 0),i="",s="")}),()=>{}}}),n0={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},o0={class:"flex-1 relative overflow-hidden"},l0={class:"absolute top-0 left-0 w-full z-20"},r0={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},a0={class:"flex items-center gap-3"},i0={class:"font-semibold text-lg text-gray-800 line-clamp-1"},s0={key:0,class:"text-xs text-gray-500 truncate"},c0={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]"},d0={class:"relative w-full h-full"},u0={class:"absolute top-4 left-4 z-20"},p0={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},m0={class:"flex-1 flex flex-col h-full"},f0={class:"px-3 pt-3 pb-2 border-b border-gray-100"},g0={class:"items-center justify-center text-muted-foreground grid w-full grid-cols-2 h-12 p-1 bg-gray-50 rounded-xl shadow-sm"},y0=["aria-selected","onClick"],h0={class:"leading-none"},x0={class:"flex flex-col flex-1 overflow-y-hidden p-4"},b0={key:0,class:"flex-1 flex items-center justify-center text-sm text-gray-500"},k0="cartocss-demo-001",w0=e.defineComponent({__name:"cartocss",setup(t){const n=he.useRouter(),o=he.useRoute(),r=[{key:"css",label:"CSS",icon:Zo},{key:"data",label:"Дані",icon:Pf}],l=r.map(w=>w.key),a=e.ref(l.includes(o.query.tab)?o.query.tab:"css"),i=e.computed(()=>o.params.id||k0),s=e.ref({id:i.value,name:"",description:""}),f=e.ref("");e.ref("");const u=e.ref([]),x=e.ref(!1),c=e.ref(!1),g=e.ref(""),d=e.ref(0),y=e.ref(!1),m=e.computed(()=>`cartocss-layer-${i.value}`),h=e.ref(null),p=e.computed(()=>{var q;const w=(q=g.value)==null?void 0:q.trim();if(!w)return"";const C=d.value,_=w.includes("?")?"&":"?",I=C?`nocache=1&ts=${C}`:"nocache=1";return`${w}${_}${I}`}),E=e.computed(()=>{const w=h.value;return w?(u.value.map(_=>_==null?void 0:_.table).filter(Boolean),[w.description,w.group_id?`Група: ${w.group_id}`:null,w.is_public===!0?"Публічний":"Не публічний",w.enabled===!0?"Активний":"Неактивний"].filter(Boolean).join(", ")):""});e.watch(i,w=>{w&&D(w)},{immediate:!0}),e.watch(()=>o.query.tab,w=>{w&&l.includes(w)&&a.value!==w&&(a.value=w)}),e.watch(a,w=>{o.query.tab!==w&&n.replace({query:{...o.query,tab:w}})});function A(w){if(!w)return null;if(typeof w=="string")try{return JSON.parse(w)}catch(C){return console.warn("Failed to parse CartoCSS config",C),null}return typeof w=="object"?w:null}function F(w){const C=Array.isArray(w)?w:w==null?void 0:w.datasets;return Array.isArray(C)?C.map((_,I)=>({table:(_==null?void 0:_.table)||(_==null?void 0:_.id)||`dataset_${I+1}`,query:(_==null?void 0:_.query)||"",srid:(_==null?void 0:_.srid)||"",key:(_==null?void 0:_.key)||(_==null?void 0:_.label)||"Без підпису",active:typeof(_==null?void 0:_.active)=="boolean"?_.active:!0,minzoom:typeof(_==null?void 0:_.zoom)>"u"?"":String(_.zoom),maxzoom:typeof(_==null?void 0:_.maxzoom)>"u"?"":String(_.maxzoom),columns:(_==null?void 0:_.columns)||"",proj4text:(_==null?void 0:_.proj4text)||""})):[]}async function D(w,C){x.value=!0;try{const _=await fetch(`/api/gis-css/${w}`);if(!_.ok)throw new Error(`Failed to load cartocss: ${_.status}`);const I=await _.json(),q=(I==null?void 0:I.message)||I||{};h.value=q,s.value={id:q.cartocss_key||w,name:q.name||s.value.name,description:q.description||s.value.description},f.value=typeof q.style=="string"?q.style:"";const P=A(q.config??[]);u.value=F(P);const M=typeof q.url=="string"?q.url:"";g.value=M,y.value=!!(M&&q.enabled!==!1),d.value=C!=null&&C.bustCache?Date.now():0}catch(_){console.error("Failed to fetch CartoCSS",_),y.value=!1,g.value="",d.value=0,h.value=null}finally{x.value=!1}}async function $(){if(i.value){c.value=!0;try{const w={style:f.value||"",config:u.value},C=await fetch(`/api/gis-css/${i.value}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(w)});if(!C.ok)throw new Error(`Failed to save cartocss: ${C.status}`);ce.notify({type:"success",title:"Збережено",message:"CartoCSS оновлено"}),await D(i.value,{bustCache:!0})}catch(w){console.error("Failed to save CartoCSS",w),ce.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти CartoCSS"})}finally{c.value=!1}}}return(w,C)=>(e.openBlock(),e.createElementBlock("div",n0,[e.createElementVNode("div",o0,[e.createElementVNode("div",l0,[e.createElementVNode("div",r0,[e.createElementVNode("div",a0,[e.createElementVNode("button",{type:"button",onClick:C[0]||(C[0]=_=>e.unref(n).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"},[...C[3]||(C[3]=[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",i0,e.toDisplayString(s.value.name),1),E.value?(e.openBlock(),e.createElementBlock("div",s0,e.toDisplayString(E.value),1)):e.createCommentVNode("",!0)])])])]),e.createElementVNode("div",c0,[e.createElementVNode("div",d0,[e.createVNode(It,null,{default:e.withCtx(()=>[e.createElementVNode("div",u0,[e.createVNode(Nt)]),p.value?(e.openBlock(),e.createBlock(t0,{key:0,"layer-id":m.value,"tile-url":p.value,active:y.value,title:s.value.name,owner:i.value},null,8,["layer-id","tile-url","active","title","owner"])):e.createCommentVNode("",!0)]),_:1})])])]),e.createElementVNode("div",p0,[e.createElementVNode("div",m0,[e.createElementVNode("div",f0,[e.createElementVNode("div",g0,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,_=>e.createElementVNode("button",{key:_.key,type:"button",role:"tab","aria-selected":a.value===_.key,class:e.normalizeClass(["whitespace-nowrap 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",a.value===_.key?"bg-white shadow-sm text-gray-700":""]),onClick:I=>a.value=_.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(_.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",h0,e.toDisplayString(_.label),1)],10,y0)),64))])]),e.createElementVNode("div",x0,[x.value?(e.openBlock(),e.createElementBlock("div",b0," Завантаження стилю… ")):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[a.value==="css"?(e.openBlock(),e.createBlock(Hf,{key:0,modelValue:f.value,"onUpdate:modelValue":C[1]||(C[1]=_=>f.value=_),class:"flex-1 min-h-0",onSave:$},null,8,["modelValue"])):(e.openBlock(),e.createBlock(e0,{key:1,modelValue:u.value,"onUpdate:modelValue":C[2]||(C[2]=_=>u.value=_),class:"flex-1 min-h-0 flex flex-col",onSave:$},null,8,["modelValue"]))],64))])])])]))}}),_0={class:"w-full mb-6"},E0={class:"flex items-center w-full h-10 max-w-md p-1 bg-white border border-gray-200 rounded-md"},N0=["onClick"],B0=e.defineComponent({__name:"MapSettingsTabs",props:{tabs:{},activeTab:{}},emits:["update:activeTab"],setup(t,{emit:n}){const o=n,r=l=>{o("update:activeTab",l)};return(l,a)=>(e.openBlock(),e.createElementBlock("div",_0,[e.createElementVNode("div",E0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tabs,i=>(e.openBlock(),e.createElementBlock("button",{key:i.id,onClick:s=>r(i.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 transition-all",i.id===t.activeTab?"bg-blue-50 text-blue-700":"text-gray-600 hover:bg-gray-50"])},e.toDisplayString(i.name),11,N0))),128))])]))}}),V0={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},C0=e.defineComponent({__name:"GeneralSettings",props:{schema:{},modelValue:{},loading:{type:Boolean},form:{}},emits:["update:modelValue","update:form"],setup(t,{emit:n}){const o=e.defineAsyncComponent(()=>import("@opengis/form")),r=t,l=n,a=e.computed({get:()=>r.modelValue,set:s=>l("update:modelValue",s)}),i=e.computed({get:()=>r.form,set:s=>l("update:form",s)});return(s,f)=>(e.openBlock(),e.createElementBlock("section",V0,[f[2]||(f[2]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"}," Основна інформація ",-1)),t.loading?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(o),{key:0,schema:t.schema,values:a.value,"onUpdate:values":f[0]||(f[0]=u=>a.value=u),form:i.value,"onUpdate:form":f[1]||(f[1]=u=>i.value=u)},null,8,["schema","values","form"]))]))}}),$0={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},v0=e.defineComponent({__name:"LayerSettings",props:{layerIDs:{},layerNames:{},options:{}},emits:["update:layerIDs","update:layerNames"],setup(t,{emit:n}){const o=t,r=n,l=e.computed({get:()=>o.layerIDs,set:a=>r("update:layerIDs",a)});return e.computed({get:()=>o.layerNames,set:a=>r("update:layerNames",a)}),(a,i)=>(e.openBlock(),e.createElementBlock("section",$0,[i[1]||(i[1]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"},"Шари",-1)),i[2]||(i[2]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Доступні шари",-1)),e.createVNode(e.unref(Bn.VsInputArraySelect),{options:t.options,modelValue:l.value,"onUpdate:modelValue":i[0]||(i[0]=s=>l.value=s),placeholder:"Шари"},null,8,["options","modelValue"])]))}}),S0={class:"mapLayer-info__inner"},A0={class:"mapLayer-info__item-label"},xn=oe(e.defineComponent({__name:"MapLayerInfoPopover",props:{items:{}},setup(t,{expose:n}){const o=t,r=e.reactive({open:!1,top:0,left:0,transform:"translateX(-50%)"}),l=e.ref(null),a=e.ref(null);let i=null;const s=e.computed(()=>r.open?{position:"absolute",width:"auto",maxWidth:`${Math.min(300,window.innerWidth-24)}px`,top:`${r.top}px`,left:`${r.left}px`,transform:r.transform,display:"block"}:{display:"none"});function f(m){if(r.open){g();return}const h=m.currentTarget,p=h==null?void 0:h.closest(".mapLayer-info");if(!p){g();return}l.value=p,r.open=!0,e.nextTick(()=>{u(),d(),requestAnimationFrame(()=>{u()})})}function u(){if(!r.open||!l.value||!a.value)return;const m=l.value.getBoundingClientRect(),h=12,p=window.scrollX+h,E=window.scrollX+window.innerWidth-h,A=window.scrollY+h,F=window.scrollY+window.innerHeight-h,D=a.value.offsetWidth||Math.min(300,window.innerWidth-24),$=a.value.offsetHeight||0;let w=m.left+window.scrollX+(m.width-D)/2;w<p&&(w=p),w+D>E&&(w=Math.max(p,E-D)),r.left=w;let C=m.bottom+window.scrollY+h;C+$>F&&(C=m.top+window.scrollY-$-h,C<A&&(C=Math.max(A,F-$))),C<A&&(C=A),C+$>F&&(C=Math.max(A,F-$)),r.top=C,r.transform="none"}function x(m){var p,E;if(!r.open)return;const h=m.target;(p=l.value)!=null&&p.contains(h)||(E=a.value)!=null&&E.contains(h)||g()}function c(m){m.key==="Escape"&&g()}function g(){y(),r.open=!1,l.value=null,a.value=null}function d(){y(),a.value&&(i=new ResizeObserver(()=>{u()}),i.observe(a.value))}function y(){i&&(i.disconnect(),i=null)}return e.onMounted(()=>{document.addEventListener("click",x,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",u,!0),window.addEventListener("resize",u)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",x,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",u,!0),window.removeEventListener("resize",u),y()}),e.watch(()=>o.items,()=>{r.open&&e.nextTick(()=>u())},{deep:!0}),n({close:g}),(m,h)=>(e.openBlock(),e.createElementBlock("div",{class:"mapLayer-info",ref_key:"anchorEl",ref:l},[e.createElementVNode("a",{class:"mapLayer-info__trigger",href:"#",onClick:e.withModifiers(f,["prevent","stop"])},[...h[1]||(h[1]=[e.createStaticVNode('<div class="mapLayer-info__icon" data-v-cc1cc7bf><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" data-v-cc1cc7bf><circle cx="12" cy="12" r="10" data-v-cc1cc7bf></circle><line x1="12" y1="16" x2="12" y2="12" data-v-cc1cc7bf></line><line x1="12" y1="8" x2="12.01" y2="8" data-v-cc1cc7bf></line></svg></div>',1)])]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vst-popover__content inline-block z-[81] py-3 px-4 bg-white text-sm text-gray-500 rounded-md shadow-lg bottom mapLayer-info__popover",style:e.normalizeStyle(s.value),ref_key:"popoverEl",ref:a,onClick:h[0]||(h[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",S0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,p=>(e.openBlock(),e.createElementBlock("div",{key:p.label,class:"mapLayer-info__item"},[e.createElementVNode("div",A0,e.toDisplayString(p.label),1),e.createElementVNode("div",{class:e.normalizeClass(["mapLayer-info__item-value",{"mapLayer-info__item-value--break-all":p.breakLine}])},e.toDisplayString(p.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-cc1cc7bf"]]),L0={key:0,class:"map-info__title"},T0={class:"map-info__actions"},F0={key:0,class:"map-info__menu"},M0=["href"],D0=["innerHTML"],ll=oe(e.defineComponent({__name:"MapInfoWidget",props:{title:{},content:{},links:{},mapName:{},mapDescription:{}},setup(t){const n=t,o=e.ref(null),r=e.ref(!1),l=e.ref(null),a=e.ref(null),i=e.ref({top:0,left:0});he.useRouter();const s=e.ref(!0),f=e.ref(!1),u=e.computed(()=>Array.isArray(n.links)?n.links.filter(F=>(F==null?void 0:F.name)&&(F==null?void 0:F.slug)):[]),x=e.computed(()=>({top:`${i.value.top}px`,left:`${i.value.left}px`})),c=e.computed(()=>{const F=[];return n.mapName&&F.push({label:"Назва карти",value:n.mapName}),n.mapDescription&&F.push({label:"Опис",value:n.mapDescription,breakLine:!0}),F});function g(F){return F==null?!1:F.replace(/<[^>]*>/g,"").trim().length>0}const d=e.computed(()=>g(n.content)),y=e.computed(()=>d.value);function m(F){F.stopPropagation(),r.value=!r.value}function h(){const F=l.value;if(!F||!a.value)return;const D=F.getBoundingClientRect(),$=12,w=8,C=window.scrollX+$,_=window.scrollX+window.innerWidth-$,I=window.scrollY+$,q=window.scrollY+window.innerHeight-$,P=a.value.offsetWidth||160,M=a.value.offsetHeight||0;let v=D.bottom+window.scrollY+w,b=D.left+window.scrollX;b+P>_&&(b=D.right+window.scrollX-P,b<C&&(b=C)),b<C&&(b=C),v+M>q&&(v=D.top+window.scrollY-M-w,v<I&&(v=Math.max(I,q-M))),v<I&&(v=I),v+M>q&&(v=Math.max(I,q-M)),i.value={top:v,left:b}}function p(F){if(!r.value)return;const D=o.value;if(!D){r.value=!1;return}D.contains(F.target)||(r.value=!1)}e.watch(r,F=>{F?e.nextTick(()=>{h(),requestAnimationFrame(()=>{h()}),window.addEventListener("scroll",h,!0),window.addEventListener("resize",h)}):(window.removeEventListener("scroll",h,!0),window.removeEventListener("resize",h))});function E(){s.value=!s.value}function A(){f.value=window.innerWidth<=768}return e.onMounted(()=>{document.addEventListener("click",p,!0),A(),y.value?f.value&&(s.value=!1):s.value=!1,window.addEventListener("resize",A)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",p,!0),window.removeEventListener("scroll",h,!0),window.removeEventListener("resize",h),window.removeEventListener("resize",A)}),(F,D)=>(e.openBlock(),e.createElementBlock("div",{class:"map-info legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget",ref_key:"container",ref:o},[t.title||u.value.length||c.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"map-info__header",style:e.normalizeStyle([d.value?"":"padding-bottom: 20px"])},[t.title?(e.openBlock(),e.createElementBlock("h2",L0,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",T0,[u.value.length?(e.openBlock(),e.createElementBlock("div",F0,[e.createElementVNode("button",{ref_key:"menuButton",ref:l,type:"button",class:"map-info__menu-button",onClick:m,"aria-label":"Показати посилання"},[...D[1]||(D[1]=[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)])],512),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuPopover",ref:a,class:"vsTailwind vs-popover__content right map-info__popover",style:e.normalizeStyle(x.value),onClick:D[0]||(D[0]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,$=>(e.openBlock(),e.createElementBlock("a",{key:$.slug||$.name,href:`/maps/${$.slug}`,class:"map-info__popover-link"},e.toDisplayString($.name),9,M0))),128))],4)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0),c.value.length?(e.openBlock(),e.createBlock(xn,{key:1,items:c.value},null,8,["items"])):e.createCommentVNode("",!0),y.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"map-info__toggle-button",onClick:E,"aria-label":"Розгорнути/згорнути"},[(e.openBlock(),e.createElementBlock("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass({"map-info__toggle-icon--rotated":s.value})},[...D[2]||(D[2]=[e.createElementVNode("path",{d:"M6 9L12 15L18 9",stroke:"#000000","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))])):e.createCommentVNode("",!0)])],4)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["map-info__content",{"map-info__content--collapsed":!s.value}]),innerHTML:t.content},null,10,D0)):e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-813e24fb"]]),I0={class:"opacity-popover__content"},j0={class:"opacity-popover__value"},rl=oe(e.defineComponent({__name:"LayerOpacityPopover",props:{layerId:{}},setup(t){const n=t,o=e.ref(!1),r=e.ref(100),l=e.ref(null),a=e.ref(null),i=e.reactive({top:0,left:0});function s(){var D;const c=(D=a.value)==null?void 0:D.querySelector("button");if(!c||!l.value)return;const g=c.getBoundingClientRect(),d=260,y=l.value.offsetHeight||60,m=8,h=12,p=window.innerWidth,E=window.innerHeight;let A=g.bottom+m+window.scrollY,F=g.left+window.scrollX;F+d>p-h&&(F=p-d-h+window.scrollX),F<h+window.scrollX&&(F=h+window.scrollX),A+y>E+window.scrollY-h&&(A=g.top-y-m+window.scrollY,A<h+window.scrollY&&(A=E-y-h+window.scrollY)),i.top=A,i.left=F}function f(){o.value=!o.value,o.value&&e.nextTick(s)}function u(){var y;const c=ue(n.layerId),g=(r.value??100)/100;if(c!=null&&c.setOpacity){c.setOpacity(g);return}const d=(y=c==null?void 0:c.getLayer)==null?void 0:y.call(c);if(d)switch(d.type){case"raster":c.updatePaint({"raster-opacity":g});break;case"fill":c.updatePaint({"fill-opacity":g});break;case"line":c.updatePaint({"line-opacity":g});break;case"circle":c.updatePaint({"circle-opacity":g});break;case"symbol":c.updatePaint({"icon-opacity":g});break}}function x(c){var d,y;if(!o.value)return;const g=c.target;(d=l.value)!=null&&d.contains(g)||(y=a.value)!=null&&y.contains(g)||(o.value=!1)}return e.onMounted(()=>{document.addEventListener("click",x),window.addEventListener("scroll",s,!0),window.addEventListener("resize",s)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",x),window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s)}),(c,g)=>(e.openBlock(),e.createElementBlock("div",{class:"opacity-wrapper",ref_key:"wrapper",ref:a},[e.renderSlot(c.$slots,"trigger",{toggle:f,opacity:r.value},()=>[e.createElementVNode("button",{type:"button",class:"opacity-btn",onClick:e.withModifiers(f,["stop"])},e.toDisplayString(r.value)+"% ",1)],!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[o.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popoverEl",ref:l,class:"opacity-popover",style:e.normalizeStyle({top:i.top+"px",left:i.left+"px"})},[e.createElementVNode("div",I0,[g[1]||(g[1]=e.createElementVNode("label",{class:"opacity-popover__label"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":g[0]||(g[0]=d=>r.value=d),class:"opacity-popover__range",onInput:u},null,544),[[e.vModelText,r.value]]),e.createElementVNode("span",j0,e.toDisplayString(r.value)+"%",1)])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-b278347a"]]),z0={class:"layers-panel"},O0={class:"layers-panel__header"},R0={class:"layers-panel__heading"},P0={class:"layers-panel__title"},U0={key:0,class:"layers-panel__description"},q0={class:"layers-panel__header-actions"},H0={class:"layers-panel__label"},W0={class:"layers-panel__label-row"},Y0=["checked","onChange"],Z0={class:"layers-panel__title-block"},G0=["aria-label"],K0={class:"layers-panel__name"},X0={class:"layers-panel__meta text-slate-500"},J0=["onClick"],Q0={class:"inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700"},eg={key:0,class:"layers-panel__actions"},tg=["innerHTML","onClick"],al="map:temporary-layer-request",ng=e.defineComponent({directives:{tooltip:ce.TooltipDirective},__name:"MapDataLayersWidget",props:{layers:{},config:{}},emits:["action"],setup(t,{emit:n}){const o=t,r=e.ref({}),l=e.ref(!0),a=e.ref(!1),i=Se(),{temporaryLayers:s,activateTemporaryLayer:f,deactivateTemporaryLayer:u,clearTemporaryLayers:x}=yn(i.map),c=e.computed(()=>{const M=o.layers.map(b=>({...b,isTemporary:!1,owner:null,visible:b.visible!==!1})),v=s.value.map(b=>({id:b.id,name:b.title,visible:r.value[b.id]??!0,actions:[],filters:null,isTemporary:!0,owner:b.owner??null,handle:b.handle??null,card:b.card??null,popup:b.popup??null,style:b.style??null,group_name:null,count:null,holder:null}));return[...M,...v]}),g=e.computed(()=>s.value.length>0),d=n;function y(){var M;for(let v=0;v<o.layers.length;v++){const b=o.layers[v],k=m(b);if(!k)continue;const N=ue(b.id,k),B=b.visible!==!1;r.value[b.id]=B,B||(M=N==null?void 0:N.setVisible)==null||M.call(N,!1)}}function m(M){const v=M.id;if(!v)return null;const b=(M.service||M.service_type||M.type||"").toString().toLowerCase(),k=M.service_url||M.url||null;if(!!k&&(b==="tms"||b==="wmts"||b==="wms"||b==="ogc")){const T=h(k);return T?{sourceId:v,source:{type:"raster",tiles:[T],tileSize:M.tileSize||256,minzoom:M.minzoom??0,maxzoom:M.maxzoom??22,scheme:M.scheme||"xyz"},layer:{id:v,type:"raster",source:v},card:M.card,popup:M.popup}:null}const B=`${location.origin}/api/vtile/${v}/ua/{z}/{x}/{y}.vmt`;return{sourceId:v,source:{type:"vector",tiles:[B],minZoom:4,maxZoom:14},layer:{id:v,source:v,"source-layer":v,style:M.style},card:M.card,popup:M.popup}}function h(M){return M?/^https?:\/\//i.test(M)?M:M.startsWith("//")?`${window.location.protocol}${M}`:M.startsWith("/")?`${location.origin}${M}`:`${location.origin}/${M}`:null}function p(M){const v=r.value[M];return v??!0}function E(M){var k,N;if(!(M!=null&&M.id))return null;const v=(k=M.title)==null?void 0:k.trim(),b=(N=M.url)==null?void 0:N.trim();return!v||!b?null:{id:M.id,title:v,url:b,tileSize:M.tileSize,minzoom:M.minzoom,maxzoom:M.maxzoom,opacity:M.opacity}}function A(M){if(!M)return;const v=M.owner;if(M.action==="clear"){const k=s.value.filter(N=>!v||N.owner===v).map(N=>N.id);x(v),k.forEach(N=>{N in r.value&&delete r.value[N]});return}const b=E(M.spec);if(b){if(M.action==="activate"){f(b,M.context||{},v),r.value[b.id]=!0;return}M.action==="deactivate"&&(u(b.id,v),delete r.value[b.id])}}function F(M){M instanceof CustomEvent&&A(M.detail)}e.watch(()=>s.value.map(M=>M.id),(M,v)=>{const b=new Set(v||[]),k=new Set(M);M.forEach(N=>{N in r.value||(r.value[N]=!0)}),b.forEach(N=>{k.has(N)||delete r.value[N]})},{immediate:!0});function D(M,v){var B,T,L;const k=v.target.checked;if(r.value[M.id]=k,M.isTemporary){if(!k){u(M.id,M.owner||void 0),delete r.value[M.id];return}const j=M.handle||((B=s.value.find(U=>U.id===M.id))==null?void 0:B.handle);(T=j==null?void 0:j.setVisible)==null||T.call(j,!0);return}const N=ue(M.id);(L=N==null?void 0:N.setVisible)==null||L.call(N,k)}function $(M){return M.isTemporary?[{label:"Назва",value:M.name??null},{label:"Тип",value:"Тимчасовий шар"},M.owner?{label:"Джерело",value:M.owner}:null].filter(Boolean):[{label:"Назва",value:M.name??null},{label:"Назва групи",value:M.group_name||null},{label:"Кількість",value:M.count??null},{label:"Балансоутримувач",value:M.holder??null}]}function w(M){var v,b,k;return((v=M==null?void 0:M.style)==null?void 0:v.color)||((b=M==null?void 0:M.style)==null?void 0:b.stroke)||((k=M==null?void 0:M.style)==null?void 0:k.fill)||null}function C(M){var v,b;return((b=(v=M==null?void 0:M.legend)==null?void 0:v[0])==null?void 0:b.name)||null}function _(M){return C(M)||null}function I(){if(!s.value.length)return;const M=s.value.map(v=>v.id);x(),M.forEach(v=>delete r.value[v])}function q(){l.value=!l.value}function P(){a.value=window.innerWidth<=768}return e.onMounted(()=>{y(),window.addEventListener(al,F),P(),a.value&&(l.value=!1),window.addEventListener("resize",P)}),e.onBeforeUnmount(()=>{window.removeEventListener(al,F),window.removeEventListener("resize",P)}),(M,v)=>{var k,N;const b=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",z0,[e.createElementVNode("div",O0,[e.createElementVNode("div",R0,[e.createElementVNode("h2",P0,e.toDisplayString(((k=t.config)==null?void 0:k.title)||"Шари"),1),(N=t.config)!=null&&N.description?(e.openBlock(),e.createElementBlock("div",U0,[e.createElementVNode("p",null,e.toDisplayString(t.config.description),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",q0,[c.value.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"layers-panel__toggle-button",onClick:q,"aria-label":"Розгорнути/згорнути"},[(e.openBlock(),e.createElementBlock("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass({"layers-panel__toggle-icon--rotated":l.value})},[...v[0]||(v[0]=[e.createElementVNode("path",{d:"M6 9L12 15L18 9",stroke:"#000000","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))])):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"layers-panel__clear",onClick:I}," Очистити тимчасові шари ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",{class:e.normalizeClass(["layers-panel__content",{"layers-panel__content--collapsed":!l.value}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,B=>{var T;return e.openBlock(),e.createElementBlock("div",{key:B.id,class:"layers-panel__item"},[e.createElementVNode("label",H0,[e.createElementVNode("div",W0,[e.createElementVNode("input",{type:"checkbox",class:"layers-panel__checkbox",checked:p(B.id),onChange:L=>D(B,L)},null,40,Y0),e.createElementVNode("div",Z0,[p(B.id)&&w(B)&&_(B)?e.withDirectives((e.openBlock(),e.createElementBlock("span",{key:0,class:"layers-panel__legend-dot layers-panel__legend-dot--inline",style:e.normalizeStyle({background:w(B)}),"aria-label":_(B),role:"img"},null,12,G0)),[[b,_(B)]]):p(B.id)&&w(B)?(e.openBlock(),e.createElementBlock("span",{key:1,class:"layers-panel__legend-dot layers-panel__legend-dot--inline",style:e.normalizeStyle({background:w(B)}),role:"img"},null,4)):e.createCommentVNode("",!0),e.createElementVNode("span",K0,e.toDisplayString(B.name),1)]),e.createElementVNode("div",X0,[p(B.id)&&!B.isTemporary?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(rl,{"layer-id":B.id,class:"flex"},{trigger:e.withCtx(({toggle:L})=>[e.createElementVNode("button",{class:"inline-flex items-center justify-center p-0 text-inherit no-underline cursor-pointer",onClick:e.withModifiers(L,["prevent","stop"])},[e.createElementVNode("div",Q0,[e.createVNode(e.unref(Al))])],8,J0)]),_:1},8,["layer-id"]),e.createVNode(jt,{count:Array.isArray(B.filters)?B.filters.length:0,layer:B},null,8,["count","layer"])],64)):e.createCommentVNode("",!0),e.createVNode(xn,{items:$(B)},null,8,["items"])])])]),(T=B.actions)!=null&&T.length?(e.openBlock(),e.createElementBlock("div",eg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.actions,L=>(e.openBlock(),e.createElementBlock("button",{key:L.widget||L.id||L.icon,type:"button",class:"layers-panel__action",innerHTML:L.icon,onClick:j=>d("action",{layerId:L.widget})},null,8,tg))),128))])):e.createCommentVNode("",!0)])}),128))],2)])}}}),il=oe(ng,[["__scopeId","data-v-cd741b3d"]]),og={class:"catalog-tab__search relative mt-[10px]"},lg={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:"absolute top-[40%] left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0, -50%)"}},rg={class:"catalog-tab__list flex-1 overflow-y-auto mt-2"},ag={key:0,class:"text-sm text-gray-400 text-center mt-6"},ig=["onClick"],sg={class:"flex items-center gap-x-3"},cg={class:"max-w-[260px] text-[14px] text-[#4b5563]"},dg={class:"text-xs opacity-60 text-[#4b5563]"},ug={class:"flex items-center cursor-pointer gap-2 flex-1"},pg=["checked","onChange"],mg={class:"text-[13px] text-gray-600 max-w-[260px]"},fg={class:"flex items-center gap-2"},gg=oe(e.defineComponent({__name:"LayersCatalogTab",props:{catalog:{},selected:{},search:{}},emits:["toggle-layer","update:search","open-filter"],setup(t,{emit:n}){const o=t,r=n,l=e.reactive({}),a=e.ref(null),i=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0,layerId:null}),s=e.computed(()=>{const m=o.search.trim().toLowerCase();return o.catalog.groups.map(h=>{const p=m?h.layers.filter(E=>(typeof E.name=="string"?E.name:"").toLowerCase().includes(m)):h.layers;return{...h,layers:p}}).filter(h=>h.layers.length>0)}),f=e.computed({get:()=>o.search,set:m=>r("update:search",m)});function u(m){l[m]=!l[m],up()}function x(m){return!!l[m]}function c(m,h){if(o.selected.includes(h)){i.visible=!1,i.layerId=null;return}const p=m.currentTarget;if(!p)return;const E=p.getBoundingClientRect(),A=typeof window<"u"?window.scrollX:0,F=typeof window<"u"?window.scrollY:0;i.left=E.left+E.width/2+A,i.top=E.bottom+8+F,i.layerId=h,i.visible=!0}function g(){i.visible=!1,i.layerId=null}function d(m){return[{label:"Назва",value:y(m.name)},{label:"Сервіс",value:y(m.service)},{label:"Посилання",value:y(m.url),breakLine:!0}]}function y(m){return m==null||m===""?null:String(m)}return e.watch(()=>o.selected?o.selected.slice():[],m=>{!i.visible||!i.layerId||m.includes(i.layerId)&&(i.visible=!1,i.layerId=null)}),(m,h)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"catalogRef",ref:a,class:"catalog-tab"},[e.createElementVNode("div",og,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[0]||(h[0]=p=>f.value=p),type:"text",placeholder:"Введіть назву шару...",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"},null,512),[[e.vModelText,f.value]]),(e.openBlock(),e.createElementBlock("svg",lg,[...h[1]||(h[1]=[e.createElementVNode("path",{d:"M11 19C15.4183 19 19 15.4183 19 11C19 6.5817 15.4183 3 11 3C6.5817 3 3 6.5817 3 11C3 15.4183 6.5817 19 11 19Z",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M21 21L16.7 16.7",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])]))]),e.createElementVNode("div",rg,[s.value.length===0?(e.openBlock(),e.createElementBlock("div",ag," Нічого не знайдено ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,p=>(e.openBlock(),e.createElementBlock("div",{key:p.id,class:"mt-2"},[e.createElementVNode("div",{class:"hover:bg-gray-100 cursor-pointer p-[8px] rounded-lg flex justify-between items-center",onClick:E=>u(p.id)},[e.createElementVNode("div",sg,[(e.openBlock(),e.createElementBlock("svg",{width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass(["transition-transform",x(p.id)?"rotate-90":""])},[...h[2]||(h[2]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2)),e.createElementVNode("div",cg,e.toDisplayString(p.name),1)]),e.createElementVNode("div",dg,e.toDisplayString(p.layers.length),1)],8,ig),e.createVNode(e.Transition,{name:"out-in"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.layers,E=>(e.openBlock(),e.createElementBlock("div",{key:E.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between ml-[20px] py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",ug,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:t.selected.includes(E.id),onChange:A=>m.$emit("toggle-layer",E.id,A.target.checked,E)},null,40,pg),h[3]||(h[3]=e.createElementVNode("div",{class:"w-4 h-4 rounded border border-blue-800 flex items-center justify-center peer-checked:bg-blue-600 peer-checked:border-blue-600"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},[e.createElementVNode("path",{d:"M10.6663 1L4.24967 7.41667L1.33301 4.5",stroke:"#fff","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),e.createElementVNode("span",mg,e.toDisplayString(E.name),1)]),e.createElementVNode("div",fg,[Array.isArray(E.filters)&&E.filters.length?(e.openBlock(),e.createBlock(jt,{key:0,count:E.filters.length,layer:E,disabled:!t.selected.includes(E.id),onMouseenter:A=>c(A,E.id),onMouseleave:g,onFocus:A=>c(A,E.id),onBlur:g},null,8,["count","layer","disabled","onMouseenter","onFocus"])):e.createCommentVNode("",!0),e.createVNode(xn,{items:d(E)},null,8,["items"])])]))),128))],512),[[e.vShow,x(p.id)]])]),_:2},1024)]))),128))]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${i.top}px`,left:`${i.left}px`})},e.toDisplayString(i.text),5)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-f68d8bda"]]),yg={class:"flex flex-col gap-0"},hg={class:"text-xs text-slate-600 font-semibold"},xg=e.defineComponent({__name:"MapLayerPopover",props:{items:{}},setup(t,{expose:n}){const o=t,r=e.reactive({open:!1,top:0,left:0,transform:"translateX(-50%)"}),l=e.ref(null),a=e.ref(null);let i=null;const s=e.computed(()=>{if(!r.open)return{display:"none"};const m=Math.min(460,window.innerWidth-24);return{position:"absolute",width:`${m}px`,maxWidth:`${m}px`,top:`${r.top}px`,left:`${r.left}px`,transform:r.transform,display:"block"}});function f(){if(r.open){g();return}if(!l.value){g();return}r.open=!0,e.nextTick(()=>{u(),d(),requestAnimationFrame(()=>{u()})})}function u(){if(!r.open||!l.value||!a.value)return;const m=l.value.getBoundingClientRect(),h=12,p=window.scrollX+h,E=window.scrollX+window.innerWidth-h,A=window.scrollY+h,F=window.scrollY+window.innerHeight-h,D=a.value.offsetWidth||Math.min(460,window.innerWidth-24),$=a.value.offsetHeight||0;let w=m.left+window.scrollX+(m.width-D)/2;w<p&&(w=p),w+D>E&&(w=Math.max(p,E-D)),r.left=w;let C=m.bottom+window.scrollY+h;C+$>F&&(C=m.top+window.scrollY-$-h,C<A&&(C=Math.max(A,F-$))),C<A&&(C=A),C+$>F&&(C=Math.max(A,F-$)),r.top=C,r.transform="none"}function x(m){var p,E;if(!r.open)return;const h=m.target;(p=l.value)!=null&&p.contains(h)||(E=a.value)!=null&&E.contains(h)||g()}function c(m){m.key==="Escape"&&g()}function g(){y(),r.open=!1,l.value=null,a.value=null}function d(){y(),a.value&&(i=new ResizeObserver(()=>{u()}),i.observe(a.value))}function y(){i&&(i.disconnect(),i=null)}return e.onMounted(()=>{document.addEventListener("click",x,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",u,!0),window.addEventListener("resize",u)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",x,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",u,!0),window.removeEventListener("resize",u),y()}),e.watch(()=>o.items,()=>{r.open&&e.nextTick(()=>u())},{deep:!0}),n({close:g}),(m,h)=>(e.openBlock(),e.createElementBlock("div",{class:"inline-flex relative",ref_key:"anchorEl",ref:l},[e.createElementVNode("div",{onClick:e.withModifiers(f,["prevent","stop"])},[e.renderSlot(m.$slots,"default")]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vst-popover__content inline-block z-[103] py-3 px-4 bg-white text-sm text-gray-500 rounded-md shadow-lg bottom absolute min-w-[200px]",style:e.normalizeStyle(s.value),ref_key:"popoverEl",ref:a,onClick:h[0]||(h[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",yg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,p=>(e.openBlock(),e.createElementBlock("div",{key:p.label,class:"grid grid-cols-[120px_1fr] gap-3 items-start py-1.5 border-b border-slate-200 last:border-b-0"},[e.createElementVNode("div",hg,e.toDisplayString(p.label),1),e.createElementVNode("div",{class:e.normalizeClass(["text-sm text-gray-800",{"break-all":p.breakLine}])},e.toDisplayString(p.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),bg={class:"selected-tab"},kg={class:"selected-tab__actions"},wg={key:0,class:"selected-tab__scroll"},_g=["onDragstart","onDragover","onDrop"],Eg={class:"selected-tab__item-header"},Ng={class:"selected-tab__item-info"},Bg=["checked","onChange"],Vg={class:"selected-tab__item-name"},Cg={class:"selected-tab__item-controls"},$g=["onClick"],vg={class:"selected-tab__menu-inner"},Sg=oe(e.defineComponent({__name:"LayersSelectedTab",props:{catalog:{},selected:{}},emits:["select-layer","reorder","remove","toggle-layer"],setup(t,{emit:n}){const o=t,r=n,l=e.reactive({}),a=e.ref(null),i=e.ref(null),s=new Map,f=e.reactive({top:0,left:0}),u=e.ref(null),x=e.reactive({top:0,left:0}),c=e.ref(null),g=new Map,d=e.reactive({});function y(B){var T;for(const L of((T=o.catalog)==null?void 0:T.groups)??[]){const j=L.layers.find(U=>U.id===B);if(j)return j}return null}e.watch(()=>o.selected,B=>{B.forEach(T=>{l[T]==null&&(l[T]=100)})},{immediate:!0});function m(){if(!a.value)return;const B=s.get(a.value);if(!B)return;const T=B.getBoundingClientRect();f.top=T.bottom+8+window.scrollY,f.left=T.left+window.scrollX}e.watch(()=>o.selected,B=>{B.forEach(T=>{d[T]==null&&(d[T]=!0)})},{immediate:!0});function h(B,T){d[B]=T;const L=ue(B);L&&L.setVisible(T)}function p(B,T){T?g.set(B,T):g.delete(B)}function E(B){u.value=u.value===B?null:B,u.value&&e.nextTick(()=>{A(B),requestAnimationFrame(()=>{A(B)})})}function A(B){const T=g.get(B);if(!T||!c.value)return;const L=T.getBoundingClientRect(),j=12,U=6,Y=window.scrollX+j,re=window.scrollX+window.innerWidth-j,X=window.scrollY+j,ee=window.scrollY+window.innerHeight-j,fe=c.value.offsetWidth||190,pe=c.value.offsetHeight||0;let me=L.bottom+window.scrollY+U,R=L.left+window.scrollX;R+fe>re&&(R=L.right+window.scrollX-fe,R<Y&&(R=Y)),R<Y&&(R=Y),me+pe>ee&&(me=L.top+window.scrollY-pe-U,me<X&&(me=Math.max(X,ee-pe))),me<X&&(me=X),me+pe>ee&&(me=Math.max(X,ee-pe)),x.top=me,x.left=R}function F(B){const T=ue(B);T&&T.remove(),r("remove",B),u.value=null}function D(B){const T=B.target,L=a.value,j=u.value;if(L){const U=i.value,Y=s.get(L);if(U&&U.contains(T)||Y&&Y.contains(T))return;a.value=null}if(j){const U=c.value,Y=g.get(j);if(U&&U.contains(T)||Y&&Y.contains(T))return;u.value=null}}function $(){a.value&&m(),u.value&&A(u.value)}e.onMounted(()=>{document.addEventListener("click",D),window.addEventListener("resize",$),window.addEventListener("scroll",$,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",D),window.removeEventListener("resize",$),window.removeEventListener("scroll",$,!0)});const{map:w}=Se();function C(B){var U,Y,re;if(!B)return;const T=ue(B),L=y(B);if(!T&&!L)return;if(((U=L==null?void 0:L.extent)==null?void 0:U.length)===4&&((Y=w.value)!=null&&Y.fitBounds)){const X=L.extent.map(ee=>Number(ee));if(X.every(ee=>Number.isFinite(ee))){const[ee,fe,pe,me]=X;w.value.fitBounds([[ee,fe],[pe,me]],{padding:40}),u.value=null;return}}(re=T==null?void 0:T.getSource)!=null&&re.call(T)&&(u.value=null)}const _=e.ref(null),I=e.ref(null);function q(B,T){_.value=T,I.value=T,B.dataTransfer&&(B.dataTransfer.effectAllowed="move",B.dataTransfer.setData("text/plain",String(T)))}function P(B){I.value=B}function M(B,T){if(B.preventDefault(),_.value===null||_.value===T){_.value=null,I.value=null;return}const L=[...o.selected],[j]=L.splice(_.value,1);L.splice(T,0,j),r("reorder",L),_.value=null,I.value=null}function v(){_.value=null,I.value=null}function b(B){return B==null||B===""?null:String(B)}function k(B,T){return!Array.isArray(B)||B.length===0?null:`${B.length} ${T}`}function N(B){var me,R,H,W,te,le;const T=ue(B),L=y(B);if(!T&&!L)return[];const j=(L==null?void 0:L.name)||((R=(me=T==null?void 0:T.opts)==null?void 0:me.layer)==null?void 0:R.name)||null,U=(L==null?void 0:L.service)||((H=T==null?void 0:T.opts)==null?void 0:H.service)||null,Y=(W=T==null?void 0:T.getSource)==null?void 0:W.call(T),re=Y&&"tiles"in Y?(te=Y.tiles)==null?void 0:te[0]:(L==null?void 0:L.url)||null,X=(L==null?void 0:L.source_path)||null,ee=(T==null?void 0:T.popup)||(L==null?void 0:L.popup),fe=(T==null?void 0:T.card)||(L==null?void 0:L.card),pe=(L==null?void 0:L.filters)||((le=T==null?void 0:T.opts)==null?void 0:le.filters);return[{label:"Назва",value:b(j)},{label:"Сервіс",value:b(U)},{label:"Посилання",value:b(re),breakLine:!0},{label:"Джерело",value:b(X),breakLine:!0},{label:"Popup",value:k(ee,"полів")},{label:"Картка",value:k(fe,"полів")},{label:"Фільтри",value:k(pe,"фільтрів")}]}return(B,T)=>(e.openBlock(),e.createElementBlock("div",bg,[e.createElementVNode("div",kg,[e.createElementVNode("button",{class:"selected-tab__add",onClick:T[0]||(T[0]=L=>r("select-layer"))},[...T[3]||(T[3]=[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)])])]),t.selected.length?(e.openBlock(),e.createElementBlock("div",wg,[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,(L,j)=>{var U;return e.openBlock(),e.createElementBlock("div",{key:L,class:e.normalizeClass(["selected-tab__item",{"selected-tab__item--dragging":_.value===j,"selected-tab__item--over":I.value===j}]),draggable:"true",onDragstart:Y=>q(Y,j),onDragover:e.withModifiers(Y=>P(j),["prevent"]),onDrop:Y=>M(Y,j),onDragend:v},[e.createElementVNode("div",Eg,[e.createElementVNode("div",Ng,[T[4]||(T[4]=e.createElementVNode("span",{class:"selected-tab__item-handle"},"☰",-1)),e.createElementVNode("input",{type:"checkbox",class:"selected-tab__item-checkbox",checked:d[L]??!0,onChange:Y=>h(L,Y.target.checked)},null,40,Bg),e.createElementVNode("span",Vg,e.toDisplayString(((U=y(L))==null?void 0:U.name)||"Шар"),1)]),e.createElementVNode("div",Cg,[e.createVNode(rl,{"layer-id":L},null,8,["layer-id"]),e.createElementVNode("button",{type:"button",class:"selected-tab__item-menu",ref_for:!0,ref:Y=>p(L,Y),onClick:e.withModifiers(Y=>E(L),["stop"])},[...T[5]||(T[5]=[e.createElementVNode("svg",{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"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"5",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1"})],-1)])],8,$g)])])],42,_g)}),128))])])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuEl",ref:c,class:"selected-tab__menu",style:e.normalizeStyle({top:x.top+"px",left:x.left+"px"})},[e.createElementVNode("div",vg,[e.createElementVNode("button",{class:"selected-tab__menu-item",onClick:T[1]||(T[1]=L=>C(u.value))},[...T[6]||(T[6]=[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-zoom-in"},[e.createElementVNode("circle",{cx:"11",cy:"11",r:"8"}),e.createElementVNode("line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"}),e.createElementVNode("line",{x1:"11",x2:"11",y1:"8",y2:"14"}),e.createElementVNode("line",{x1:"8",x2:"14",y1:"11",y2:"11"})],-1),e.createTextVNode(" Збільшити до шару ",-1)])]),e.createVNode(xg,{items:N(u.value)},{default:e.withCtx(()=>[...T[7]||(T[7]=[e.createElementVNode("button",{class:"selected-tab__menu-item"},[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-info"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"}),e.createElementVNode("path",{d:"M12 16v-4"}),e.createElementVNode("path",{d:"M12 8h.01"})]),e.createTextVNode(" Інформація про шар ")],-1)])]),_:1},8,["items"]),T[9]||(T[9]=e.createElementVNode("hr",null,null,-1)),e.createElementVNode("button",{class:"selected-tab__menu-item selected-tab__menu-item--danger",onClick:T[2]||(T[2]=L=>F(u.value))},[...T[8]||(T[8]=[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-trash2"},[e.createElementVNode("path",{d:"M3 6h18"}),e.createElementVNode("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),e.createElementVNode("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"}),e.createElementVNode("line",{x1:"10",x2:"10",y1:"11",y2:"17"}),e.createElementVNode("line",{x1:"14",x2:"14",y1:"11",y2:"17"})],-1),e.createTextVNode(" Видалити шар ",-1)])])])],4)):e.createCommentVNode("",!0)]))]))}}),[["__scopeId","data-v-39b6f281"]]),Ag={class:"filter-tab"},Lg={key:0,class:"filter-tab__header"},Tg={class:"filter-tab__title"},Fg={key:1,class:"filter-tab__content rounded-md"},Mg={class:"filter-tab__scroll"},Dg={key:2,class:"filter-tab__empty"},Ig=oe(e.defineComponent({__name:"LayersFilterTab",props:{layer:{},value:{}},emits:["change"],setup(t,{emit:n}){const o=e.defineAsyncComponent(()=>import("@opengis/filter")),r=t,l=n,a=e.computed(()=>{var f;return((f=r.layer)==null?void 0:f.filters)??[]}),i=e.computed(()=>a.value.length>0);function s(f){l("change",f.data)}return(f,u)=>(e.openBlock(),e.createElementBlock("div",Ag,[t.layer&&i.value?(e.openBlock(),e.createElementBlock("div",Lg,[e.createElementVNode("div",null,[e.createElementVNode("p",Tg,e.toDisplayString(t.layer.name),1)])])):e.createCommentVNode("",!0),t.layer&&i.value?(e.openBlock(),e.createElementBlock("div",Fg,[e.createElementVNode("div",Mg,[e.createVNode(e.unref(o),{view:"vertical",schema:a.value,value:t.value,limit:5,class:"rounded-md pb-0",onChange:u[0]||(u[0]=x=>s(x))},null,8,["schema","value"])])])):(e.openBlock(),e.createElementBlock("div",Dg,[...u[1]||(u[1]=[e.createElementVNode("p",{class:"filter-tab__empty-title"},"Немає доступних фільтрів",-1),e.createElementVNode("p",{class:"filter-tab__empty-text"}," Оберіть шар із фільтрами у каталозі, щоб налаштувати відбір даних. ",-1)])]))]))}}),[["__scopeId","data-v-c6632fbd"]]),jg={class:"flex items-center justify-between mb-1"},zg={class:"flex items-center gap-2"},Og={class:"text-lg font-semibold text-gray-800"},Rg={key:0},Pg={key:1,class:"block text-sm font-normal text-gray-500"},Ug={class:"flex items-center gap-2"},qg={class:"flex mb-4 border-b border-gray-200"},Hg={class:"map-catalog-widget__body"},sl=oe(e.defineComponent({__name:"MapCatalogWidget",setup(t){const n=he.useRoute(),o=he.useRouter();function r(){const k=n.query["catalog-tab"];return(Array.isArray(k)?k[0]:k)==="selected"?"selected":"catalog"}const l=e.ref(r()),a=e.ref({groups:[]}),i=e.ref([]),s=e.ref(""),{map:f}=Se(),u=e.reactive({}),x=e.ref(null),c=e.ref(!0),g=e.ref(!1);function d(k){return a.value.groups.map(N=>N.layers.find(B=>B.id===k)).find(Boolean)||null}function y(){const k=x.value;if(!k)return;delete u[k];const N=ue(k);N!=null&&N.setFilter&&N.setFilter("")}function m(k,N){const B=ue(k);if(u[k]={...N},!(B!=null&&B.setFilter))return;const T=Object.entries(N).filter(([,L])=>L!=null&&L!=="").map(([L,j])=>`${L}=${j}`);B.setFilter(T.join("|"))}function h(k){const N=x.value;N&&m(N,k)}function p(k){const N=k.url;let B=null;if(N&&(B=N.startsWith("http")?N:`${window.location.origin}${N}`),!B)return null;const T=(k.service||"").toString().toLowerCase(),L=k.count??null;return T&&T!=="vtile"?{service:T,count:L,source:{type:"raster",tiles:[B],tileSize:256,minzoom:0,maxzoom:20}}:{service:T,count:L,source:{type:"vector",tiles:[B],minzoom:0,maxzoom:14},layer:{style:k.style},card:k.card,popup:k.popup}}function E(k,N,B){var U;const T=B??d(k);if(!T)return;const L=p(T);if(!L)return;const j=ue(T.id,L,f);if(j)if(j.setVisible(N),N){if(!i.value.includes(k)&&(i.value.push(k),(U=f.value)!=null&&U.getLayer(k)))try{f.value.moveLayer(k)}catch(Y){console.warn("Cannot move new layer",k,Y)}}else i.value=i.value.filter(Y=>Y!==k),x.value===k&&(y(),x.value=null)}function A(){i.value.forEach(k=>{const N=ue(k);N&&N.setVisible(!1)}),i.value=[]}function F(k){i.value=[...k],e.nextTick(()=>{var L;if(!f.value)return;const N=((L=f.value.getStyle())==null?void 0:L.layers)??[];let B;const T=j=>N.filter(U=>{var Y,re;return(U==null?void 0:U.source)===j||(U==null?void 0:U.id)===j||((re=(Y=U==null?void 0:U.id)==null?void 0:Y.startsWith)==null?void 0:re.call(Y,`${j}`))}).map(U=>U.id);for(let j=k.length-1;j>=0;j-=1){const U=k[j],Y=T(U);Y.length&&(Y.forEach(re=>{var X;if((X=f.value)!=null&&X.getLayer(re))try{f.value.moveLayer(re,B)}catch(ee){console.warn("Cannot move layer",re,ee)}}),B=Y[0])}})}function D(k){!k||!Array.isArray(k.filters)||k.filters.length===0||i.value.includes(k.id)&&(x.value=k.id,u[k.id]||(u[k.id]={}),l.value="filter")}function $(){l.value="catalog"}const w=e.computed(()=>x.value?d(x.value):null),C=e.computed(()=>{const k=x.value;return k?u[k]??{}:{}}),_=e.computed(()=>a.value.groups.reduce((k,N)=>k+N.layers.length,0)),I=e.computed(()=>l.value==="selected"?"Вибрані шари":l.value==="filter"?"Фільтр шарів":"Каталог"),q=e.computed(()=>l.value==="selected"?i.value.length:l.value==="catalog"?_.value:null),P=e.computed(()=>{var k;return l.value==="filter"?((k=w.value)==null?void 0:k.name)??"":""});async function M(){const N=await(await fetch("/api/gis-layer-list")).json(),B=new Map;N.forEach(j=>{const U=j.group_id??"other";B.has(U)||B.set(U,{id:U,name:j.group_name||"Інші шари",layers:[]}),B.get(U).layers.push(j)}),a.value={groups:Array.from(B.values())};const T=n.query.layers;if(!T)return;const L=Array.isArray(T)?T[0]:T;typeof L=="string"&&L.split(",").forEach(j=>{const U=j.trim();if(!U)return;const Y=d(U);Y&&E(U,!0,Y)})}e.watch(x,k=>{!k&&l.value==="filter"&&(l.value="catalog")}),e.watch(w,k=>{!k&&x.value&&(x.value=null)}),e.watch(i,k=>{const N={...n.query};k.length?N.layers=k.join(","):delete N.layers,o.replace({query:N}).catch(()=>{})},{deep:!0});function v(){c.value=!c.value}function b(){g.value=window.innerWidth<=768}return e.onMounted(()=>{M(),b(),g.value&&(c.value=!1),window.addEventListener("resize",b)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",b)}),(k,N)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["map-catalog-widget w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm widget",q.value>1?"min-h-[250px]":"min-h-[0px]"])},[e.createElementVNode("div",jg,[e.createElementVNode("div",zg,[N[5]||(N[5]=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",Og,[e.createTextVNode(e.toDisplayString(I.value)+" ",1),q.value!==null?(e.openBlock(),e.createElementBlock("span",Rg,"("+e.toDisplayString(q.value)+")",1)):e.createCommentVNode("",!0),P.value?(e.openBlock(),e.createElementBlock("span",Pg,e.toDisplayString(P.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ug,[e.createElementVNode("button",{onClick:A,class:"p-1 rounded-full hover:bg-gray-200 transition-colors","aria-label":"Reset layers"},[...N[6]||(N[6]=[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-0023ade8><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-0023ade8></path><path d="M21 3v5h-5" data-v-0023ade8></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-0023ade8></path><path d="M8 16H3v5" data-v-0023ade8></path></svg>',1)])]),e.createElementVNode("button",{type:"button",class:"map-catalog-widget__toggle-button",onClick:v,"aria-label":"Розгорнути/згорнути"},[(e.openBlock(),e.createElementBlock("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass({"map-catalog-widget__toggle-icon--rotated":c.value})},[...N[7]||(N[7]=[e.createElementVNode("path",{d:"M6 9L12 15L18 9",stroke:"#000000","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))])])]),e.createElementVNode("div",{class:e.normalizeClass(["map-catalog-widget__content",{"map-catalog-widget__content--collapsed":!c.value}])},[e.createElementVNode("div",qg,[e.createElementVNode("button",{onClick:N[0]||(N[0]=B=>l.value="catalog"),class:e.normalizeClass(["px-4 py-2 text-sm font-medium",l.value==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"])}," Каталог ",2),e.createElementVNode("button",{onClick:N[1]||(N[1]=B=>l.value="selected"),class:e.normalizeClass(["px-4 py-2 text-sm font-medium",l.value==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"])}," Вибрані шари ",2)]),e.createElementVNode("div",Hg,[l.value==="catalog"?(e.openBlock(),e.createBlock(gg,{key:0,class:"map-catalog-widget__scroll",catalog:a.value,selected:i.value,search:s.value,"onUpdate:search":N[2]||(N[2]=B=>s.value=B),onToggleLayer:E,onOpenFilter:D},null,8,["catalog","selected","search"])):l.value==="selected"?(e.openBlock(),e.createBlock(Sg,{key:1,catalog:a.value,selected:i.value,onToggleLayer:E,onSelectLayer:N[3]||(N[3]=B=>l.value="catalog"),onReorder:F,onRemove:N[4]||(N[4]=B=>i.value=i.value.filter(T=>T!==B))},null,8,["catalog","selected"])):(e.openBlock(),e.createBlock(Ig,{key:2,layer:w.value,value:C.value,onChange:h,onClose:$},null,8,["layer","value"]))])],2)],2))}}),[["__scopeId","data-v-0023ade8"]]),Wg={key:1,class:"flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},Yg={class:"flex items-start justify-between gap-3 p-5 pb-3"},Zg={class:"inline-block text-xl font-semibold text-gray-800"},Gg={key:0,class:"mt-1 text-sm text-gray-500"},Kg={class:"flex items-center gap-[6px]"},Xg={class:"px-5 pb-5 space-y-6"},Jg={key:0,class:"space-y-2"},Qg={class:"flex flex-wrap gap-4"},ey=["value"],ty={key:1,class:"text-sm text-gray-500"},ny={key:2,class:"text-sm text-gray-500"},oy={class:"text-4xl font-medium text-gray-800"},ly={class:"space-y-[14px]"},ry={class:"flex items-center gap-[10px] text-gray-600"},ay={class:"font-medium text-gray-700"},iy={class:"flex items-center justify-end text-end gap-3"},sy={class:"font-medium text-gray-800"},cy={class:"min-w-[40px] font-medium text-[#3C3C4399]"},cl=oe(e.defineComponent({__name:"MapAttributeWidget",props:{config:{}},setup(t){const n=["#3a7a57","#d970d5","#8e997b","#b4c039","#a855f7","#71823a","#f79d92","#8b5cf6","#a6514e","#6b7280"],o=t,r=e.ref(!0),l=e.ref(!1),a=e.ref([]),i=e.ref(null),s=e.ref(null),f=e.ref(null),u=e.ref(null),x=e.ref(null),c=e.ref({}),g=e.ref(null);function d(k){return k&&JSON.parse(JSON.stringify(k))}const y=e.computed(()=>{const k=o.config.layer;if(typeof k!="string")throw new Error("MapAttributeWidget: `layer` must be a string");const N=k.trim();if(!N)throw new Error("MapAttributeWidget: `layer` must be non-empty");return N}),m=e.computed(()=>{const{list:k,attribute:N}=o.config;if(Array.isArray(k)&&k.length)return k.map(B=>({id:(B==null?void 0:B.id)!=null?String(B.id).trim():"",text:(B==null?void 0:B.text)!=null&&String(B.text).trim()||null})).filter(B=>B.id.length);if(Array.isArray(N))return N.map(B=>B!=null?String(B).trim():"").filter(B=>B.length).map(B=>({id:B,text:null}));if(typeof N=="string"){const B=N.trim();if(!B)throw new Error("MapAttributeWidget: `attribute` must be non-empty");return[{id:B,text:null}]}throw new Error("MapAttributeWidget: `attribute` or `list` must be provided")}),h=e.computed(()=>m.value.map(k=>({id:k.id,label:k.text||c.value[k.id]||k.id})));e.watch(m,k=>{if(!k.length){g.value=null,a.value=[];return}(!g.value||!k.some(N=>N.id===g.value))&&(g.value=k[0].id)},{immediate:!0});const p=e.computed(()=>{var k;return g.value||((k=m.value[0])==null?void 0:k.id)||null});e.watch(y,()=>{var k,N;(N=(k=s.value)==null?void 0:k.remove)==null||N.call(k),s.value=null,f.value=null,u.value=null,x.value=null,c.value={}});const E=e.computed(()=>{var k;return(k=u.value)!=null&&k.length?{id:y.value,name:f.value,filters:u.value}:null}),A=e.computed(()=>{var k,N;return((N=(k=E.value)==null?void 0:k.filters)==null?void 0:N.length)||0});async function F(k){var T;const N=await fetch(`/api/gis-service/${encodeURIComponent(k)}`);if(!N.ok){let L="Не вдалося завантажити налаштування шару";try{const j=await N.json();L=((T=j==null?void 0:j.message)==null?void 0:T.error)||(j==null?void 0:j.message)||L}catch{}throw new Error(L)}const B=await N.json();return f.value=(B==null?void 0:B.name)||null,u.value=Array.isArray(B==null?void 0:B.filters)?B.filters:null,x.value=d((B==null?void 0:B.style)||{}),c.value=((B==null?void 0:B.attributes)||[]).reduce((L,j)=>{const U=typeof(j==null?void 0:j.name)=="string"?j.name.trim():"",Y=typeof(j==null?void 0:j.ua)=="string"?j.ua.trim():"";return U&&(L[U]=Y||U),L},{}),B}function D(k,N){let B=ue(k);if(!B){const T=`${location.origin}/api/vtile/${k}/ua/{z}/{x}/{y}.vmt`;B=ue(k,{source:{type:"vector",tiles:[T],minzoom:0,maxzoom:14},layer:{id:k,source:k,"source-layer":k,style:(N==null?void 0:N.style)||{}},card:N==null?void 0:N.card,popup:N==null?void 0:N.popup})}return s.value=B,B}async function $(k,N){var L;const B=`/api/gis-service/${encodeURIComponent(k)}/${encodeURIComponent(N)}`,T=await fetch(B);if(!T.ok){let j="Не вдалося отримати статистику";try{const U=await T.json();j=((L=U==null?void 0:U.message)==null?void 0:L.error)||(U==null?void 0:U.message)||j}catch{}throw new Error(j)}return T.json()}function w(k){const N=new Map;return k&&(k.rules||[]).forEach(T=>{const L=(T==null?void 0:T.value)??(T==null?void 0:T.id);L!=null&&N.set(String(L),T)}),N}function C(k,N,B,T,L){if(typeof(N==null?void 0:N.color)=="string"&&N.color.trim())return N.color.trim();const j=o.config.colors||{};if(j[k])return j[k];const Y=w(B==null?void 0:B.style).get(k);return typeof(Y==null?void 0:Y.color)=="string"&&Y.color.trim()?Y.color.trim():n[L%n.length]}function _(k,N,B,T){var L;return(N==null?void 0:N.text)||(N==null?void 0:N.label)||(N==null?void 0:N.name)||(N==null?void 0:N[`${T}_text`])||((L=w(B==null?void 0:B.style).get(k))==null?void 0:L.label)||k}function I(k,N,B,T){if(!k)return;const L=d((N==null?void 0:N.style)||x.value)||{},j=T.trim();if(!j)return;const U={...L.colors||{},...o.config.colors||{}};j===T&&B.forEach(Y=>{Y.color.trim()&&(U[Y.id]=Y.color)}),k.setStyle({...L,type:L.type||"polygon",colorAttr:j,opacity:.8,colors:U})}async function q(){var j,U;a.value=[],i.value=null;const k=y.value,N=p.value;if(!N)return;l.value=!0;const B=await F(k);D(k,B);const T=await $(k,N),L=Array.isArray(T==null?void 0:T.rows)?T.rows.map((Y,re)=>{const X=(Y==null?void 0:Y.id)??(Y==null?void 0:Y.value),ee=X!=null?String(X):"";if(!ee)return null;const fe=_(ee,Y,B,N),pe=Number((Y==null?void 0:Y.count)??0)||0,me=C(ee,Y,B,N,re);return{id:ee,label:fe,count:pe,color:me}}).filter(Boolean):[];a.value=L,i.value=((j=T==null?void 0:T.field)==null?void 0:j.label)||((U=T==null?void 0:T.field)==null?void 0:U.name)||null,I(s.value,B,L,N),l.value=!1}e.watch(()=>[y.value,p.value],()=>{q()},{immediate:!0});const P=e.computed(()=>"Набори даних"),M=e.computed(()=>a.value.reduce((k,N)=>k+N.count,0)),v=e.computed(()=>{var B;const k=p.value;return((B=h.value.find(T=>T.id===k))==null?void 0:B.label)||null||i.value||k||null});function b(k){return M.value?`${(k/M.value*100).toFixed(2)}%`:"0.00%"}return e.onBeforeUnmount(()=>{var k,N;(N=(k=s.value)==null?void 0:k.remove)==null||N.call(k)}),(k,N)=>r.value?(e.openBlock(),e.createElementBlock("div",Wg,[e.createElementVNode("div",Yg,[e.createElementVNode("div",null,[e.createElementVNode("h2",Zg,e.toDisplayString(P.value),1),v.value&&h.value.length===1?(e.openBlock(),e.createElementBlock("p",Gg,e.toDisplayString(v.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Kg,[E.value?(e.openBlock(),e.createBlock(jt,{key:0,class:"flex justify-center items-center h-[36px] w-[36px] text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full",count:A.value,layer:E.value},null,8,["count","layer"])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"flex justify-center items-center h-[36px] w-[36px] text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full",onClick:N[1]||(N[1]=B=>r.value=!1)},[...N[3]||(N[3]=[e.createElementVNode("svg",{class:"w-4 h-4",xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",viewBox:"0 0 24 24"},[e.createElementVNode("path",{d:"M18 6 6 18"}),e.createElementVNode("path",{d:"m6 6 12 12"})],-1)])])])]),e.createElementVNode("div",Xg,[h.value.length>1?(e.openBlock(),e.createElementBlock("div",Jg,[e.createElementVNode("div",Qg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,B=>(e.openBlock(),e.createElementBlock("label",{key:B.id,class:"inline-flex items-center gap-2 text-sm text-gray-700"},[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"text-sky-600 focus:ring-sky-500",value:B.id,"onUpdate:modelValue":N[2]||(N[2]=T=>g.value=T)},null,8,ey),[[e.vModelRadio,g.value]]),e.createElementVNode("span",null,e.toDisplayString(B.label),1)]))),128))])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",ty,"Завантаження…")):a.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h4",oy,e.toDisplayString(M.value),1),e.createElementVNode("ul",ly,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,B=>(e.openBlock(),e.createElementBlock("li",{key:B.id,class:"flex flex-wrap items-center justify-between gap-x-2"},[e.createElementVNode("div",ry,[e.createElementVNode("span",{class:"block w-[16px] h-[16px] rounded",style:e.normalizeStyle({backgroundColor:B.color})},null,4),e.createElementVNode("span",ay,e.toDisplayString(B.label),1)]),e.createElementVNode("div",iy,[e.createElementVNode("span",sy,e.toDisplayString(B.count),1),e.createElementVNode("span",cy,e.toDisplayString(b(B.count)),1)])]))),128))])],64)):(e.openBlock(),e.createElementBlock("div",ny,"Дані відсутні"))])])):(e.openBlock(),e.createElementBlock("button",{key:0,class:"py-2 px-2.5 max-h-[38px] inline-flex items-center gap-x-1.5 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50",onClick:N[0]||(N[0]=B=>r.value=!0)}," Набори даних "))}}),[["__scopeId","data-v-9686ce7b"]]),dy={class:"map-search-widget flex flex-col gap-2 bg-white border border-stone-200 shadow-2xs rounded-xl widget p-3 min-w-[200px]"},uy=["title"],py={key:0,class:"vs-select__options absolute z-50 mt-1 w-auto min-w-full bg-white border border-gray-300 shadow-lg rounded-lg text-sm text-gray-900"},my=["onClick"],fy=["placeholder"],gy={class:"absolute inset-y-0 right-2 flex items-center gap-1"},yy={class:"divide-y divide-gray-100"},hy=["onClick"],Bt="search-geom-source",Vt="search-geom-layer-fill",zt="search-geom-layer-line",xy=30,by=8,ky="https://data.softpro.ua/api-user/gis-url-proxy",wy="https://geo.rv.ua/api-user/dzk.api",_y="https://nominatim.openstreetmap.org/search",dl=oe(e.defineComponent({__name:"MapSearchWidget",props:{config:{}},setup(t){const n=t,o=Se(),r=e.getCurrentInstance();function l(){return typeof globalThis<"u"&&globalThis.proxy?globalThis.proxy:typeof window<"u"&&window.proxy?window.proxy:null}function a(){var te,le,de;const R=(te=r==null?void 0:r.appContext.config.globalProperties)==null?void 0:te.$settings,H=(le=R==null?void 0:R.map)==null?void 0:le.searchViewbox;if(H)return H;const W=l();return(de=W==null?void 0:W.map)==null?void 0:de.searchViewbox}const s=!!a()?["xy","parcel","address"]:["xy","parcel"],f=e.computed(()=>{var H,W;const R=(W=(H=n.config)==null?void 0:H.tools)==null?void 0:W.filter(te=>s.includes(te));return R&&R.length?R:s}),u=e.computed(()=>{var R,H;return((H=(R=n.config)==null?void 0:R.placeholder)==null?void 0:H.trim())||"Пошук…"}),x=e.ref(f.value[0]);e.watch(f,R=>{R.includes(x.value)||(x.value=R[0])});const c=e.ref(""),g=e.ref(!1),d=e.ref(null),y=e.ref(null),m=e.ref([]),h=e.ref(null),p=e.computed(()=>x.value==="address"&&m.value.length>0),E=e.computed(()=>{var R;return((R=n.config)==null?void 0:R.addressDebounceMs)??1e3});let A=null;const F=e.ref(!1);let D=null;function $(){D&&(D.remove(),D=null)}function w(){var H;const R=(H=o.map)==null?void 0:H.value;R&&(R.getLayer(Vt)&&R.removeLayer(Vt),R.getLayer(zt)&&R.removeLayer(zt),R.getSource(Bt)&&R.removeSource(Bt))}function C(R){var le,de,xe,se;if(!((le=n.config)!=null&&le.showMarker)||!R)return;const H=(de=o.map)==null?void 0:de.value;if(!H)return;w(),I();const W={type:"Feature",geometry:R,properties:{}};H.addSource(Bt,{type:"geojson",data:W});const te=((xe=n.config)==null?void 0:xe.geometryColor)||((se=n.config)==null?void 0:se.markerColor)||"#3B82F6";H.addLayer({id:Vt,type:"fill",source:Bt,paint:{"fill-color":te,"fill-opacity":.3}}),H.addLayer({id:zt,type:"line",source:Bt,paint:{"line-color":te,"line-width":1,"line-opacity":1}}),q(H)}let _=null;function I(){_&&(cancelAnimationFrame(_),_=null)}function q(R){const W=performance.now();function te(le){if(!R.getLayer(Vt))return;const xe=(le-W)%1200/1200,se=Math.sin(xe*Math.PI),Ie=.2+se*.3,z=1+se*1;R.setPaintProperty(Vt,"fill-opacity",Ie),R.setPaintProperty(zt,"line-width",z),_=requestAnimationFrame(te)}_=requestAnimationFrame(te)}function P(R,H){var le,de,xe;if(!((le=n.config)!=null&&le.showMarker))return;$(),w();const W=(de=o.map)==null?void 0:de.value;if(!W)return;if(H){C(H);return}const te=((xe=n.config)==null?void 0:xe.markerColor)||"#3B82F6";D=new maplibregl.Marker({color:te}).setLngLat([R.lng,R.lat]).addTo(W)}const M=e.reactive({position:"absolute",left:"0px",top:"0px",width:"100%",display:"none"});function v(){if(!y.value)return;const R=y.value.getBoundingClientRect(),H=R.width+xy,W=R.left+window.scrollX,te=R.bottom+window.scrollY+by;M.left=`${W}px`,M.top=`${te}px`,M.width=`${H}px`,M.display="block"}const b=()=>{p.value&&v()};function k(){A&&(clearTimeout(A),A=null)}e.watch(x,()=>{c.value="",g.value=!1,m.value=[],k(),F.value=!1,$(),w()}),e.watch(p,R=>{R?e.nextTick(()=>{v()}):M.display="none"}),e.watch(c,R=>{if(x.value!=="address"){m.value=[],k();return}if(!R.trim()){m.value=[],k();return}k(),A=window.setTimeout(()=>{X(R).catch(H=>{const W=(H==null?void 0:H.message)||"Помилка пошуку адреси";ce.notify({type:"error",title:"Пошук адреси",message:W})})},E.value)});function N(R){x.value=R}function B(){c.value="",m.value=[],F.value=!1,$(),w()}function T(R){const H=R.target;if(g.value){const W=d.value;W&&!W.contains(H)&&(g.value=!1)}if(p.value){const W=h.value;W&&!W.contains(H)&&(m.value=[])}}e.onMounted(()=>{window.addEventListener("click",T,!0),window.addEventListener("scroll",b,!0),window.addEventListener("resize",b)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",T,!0),window.removeEventListener("scroll",b,!0),window.removeEventListener("resize",b),k(),$(),w()});function L(R){return R==="xy"?"Координати":R==="parcel"?"Кадастр":"Адреси"}function j(R){const H=R.replace(/[,]+/g," ").trim();if(!H)return null;const W=H.split(/\s+/).filter(Boolean);if(W.length<2)return null;const te=W.slice(0,2).map(Number);if(!te.every(Z=>Number.isFinite(Z)))return null;let[le,de]=te,xe=le,se=de;const Ie=Z=>Math.abs(Z)<=90,z=Z=>Math.abs(Z)<=180;if(!Ie(xe)||!z(se))if(Ie(se)&&z(xe))xe=de,se=le;else return null;return{lat:xe,lng:se}}function U(R){return((R==null?void 0:R.items)||[]).map((W,te)=>{var le,de,xe;return{id:String((W==null?void 0:W.id)??te),title:(W==null?void 0:W.title)||((le=W==null?void 0:W.address)==null?void 0:le.label)||"Знайдений обʼєкт",lat:Number((de=W==null?void 0:W.position)==null?void 0:de.lat),lng:Number((xe=W==null?void 0:W.position)==null?void 0:xe.lng)}})}function Y(R){const H=(R==null?void 0:R.result)||(R==null?void 0:R.data)||R;if(!H)return[];const W=H.geom_centroid;if(!W||!Array.isArray(W.coordinates))return[];const[te,le]=W.coordinates;return!Number.isFinite(le)||!Number.isFinite(te)?[]:[{id:"parcel",title:H.cadnum||H.cad_num||"Земельна ділянка",lat:le,lng:te,geom:H.geom||null}]}function re(R){return(Array.isArray(R==null?void 0:R.features)?R.features:[]).map((W,te)=>{var Z,ae,be;const le=(Z=W==null?void 0:W.geometry)==null?void 0:Z.coordinates,de=Number(le==null?void 0:le[0]),xe=Number(le==null?void 0:le[1]);if(!Number.isFinite(xe)||!Number.isFinite(de))return null;const se=(W==null?void 0:W.properties)||{},Ie=((ae=se==null?void 0:se.geocoding)==null?void 0:ae.label)||(se==null?void 0:se.display_name)||(se==null?void 0:se.label)||"Адреса";return{id:String(((be=se==null?void 0:se.geocoding)==null?void 0:be.place_id)||(se==null?void 0:se.place_id)||te),title:Ie,lat:xe,lng:de}}).filter(W=>!!W)}async function X(R){m.value=[],k();const H=new URL(_y);H.searchParams.set("format","geojson"),H.searchParams.set("q",R),H.searchParams.set("addressdetails","1"),H.searchParams.set("bounded","1");const W=a();W&&H.searchParams.set("viewbox",W);const te=await fetch(H.toString());if(!te.ok)throw new Error(`HTTP ${te.status}`);const le=await te.json(),de=re(le);if(!de.length){ce.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}m.value=de}function ee(R){pe(R),m.value=[],c.value=R.title}function fe(R){const W=R.replace(/\s+/g,"").split(":");if(console.log(W),W.length!==4)return!1;const te=[10,2,3,4];return W.every((le,de)=>le.length===te[de]&&/^\d+$/.test(le))}function pe(R){var W,te;const H=((W=n.config)==null?void 0:W.zoom)??17;(te=o.flyTo)==null||te.call(o,{center:[R.lng,R.lat],zoom:H}),P(R,R.geom),F.value=!0}async function me(){const R=c.value.trim();if(R){if(x.value==="xy"){const H=j(R);if(!H){ce.notify({type:"warning",title:"Пошук координат",message:"Не знайдено або невірний формат координат"});return}pe(H);return}if(x.value==="address"){try{await X(R)}catch(H){const W=(H==null?void 0:H.message)||"Помилка пошуку адреси";ce.notify({type:"error",title:"Пошук адреси",message:W})}return}try{const H=new URL(x.value==="here"?ky:wy);if(x.value==="here")H.searchParams.set("searchtext",R);else{if(!fe(R)){ce.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}H.searchParams.set("cad_num",R)}const W=await fetch(H.toString());if(!W.ok)throw new Error(`HTTP ${W.status}`);const te=await W.json(),le=x.value==="here"?U(te):Y(te);if(!le.length)ce.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const de=le[0];pe(de)}}catch(H){const W=(H==null?void 0:H.message)||"Помилка пошуку";ce.notify({type:"error",title:"Пошук",message:W})}}}return(R,H)=>(e.openBlock(),e.createElementBlock("div",dy,[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(me,["prevent"])},[f.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:d,class:"relative search-type w-[100px]"},[e.createElementVNode("button",{type:"button",class:"vstSelect-input transition-all text-left bg-white border border-gray-200 text-gray-900 rounded-lg focus:ring-blue-500 focus:border-blue-100 block w-full py-1.5 px-3 text-sm cursor-pointer flex items-center justify-between gap-2",onClick:H[0]||(H[0]=W=>g.value=!g.value)},[e.createElementVNode("span",{class:"block w-full truncate",title:L(x.value)},e.toDisplayString(L(x.value)),9,uy),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":g.value}]),viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[...H[3]||(H[3]=[e.createElementVNode("path",{d:"M6 9l6 6 6-6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))]),g.value?(e.openBlock(),e.createElementBlock("div",py,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,W=>(e.openBlock(),e.createElementBlock("li",{key:W,class:"px-3 py-2 cursor-pointer hover:bg-gray-100 text-gray-900",onClick:te=>N(W)},e.toDisplayString(L(W)),9,my))),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"searchWrapperRef",ref:y,class:"relative flex-1 min-w-[140px]"},[x.value==="parcel"?(e.openBlock(),e.createBlock(e.unref(Bn.VsInputMask),{key:0,modelValue:c.value,"onUpdate:modelValue":H[1]||(H[1]=W=>c.value=W),mask:"0000000000:00:000:0000",class:e.normalizeClass(["vs-input !h-[34px] transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid py-1.5 pl-3 text-sm",F.value?"!pr-14":"!pr-8"])},null,8,["modelValue","class"])):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":H[2]||(H[2]=W=>c.value=W),placeholder:u.value,type:"text",class:e.normalizeClass(["vs-input transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid py-1.5 pl-3 text-sm",F.value?"!pr-14":"!pr-8"])},null,10,fy)),[[e.vModelText,c.value,void 0,{trim:!0}]]),e.createElementVNode("div",gy,[F.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"flex items-center text-gray-400 hover:text-gray-600","aria-label":"Очистити",onClick:B},[...H[4]||(H[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})],-1)])])):e.createCommentVNode("",!0),H[5]||(H[5]=e.createElementVNode("button",{type:"submit",class:"flex items-center text-gray-400 hover:text-gray-600","aria-label":"Пошук"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-4.35-4.35m0 0A7.5 7.5 0 1 0 5 5a7.5 7.5 0 0 0 11.65 11.65Z"})])],-1))]),p.value?(e.openBlock(),e.createBlock(e.Teleport,{key:2,to:"body"},[e.createElementVNode("div",{ref_key:"addressResultsRef",ref:h,class:"vs-select__options mt-1 bg-white border border-gray-300 shadow-lg rounded-lg text-sm text-gray-900 z-50 max-h-60 overflow-auto",style:e.normalizeStyle(M)},[e.createElementVNode("ul",yy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,W=>(e.openBlock(),e.createElementBlock("li",{key:W.id,class:"px-3 py-2 cursor-pointer hover:bg-gray-50",onClick:te=>ee(W)},e.toDisplayString(W.title),9,hy))),128))])],4)])):e.createCommentVNode("",!0)],512)],32)]))}}),[["__scopeId","data-v-d773179e"]]),Ey="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css",Ny="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js",By=oe(e.defineComponent({__name:"MapPrintControl",setup(t){const{map:n,ready:o,addControl:r,removeControl:l}=Se(),a=e.ref(null),i=e.ref(null),s=e.ref(null),f=e.ref(null);let u=null;function x(){!window.mapboxgl&&window.maplibregl&&(window.mapboxgl=window.maplibregl)}function c($){if(Array.from(document.styleSheets).some(_=>{var I;return(I=_==null?void 0:_.href)==null?void 0:I.includes($)}))return;const C=document.createElement("link");C.rel="stylesheet",C.href=$,document.head.appendChild(C)}function g($){return new Promise((w,C)=>{const _=Array.from(document.scripts).find(q=>q.src===$);if(_){if(_._loaded)return w();_.addEventListener("load",()=>w()),_.addEventListener("error",()=>C(new Error(`Failed ${$}`)));return}const I=document.createElement("script");I.src=$,I.async=!0,I.onload=()=>{I._loaded=!0,w()},I.onerror=()=>C(new Error(`Failed ${$}`)),document.head.appendChild(I)})}function d(){var w,C,_;const $=window;return $.MapboxExportControl||((w=$.mapboxgl)==null?void 0:w.MapboxExportControl)||((C=$.mapboxglExport)==null?void 0:C.MapboxExportControl)||((_=$.mapboxglExport)==null?void 0:_.default)||null}function y(){const $=document.createElementNS("http://www.w3.org/2000/svg","svg");return $.setAttribute("xmlns","http://www.w3.org/2000/svg"),$.setAttribute("viewBox","0 0 24 24"),$.setAttribute("width","18"),$.setAttribute("height","18"),$.setAttribute("fill","none"),$.setAttribute("stroke","currentColor"),$.setAttribute("stroke-width","2"),$.setAttribute("stroke-linecap","round"),$.setAttribute("stroke-linejoin","round"),$.classList.add("map-control-button__icon"),[{d:"M0 0h24v24H0z",stroke:"none",fill:"none"},{d:"M17 17h2a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-14a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2"},{d:"M17 9v-4a2 2 0 0 0 -2 -2h-6a2 2 0 0 0 -2 2v4"},{d:"M7 13m0 2a2 2 0 0 1 2 -2h6a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2z"}].forEach((C,_)=>{const I=document.createElementNS("http://www.w3.org/2000/svg","path");Object.entries(C).forEach(([q,P])=>{I.setAttribute(q,P)}),$.appendChild(I)}),$}function m(){const $=document.createElement("button");$.id="print-btn",$.type="button",$.className=["group relative flex items-center justify-center","w-9 h-9 rounded-xl shadow-lg transition-transform transition-shadow duration-200","bg-white text-gray-700 hover:bg-gray-50 hover:scale-105","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400/60 focus-visible:ring-offset-2"].join(" "),$.setAttribute("aria-label","Друк карти");const w=y(),C=document.createElement("span");return C.className=["absolute right-full mr-3 px-1.5 py-0.5","bg-gray-700 text-white text-[0.75rem] font-medium rounded-md","opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100","pointer-events-none transition-opacity duration-200 whitespace-nowrap"].join(" "),C.textContent="Друк карти",C.setAttribute("aria-hidden","true"),$.appendChild(w),$.appendChild(C),$.addEventListener("click",_=>{_.stopPropagation(),h()}),f.value=$,$}function h(){if(!s.value)return;s.value.style.display==="block"?E():p()}function p(){var $,w,C;s.value&&(s.value.style.display="block",($=f.value)==null||$.classList.add("scale-105","shadow-xl"),(w=i.value)==null||w.toggleCrosshair(!0),(C=i.value)==null||C.togglePrintableArea(!0),document.addEventListener("click",A))}function E(){var $,w,C;s.value&&(s.value.style.display="none",($=f.value)==null||$.classList.remove("scale-105","shadow-xl"),(w=i.value)==null||w.toggleCrosshair(!1),(C=i.value)==null||C.togglePrintableArea(!1),document.removeEventListener("click",A))}function A($){const w=a.value;w&&($.target&&w.contains($.target)||E())}function F($){const w={Size:"Розмір",Orientation:"Орієнтація",Format:"Формат",DPI:"DPI",Landscape:"Горизонтальна",Portrait:"Вертикальна",PNG:"PNG",JPEG:"JPEG",SVG:"SVG",PDF:"PDF","Page Size":"Розмір","Page Orientation":"Орієнтація"};$.querySelectorAll("label, option").forEach(_=>{var q;const I=(q=_.textContent)==null?void 0:q.trim();I&&w[I]&&(_.textContent=w[I])});const C=$.querySelector("button");C&&(C.textContent="Друкувати")}function D($){const w=$.querySelector(".mapboxgl-export-list");if(!w||!a.value)return;s.value=w;const C=$.querySelector("button");if(C&&(C.style.display="none"),$.style.display="none",!f.value){const I=m();a.value.appendChild(I)}w.style.display="none";const _="_printControlBound";if(!w[_]){const I=q=>q.stopPropagation();w.addEventListener("click",I),w.addEventListener("mousedown",I),w[_]=!0}a.value.appendChild(w),F(w)}return e.onMounted(async()=>{await(o==null?void 0:o());const $=n.value;if(!$)return;c(Ey),x();try{await g(Ny)}catch(_){console.warn("[MapPrintControl] load error",_);return}const w=d();if(!w)return;const C=new w({PageSize:"A4",PageOrientation:"landscape",Format:"pdf",DPI:300,Crosshair:!0,PrintableArea:!0});if(i.value=C,typeof C.onAdd=="function"){const _=C.onAdd.bind(C);C.onAdd=I=>{const q=_(I);return setTimeout(()=>q&&D(q),50),q}}r?r(C,"top-right"):$.addControl(C,"top-right"),u=_=>{_.key==="Escape"&&E()},document.addEventListener("keyup",u)}),e.onBeforeUnmount(()=>{E(),u&&(document.removeEventListener("keyup",u),u=null);const $=n.value;if(i.value)try{l?l(i.value):$==null||$.removeControl(i.value)}catch{}i.value=null}),($,w)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:a,class:"map-print-control"},null,512))}}),[["__scopeId","data-v-4fae7635"]]),Vy={class:"cursor-coordinates"},Cy={class:"cursor-coordinates__text"},$y=oe(e.defineComponent({__name:"MapCursorCoordinates",props:{coordinates:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",Vy,[e.createElementVNode("span",Cy,e.toDisplayString(t.coordinates),1)]))}}),[["__scopeId","data-v-334315d9"]]),vy={class:"minimap__wrapper"},Ot="minimap-viewport",Sy="minimap-viewport-layer",Ay=oe(e.defineComponent({__name:"MapMiniMap",props:{mapContext:{},width:{},height:{},options:{}},setup(t){var A,F,D,$;const n=t,o=((F=(A=e.getCurrentInstance())==null?void 0:A.appContext.config.globalProperties)==null?void 0:F.$settings)||null,r=ft((D=o==null?void 0:o.map)==null?void 0:D.center)||[30,50],l=e.ref(null),a=e.shallowRef(null),i=($=n.options)==null?void 0:$.active,s=e.ref(i===void 0?!1:!!i);function f(w,C){return typeof w=="number"&&Number.isFinite(w)?w:C}const u=e.computed(()=>{var q,P;const w=(q=n.options)==null?void 0:q.width,C=(P=n.options)==null?void 0:P.height,_=f(n.width??w,210),I=f(n.height??C,150);return{width:`${_}px`,height:`${I}px`}});function x(){var C,_;const w=(_=(C=n.mapContext)==null?void 0:C.map)==null?void 0:_.value;if(!w||typeof w.getStyle!="function")return null;try{const I=w.getStyle();return I?JSON.parse(JSON.stringify(I)):null}catch{return null}}let c=null;function g(){var q;if(typeof window>"u"||a.value||!l.value)return;const w=x(),C=r,_={container:l.value,style:w??{version:8,sources:{voyager:{type:"raster",tiles:["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"voyager",type:"raster",source:"voyager"}]},center:C,zoom:((q=n.options)==null?void 0:q.zoom)??3,interactive:!1,attributionControl:!1},I={..._,...n.options??{}};I.container=_.container,a.value=new maplibregl.Map(I),a.value.on("load",()=>{y(),h()})}function d(){if(!a.value)return;const w=x();w&&(a.value.once("styledata",()=>{y(),h()}),a.value.setStyle(w))}function y(){if(a.value){if(typeof a.value.isStyleLoaded=="function"&&!a.value.isStyleLoaded()){a.value.once("styledata",()=>{y(),h()});return}a.value.getSource(Ot)||(a.value.addSource(Ot,{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]},properties:{}}}),a.value.addLayer({id:Sy,type:"fill",source:Ot,paint:{"fill-color":"#3b82f6","fill-opacity":.2,"fill-outline-color":"#1d4ed8"}}))}}function m(){s.value=!s.value,s.value&&e.nextTick(()=>{var w;return(w=a.value)==null?void 0:w.resize()})}function h(){var M,v;const w=(v=(M=n.mapContext)==null?void 0:M.map)==null?void 0:v.value;if(!a.value||!w||!w.getBounds)return;if(typeof a.value.isStyleLoaded=="function"&&!a.value.isStyleLoaded()){a.value.once("styledata",()=>{h()});return}const C=w.getBounds();if(!C)return;const _=C.getNorthEast(),I=C.getSouthWest();if(!_||!I)return;const q=[[I.lng,_.lat],[_.lng,_.lat],[_.lng,I.lat],[I.lng,I.lat],[I.lng,_.lat]],P=a.value.getSource(Ot);if(!P){y();return}P.setData({type:"Feature",geometry:{type:"Polygon",coordinates:[q]},properties:{}})}function p(){var _;const w=n.mapContext,C=(_=w==null?void 0:w.map)==null?void 0:_.value;!(w!=null&&w.on)||!C||(c==null||c(),c=w.on("move",h),h())}async function E(){const w=n.mapContext;if(w){if(typeof w.ready=="function")try{await w.ready()}catch{return}p()}}return e.onMounted(()=>{g(),E()}),e.watch(()=>n.mapContext,()=>{E(),h()}),e.watch(()=>{var w,C;return(C=(w=n.mapContext)==null?void 0:w.map)==null?void 0:C.value},()=>{a.value&&(d(),E())}),e.watch(u,()=>{a.value&&e.nextTick(()=>{var w;return(w=a.value)==null?void 0:w.resize()})}),e.watch(()=>n.options,()=>{var C;c==null||c(),c=null,a.value&&(a.value.remove(),a.value=null);const w=(C=n.options)==null?void 0:C.active;typeof w=="boolean"&&(s.value=w),e.nextTick(()=>{g(),E()})},{deep:!0}),e.onBeforeUnmount(()=>{c==null||c(),c=null,a.value&&(a.value.remove(),a.value=null)}),(w,C)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["minimap",{"minimap--open":s.value}])},[e.createElementVNode("button",{type:"button",class:"minimap__button",onClick:m},[e.createVNode(e.unref(Vl))]),e.createVNode(e.Transition,{name:"minimap-slide"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",vy,[e.createElementVNode("div",{ref_key:"minimapRoot",ref:l,class:"mapboxgl-ctrl-minimap mapboxgl-ctrl mapboxgl-map",style:e.normalizeStyle(u.value),id:"mapboxgl-minimap"},null,4)],512),[[e.vShow,s.value]])]),_:1})],2))}}),[["__scopeId","data-v-bc754c89"]]),Ly={key:1,class:"absolute bottom-4 right-4 z-[80] flex items-end gap-2"},Ty={class:"absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1"},Fy={class:"map-widget__overlay-grid"},My={key:0,id:"map-filter-popover-host",class:"map-widget__filter-host"},Dy={key:1,class:"map-widget__stack-wrapper map-widget__stack-wrapper--top"},Iy={class:"map-widget__stack"},jy={key:2,class:"map-widget__stack-wrapper map-widget__stack-wrapper--bottom xl:mb-5 mb-2"},zy={class:"map-widget__stack map-widget__stack--bottom"},Oy={key:0,class:"map-widget__state"},Ry={key:1,class:"map-widget__state map-widget__state--error"},Rt=oe(e.defineComponent({__name:"MapWidget",props:{id:{},height:{},minZoom:{},maxZoom:{},data:{}},setup(t){var de,xe,se,Ie;const n=t,o=he.useRoute(),r=he.useRouter(),l=e.ref(null),a=e.ref({}),i=e.ref(null),s=e.ref(!1),f=e.ref(null),u=e.ref(!1),x=e.ref([]),c=e.computed(()=>n.id||"main"),g=e.computed(()=>{var z,Z;return{height:((z=n.height)==null?void 0:z.trim())||((Z=a.value)==null?void 0:Z.height)||"calc(100vh - 65px)"}}),d=e.computed(()=>{var z;return((z=a.value)==null?void 0:z.name)??null}),y=e.computed(()=>{var z;return((z=a.value)==null?void 0:z.description)??null}),m=e.computed(()=>{var z;return M((z=a.value)==null?void 0:z.maps)}),h=e.computed(()=>{var Z,ae;const z=((Z=a.value)==null?void 0:Z.minZoom)??((ae=a.value)==null?void 0:ae.minzoom)??null;return typeof z=="number"?z:null}),p=e.computed(()=>{var Z,ae;const z=((Z=a.value)==null?void 0:Z.maxZoom)??((ae=a.value)==null?void 0:ae.maxzoom)??null;return typeof z=="number"?z:typeof n.maxZoom=="number"?n.maxZoom:20}),E=e.ref(null),A=e.computed(()=>{if(!E.value)return null;const{lng:z,lat:Z}=E.value;return`${Z.toFixed(6)}, ${z.toFixed(6)}`}),F=e.computed(()=>{var z;return((z=l.value)==null?void 0:z.ctx)??null}),D=e.computed(()=>{var z;return((z=a.value)==null?void 0:z.minimap)??null});function $(z){if(!z||typeof z!="object")return z;const Z=ft(z.center);return Z?{...z,center:Z}:z}const w=((xe=(de=e.getCurrentInstance())==null?void 0:de.appContext.config.globalProperties)==null?void 0:xe.$settings)||null;function C(z){if(z==null)return null;const Z=Number(typeof z=="string"?z.trim():z);return Number.isFinite(Z)?Z:null}const _=ft((se=w==null?void 0:w.map)==null?void 0:se.center),I=C((Ie=w==null?void 0:w.map)==null?void 0:Ie.zoom),q=e.computed(()=>{const z=(w==null?void 0:w.map)||null,Z=(z==null?void 0:z.boundary)??null,ae=(z==null?void 0:z.katottg)??null;return!Z&&!ae?null:{boundary:Z,katottg:ae}});function P(z){return typeof z=="string"&&z.trim()?z.trim().toLowerCase():"top-left"}function M(z){return Array.isArray(z)?z:z&&typeof z=="object"?Object.values(z).filter(Boolean):[]}const v=e.computed(()=>{var z;return M((z=a.value)==null?void 0:z.widgets)}),b=["left","right"],k=e.computed(()=>{const z={left:{top:[],bottom:[]},right:{top:[],bottom:[]}},Z={"top-left":{side:"left",align:"top"},"bottom-left":{side:"left",align:"bottom"},"top-right":{side:"right",align:"top"},"bottom-right":{side:"right",align:"bottom"}};return v.value.forEach(ae=>{const be=P(ae.position),Q=Z[be]??{side:"left",align:"top"};z[Q.side][Q.align].push(ae)}),z});function N(z){return Array.isArray(z)?z[0]??null:typeof z=="string"?z:null}async function B(){var Z;await e.nextTick();const z=(Z=l.value)==null?void 0:Z.ctx;return z?(z.ready&&await z.ready(),z):null}function T(){var z,Z,ae;return((ae=(Z=(z=l.value)==null?void 0:z.ctx)==null?void 0:Z.map)==null?void 0:ae.value)??null}function L(){const z=T();if(!z)return null;const Z=z.getCenter();return{z:z.getZoom().toFixed(2),x:Z.lng.toFixed(5),y:Z.lat.toFixed(5)}}async function j(){var ae;const z=await B(),Z=(ae=z==null?void 0:z.map)==null?void 0:ae.value;Z&&(typeof h.value=="number"&&Z.setMinZoom(h.value),typeof p.value=="number"&&Z.setMaxZoom(p.value))}async function U(){var Q;if(i.value)return;const z=await B(),Z=(Q=z==null?void 0:z.map)==null?void 0:Q.value;if(!Z)return;const ae=Z.getCenter(),be=Z.getZoom();i.value={center:[ae.lng,ae.lat],zoom:be}}function Y(){const z=L();if(!z)return;const Z=N(o.query.x),ae=N(o.query.y),be=N(o.query.z);Z===z.x&&ae===z.y&&be===z.z||r.replace({query:{...o.query,...z}}).catch(()=>{})}function re(z,Z,ae=1e-6){return Math.abs(z-Z)<=ae}async function X(){var Te;const z=await B(),Z=(Te=z==null?void 0:z.map)==null?void 0:Te.value;if(!z||!Z)return;const ae=parseFloat(N(o.query.x)??""),be=parseFloat(N(o.query.y)??""),Q=parseFloat(N(o.query.z)??""),ge=!Number.isNaN(ae),Le=!Number.isNaN(be),K=!Number.isNaN(Q);let $e=!1;if(ge&&Le){const Pe=Z.getCenter();(!re(Pe.lng,ae)||!re(Pe.lat,be))&&(Z.setCenter([ae,be]),$e=!0)}K&&Z.setZoom(Q),(!ge||!Le||!K||$e)&&Y()}let ee=null,fe=null;function pe(z){const Z=z==null?void 0:z.lngLat;Z&&(E.value={lng:Z.lng,lat:Z.lat})}async function me(){const z=await B();z!=null&&z.on&&(ee==null||ee(),ee=z.on("moveend",Y),fe==null||fe(),fe=z.on("mousemove",pe))}e.onUnmounted(()=>{ee==null||ee(),ee=null,fe==null||fe(),fe=null});async function R(z=!1){var ae,be;u.value=!1,f.value=null,E.value=null;const Z=z||!n.data;s.value=Z;try{const Q=Z?await(async()=>{const Te=await fetch(`/api/gis-map/${encodeURIComponent(c.value)}`);if(!Te.ok)throw new Error(`Помилка завантаження (${Te.status})`);return Te.json()})():n.data;Z||(u.value=!0);const ge=ft(Q.center)??_,Le=M(Q.layers).map(Te=>$(Te)),K=C(Q.zoom)??I;a.value={...Q,center:ge??null,zoom:K??Q.zoom??null,layers:Le,widgets:Q.widgets},x.value=Q.tools||["home","print"];const $e=await B();$e&&(ge&&((ae=$e.setCenter)==null||ae.call($e,ge)),K!=null&&((be=$e.setZoom)==null||be.call($e,K)),i.value||await U()),await j(),await X(),await me(),u.value=!0}catch(Q){f.value=(Q==null?void 0:Q.message)||"Не вдалося завантажити карту"}finally{Z&&(s.value=!1)}}const H=e.computed(()=>{var be;const z=new Map;return M((be=a.value)==null?void 0:be.layers).forEach(Q=>{if(!(Q!=null&&Q.id))return;const ge=$(Q)||Q;z.set(Q.id,{...ge})}),v.value.filter(Q=>(Q==null?void 0:Q.type)==="layers").flatMap(Q=>{var ge;return M((ge=Q==null?void 0:Q.config)==null?void 0:ge.layers)}).forEach(Q=>{if(!(Q!=null&&Q.id))return;const ge=z.get(Q.id)||{},Le=$(Q)||Q;z.set(Q.id,{...ge,...Le,actions:Q.actions||ge.actions||null,name:ge.name||Q.name||Q.title||ge.title||Q.id,title:ge.title||Q.title||ge.name||null,visible:ge.visible??Q.visible??!0})}),Array.from(z.values())}),W=e.ref([]);function te(z){W.value.includes(z)?W.value=W.value.filter(Z=>Z!==z):W.value.push(z)}const le=e.computed(()=>z=>W.value.includes(z.id));return e.watch([h,p],()=>{j()},{immediate:!0}),e.watch(c,()=>{R(!0)}),e.watch(()=>n.data,z=>{z&&R()}),e.onMounted(()=>{R()}),e.watch(()=>[o.query.x,o.query.y,o.query.z],()=>{X()}),(z,Z)=>(e.openBlock(),e.createElementBlock("div",{class:"map-widget",style:e.normalizeStyle(g.value)},[Z[2]||(Z[2]=e.createElementVNode("div",{id:"map-filter-popover-host",class:"map-widget__filter-host"},null,-1)),e.createVNode(It,{ref_key:"mapViewRef",ref:l,class:"map-widget__view"},{default:e.withCtx(()=>{var ae,be,Q,ge;return[q.value?(e.openBlock(),e.createBlock(ol,{key:0,"layer-id":"app-boundary",boundary:q.value.boundary,katottg:q.value.katottg},null,8,["boundary","katottg"])):e.createCommentVNode("",!0),F.value?(e.openBlock(),e.createElementBlock("div",Ly,[A.value?(e.openBlock(),e.createBlock($y,{key:0,coordinates:A.value},null,8,["coordinates"])):e.createCommentVNode("",!0),e.createVNode(Ay,{"map-context":F.value,options:D.value},null,8,["map-context","options"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Ty,[x.value.includes("home")?(e.openBlock(),e.createBlock(hn,{key:0,center:((ae=a.value)==null?void 0:ae.center)||((be=i.value)==null?void 0:be.center)||null,zoom:((Q=a.value)==null?void 0:Q.zoom)??((ge=i.value)==null?void 0:ge.zoom)??null},null,8,["center","zoom"])):e.createCommentVNode("",!0),x.value.includes("print")?(e.openBlock(),e.createBlock(By,{key:1})):e.createCommentVNode("",!0)]),u.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Fy,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(b,Le=>e.createElementVNode("div",{key:Le,class:e.normalizeClass(["map-widget__side",`map-widget__side--${Le}`])},[Le==="left"?(e.openBlock(),e.createElementBlock("div",My)):e.createCommentVNode("",!0),k.value[Le].top.length?(e.openBlock(),e.createElementBlock("div",Dy,[e.createElementVNode("div",Iy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value[Le].top,K=>{var $e,Te,Pe,He,Je,Qe,We,Ue;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:K.id||K.type,class:"map-overlay__item"},[K.type==="info"?(e.openBlock(),e.createBlock(ll,{key:0,title:(($e=K.config)==null?void 0:$e.title)||K.title||null,content:((Te=K.config)==null?void 0:Te.content)||"",links:m.value,"map-name":d.value,"map-description":y.value},null,8,["title","content","links","map-name","map-description"])):K.type==="catalog"?(e.openBlock(),e.createBlock(sl,{key:1,api:((Pe=K.config)==null?void 0:Pe.api)||null},null,8,["api"])):K.type==="layers"?(e.openBlock(),e.createBlock(il,{key:2,layers:H.value,onAction:Z[0]||(Z[0]=nt=>te(nt.layerId)),config:K.config},null,8,["layers","config"])):K.type==="basemaps"?(e.openBlock(),e.createBlock(Nt,{key:3,layers:((He=K.config)==null?void 0:He.layers)||null,"default-layer":((Je=K.config)==null?void 0:Je.default)||null,title:K.title||((Qe=K.config)==null?void 0:Qe.title)||null},null,8,["layers","default-layer","title"])):K.type==="legend"?(e.openBlock(),e.createBlock(mn,{key:4,items:((We=K.config)==null?void 0:We.items)||[]},null,8,["items"])):K.type==="filters"&&le.value(K)?(e.openBlock(),e.createBlock(pn,{key:5,"layer-id":(Ue=K.config)==null?void 0:Ue.layer,onClose:te},null,8,["layer-id"])):K.type==="dataset"||K.type==="attribute"?(e.openBlock(),e.createBlock(cl,{key:6,config:K.config},null,8,["config"])):K.type==="search"?(e.openBlock(),e.createBlock(dl,{key:7,config:K.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,K.visible!==!1]])}),128))])])):e.createCommentVNode("",!0),k.value[Le].bottom.length?(e.openBlock(),e.createElementBlock("div",jy,[e.createElementVNode("div",zy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value[Le].bottom,K=>{var $e,Te,Pe,He,Je,Qe,We,Ue;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:K.id||K.type,class:"map-overlay__item"},[K.type==="info"?(e.openBlock(),e.createBlock(ll,{key:0,title:(($e=K.config)==null?void 0:$e.title)||K.title||null,content:((Te=K.config)==null?void 0:Te.content)||"",links:m.value,"map-name":d.value,"map-description":y.value},null,8,["title","content","links","map-name","map-description"])):K.type==="catalog"?(e.openBlock(),e.createBlock(sl,{key:1,api:((Pe=K.config)==null?void 0:Pe.api)||null},null,8,["api"])):K.type==="layers"?(e.openBlock(),e.createBlock(il,{key:2,layers:H.value,onAction:Z[1]||(Z[1]=nt=>te(nt.layerId)),config:K.config},null,8,["layers","config"])):K.type==="basemaps"?(e.openBlock(),e.createBlock(Nt,{key:3,layers:((He=K.config)==null?void 0:He.layers)||null,"default-layer":((Je=K.config)==null?void 0:Je.default)||null,title:K.title||((Qe=K.config)==null?void 0:Qe.title)||null},null,8,["layers","default-layer","title"])):K.type==="legend"?(e.openBlock(),e.createBlock(mn,{key:4,items:((We=K.config)==null?void 0:We.items)||[]},null,8,["items"])):K.type==="filters"&&le.value(K)?(e.openBlock(),e.createBlock(pn,{key:5,"layer-id":(Ue=K.config)==null?void 0:Ue.layer,onClose:te},null,8,["layer-id"])):K.type==="dataset"||K.type==="attribute"?(e.openBlock(),e.createBlock(cl,{key:6,config:K.config},null,8,["config"])):K.type==="search"?(e.openBlock(),e.createBlock(dl,{key:7,config:K.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,K.visible!==!1]])}),128))])])):e.createCommentVNode("",!0)],2)),64))]),e.createVNode(el),e.createVNode(nl,{"map-id":c.value},null,8,["map-id"])],64)):e.createCommentVNode("",!0)]}),_:1},512),s.value?(e.openBlock(),e.createElementBlock("div",Oy,"Завантаження карти…")):f.value?(e.openBlock(),e.createElementBlock("div",Ry,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0)],4))}}),[["__scopeId","data-v-73d647f9"]]),Py={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},Uy={class:"rounded-xl border border-gray-200 overflow-hidden bg-white"},qy=e.defineComponent({__name:"MapPreview",props:{id:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("section",Py,[o[0]||(o[0]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"}," Попередній перегляд карти ",-1)),e.createElementVNode("div",Uy,[e.createVNode(Rt,{class:"w-full h-[360px]",id:t.id},null,8,["id"])])]))}}),Hy={class:"bg-white rounded-lg shadow-xl w-full max-w-4xl flex flex-col h-[80vh] m-4"},Wy={class:"flex items-center justify-between px-6 py-4 border-b border-gray-200"},Yy={key:0,class:"absolute top-0 left-0 right-0 bg-red-100 text-red-700 text-sm px-4 py-2 z-10 border-b border-red-200"},Zy={class:"flex-1 overflow-hidden relative bg-[#fffffe]"},Gy={class:"px-6 py-4 border-t border-gray-200 flex justify-end gap-3"},Ky=["disabled"],Xy=e.defineComponent({__name:"ConfigEditor",props:{modelValue:{}},emits:["update:modelValue","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(""),a=e.ref(null);e.watch(()=>o.modelValue,f=>{if(f){try{l.value=JSON.stringify(f,null,2)}catch{l.value="{}"}a.value=null}},{immediate:!0}),e.watch(l,f=>{if(!f.trim()){a.value=null;return}try{JSON.parse(f),a.value=null}catch(u){a.value=u.message}}),e.watch(()=>o.modelValue,()=>{setTimeout(()=>{const{monaco:f}=window;if(f&&f.editor){const u=f.editor.getEditors();u.length>0&&u[u.length-1].updateOptions({wordWrap:"on"})}},300)},{immediate:!0});function i(){r("update:modelValue",null),l.value="",a.value=null}function s(){if(!a.value)try{const f=JSON.parse(l.value);r("save",f),i()}catch(f){console.error("Failed to parse JSON",f)}}return(f,u)=>t.modelValue!==null?(e.openBlock(),e.createElementBlock("div",{key:0,class:"fixed inset-0 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:e.withModifiers(i,["self"])},[e.createElementVNode("div",Hy,[e.createElementVNode("div",Wy,[u[1]||(u[1]=e.createElementVNode("h3",{class:"text-lg font-semibold text-gray-800"}," Редагування конфігурації (JSON) ",-1)),e.createElementVNode("button",{onClick:i,class:"text-gray-500 hover:text-gray-700 transition-colors"},[e.createVNode(e.unref(yt),{size:20})])]),a.value?(e.openBlock(),e.createElementBlock("div",Yy," Помилка JSON: "+e.toDisplayString(a.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Zy,[e.createVNode(Dt,{modelValue:l.value,"onUpdate:modelValue":u[0]||(u[0]=x=>l.value=x),language:"json",theme:"vs-light",class:"w-full h-full"},null,8,["modelValue"])]),e.createElementVNode("div",Gy,[e.createElementVNode("button",{onClick:i,class:"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 transition-colors"}," Скасувати "),e.createElementVNode("button",{onClick:s,disabled:!!a.value,class:"px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"}," Зберегти ",8,Ky)])])])):e.createCommentVNode("",!0)}}),Jy={key:0,class:"text-center py-8 text-gray-500 border rounded-lg bg-gray-50"},Qy={key:1,class:"rounded-lg border border-gray-200 overflow-hidden"},eh={class:"w-full text-sm"},th={class:"divide-y divide-gray-200"},nh={class:"px-4 py-3"},oh=["onUpdate:modelValue","onChange"],lh=["value"],rh={class:"px-4 py-3"},ah=["onUpdate:modelValue","onChange"],ih=["value"],sh={class:"px-4 py-3 text-center"},ch=["checked","onChange"],dh={class:"px-4 py-3"},uh={key:0,class:"flex items-center gap-2"},ph=["onClick"],mh=["onClick"],fh={key:1},gh=["onClick"],yh={class:"px-4 py-3 text-right"},hh=["onClick"],xh=e.defineComponent({__name:"WidgetSettings",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:n}){const o=t,r=n,l=["catalog","legend","basemaps","info","layers","dataset","filters","search"],a=["top-left","top-right","bottom-left","bottom-right"],i=e.ref(null),s=e.ref(-1),f=e.computed(()=>o.modelValue||[]);function u(){const p=[...f.value,{type:"info",position:"top-left",visible:!0,config:{}}];r("update:modelValue",p)}function x(p){ce.confirm({title:"Видалити віджет?",message:"Ви впевнені, що хочете видалити цей віджет?",type:"warning",onConfirm:()=>{const E=f.value.filter((A,F)=>F!==p);r("update:modelValue",E)}})}function c(p,E,A){const F=[...f.value];F[p]={...F[p],[E]:A},r("update:modelValue",F)}function g(p){return!!p&&Object.keys(p).length>0}function d(p,E){s.value=p,i.value=E||{}}function y(p){d(p,{})}function m(p){ce.confirm({title:"Видалити конфігурацію?",message:"Ви впевнені, що хочете видалити конфігурацію цього віджета?",type:"warning",onConfirm:()=>{c(p,"config",void 0)}})}function h(p){s.value>-1&&c(s.value,"config",p),i.value=null,s.value=-1}return(p,E)=>{var A;return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:"flex items-center justify-between mb-4"},[E[1]||(E[1]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800"},"Віджети",-1)),e.createElementVNode("button",{onClick:u,class:"px-3 py-1.5 text-sm bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors"}," + Додати віджет ")]),(A=f.value)!=null&&A.length?(e.openBlock(),e.createElementBlock("div",Qy,[e.createElementVNode("table",eh,[E[2]||(E[2]=e.createElementVNode("thead",{class:"bg-gray-50 border-b border-gray-200"},[e.createElementVNode("tr",null,[e.createElementVNode("th",{class:"px-4 py-3 text-left font-medium text-gray-700 w-1/4"},"Тип"),e.createElementVNode("th",{class:"px-4 py-3 text-left font-medium text-gray-700 w-1/4"},"Розташування"),e.createElementVNode("th",{class:"px-4 py-3 text-center font-medium text-gray-700 w-24"},"Видимість"),e.createElementVNode("th",{class:"px-4 py-3 text-left font-medium text-gray-700"},"Конфігурація"),e.createElementVNode("th",{class:"px-4 py-3 text-right font-medium text-gray-700 w-24"},"Дії")])],-1)),e.createElementVNode("tbody",th,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(F,D)=>(e.openBlock(),e.createElementBlock("tr",{key:D,class:"hover:bg-gray-50"},[e.createElementVNode("td",nh,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":$=>F.type=$,onChange:$=>c(D,"type",F.type),class:"w-full px-2 py-1.5 bg-white border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-blue-500 text-gray-700"},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,$=>e.createElementVNode("option",{key:$,value:$},e.toDisplayString($),9,lh)),64))],40,oh),[[e.vModelSelect,F.type]])]),e.createElementVNode("td",rh,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":$=>F.position=$,onChange:$=>c(D,"position",F.position),class:"w-full px-2 py-1.5 bg-white border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-blue-500 text-gray-700"},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,$=>e.createElementVNode("option",{key:$,value:$},e.toDisplayString($),9,ih)),64))],40,ah),[[e.vModelSelect,F.position]])]),e.createElementVNode("td",sh,[e.createElementVNode("input",{type:"checkbox",checked:F.visible!==!1,onChange:$=>c(D,"visible",$.target.checked),class:"w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500"},null,40,ch)]),e.createElementVNode("td",dh,[g(F.config)?(e.openBlock(),e.createElementBlock("div",uh,[e.createElementVNode("button",{onClick:$=>d(D,F.config),class:"p-1 text-blue-600 hover:text-blue-800 hover:bg-blue-50 rounded transition-colors",title:"Редагувати конфігурацію"},[e.createVNode(e.unref(Ml),{size:16})],8,ph),e.createElementVNode("button",{onClick:$=>m(D),class:"p-1 text-red-500 hover:text-red-700 hover:bg-red-50 rounded transition-colors",title:"Видалити конфігурацію"},[e.createVNode(e.unref(yt),{size:16})],8,mh)])):(e.openBlock(),e.createElementBlock("div",fh,[e.createElementVNode("button",{onClick:$=>y(D),class:"p-1 text-green-600 hover:text-green-800 hover:bg-green-50 rounded transition-colors",title:"Додати конфігурацію"},[e.createVNode(e.unref(qt),{size:16})],8,gh)]))]),e.createElementVNode("td",yh,[e.createElementVNode("button",{onClick:$=>x(D),class:"p-1 text-gray-400 hover:text-red-500 transition-colors",title:"Видалити віджет"},[e.createVNode(e.unref(Ln),{size:16})],8,hh)])]))),128))])])])):(e.openBlock(),e.createElementBlock("div",Jy," Немає віджетів. Додайте перший віджет. ")),e.createVNode(Xy,{teleport:"#modal",modelValue:i.value,"onUpdate:modelValue":E[0]||(E[0]=F=>i.value=F),onSave:h},null,8,["modelValue"])])}}}),bh={class:"relative min-h-svh flex-1 flex-col flex gap-4 bg-white p-8 overflow-y-auto"},kh={class:"max-w-6xl mx-auto w-full"},wh={class:"flex items-center justify-between mb-6"},_h={class:"mb-2 text-2xl font-semibold text-gray-900"},Eh={class:"flex items-center gap-2"},Nh=["disabled"],Bh={key:0,class:"text-center py-12"},Vh={class:"space-y-6"},Ch={class:"space-y-6"},$h={class:"space-y-6"},vh=oe(e.defineComponent({__name:"MapSettings",setup(t){const n=he.useRouter(),o=he.useRoute(),r=e.ref(!0),l=e.ref(!1),a=e.ref([]),i=e.ref({}),s=[{name:"Загальна",id:"general"},{name:"Шари",id:"layers"},{name:"Віджети",id:"widgets"},{name:"Карта",id:"map"}],f=s.map($=>$.id),u=$=>$?Array.isArray($)?$[0]:$:null,x=(()=>{const $=u(o.query.tab);return $&&f.includes($)?$:"general"})(),c=e.ref(x);e.watch(()=>o.query.tab,$=>{const w=u($);w&&f.includes(w)&&c.value!==w&&(c.value=w)}),e.watch(c,$=>{o.query.tab!==$&&n.replace({query:{...o.query,tab:$}})});const g=e.ref({name:"",map_key:"",description:"",holder:"",image:"",keywords:[],center:null,zoom:11,widgets:[],layers:[]}),d=e.computed({get:()=>(g.value.layers||[]).map($=>$.id||$),set:$=>{g.value.layers=$}}),y=e.computed(()=>a.value.map($=>({id:$.id,text:$.name||$.id}))),m=e.computed({get:()=>d.value.map($=>{const w=y.value.find(C=>C.id===$);return w?w.text:$}),set:$=>{const w=$.map(C=>{const _=y.value.find(I=>I.text===C);return _?_.id:null}).filter(C=>C!==null);d.value=w}}),h=e.computed(()=>{const $=g.value.center;if(!Array.isArray($)||$.length<2)return"Не задано";const[w,C]=$;return w===void 0||C===void 0||w===null||C===null||Number.isNaN(Number(w))||Number.isNaN(Number(C))?"Не задано":`Lng ${Number(w).toFixed(6)}, Lat ${Number(C).toFixed(6)}`}),p=e.computed(()=>{const $=g.value.zoom;if($==null||$==="")return"Не задано";const w=Number($);return Number.isNaN(w)?"Не задано":w.toFixed(2)}),E=[{name:"name",type:"text",label:"Назва",col:6,validators:["required"]},{name:"map_key",type:"text",label:"Унікальний ключ",col:6,validators:["required"]},{name:"description",type:"textarea",label:"Опис",col:12},{name:"holder",type:"text",label:"Власник/Утримувач/Відповідальний",col:6},{name:"keywords",type:"Tags",label:"Ключові слова",placeholder:"Введіть тег та натисніть Enter",col:6},{name:"center",type:"array",label:"Центр",inputType:"number",limit:2,count:2,col:6},{name:"zoom",type:"number",label:"Зум",col:6,validators:["required"]},{name:"is_public",type:"switcher",label:"Чи публічна карта?",col:6,data:"yes_no"},{name:"is_active",type:"switcher",label:"Чи активна?",col:6,data:"yes_no"},{name:"image",type:"File",label:"Фото",col:12}];async function A(){try{const $=await fetch("/api/gis-layer-list");$.ok&&(a.value=await $.json())}catch($){console.error("Failed to load available layers:",$)}}async function F(){try{const w=await(await fetch(`/api/gis-map/${o.params.id}?original=1`)).json();g.value={...w,keywords:w.keywords||[],center:w.center??null,widgets:Array.isArray(w.widgets)?w.widgets:[],layers:(w.layers||[]).map(C=>C.id||C)}}catch($){console.error("Failed to load map:",$),ce.notify({type:"error",title:"Помилка",message:"Не вдалося завантажити карту"})}finally{r.value=!1}}async function D(){var w,C;const $=(C=(w=i.value)==null?void 0:w.validate)==null?void 0:C.call(w);if($){ce.notify({type:"warning",title:"Валідація",message:Object.entries($).map(([_,I])=>`${_}: ${I}`).join(`
153
- `)});return}l.value=!0;try{const _=JSON.parse(JSON.stringify(g.value));if(_.zoom=Number(_.zoom),Array.isArray(_.center)&&(_.center.every(P=>P==null||P===""||P===0)||_.center.length===0)&&(_.center=null),delete _.created_at,delete _.updated_at,delete _.created_by,delete _.updated_by,delete _.history,delete _.maps,!(await fetch(`/api/gis-map/${o.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(_)})).ok)throw new Error("Save failed");ce.notify({type:"success",title:"Успіх",message:"Збережено!"})}catch(_){console.error("Save error:",_),ce.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти"})}finally{l.value=!1}}return e.onMounted(async()=>{await A(),F()}),($,w)=>(e.openBlock(),e.createElementBlock("main",bh,[e.createElementVNode("div",kh,[e.createElementVNode("div",wh,[e.createElementVNode("div",null,[e.createElementVNode("h1",_h,e.toDisplayString(g.value.name||"Налаштування карти"),1),w[7]||(w[7]=e.createElementVNode("p",{class:"text-gray-600"},"Редагування параметрів карти",-1))]),e.createElementVNode("div",Eh,[e.createElementVNode("a",{onClick:w[0]||(w[0]=C=>e.unref(n).back()),class:"inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50"}," Повернутися "),e.createElementVNode("button",{onClick:D,disabled:l.value,class:"inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 disabled:opacity-50"},e.toDisplayString(l.value?"Збереження...":"Зберегти"),9,Nh)])]),r.value?(e.openBlock(),e.createElementBlock("div",Bh,[...w[8]||(w[8]=[e.createElementVNode("p",{class:"text-gray-500"},"Завантаження...",-1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(B0,{tabs:s,activeTab:c.value,"onUpdate:activeTab":w[1]||(w[1]=C=>c.value=C)},null,8,["activeTab"]),e.withDirectives(e.createElementVNode("div",Vh,[e.createVNode(C0,{schema:E,loading:r.value,modelValue:g.value,"onUpdate:modelValue":w[2]||(w[2]=C=>g.value=C),form:i.value,"onUpdate:form":w[3]||(w[3]=C=>i.value=C)},null,8,["loading","modelValue","form"])],512),[[e.vShow,c.value==="general"]]),e.withDirectives(e.createElementVNode("div",Ch,[e.createVNode(v0,{options:y.value,layerIDs:d.value,"onUpdate:layerIDs":w[4]||(w[4]=C=>d.value=C),layerNames:m.value,"onUpdate:layerNames":w[5]||(w[5]=C=>m.value=C)},null,8,["options","layerIDs","layerNames"])],512),[[e.vShow,c.value==="layers"]]),e.withDirectives(e.createVNode(xh,{modelValue:g.value.widgets,"onUpdate:modelValue":w[6]||(w[6]=C=>g.value.widgets=C)},null,8,["modelValue"]),[[e.vShow,c.value==="widgets"]]),e.withDirectives(e.createElementVNode("div",$h,[e.createVNode(qy,{"center-display":h.value,"zoom-display":p.value,"layer-names":m.value,id:e.unref(o).params.id},null,8,["center-display","zoom-display","layer-names","id"])],512),[[e.vShow,c.value==="map"]])],64))])]))}}),[["__scopeId","data-v-75f83258"]]),Sh={class:"flex-1 overflow-y-auto p-0"},Ah={class:"pt-0 mt-0"},Lh={key:0,class:"flex items-center justify-center py-12"},Th={key:1,class:"bg-red-50 border border-red-200 text-red-700 rounded-lg p-4 text-sm"},Fh={key:2,class:"text-center py-12 text-gray-500"},Mh={key:3,class:"grid grid-cols-1 lg:grid-cols-2 gap-4 max-h-[calc(100vh-400px)] md:max-h-[calc(100vh-370px)] lg:max-h-[calc(100vh-280px)]"},Dh=["onClick"],Ih={class:"flex items-start justify-between"},jh={class:"flex-1"},zh={class:"text-base font-semibold text-gray-900 mb-1"},Oh={class:"flex items-center gap-2 mb-3"},Rh=["onClick"],Ph={class:"relative"},Uh=["onClick"],qh={key:0,class:"absolute left-full top-1/2 -translate-y-1/2 ml-2 px-2 py-1 bg-white text-gray-600 text-xs rounded shadow-sm z-10 whitespace-nowrap animate-fade-in-out border border-gray-200/70"},Hh={class:"flex items-center gap-2"},Wh={class:"text-xs text-gray-500"},Yh=["onClick"],Zh={class:"px-6 py-3 border-t border-gray-200 custom-pagination bg-gray-100"},bn=12,Gh=oe(e.defineComponent({__name:"DictionariesGrid",props:{search:{},type:{}},emits:["update:counts"],setup(t,{expose:n,emit:o}){const r=t,l=o,a=he.useRouter(),i=he.useRoute(),s=e.ref(Number(i.query.page)||1),f=e.ref(!1),u=e.ref(0),x=e.ref([]),c=e.computed(()=>{const _=(s.value-1)*bn,I=_+bn;return x.value.slice(_,I)}),g=e.ref(!0),d=e.ref(null),y=e.ref(null),m=e.ref(null);let h=null,p=null;const E=(_="",I="")=>{const q=new URLSearchParams,P=_.trim();P&&q.set("search",P);const M=(I||"").trim();M&&q.set("type",M);const v=q.toString();return v?`/api/user-cls?${v}`:"/api/user-cls"},A=async(_="",I="")=>{try{g.value=!0,d.value=null;const q=E(_,I),P=await fetch(q);if(!P.ok)throw new Error(`HTTP error: ${P.status}`);const M=await P.json();if(x.value=M.data,!_.trim())u.value=M.data.length;else if(u.value===0){const v=await fetch(E("",I));if(v.ok){const b=await v.json();u.value=b.data.length}}l("update:counts",{filtered:x.value.length,total:u.value})}catch(q){d.value=q instanceof Error?q.message:"Failed to load classifiers",console.error("Error fetching classifiers:",q)}finally{g.value=!1}};e.onMounted(()=>{f.value=!0,A(r.search,r.type??"")}),e.watch(()=>[r.search,r.type],([_,I])=>{h&&clearTimeout(h),h=setTimeout(()=>{A(_,I??""),s.value=1},300)});const F=_=>{a.push({name:"classifier-detail",params:{name:_.name}})},D=_=>{y.value={name:_.name,description:_.description,alias:_.alias}},$=()=>{A(r.search,r.type??"")},w=async _=>{try{await navigator.clipboard.writeText(_),m.value=_,p&&clearTimeout(p),p=setTimeout(()=>{m.value=null},500)}catch(I){console.error("Failed to copy text: ",I)}};n({refetch:$});const C=_=>{s.value=_,a.replace({query:{...i.query,page:String(_)}})};return(_,I)=>(e.openBlock(),e.createElementBlock("main",Sh,[e.createElementVNode("div",Ah,[g.value?(e.openBlock(),e.createElementBlock("div",Lh,[e.createVNode(e.unref(vn),{width:32,height:32,"stroke-width":2,class:"text-sky-600 animate-spin"})])):d.value?(e.openBlock(),e.createElementBlock("div",Th,e.toDisplayString(d.value),1)):x.value.length===0?(e.openBlock(),e.createElementBlock("div",Fh," Нічого не знайдено ")):e.createCommentVNode("",!0),x.value.length>0?(e.openBlock(),e.createElementBlock("div",Mh,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(q,P)=>(e.openBlock(),e.createElementBlock("div",{key:P,class:"bg-white rounded-lg shadow-sm border border-gray-200 p-5 hover:border-sky-300 hover:shadow-md transition-all cursor-pointer relative",onClick:M=>F(q)},[e.createElementVNode("div",Ih,[e.createElementVNode("div",jh,[e.createElementVNode("h3",zh,e.toDisplayString(q.description),1),e.createElementVNode("div",Oh,[e.createElementVNode("p",{onClick:e.withModifiers(M=>w(q.name),["stop"]),class:"text-sm text-gray-600 mb-0 hover:border-b hover:border-gray-300"},e.toDisplayString(q.name),9,Rh),e.createElementVNode("div",Ph,[e.createElementVNode("button",{onClick:e.withModifiers(M=>w(q.name),["stop"]),class:"pt-1 mt-0.5 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors"},[e.createVNode(e.unref(Sl),{width:14,height:14,"stroke-width":2})],8,Uh),m.value===q.name?(e.openBlock(),e.createElementBlock("div",qh," Copied ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Hh,[e.createElementVNode("div",Wh,e.toDisplayString(q.count)+" записів ",1)])]),e.createElementVNode("button",{class:"px-3 py-1.5 text-xs font-medium text-sky-600 hover:bg-sky-50 rounded-lg transition-colors",onClick:e.withModifiers(M=>D(q),["stop"])}," Редагувати ",8,Yh)]),e.createElementVNode("button",{class:"absolute bottom-4 right-3 pb-1 mr-4 text-gray-400 hover:text-red-600 hover:bg-red-50 rounded transition-colors",onClick:I[0]||(I[0]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(Ln),{width:16,height:16,"stroke-width":2,class:""})])],8,Dh))),128))])):e.createCommentVNode("",!0)]),f.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:"#pagination"},[e.createElementVNode("div",Zh,[e.createVNode(e.unref(ce.VsPagination),{total:x.value.length,page:s.value,"page-size":bn,showPageSizes:!1,pageRange:10,view:"button",color:"gray","onUpdate:page":C,onPageChange:C},null,8,["total","page"])])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-6f5da01d"]]),Kh={class:"flex flex-col 2xl:flex-row 2xl:items-center 2xl:justify-between"},Xh={class:""},Jh={class:"text-2xl font-bold mb-2 flex items-center gap-2"},Qh={key:0,class:"text-sm font-normal text-gray-500 mt-2 ml-1"},e1={class:"flex flex-col gap-3 mt-4 lg:mt-5 lg:flex-row lg:items-center"},t1={class:"w-full md:w-auto"},n1=["value"],o1={class:"relative w-full lg:w-[16rem]"},l1={class:"bg-white focus:bg-white focus:border-blue-500 focus:ring-blue-500 rounded-lg"},r1={class:"absolute bottom-2/4 translate-y-2/4 cursor-pointer left-3"},a1=["value"],i1=e.defineComponent({__name:"DictionariesHeader",props:{modelValue:{},filter:{default:""},counts:{}},emits:["update:modelValue","update:filter","refresh"],setup(t,{emit:n}){const o=t,r=n,l=i=>{const s=i.target.value;r("update:filter",s)},a=e.ref(!1);return(i,s)=>(e.openBlock(),e.createElementBlock("div",Kh,[e.createElementVNode("div",Xh,[e.createElementVNode("h1",Jh,[s[3]||(s[3]=e.createTextVNode(" Довідники ",-1)),t.counts&&t.counts.total>0?(e.openBlock(),e.createElementBlock("span",Qh,e.toDisplayString(t.counts.filtered)+" / "+e.toDisplayString(t.counts.total),1)):e.createCommentVNode("",!0)]),s[4]||(s[4]=e.createElementVNode("p",{class:"text-sm opacity-60"}," Редагуйте довідники класифікаторів, що використовуються у вашій системі ",-1))]),e.createElementVNode("div",e1,[e.createElementVNode("div",t1,[s[6]||(s[6]=e.createElementVNode("label",{class:"sr-only",for:"dictionary-filter"},"Фільтр типу",-1)),e.createElementVNode("select",{id:"dictionary-filter",class:"w-full md:w-[140px] h-[38px] rounded-lg border border-stone-300 bg-white px-3 text-sm text-stone-800 focus:border-blue-500 focus:ring-blue-500 selection:border-blue-500 selection:text-white active:border-blue-500 active:text-white",value:o.filter,onChange:l},[...s[5]||(s[5]=[e.createElementVNode("option",{value:""},"Всі",-1),e.createElementVNode("option",{value:"cls"},"Довідники",-1),e.createElementVNode("option",{value:"select"},"Вибірки з БД",-1)])],40,n1)]),e.createElementVNode("div",o1,[e.createElementVNode("div",l1,[e.createElementVNode("div",r1,[e.createVNode(e.unref(Sn),{width:14,height:14,"stroke-width":2,class:"stroke-gray-500 transition-all"})]),e.createElementVNode("input",{type:"text",value:t.modelValue,placeholder:"Пошук за назвою довідника",class:"pl-9 pr-8 bg-white h-[38px] min-w-[100px] py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-300 text-sm text-stone-800 placeholder:text-stone-400 focus:border-2 focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500 rounded-lg",onInput:s[0]||(s[0]=f=>i.$emit("update:modelValue",f.target.value))},null,40,a1),t.modelValue?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute top-1/2 -translate-y-1/2 right-3 cursor-pointer text-gray-400 hover:text-gray-600",onClick:s[1]||(s[1]=f=>i.$emit("update:modelValue",""))},[e.createVNode(e.unref(yt),{width:14,height:14,"stroke-width":2})])):e.createCommentVNode("",!0)])]),e.createElementVNode("button",{onClick:s[2]||(s[2]=f=>a.value=!0),class:"w-full md:w-auto flex items-center justify-center gap-2 px-4 py-2 bg-sky-600 text-white rounded-lg hover:bg-sky-700 transition-colors text-sm font-medium"},[e.createVNode(e.unref(qt),{width:16,height:16,"stroke-width":2,class:"shrink-0"}),s[7]||(s[7]=e.createTextVNode(" Додати ",-1))])])]))}}),s1={class:"bg-white rounded-lg shadow-sm border border-gray-200 overflow-x-auto"},c1={key:0,class:"flex items-center justify-center py-12"},d1={key:1,class:"bg-red-50 border border-red-200 text-red-700 rounded-lg p-4 text-sm m-4"},u1={key:2,class:"text-center py-12 text-gray-500"},p1={key:3,class:"w-full min-w-[640px] divide-y divide-gray-200"},m1={class:"bg-gray-50 border-b border-gray-200"},f1={class:"divide-y divide-gray-200"},g1={class:"px-4 py-3 w-1/12"},y1={class:"px-4 py-3 text-sm font-medium text-gray-900 w-2/12"},h1={class:"px-4 py-3 text-sm text-gray-600 font-mono"},x1=e.defineComponent({__name:"DetailsTable",props:{classifierName:{},search:{}},setup(t,{expose:n}){const o=t,r=[{key:"color",label:"Колір",width:"w-2/12",align:"text-left"},{key:"text",label:"Назва",width:"w-6/12",align:"text-left"},{key:"id",label:"Код",width:"w-4/12",align:"text-left"}],l=e.ref([]),a=e.ref(!0),i=e.ref(null),s=e.computed(()=>{var c;if(!((c=o.search)!=null&&c.trim()))return l.value;const x=o.search.toLowerCase().trim();return l.value.filter(g=>{var d,y;return((d=g.text)==null?void 0:d.toLowerCase().includes(x))||((y=g.id)==null?void 0:y.toLowerCase().includes(x))})}),f=async x=>{try{a.value=!0,i.value=null;const c=await fetch(`/api/suggest/${encodeURIComponent(x)}`);if(!c.ok)throw new Error(`HTTP error: ${c.status}`);const g=await c.json();l.value=g.data}catch(c){i.value=c instanceof Error?c.message:"Failed to load items",console.error("Error fetching suggest items:",c)}finally{a.value=!1}};return e.onMounted(()=>{o.classifierName&&f(o.classifierName)}),e.watch(()=>o.classifierName,x=>{x&&f(x)}),n({refetch:()=>{f(o.classifierName)}}),(x,c)=>(e.openBlock(),e.createElementBlock("div",s1,[a.value?(e.openBlock(),e.createElementBlock("div",c1,[e.createVNode(e.unref(vn),{width:32,height:32,"stroke-width":2,class:"text-sky-600 animate-spin"})])):i.value?(e.openBlock(),e.createElementBlock("div",d1,e.toDisplayString(i.value),1)):l.value.length===0?(e.openBlock(),e.createElementBlock("div",u1," Записи відсутні ")):(e.openBlock(),e.createElementBlock("table",p1,[e.createElementVNode("thead",m1,[e.createElementVNode("tr",null,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,g=>e.createElementVNode("th",{key:g.key,class:e.normalizeClass(["px-4 py-3 text-xs font-semibold text-gray-900",[g.width,g.align]])},e.toDisplayString(g.label),3)),64))])]),e.createElementVNode("tbody",f1,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,g=>(e.openBlock(),e.createElementBlock("tr",{key:g.id,class:"hover:bg-gray-50 transition-colors"},[e.createElementVNode("td",g1,[e.createElementVNode("div",{class:"w-6 h-6 rounded border border-gray-300",style:e.normalizeStyle({backgroundColor:g.color})},null,4)]),e.createElementVNode("td",y1,e.toDisplayString(g.text),1),e.createElementVNode("td",h1,e.toDisplayString(g.id),1)]))),128))])]))]))}}),b1={class:"space-y-6 flex-1 overflow-y-auto p-0"},k1={class:"flex items-center gap-2 text-sm text-gray-600 mb-4"},w1={class:"text-gray-900"},_1={class:"flex items-start justify-between mb-6"},E1={class:"flex-1 mr-4"},N1={key:0,class:"flex items-center gap-2 group"},B1={class:"text-2xl font-bold text-gray-900"},V1={key:1,class:"flex items-center gap-2"},C1=["disabled"],$1=["disabled"],v1={class:"text-sm text-gray-500 mt-1"},S1={class:"flex items-center gap-3"},A1={class:"bg-white rounded-lg shadow-sm border border-gray-200 p-4 mb-4"},L1={class:"relative max-w-md"},T1={class:"vs-form-text relative w-full border-transparent text-sm focus:bg-white focus:border-blue-500 focus:ring-blue-500 rounded-sm"},F1={class:"absolute bottom-2/4 translate-y-2/4 cursor-pointer left-3"},M1=e.defineComponent({__name:"DictionaryDetails",setup(t){const n=he.useRouter(),o=he.useRoute(),r=e.computed(()=>o.params.name),l=e.ref(!1),a=e.ref(null),i=e.ref(null),s=e.ref(""),f=e.ref(""),u=e.ref(""),x=e.ref(!1),c=e.ref(!1),g=e.ref(null),d=async()=>{var A;try{const F=await fetch(`/api/user-cls?name=${encodeURIComponent(r.value)}`);if(!F.ok)return;const $=(A=(await F.json()).data)==null?void 0:A[0];$&&(f.value=$.description||"")}catch(F){console.error("Error fetching classifier details:",F)}},y=()=>{u.value=f.value,x.value=!0,e.nextTick(()=>{var A;(A=g.value)==null||A.focus()})},m=()=>{x.value=!1,u.value=""},h=async()=>{try{c.value=!0;const D=(await(await fetch(`/api/suggest/${encodeURIComponent(r.value)}`)).json()).data||[],$={name:r.value,description:u.value.trim()||null,data:D},w=await fetch(`/api/user-cls/${encodeURIComponent(r.value)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify($)});if(!w.ok)throw new Error(`HTTP error: ${w.status}`);f.value=u.value,x.value=!1}catch(A){console.error("Error saving description:",A)}finally{c.value=!1}};e.onMounted(()=>{d()}),e.watch(r,()=>{d()});const p=()=>{a.value=null,l.value=!0},E=A=>{a.value=A,l.value=!0};return(A,F)=>(e.openBlock(),e.createElementBlock("div",b1,[e.createElementVNode("div",null,[e.createElementVNode("div",k1,[e.createElementVNode("button",{onClick:F[0]||(F[0]=D=>e.unref(n).back()),class:"text-sky-600 hover:text-sky-500 transition-colors"}," Довідники "),F[4]||(F[4]=e.createElementVNode("span",{class:"text-gray-400"},"/",-1)),e.createElementVNode("span",w1,e.toDisplayString(r.value),1)]),e.createElementVNode("div",_1,[e.createElementVNode("div",E1,[x.value?(e.openBlock(),e.createElementBlock("div",V1,[e.withDirectives(e.createElementVNode("input",{ref_key:"editInputRef",ref:g,"onUpdate:modelValue":F[1]||(F[1]=D=>u.value=D),type:"text",class:"text-2xl font-bold text-gray-900 border-b-2 border-sky-500 focus:outline-none bg-transparent w-full",onKeydown:[e.withKeys(h,["enter"]),e.withKeys(m,["esc"])],placeholder:"Введіть опис"},null,544),[[e.vModelText,u.value]]),e.createElementVNode("button",{onClick:h,disabled:c.value,class:"p-1.5 text-green-600 hover:bg-green-50 rounded transition-colors disabled:opacity-50"},[e.createVNode(e.unref(Cl),{width:20,height:20,"stroke-width":2})],8,C1),e.createElementVNode("button",{onClick:m,disabled:c.value,class:"p-1.5 text-gray-400 hover:text-red-500 hover:bg-red-50 rounded transition-colors"},[e.createVNode(e.unref(yt),{width:20,height:20,"stroke-width":2})],8,$1)])):(e.openBlock(),e.createElementBlock("div",N1,[e.createElementVNode("h1",B1,e.toDisplayString(f.value),1),e.createElementVNode("button",{onClick:y,class:"opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-sky-600 transition-all rounded hover:bg-sky-50",title:"Редагувати опис"},[e.createVNode(e.unref(An),{width:18,height:18,"stroke-width":2})])])),e.createElementVNode("p",v1,e.toDisplayString(r.value),1)]),e.createElementVNode("div",S1,[e.createElementVNode("button",{onClick:p,class:"flex items-center gap-2 px-4 py-2 bg-sky-600 text-white rounded-lg hover:bg-sky-700 transition-colors text-sm font-medium"},[e.createVNode(e.unref(qt),{width:16,height:16,"stroke-width":2,class:"shrink-0"}),F[5]||(F[5]=e.createTextVNode(" Додати запис ",-1))]),e.createElementVNode("button",{onClick:F[2]||(F[2]=D=>e.unref(n).back()),class:"px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors text-gray-700 text-sm font-medium"}," Назад ")])])]),e.createElementVNode("div",A1,[e.createElementVNode("div",L1,[e.createElementVNode("div",T1,[e.createElementVNode("div",F1,[e.createVNode(e.unref(Sn),{width:18,height:18,"stroke-width":2,class:"stroke-gray-400 transition-all"})]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":F[3]||(F[3]=D=>s.value=D),type:"text",placeholder:"Пошук за назвою або описом...",class:"pl-9 bg-white h-[38px] min-w-[100px] py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-200 text-sm text-stone-800 placeholder:text-stone-400 focus:border-2 focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500 rounded-lg"},null,512),[[e.vModelText,s.value]])])])]),e.createVNode(x1,{ref_key:"detailsTableRef",ref:i,"classifier-name":r.value,search:s.value,onEdit:E},null,8,["classifier-name","search"])]))}}),D1={class:"flex-col justify-between h-full"},I1={class:"classifiers-component space-y-6 p-8 pt-2 max-w-[90%] mx-auto h-[calc(100vh-95px)]"},j1=e.defineComponent({__name:"index",setup(t){const n=he.useRoute(),o=e.ref(""),r=e.ref(""),l=e.ref(null),a=e.ref({filtered:0,total:0}),i=f=>{a.value=f},s=()=>{var f;(f=l.value)==null||f.refetch()};return(f,u)=>(e.openBlock(),e.createElementBlock("div",D1,[e.createElementVNode("div",I1,[e.unref(n).params.name?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(i1,{key:0,modelValue:o.value,"onUpdate:modelValue":u[0]||(u[0]=x=>o.value=x),filter:r.value,"onUpdate:filter":u[1]||(u[1]=x=>r.value=x),counts:a.value,onRefresh:s},null,8,["modelValue","filter","counts"])),e.unref(n).params.name?(e.openBlock(),e.createBlock(M1,{key:2})):(e.openBlock(),e.createBlock(Gh,{key:1,ref_key:"gridRef",ref:l,search:o.value,type:r.value,"onUpdate:counts":i},null,8,["search","type"]))]),u[2]||(u[2]=e.createElementVNode("div",{id:"pagination",class:"bg-gray-100"},null,-1))]))}});function z1(t){t.component("MapCustom",Rt)}ye.CartoCSS=w0,ye.Classifiers=j1,ye.MapSettings=vh,ye.MapWidget=Rt,ye.Raster=jf,ye.Register=Ds,ye.Service=Dm,ye.default=Rt,ye.install=z1,ye.template1=Dn,ye.template2=In,ye.template3=jn,ye.template4=zn,ye.template5=On,Object.defineProperties(ye,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
150
+ `),a=r?"+":l?"":"-";return o+a+`
151
+ `}function Zo(t){return t[t.length-1]===`
152
+ `?t.slice(0,-1):t}function Yd(t,n){for(var o=/(\n+)([^\n]*)/g,l=(function(){var p=t.indexOf(`
153
+ `);return p=p!==-1?p:t.length,o.lastIndex=p,Go(t.slice(0,p),n)})(),r=t[0]===`
154
+ `||t[0]===" ",a,i;i=o.exec(t);){var s=i[1],u=i[2];a=u[0]===" ",l+=s+(!r&&!a&&u!==""?`
155
+ `:"")+Go(u,n),r=a}return l}function Go(t,n){if(t===""||t[0]===" ")return t;for(var o=/ [^ ]/g,l,r=0,a,i=0,s=0,u="";l=o.exec(t);)s=l.index,s-r>n&&(a=i>r?i:s,u+=`
156
+ `+t.slice(r,a),r=a+1),i=s;return u+=`
157
+ `,t.length-r>n&&i>r?u+=t.slice(r,i)+`
158
+ `+t.slice(i+1):u+=t.slice(r),u.slice(1)}function Zd(t){for(var n="",o=0,l,r=0;r<t.length;o>=65536?r+=2:r++)o=Et(t,r),l=Ae[o],!l&&_t(o)?(n+=t[r],o>=65536&&(n+=t[r+1])):n+=l||zd(o);return n}function Gd(t,n,o){var l="",r=t.tag,a,i,s;for(a=0,i=o.length;a<i;a+=1)s=o[a],t.replacer&&(s=t.replacer.call(o,String(a),s)),(qe(t,n,s,!1,!1)||typeof s>"u"&&qe(t,n,null,!1,!1))&&(l!==""&&(l+=","+(t.condenseFlow?"":" ")),l+=t.dump);t.tag=r,t.dump="["+l+"]"}function Ko(t,n,o,l){var r="",a=t.tag,i,s,u;for(i=0,s=o.length;i<s;i+=1)u=o[i],t.replacer&&(u=t.replacer.call(o,String(i),u)),(qe(t,n+1,u,!0,!0,!1,!0)||typeof u>"u"&&qe(t,n+1,null,!0,!0,!1,!0))&&((!l||r!=="")&&(r+=rn(t,n)),t.dump&&kt===t.dump.charCodeAt(0)?r+="-":r+="- ",r+=t.dump);t.tag=a,t.dump=r||"[]"}function Kd(t,n,o){var l="",r=t.tag,a=Object.keys(o),i,s,u,p,w;for(i=0,s=a.length;i<s;i+=1)w="",l!==""&&(w+=", "),t.condenseFlow&&(w+='"'),u=a[i],p=o[u],t.replacer&&(p=t.replacer.call(o,u,p)),qe(t,n,u,!1,!1)&&(t.dump.length>1024&&(w+="? "),w+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),qe(t,n,p,!1,!1)&&(w+=t.dump,l+=w));t.tag=r,t.dump="{"+l+"}"}function Xd(t,n,o,l){var r="",a=t.tag,i=Object.keys(o),s,u,p,w,c,y;if(t.sortKeys===!0)i.sort();else if(typeof t.sortKeys=="function")i.sort(t.sortKeys);else if(t.sortKeys)throw new De("sortKeys must be a boolean or a function");for(s=0,u=i.length;s<u;s+=1)y="",(!l||r!=="")&&(y+=rn(t,n)),p=i[s],w=o[p],t.replacer&&(w=t.replacer.call(o,p,w)),qe(t,n+1,p,!0,!0,!0)&&(c=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,c&&(t.dump&&kt===t.dump.charCodeAt(0)?y+="?":y+="? "),y+=t.dump,c&&(y+=rn(t,n)),qe(t,n+1,w,!0,c)&&(t.dump&&kt===t.dump.charCodeAt(0)?y+=":":y+=": ",y+=t.dump,r+=y));t.tag=a,t.dump=r||"{}"}function Xo(t,n,o){var l,r,a,i,s,u;for(r=o?t.explicitTypes:t.implicitTypes,a=0,i=r.length;a<i;a+=1)if(s=r[a],(s.instanceOf||s.predicate)&&(!s.instanceOf||typeof n=="object"&&n instanceof s.instanceOf)&&(!s.predicate||s.predicate(n))){if(o?s.multi&&s.representName?t.tag=s.representName(n):t.tag=s.tag:t.tag="?",s.represent){if(u=t.styleMap[s.tag]||s.defaultStyle,To.call(s.represent)==="[object Function]")l=s.represent(n,u);else if(Mo.call(s.represent,u))l=s.represent[u](n,u);else throw new De("!<"+s.tag+'> tag resolver accepts not "'+u+'" style');t.dump=l}return!0}return!1}function qe(t,n,o,l,r,a,i){t.tag=null,t.dump=o,Xo(t,o,!1)||Xo(t,o,!0);var s=To.call(t.dump),u=l,p;l&&(l=t.flowLevel<0||t.flowLevel>n);var w=s==="[object Object]"||s==="[object Array]",c,y;if(w&&(c=t.duplicates.indexOf(o),y=c!==-1),(t.tag!==null&&t.tag!=="?"||y||t.indent!==2&&n>0)&&(r=!1),y&&t.usedDuplicates[c])t.dump="*ref_"+c;else{if(w&&y&&!t.usedDuplicates[c]&&(t.usedDuplicates[c]=!0),s==="[object Object]")l&&Object.keys(t.dump).length!==0?(Xd(t,n,t.dump,r),y&&(t.dump="&ref_"+c+t.dump)):(Kd(t,n,t.dump),y&&(t.dump="&ref_"+c+" "+t.dump));else if(s==="[object Array]")l&&t.dump.length!==0?(t.noArrayIndent&&!i&&n>0?Ko(t,n-1,t.dump,r):Ko(t,n,t.dump,r),y&&(t.dump="&ref_"+c+t.dump)):(Gd(t,n,t.dump),y&&(t.dump="&ref_"+c+" "+t.dump));else if(s==="[object String]")t.tag!=="?"&&Wd(t,t.dump,n,a,u);else{if(s==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new De("unacceptable kind of an object to dump "+s)}t.tag!==null&&t.tag!=="?"&&(p=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?p="!"+p:p.slice(0,18)==="tag:yaml.org,2002:"?p="!!"+p.slice(18):p="!<"+p+">",t.dump=p+" "+t.dump)}return!0}function Jd(t,n){var o=[],l=[],r,a;for(an(t,o,l),r=0,a=l.length;r<a;r+=1)n.duplicates.push(o[l[r]]);n.usedDuplicates=new Array(a)}function an(t,n,o){var l,r,a;if(t!==null&&typeof t=="object")if(r=n.indexOf(t),r!==-1)o.indexOf(r)===-1&&o.push(r);else if(n.push(t),Array.isArray(t))for(r=0,a=t.length;r<a;r+=1)an(t[r],n,o);else for(l=Object.keys(t),r=0,a=l.length;r<a;r+=1)an(t[l[r]],n,o)}function Qd(t,n){n=n||{};var o=new Rd(n);o.noRefs||Jd(t,o);var l=t;return o.replacer&&(l=o.replacer.call({"":l},"",l)),qe(o,0,l,!0,!0)?o.dump+`
159
+ `:""}var eu=Qd,tu={dump:eu};function sn(t,n){return function(){throw new Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+n+" instead, which is now safe by default.")}}var nu=Se,ou=Jn,ru=no,lu=io,au=so,iu=Jt,Jo=Ao.load,su=Ao.loadAll,Qo=tu.dump,cu=De,du={binary:fo,float:ao,map:to,null:oo,pairs:yo,set:ho,timestamp:po,bool:ro,int:lo,merge:mo,omap:go,seq:eo,str:Qn},uu=sn("safeLoad","load"),pu=sn("safeLoadAll","loadAll"),mu=sn("safeDump","dump"),er={Type:nu,Schema:ou,FAILSAFE_SCHEMA:ru,JSON_SCHEMA:lu,CORE_SCHEMA:au,DEFAULT_SCHEMA:iu,load:Jo,loadAll:su,dump:Qo,YAMLException:cu,types:du,safeLoad:uu,safeLoadAll:pu,safeDump:mu};const mt="#9ca3af";function cn(t){return!t||typeof t!="object"||Array.isArray(t)?null:{...t}}const fu={},gu={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 yu(t,n){return e.openBlock(),e.createElementBlock("svg",gu,[...n[0]||(n[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 tr=ae(fu,[["render",yu]]),hu={},xu={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 bu(t,n){return e.openBlock(),e.createElementBlock("svg",xu,[...n[0]||(n[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 ku=ae(hu,[["render",bu]]),wu={},_u={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 Eu(t,n){return e.openBlock(),e.createElementBlock("svg",_u,[...n[0]||(n[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 Nu=ae(wu,[["render",Eu]]),Bu={},Vu={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 Cu(t,n){return e.openBlock(),e.createElementBlock("svg",Vu,[...n[0]||(n[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 $u=ae(Bu,[["render",Cu]]),vu={},Su={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 Lu(t,n){return e.openBlock(),e.createElementBlock("svg",Su,[...n[0]||(n[0]=[e.createElementVNode("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"},null,-1)])])}const Au=ae(vu,[["render",Lu]]),zt=e.defineComponent({__name:"MonacoEditor",props:{modelValue:{},language:{},theme:{}},emits:["update:modelValue","load"],setup(t,{emit:n}){const o=t,l=n,r=e.ref(null);let a=null,i=null,s=!1;function u(){return new Promise((w,c)=>{if(i)return w(i);if(window.monaco)return i=window.monaco,w(i);const y=m=>{if([...document.styleSheets].some(h=>{var f;return(f=h==null?void 0:h.href)==null?void 0:f.includes(m)}))return;const g=document.createElement("link");g.rel="stylesheet",g.href=m,document.head.appendChild(g)},d=m=>new Promise((g,h)=>{const f=document.createElement("script");f.src=m,f.onload=()=>g(!0),f.onerror=h,document.body.appendChild(f)});y("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),d("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"],()=>{i=window.monaco,w(i)})}).catch(c)})}function p(){var w,c;!r.value||!i||(a&&a.dispose(),a=i.editor.create(r.value,{value:o.modelValue||"",language:o.language||"yaml",theme:o.theme||"vs-light",automaticLayout:!0,minimap:{enabled:!1}}),(c=(w=i.languages)==null?void 0:w.css)!=null&&c.cssDefaults&&i.languages.css.cssDefaults.setDiagnosticsOptions({validate:!1,lint:{}}),a.onDidChangeModelContent(()=>{s||l("update:modelValue",a.getValue())}))}return e.watch(()=>o.modelValue,w=>{if(!a)return;const c=a.getValue();w!==c&&(s=!0,a.setValue(w||""),s=!1)}),e.watch(()=>o.language,w=>{a&&i&&i.editor.setModelLanguage(a.getModel(),w||"yaml")}),e.watch(()=>o.theme,w=>{a&&i&&i.editor.setTheme(w||"vs-light")}),e.onMounted(async()=>{await u(),p()}),e.onBeforeUnmount(()=>{a&&a.dispose()}),(w,c)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"editorContainer",ref:r,class:"w-full h-full"},null,512))}}),Tu={class:"flex flex-col flex-1 overflow-hidden"},Mu={class:"flex justify-end gap-2"},Fu=["href"],Du={class:"flex flex-col flex-1 overflow-hidden"},Iu={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},ju={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},zu=e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{},styleText:{}},emits:["update:style-yaml","update:style-text","update"],setup(t,{emit:n}){const o=t,l=n,r=e.ref("");e.watch(()=>o.styleText,u=>{const p=u??"";r.value!==p&&(r.value=p)},{immediate:!0}),e.watch(r,async u=>{var w,c;const p=u??"";o.styleText!==p&&l("update:style-text",p);try{const y=u?Jo(u):null;if((w=y==null?void 0:y.colorAttr)!=null&&w.length&&((c=o.styleYaml)==null?void 0:c.colorAttr)!==y.colorAttr){const d=await a(y.colorAttr);y.colors=d.reduce((g,h,f)=>({...g,[h.id.toString()]:i[f]}),{});const m=Qo(y);m!==r.value&&(r.value=m)}JSON.stringify(y)!==JSON.stringify(o.styleYaml)&&l("update:style-yaml",y&&typeof y=="object"?y:null)}catch{o.styleYaml!==null&&l("update:style-yaml",null)}});async function a(u){return(await fetch(`/api/gis-service/${o.token}/${u}`).then(w=>w.json())).rows}const i=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],s=async()=>{const u=o.styleYaml?JSON.stringify(o.styleYaml):o.styleText?o.styleText:"null";try{await fetch(`/api/gis-service/${o.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:u})}),l("update"),ue.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(p){ue.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(p)}};return(u,p)=>(e.openBlock(),e.createElementBlock("div",Tu,[e.createElementVNode("div",Mu,[e.createElementVNode("a",{target:"_blank",href:"/api/gis-service/"+o.token+"/col",class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Атрибути ",8,Fu),e.createElementVNode("button",{onClick:s,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"},[...p[1]||(p[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-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",Du,[e.createElementVNode("div",Iu,[p[2]||(p[2]=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",ju,[e.createVNode(zt,{modelValue:r.value,"onUpdate:modelValue":p[0]||(p[0]=w=>r.value=w),language:"yaml",theme:"vs-light"},null,8,["modelValue"])])])])]))}});function ft(t){if(t==null)return null;const n=Number(typeof t=="string"?t.trim():t);return Number.isFinite(n)?n:null}function Qe(t){if(!t)return null;if(Array.isArray(t)&&t.length>=2){const n=ft(t[0]),o=ft(t[1]);return n!=null&&o!=null?[n,o]:null}if(typeof t=="object"){const n=t;if(Array.isArray(n.coordinates))return Qe(n.coordinates);const o=n.lng??n.lon??n.long??n.longitude??n.x,l=n.lat??n.latitude??n.y;if(o!=null&&l!=null){const r=ft(o),a=ft(l);if(r!=null&&a!=null)return[r,a]}}if(typeof t=="string"&&t.includes(",")){const[n,o]=t.split(","),l=ft(n),r=ft(o);return l!=null&&r!=null?[l,r]:null}return null}const nr=Symbol("MapContext");function Ou(t){const n=e.shallowRef(null),o=e.ref(!1);let l=!1;const r=[],a=()=>{l=!0,r.length&&r.forEach(d=>d())},i=()=>{const d=t.container;return typeof d=="string"?document.getElementById(d):(d==null?void 0:d.value)!==void 0?d.value:d},s=()=>l?Promise.resolve():new Promise(d=>r.push(d)),u=(d,m)=>{if(d==null)return m;const g=Number(typeof d=="string"?d.trim():d);return Number.isFinite(g)?g:m},p=d=>{if(!n.value||!d)return;const m=Qe(d.center);m&&n.value.setCenter(m);const g=n.value.getZoom(),h=u(d.zoom,g);if(h!==g&&n.value.setZoom(h),typeof n.value.getMaxZoom=="function"&&typeof n.value.setMaxZoom=="function"){const f=n.value.getMaxZoom(),k=u(d.maxZoom,f);k!==f&&n.value.setMaxZoom(k)}if(typeof n.value.getMinZoom=="function"&&typeof n.value.setMinZoom=="function"){const f=n.value.getMinZoom(),k=u(d.minZoom,f);k!==f&&n.value.setMinZoom(k)}d.bounds&&n.value.fitBounds(d.bounds,{animate:!1})},w=async()=>{var T,j,B,V,v,S,M;if(typeof window>"u"||n.value)return;const d=i();if(!d)throw new Error("Map container not found");const m=e.unref(t.settings)||null,g=Qe((T=m==null?void 0:m.map)==null?void 0:T.center)||[30,50],h=u((j=m==null?void 0:m.map)==null?void 0:j.zoom,7),f=u((B=m==null?void 0:m.map)==null?void 0:B.maxZoom,20),E={...{attributionControl:!1,center:g,zoom:h,maxZoom:f,minZoom:4},...t.mapOptions||{},container:d};E.maxZoom==null&&(E.maxZoom=f),n.value=new maplibregl.Map(E),(V=t.controls)!=null&&V.navigation&&n.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(v=t.controls)!=null&&v.scale&&n.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(S=t.controls)!=null&&S.fullscreen&&n.value.addControl(new maplibregl.FullscreenControl,"top-right"),(M=t.controls)!=null&&M.geolocate&&n.value.addControl(new maplibregl.GeolocateControl(typeof t.controls.geolocate=="object"?t.controls.geolocate:{}),"top-right"),n.value.once("load",()=>{var R;p((R=e.unref(t.settings))==null?void 0:R.map),o.value=!0,a()})};e.watch(()=>{var d;return(d=e.unref(t.settings))==null?void 0:d.map},d=>{p(d)},{deep:!0});const c=()=>{n.value&&(n.value.remove(),n.value=null,o.value=!1)};e.onMounted(w),e.onUnmounted(c);const y={map:n,ready:s,flyTo:d=>{var m;return(m=n.value)==null?void 0:m.flyTo(d)},fitBounds:(d,m)=>{var g;return(g=n.value)==null?void 0:g.fitBounds(d,m)},setCenter:d=>{var m;return(m=n.value)==null?void 0:m.setCenter(d)},setZoom:d=>{var m;return(m=n.value)==null?void 0:m.setZoom(d)},addControl:(d,m)=>{var g;return(g=n.value)==null?void 0:g.addControl(d,m)},removeControl:d=>{var m;return(m=n.value)==null?void 0:m.removeControl(d)},on:(d,m,g)=>{var h,f;return typeof m=="string"?((h=n.value)==null||h.on(d,m,g),()=>{var k;return(k=n.value)==null?void 0:k.off(d,m,g)}):((f=n.value)==null||f.on(d,m),()=>{var k;return(k=n.value)==null?void 0:k.off(d,m)})},off:(d,m,g)=>{var h,f;typeof m=="string"?(h=n.value)==null||h.off(d,m,g):(f=n.value)==null||f.off(d,m)},project:d=>{var m;return(m=n.value)==null?void 0:m.project(d)},unproject:d=>{var m;return(m=n.value)==null?void 0:m.unproject(d)}};return e.provide(nr,y),y}function Le(t){if(t)return{map:t,flyTo:t.value.flyTo,fitBounds:t.value.fitBounds};const n=e.inject(nr);if(!n)throw new Error("useMap() called outside of a Map provider");return n}const Ru=["Noto Sans Regular"],Pu=12,Uu="#0f172a",qu="#fff",Hu=14;function Be(t,n){if(!t)return;for(const l of n)if(Object.prototype.hasOwnProperty.call(t,l)&&t[l]!==void 0)return t[l];const o=t.text;if(o&&typeof o=="object"){for(const l of n)if(Object.prototype.hasOwnProperty.call(o,l)&&o[l]!==void 0)return o[l]}}function Wu(t){return t?Array.isArray(t)?t:[t]:Ru}function dn(t,n){if(typeof t=="number")return Number.isFinite(t)?t:n;if(t==null||t==="")return n;const o=Number(t);return Number.isFinite(o)?o:n}function Yu(t){if(t==null)return null;if(Array.isArray(t))return t;const n=String(t).trim(),o=n.match(/^\{([^{}]+)\}$/);return o?["get",o[1]]:n}function Zu(t,n){const o=[];if(t!=null&&o.push(t),n&&o.push(["!",["has","point_count"]]),!!o.length)return o.length===1?o[0]:["all",...o]}function Gu(t,n={}){if(!t)return[];const o=Be(t,["text-field","textField","textFieldValue","labelText","label"]);if(!o)return[];const l=Yu(o);if(!l)return[];const r=l,a=(n.geometry||t.type||"point").toString().toLowerCase(),i=Be(t,["text-font","textFont"]),s=dn(Be(t,["text-size","textSize"]),Pu),u=Be(t,["text-allow-overlap","textAllowOverlap"]),p=Be(t,["text-minzoom","textMinZoom","textZoom","text-zoom"]),w=Be(t,["text-maxzoom","textMaxZoom","maxzoom"]),c=Be(t,["text-color","textColor"])||Uu,y=Be(t,["text-halo-color","textHaloColor"])||qu,d=Be(t,["text-halo-width","textHaloWidth"]),m=Be(t,["text-halo-blur","textHaloBlur"]),g=Be(t,["text-offset","textOffset"]),h=Be(t,["text-anchor","textAnchor"]),f=Be(t,["text-justify","textJustify"]),k=Be(t,["text-letter-spacing","textLetterSpacing"]),E=Be(t,["text-transform","textTransform"]),T=Be(t,["symbol-placement","symbolPlacement"]),j=Be(t,["symbol-spacing","symbolSpacing"]),B=Be(t,["text-rotation-alignment","textRotationAlignment"]),V=Be(t,["text-pitch-alignment","textPitchAlignment"]),v=Be(t,["text-opacity","textOpacity"]),S={"text-field":r,"text-font":Wu(i),"text-size":s,"text-allow-overlap":u??!1};g&&(S["text-offset"]=g),a!=="line"&&(S["text-anchor"]=h??"center"),f&&(S["text-justify"]=f),k!==void 0&&(S["text-letter-spacing"]=k),E&&(S["text-transform"]=E),j!==void 0&&(S["symbol-spacing"]=j),a==="line"?(S["symbol-placement"]=T||"line",S["text-rotation-alignment"]=B||"map",S["text-pitch-alignment"]=V||"map"):(B&&(S["text-rotation-alignment"]=B),V&&(S["text-pitch-alignment"]=V),T&&(S["symbol-placement"]=T)),h&&a==="line"&&(S["text-anchor"]=h);const M={"text-color":c,"text-opacity":v??1};M["text-halo-color"]=y,d!==void 0&&(M["text-halo-width"]=d),m!==void 0&&(M["text-halo-blur"]=m);const R={type:"symbol",layout:S,paint:M},I=dn(p,Hu);if(R.minzoom=I,w!==void 0){const z=dn(w,void 0);z!==void 0&&(R.maxzoom=z)}const q=Zu(n.filter,n.excludeClusters);return q&&(R.filter=q),[R]}const un=new Map,pn={};function mn(t){if(t.colorAttr&&t.colors){const n=Object.entries(t.colors).flat();return["match",["get",t.colorAttr],...n,mt]}return null}function Ku(t){if(!t.icon||!t.colors)return null;const n=[],o=t.icon.split("+")[0];return Object.values(t.colors).forEach(l=>{n.push(`${o}+${l.replace("#","")}.png`)}),["match",["get",t.colorAttr],...Object.entries(t.colors).reduce((l,[r,a],i)=>l.concat([r,n[i]]),[]),t.icon]}function gt(t,n){n&&(Array.isArray(n)?t.push(...n):t.push(n))}function Xu(t,n){const o=(t==null?void 0:t.clusterZoom)??(t==null?void 0:t.pointZoom)??(t==null?void 0:t.iconZoom)??12,l=Number(o);if(!Number.isFinite(l))return null;const r=["get","point_count"],a=["has","point_count"],i=["!",a],p={type:"circle",maxzoom:l,filter:a,paint:{"circle-color":["step",r,"#3b82f6",10,"#fde047",100,"#fbbf24",1e3,"#fda4af",1e4,"#fb7185",1e6,"#a21caf"],"circle-radius":["step",r,16,10,22,100,28,1e3,34,1e4,40,1e6,48],"circle-stroke-color":"#fff","circle-stroke-width":1}},w={type:"symbol",maxzoom:l,filter:a,layout:{"text-field":["to-string",["coalesce",["get","point_count_abbreviated"],r]],"text-font":["Noto Sans Regular"],"text-size":12,"text-allow-overlap":!0},paint:{"text-color":"#fff","text-halo-color":"#172554","text-halo-width":1.25}},c={...n,filter:["all",i,n.filter||!0]};return[p,w,c]}function or(t,n){const o=mn(t);if(t.icon&&!t.iconZoom&&!t.clusterZoom)return;const l={type:"circle",maxzoom:n||t.iconZoom||22,paint:{"circle-stroke-color":(t==null?void 0:t.stroke)||"#fff","circle-opacity":t.opacity||1,"circle-color":o||t.color||mt,"circle-stroke-width":t.width||1,"circle-radius":t.radius||5}},r=Xu(t,l);return r||l}function Ju(t){const n=mn(t);return{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":n||t.color||mt,"fill-opacity":t.opacity||.3,"fill-outline-color":t.stroke||mt}}}function Qu(t){return{type:"line",paint:{"line-color":mn(t)||t.color||mt,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function ep(t){const n=Ku(t);return{type:"symbol",minzoom:t.iconZoom||0,layout:{"icon-image":n||t.icon,"icon-size":1,"icon-allow-overlap":!0,"icon-ignore-placement":!0}}}function rr(t,n={}){if(!t)return[];if(!tp(t))return[];const o=[];t.icon&&gt(o,ep(t)),t.pointZoom&&gt(o,or(t,t.pointZoom)),t.type==="polygon"?gt(o,Ju(t)):t.type==="line"?gt(o,Qu(t)):gt(o,or(t));const r=n.sourceType!=="raster"?Gu(t,{geometry:t.type||"point",filter:t.filter,excludeClusters:!!t.clusterZoom}):[];return gt(o,r),o.filter(Boolean)}function tp(t){return t?!!(new Set(["point","line","polygon"]).has(t.type)||t.icon||t.attrType||t.color||t.stroke||t.radius||t.width||t.colorAttr&&t.colors&&typeof t.colors=="object"&&Object.keys(t.colors).length>0):!1}function lr(t,{sourceType:n,filter:o,allowFallback:l=!1}={}){let r=cn(t);if(r&&o&&(r.filter=o),r)return rr(r,{sourceType:n});if(l&&["vector","geojson"].includes(n||"")){const a={type:"point",color:mt};return o&&(a.filter=o),rr(a,{sourceType:n})}return[]}function np(t){return{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:t}}]}}}async function ar(t,n,o){const l=[n],r=n.split("+")[0];Object.values(o||{}).forEach(a=>{l.push(`${r}+${a.replace("#","")}.png`)});for(const a of l){if(t.getImage(a))continue;const i=await t.loadImage(`/api/gis-icon/${a}`);t.addImage(a,i.data)}}function fe(t,n,o){var I,q;if(!t)return pn;if(!n)return pn[t];const{map:l,ready:r=()=>Promise.resolve()}=Le(o),a=t||((I=n.layer)==null?void 0:I.id),i=n.sourceId??t,s={...n};s.point&&(s.source=np(s.point)),!s.layer&&((q=s.source)==null?void 0:q.type)==="raster"&&(s.layer={id:i,type:"raster",source:i}),s.layer&&!s.layer.source&&Object.assign(s.layer,{source:i});let u=!1,p=!1;const w=()=>{var z,H,L,F,x,b,$,D,A,N;if(!(p||!l.value)){if(s.source&&!l.value.getSource(i)&&l.value.addSource(i,s.source),!l.value.getLayer(a)){const Y=s.beforeId===0?(H=(z=l.value.getStyle().layers)==null?void 0:z[0])==null?void 0:H.id:s.beforeId;(F=(L=s.layer)==null?void 0:L.style)!=null&&F.icon&&ar(l.value,s.layer.style.icon,s.layer.style.colors);const Z=((x=s.source)==null?void 0:x.type)||((b=s.layer)==null?void 0:b.type),X=s.layer&&(s.layer.type||s.layer.ref)?s.layer:null,K=($=s.layer)==null?void 0:$.style,ce=((D=s.layer)==null?void 0:D["source-layer"])||((A=s.source)==null?void 0:A["source-layer"])||s.sourceLayer||i,de=s.style||K,U=lr(de,{sourceType:Z,filter:(N=s.layer)==null?void 0:N.filter,allowFallback:!X});if(!U.length){if(X){const W={...X,id:X.id||a,source:X.source||i};Z==="vector"&&ce&&(W["source-layer"]=W["source-layer"]||ce),l.value.addLayer(W,Y)}return}U.forEach((W,G)=>{const ne={...W,id:`${a}${G||""}`,source:i};Z==="vector"&&ce&&(ne["source-layer"]=ce),l.value.addLayer(ne,Y)})}u=!0}};r().then(w);const c=(z,H)=>l.value?(l.value.on(z,a,H),()=>{var L;return(L=l.value)==null?void 0:L.off(z,a,H)}):()=>{},y=z=>{const H=l.value;if(!H)return;const L=H.getStyle(),F=L==null?void 0:L.layers;F!=null&&F.length&&F.filter(x=>x.source===a).forEach(x=>{H.setLayoutProperty(x.id,"visibility",z?"visible":"none")})},d=(z=!0)=>{var L,F,x;if(!l.value)return;(((x=(F=(L=l.value).getStyle)==null?void 0:F.call(L))==null?void 0:x.layers)??[]).filter(b=>b.source===a).forEach(b=>{l.value.removeLayer(b.id)}),p=!0,s.source&&z&&l.value.getSource(i)&&l.value.removeSource(i)},m=async z=>{var x,b,$,D,A;if(!l.value)return;z!=null&&z.icon&&ar(l.value,z.icon,z.colors);const H=((x=s.source)==null?void 0:x.type)||((b=s.layer)==null?void 0:b.type),L=(($=s.layer)==null?void 0:$["source-layer"])||((D=s.source)==null?void 0:D["source-layer"])||s.sourceLayer||i,F=lr(z,{sourceType:H,filter:(A=s.layer)==null?void 0:A.filter,allowFallback:!0});d(!1),F.forEach((N,Y)=>{var X;const Z={...N,id:`${a}${Y}`,source:((X=s.layer)==null?void 0:X.source)||i};H==="vector"&&L&&(Z["source-layer"]=Z["source-layer"]||L),l.value.addLayer(Z)})},g=z=>{l.value&&Object.entries(z).forEach(([H,L])=>{l.value.setPaintProperty(a,H,L)})},h=(z,H,L)=>{const F=l.value;if(F)switch(H){case"raster":F.setPaintProperty(z,"raster-opacity",L);break;case"fill":F.setPaintProperty(z,"fill-opacity",L);break;case"line":F.setPaintProperty(z,"line-opacity",L);break;case"circle":F.setPaintProperty(z,"circle-opacity",L);break;case"symbol":F.setPaintProperty(z,"icon-opacity",L),F.setPaintProperty(z,"text-opacity",L);break}},S={ids:{layerId:a,sourceId:i},isMounted:()=>{var z;return u&&!!((z=l.value)!=null&&z.getLayer(a))},setVisible:y,updatePaint:g,updateLayout:z=>{l.value&&Object.entries(z).forEach(([H,L])=>{l.value.setLayoutProperty(a,H,L)})},updateFilter:z=>{l.value&&l.value.setFilter(a,z)},setOpacity:z=>{var F;if(!l.value)return;const L=(((F=l.value.getStyle())==null?void 0:F.layers)||[]).filter(x=>x.source===i);if(!L.length){const x=l.value.getLayer(a);x&&h(a,x.type,z);return}L.forEach(x=>h(x.id,x.type,z))},setData:z=>{if(!l.value)return;const H=l.value.getSource(i);H&&"setData"in H&&H.setData(z)},setTiles:z=>{if(!l.value)return;const H=l.value.getSource(i);H&&"setTiles"in H&&H.setTiles(z)},setStyle:m,setFilter:z=>{var L,F;if(!l.value)return;const H=l.value.getSource(i);if(H&&"setTiles"in H&&((F=(L=s.source)==null?void 0:L.tiles)!=null&&F[0])){const x=s.source.tiles[0];H.setTiles([`${x}${x.includes("?")?"&":"?"}filter=${z}`])}},setFeatureState:(z,H)=>{l.value&&l.value.setFeatureState({source:i,...z},H)},removeFeatureState:(z,H)=>{l.value&&l.value.removeFeatureState({source:i,...z},H?{key:H}:void 0)},remove:d,card:s.card,popup:s.popup,opts:s,getSource:()=>{var z;return(z=l.value)==null?void 0:z.getSource(i)},getLayer:()=>{var z;return(z=l.value)==null?void 0:z.getLayer(a)},on:c};un.set(a,S);const M=()=>{un.get(a)===S&&un.delete(a)},R=S.remove;return S.remove=()=>{M(),R()},e.onBeforeUnmount(S.remove),pn[t]=S,S}const op={class:"flex flex-col flex-1 min-h-0"},rp={class:"flex flex-col flex-1 min-h-0"},lp=e.defineComponent({__name:"vs-tab-popup",props:{token:{},fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,l=n,r=e.ref(o.columns||[]);e.watch(()=>o.columns,m=>r.value=m||[],{immediate:!0}),e.watch(r,m=>{const g=fe(o.token);g&&(g.popup=m),l("update:columns",m)});const a=e.ref("list"),i=e.ref(!1),s=e.ref([]),u=[{key:"name",label:"Назва",type:"main"}],p={name:{type:"text",label:"Назва",disabled:!0,validators:["required"]},label:{type:"text",label:"Найменування",validators:["required"]},meta:{type:"radio",label:"Meta",mode:"combo",options:[{text:"Заголовок",id:"title"},{text:"Властивість",id:"feature"},{text:"Бейдж",id:"badge"}]},data:{type:"text",label:"Data"}};function w(){s.value=r.value.map(m=>m.name||m.id),i.value=!0}function c(){var f;const m=[...r.value],g=((f=o.fields)==null?void 0:f.filter(k=>s.value.includes(k.name)))||[],h=it(m,g,{selectedKeys:s.value,resolveKey:k=>Ye(k)});r.value=h,i.value=!1,s.value=[]}function y(){i.value=!1,s.value=[]}function d(){let m=[];a.value==="all"?m=o.fields||[]:a.value==="none"?m=[]:m=r.value,m.filter(g=>!g.label).forEach(g=>g.label=g.ua),l("save",m)}return(m,g)=>(e.openBlock(),e.createElementBlock("div",op,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:w,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Імпорт "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Зберегти попап ")]),e.createElementVNode("div",rp,[a.value==="list"?(e.openBlock(),e.createBlock(We,{key:0,modelValue:r.value,"onUpdate:modelValue":g[0]||(g[0]=h=>r.value=h),"columns-scheme":u,"form-scheme":p,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(lt,{visible:i.value,"onUpdate:visible":g[1]||(g[1]=h=>i.value=h),selection:s.value,"onUpdate:selection":g[2]||(g[2]=h=>s.value=h),fields:t.fields,title:"Імпорт полів","id-prefix":"import-popup",onConfirm:c,onCancel:y},null,8,["visible","selection","fields"])]))}}),ap={class:"flex flex-col flex-1 min-h-0"},ip={class:"flex justify-between mb-3 gap-2"},sp={class:"p-4 space-y-4 text-sm"},cp={class:"space-y-1"},dp={class:"space-y-1"},up={class:"flex items-center gap-3"},pp={class:"flex justify-end gap-2 p-4 border-t"},mp=e.defineComponent({__name:"vs-tab-legend",props:{mapInfo:{},token:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,l=n,r=e.ref(o.columns||[]);e.watch(()=>o.columns,m=>{r.value=m||[]}),e.watch(r,m=>{l("update:columns",m)});const a=e.ref(!1),i=e.ref({name:"",color:"#2E86DE"}),s=e.defineAsyncComponent(()=>import("@opengis/core").then(m=>m.VsModal)),u=[{key:"name",label:"Назва"},{key:"color",label:"Колір",type:"color"}],p={name:{type:"text",label:"Назва",validators:["required"]},color:{type:"color",label:"Колір",validators:["required"]}};function w(m){m&&c(),a.value=m}function c(){i.value={name:"",color:"#2E86DE"}}function y(){var f,k;const m=(f=i.value.name)==null?void 0:f.trim();if(!m){ue.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const g=((k=i.value.color)==null?void 0:k.trim())||"#2E86DE";if(r.value.some(E=>Ye(E)===Ye({name:m}))){ue.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}r.value=[...r.value,{name:m,color:g}],c(),a.value=!1}function d(){l("save",r.value)}return(m,g)=>(e.openBlock(),e.createElementBlock("div",ap,[e.createElementVNode("div",ip,[e.createElementVNode("button",{onClick:g[0]||(g[0]=h=>a.value=!0),class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Додати "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Зберегти легенду ")]),e.createVNode(We,{modelValue:r.value,"onUpdate:modelValue":g[1]||(g[1]=h=>r.value=h),"columns-scheme":u,"form-scheme":p,"main-col-width":"250px","add-button":!1},null,8,["modelValue"]),e.createVNode(e.unref(s),{teleport:"#modal",visible:a.value,title:"Новий елемент легенди","onUpdate:visible":w},{footer:e.withCtx(()=>[e.createElementVNode("div",pp,[e.createElementVNode("button",{type:"button",class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed",onClick:g[5]||(g[5]=h=>w(!1))}," Скасувати "),e.createElementVNode("button",{type:"button",class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed",onClick:y}," Додати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",sp,[e.createElementVNode("div",cp,[g[6]||(g[6]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Назва ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[2]||(g[2]=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",dp,[g[7]||(g[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Колір ",-1)),e.createElementVNode("div",up,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[3]||(g[3]=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":g[4]||(g[4]=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]])])])])]),_:1},8,["visible"])]))}}),fp={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},gp=["onClick"],yp=["aria-checked","value"],hp={key:0},xp=e.defineComponent({__name:"view-mode-toggle",props:{modelValue:{},options:{},showHtml:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:n}){const o=t,l=n,r=i=>l("update:modelValue",i),a=o.options||[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"}];return(i,s)=>(e.openBlock(),e.createElementBlock("div",fp,[s[1]||(s[1]=e.createElementVNode("label",{class:"text-sm font-medium text-gray-600"},"Режим відображення",-1)),e.createElementVNode("div",{role:"radiogroup",class:e.normalizeClass(["grid gap-2",`grid-cols-${e.unref(a).length}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),u=>(e.openBlock(),e.createElementBlock("div",{key:u.value,onClick:p=>r(u.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===u.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===u.value,value:u.value,class:"aspect-square rounded-full border border-primary h-4 w-4 flex items-center justify-center text-sky-500"},[t.modelValue===u.value?(e.openBlock(),e.createElementBlock("span",hp,[...s[0]||(s[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,yp),e.createElementVNode("label",{class:e.normalizeClass(["text-xs font-medium cursor-pointer",t.modelValue===u.value?"text-gray-700":"text-gray-600"])},e.toDisplayString(u.label),3)],10,gp))),128))],2)]))}}),bp={class:"flex flex-col flex-1 min-h-0"},kp={class:"flex flex-col flex-1 min-h-0"},wp=e.defineComponent({__name:"vs-tab-card",props:{fields:{},columns:{},viewMode:{},html:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,l=n,r=e.ref(o.columns||[]);e.watch(()=>o.columns,h=>r.value=h||[],{immediate:!0}),e.watch(r,h=>l("update:columns",h));const a=e.ref(o.viewMode??"list");e.watch(()=>o.viewMode,h=>{h&&h!==a.value&&(a.value=h)});const i=e.ref(o.html??"");e.watch(()=>o.html,h=>{typeof h=="string"&&h!==i.value&&(i.value=h)},{immediate:!0});const s=e.ref(!1),u=e.ref([]),p=[{key:"name",label:"Name",type:"main"}],w={name:{type:"text",label:"Name",validators:["required"],disabled:!0},label:{type:"text",label:"Label",validators:["required"]},format:{type:"radio",label:"Format",mode:"inline",validators:["required"],options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Tags",id:"tags"}]},is_admin:{type:"Switcher",label:"Тільки для адміністративної частини"},data:{type:"text",label:"Data"}};function c(){u.value=a.value==="html"?[]:r.value.map(h=>h.name||h.id),s.value=!0}function y(){var E;const h=[...r.value],f=((E=o.fields)==null?void 0:E.filter(T=>u.value.includes(T.name)).map(T=>{const{type:j,format:B,...V}=T;return{...V,format:B??j??"text"}}))||[],k=it(h,f,{selectedKeys:u.value,resolveKey:T=>Ye(T)});if(r.value=k,a.value==="html"&&f.length){const T=f.map(V=>{const v=V.label??"",S=V.name??V.id??"";return`<dd>${v}</dd>
160
+ <dt>{{ ${S} }}</dt>`}).join(`
161
+ `),B=(i.value??"").trimEnd();i.value=B?`${B}
162
+ ${T}`:T}s.value=!1,u.value=[]}function d(){s.value=!1,u.value=[]}function m(){const h=a.value==="html"?"html":"list",f={card_mode:h};h==="html"?f.html=i.value:h==="list"&&(f.list=r.value),l("save","card",f)}const g=[{value:"all",label:"Всі"},{value:"list",label:"Список"},{value:"none",label:"Жодне"},{value:"html",label:"HTML"}];return(h,f)=>(e.openBlock(),e.createElementBlock("div",bp,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:c,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Імпорт "),e.createElementVNode("button",{onClick:m,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Зберегти ")]),e.createVNode(xp,{modelValue:a.value,"onUpdate:modelValue":f[0]||(f[0]=k=>a.value=k),options:g},null,8,["modelValue"]),e.createElementVNode("div",kp,[a.value==="list"?(e.openBlock(),e.createBlock(We,{key:0,modelValue:r.value,"onUpdate:modelValue":f[1]||(f[1]=k=>r.value=k),"columns-scheme":p,"form-scheme":w,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):a.value==="html"?(e.openBlock(),e.createBlock(zt,{key:1,modelValue:i.value,"onUpdate:modelValue":f[2]||(f[2]=k=>i.value=k),language:"html",theme:"vs-light",class:"flex-1 min-h-0"},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(lt,{visible:s.value,"onUpdate:visible":f[3]||(f[3]=k=>s.value=k),selection:u.value,"onUpdate:selection":f[4]||(f[4]=k=>u.value=k),fields:t.fields,title:"Імпорт полів для картки","id-prefix":"import-card",onConfirm:y,onCancel:d},null,8,["visible","selection","fields"])]))}}),_p={class:"flex flex-col flex-1 min-h-0"},Ep=e.defineComponent({__name:"vs-tab-filter",props:{fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,l=n;console.log(o.columns);const r=e.ref(o.columns||[]);e.watch(()=>o.columns,m=>r.value=m||[],{immediate:!0}),e.watch(r,m=>l("update:columns",m),{deep:!0,immediate:!0});const a=e.ref("list"),i=e.ref(!1),s=e.ref([]),u=[{key:"id",label:"Name"},{key:"label",label:"UA"}],p={name:{type:"text",label:"Name",disabled:!0,validators:["required"]},label:{type:"text",label:"UA",validators:["required"]},type:{type:"radio",label:"Тип",position:"horizontal",validators:["required"],options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Select",id:"select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"text",label:"Класифікатор",conditions:["type","in",["autocomplete","select","check"]],validators:["required"]}};function w(){s.value=r.value.map(m=>m.name||m.id),i.value=!0}function c(){var f;const m=[...r.value],g=((f=o.fields)==null?void 0:f.filter(k=>s.value.includes(k.name)))||[],h=it(m,g,{selectedKeys:s.value,resolveKey:k=>Ye(k)});r.value=h,i.value=!1,s.value=[]}function y(){i.value=!1,s.value=[]}function d(){let m=[];a.value==="all"?m=o.fields||[]:a.value==="none"?m=[]:m=r.value,l("save",m)}return(m,g)=>(e.openBlock(),e.createElementBlock("div",_p,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:w,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Імпорт "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-1 px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition disabled:opacity-70 disabled:cursor-not-allowed"}," Зберегти фільтр ")]),a.value==="list"?(e.openBlock(),e.createBlock(We,{key:0,modelValue:r.value,"onUpdate:modelValue":g[0]||(g[0]=h=>r.value=h),"columns-scheme":u,"form-scheme":p,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0),e.createVNode(lt,{visible:i.value,"onUpdate:visible":g[1]||(g[1]=h=>i.value=h),selection:s.value,"onUpdate:selection":g[2]||(g[2]=h=>s.value=h),fields:t.fields,title:"Імпорт полів","id-prefix":"import-filter",onConfirm:c,onCancel:y},null,8,["visible","selection","fields"])]))}}),ir=Symbol.for("gis.settingsRef");function fn(){const t=e.getCurrentInstance();if(!t)return e.ref(null);const n=t.appContext.config.globalProperties;let o=n[ir];return o||(o=e.ref(n.$settings??null),Object.defineProperty(n,"$settings",{configurable:!0,enumerable:!0,get:()=>o.value,set:l=>{o.value=l}}),n[ir]=o),o}const Ot=e.defineComponent({__name:"MapView",setup(t,{expose:n}){const o=e.ref(null),l=e.ref(null),r=fn(),a=Ou({container:o,mapOptions:{style:{version:8,sources:{},layers:[]},doubleClickZoom:!1},controls:{navigation:!0,scale:!0},settings:r});async function i(){var w;await e.nextTick();const p=(w=a.map)==null?void 0:w.value;p!=null&&p.resize&&p.resize()}function s(){typeof ResizeObserver>"u"||l.value||!o.value||(l.value=new ResizeObserver(()=>{i()}),l.value.observe(o.value))}function u(){var p;(p=l.value)==null||p.disconnect(),l.value=null}return e.onMounted(()=>{i(),s(),window.addEventListener("resize",i)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",i),u()}),n({ctx:a}),(p,w)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"el",ref:o,class:"w-full h-full rounded-xl overflow-hidden"},[e.renderSlot(p.$slots,"default")],512))}}),Np=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleSpec:{},autoCenter:{type:[Boolean,null]}},setup(t,{expose:n}){var m,g,h,f;const{map:o,flyTo:l,setZoom:r}=Le(),a=((g=(m=e.getCurrentInstance())==null?void 0:m.appContext.config.globalProperties)==null?void 0:g.$settings)||null,i=t,s=i.id;String(i.id);const u=`${location.origin}/api/vtile/${i.id}/ua/{z}/{x}/{y}.vmt?all=1`,p=fe(s,{source:{type:"vector",tiles:[u],minzoom:0,maxzoom:14},popup:i.layer.popup,layer:{style:(h=i.layer)==null?void 0:h.style}});n({layerHandle:p}),(i.autoCenter??!0)&&l({center:i.layer.center||((f=a==null?void 0:a.map)==null?void 0:f.center)||[30,50],animate:!1});let w=null;function c(){if(!(p!=null&&p.setTiles))return;const k=u.includes("?")?"&":"?",E=`${u}${k}_=${Date.now()}`;p.setTiles([E])}function y(){w&&clearTimeout(w),w=setTimeout(()=>{w=null,d().catch(k=>console.error("Failed to update map layer",k))},300)}async function d(){o.value&&(c(),p.setStyle(i.styleSpec??null))}return e.watch(()=>i.styleSpec,y,{deep:!0}),e.onBeforeUnmount(()=>{p.remove()}),(k,E)=>null}}),Nt=e.ref(null);function Bp(){Nt.value=null}function Vp(t){const n=e.ref(!1),o=()=>typeof t=="string"?t:t.value;e.watch(Nt,i=>{i!==o()&&n.value&&(n.value=!1)});function l(){Nt.value=o(),n.value=!0}function r(){Nt.value===o()&&(Nt.value=null),n.value=!1}function a(){n.value?r():l()}return{isOpen:n,open:l,close:r,toggle:a}}const Cp={class:"map-filter"},$p={class:"map-filter__header"},vp={class:"map-filter__title"},Sp={"aria-hidden":"true"},gn="#map-filter-popover-host",Rt=ae(e.defineComponent({__name:"MapFilterPopover",props:{count:{},layer:{},catalogAnchor:{},disabled:{type:Boolean}},setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/filter")),o=t,l=e.computed(()=>{var $;return(($=o.layer)==null?void 0:$.id)??""}),r=e.computed(()=>`filter-popover-${l.value}`),{isOpen:a,close:i,toggle:s}=Vp(r),u=e.reactive({top:0,left:0,transform:"translateX(-50%)"}),p=e.ref(null),w=e.ref(null);let c=null;const y=e.ref({}),d=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0}),m=e.computed(()=>a.value),g=e.computed(()=>{var $;return Array.isArray(($=o.layer)==null?void 0:$.filters)?o.layer.filters:[]}),h=e.computed(()=>g.value.length>0),f=e.computed(()=>{var $;return(($=o.layer)==null?void 0:$.name)??""}),k=e.computed(()=>g.value),E=e.ref(null),T=e.computed(()=>g.value.length),j=e.computed(()=>T.value<=2),B=e.computed(()=>j.value?"body":typeof window>"u"||E.value?gn:"body"),V=e.computed(()=>{if(!m.value||!j.value)return{};const $=typeof window<"u"?window.innerWidth:280,A=Math.max(280,$-16*2);return{position:"absolute",top:`${u.top}px`,left:`${u.left}px`,transform:u.transform,zIndex:1e3,width:"280px",maxWidth:`${A}px`}});function v(){i()}function S($,D,A=8){const N=window.scrollY+A,Y=window.scrollY+window.innerHeight-A;let Z=$;return Z+D>Y&&(Z=Y-D),Z<N&&(Z=N),Z}function M(){var K,ce,de;if(!p.value||!j.value)return;const $=p.value.getBoundingClientRect(),D=window.scrollX+8,A=window.scrollX+window.innerWidth-8,N=((K=w.value)==null?void 0:K.offsetWidth)||280,Y=((ce=w.value)==null?void 0:ce.offsetHeight)||0;let Z=0,X=0;if((de=o.catalogAnchor)!=null&&de.value){const U=o.catalogAnchor.value.getBoundingClientRect(),W=U.top+window.scrollY;Z=S(W,Y,8);const G=U.right+window.scrollX+12,ne=A-N,le=D;X=Math.min(Math.max(G,le),Math.max(le,ne))}else{const U=$.bottom+window.scrollY+8;Z=S(U,Y,8);let W=$.left+window.scrollX;W<D&&(W=D),W+N>A&&(W=Math.max(D,A-N)),X=W}u.left=X,u.top=Z,u.transform="none"}function R(){j.value||b(),s(),a.value&&j.value&&e.nextTick(()=>{M(),F(),requestAnimationFrame(()=>M())})}function I(){o.disabled||R()}e.watch(m,$=>{$&&j.value?e.nextTick(()=>{M(),F(),requestAnimationFrame(()=>M())}):(x(),j.value||b())}),e.watch(k,()=>{!m.value||!j.value||e.nextTick(()=>M())},{deep:!0}),e.watch(j,$=>{m.value&&($?e.nextTick(()=>{M(),F()}):(x(),b()))}),e.watch(()=>o.disabled,$=>{$&&(i(),y.value={})});function q(){!m.value||!j.value||M()}function z($){const D=l.value;if(!D)return;const A=fe(D);if(!(A!=null&&A.setFilter))return;y.value=$;const N=Object.entries($).map(([Y,Z])=>`${Y}=${Z}`).join("|");A.setFilter(N)}function H($){if(!o.disabled)return;const D=$.currentTarget;if(!D)return;const A=D.getBoundingClientRect();d.left=A.left+A.width/2+window.scrollX,d.top=A.bottom+8+window.scrollY,d.visible=!0}function L(){d.visible=!1}e.onMounted(()=>{b(),window.addEventListener("resize",q),window.addEventListener("scroll",q,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",q),window.removeEventListener("scroll",q,!0),x()});function F(){x(),!(!w.value||!j.value)&&(c=new ResizeObserver(()=>{!m.value||!j.value||M()}),c.observe(w.value))}function x(){c&&(c.disconnect(),c=null)}function b(){typeof window>"u"||typeof document>"u"||(E.value=document.querySelector(gn))}return($,D)=>h.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mapLayer-filter",ref_key:"anchor",ref:p},[e.createElementVNode("a",{class:e.normalizeClass(["mapLayer-filter__trigger",{"mapLayer-filter__trigger--disabled":o.disabled}]),href:"#",onClick:e.withModifiers(I,["prevent","stop"]),onMouseenter:H,onMouseleave:L,onFocus:H,onBlur:L},[...D[2]||(D[2]=[e.createElementVNode("div",{class:"mapLayer-filter__icon"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M3 4h18l-7 8v6l-4 2v-8z"})])],-1)])],34),m.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:B.value},[e.createElementVNode("div",{class:e.normalizeClass(["vst-popover__content inline-block z-50 rounded-[16px] bg-white text-sm text-gray-500 rounded-md shadow-lg bottom mapLayer-filter__popover",{"mapLayer-filter__popover--static":!j.value}]),style:e.normalizeStyle(V.value),ref_key:"panel",ref:w,onClick:D[1]||(D[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Cp,[e.createElementVNode("div",$p,[e.createElementVNode("h3",vp,e.toDisplayString(f.value||"Фільтр"),1),e.createElementVNode("button",{type:"button",class:"map-filter__close",onClick:v},[e.createElementVNode("span",Sp,[e.createVNode(e.unref(yt),{class:"h-4 w-4"})]),D[3]||(D[3]=e.createElementVNode("span",{class:"sr-only"},"Закрити",-1))])]),e.createVNode(e.unref(n),{view:"inline",schema:k.value,value:y.value,limit:10,onChange:D[0]||(D[0]=A=>z(A.data)),width:250},null,8,["schema","value"])])],6)],8,["to"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${d.top}px`,left:`${d.left}px`})},e.toDisplayString(d.text),5)):e.createCommentVNode("",!0)]))],512)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-cc1f0579"]]),Lp={key:0,class:"flex justify-center items-center h-[40px] w-[40px] bg-white text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full"},yn=ae(e.defineComponent({__name:"MapFilterWidget",props:{filters:{},title:{},layerId:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",null,[t.filters.length>0?(e.openBlock(),e.createElementBlock("div",Lp,[e.createVNode(Rt,{layer:{filters:t.filters,id:t.layerId},count:t.filters.length},null,8,["layer","count"])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-98772410"]]),Ap={class:"flex flex-row gap-x-3 z-10 relative widget"},Tp=["onClick"],Mp=["src","alt"],Bt=e.defineComponent({__name:"BaseMaps",setup(t){var d,m,g;const n={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:{}},o={z:13,x:4790,y:2762};function l(h){if(h)return h.replace(/{z}/gi,String(o.z)).replace(/{x}/gi,String(o.x)).replace(/{y}/gi,String(o.y))}function r(h,f){let k=h||`layers-${Object.keys(f).length}`,E=1;for(;f[k];)k=`${h}-${E}`,E+=1;return k}const a=e.getCurrentInstance(),i=(d=a==null?void 0:a.appContext.config.globalProperties)==null?void 0:d.$settings,s=i==null?void 0:i.map,u=e.computed(()=>{const h=Array.isArray(s==null?void 0:s.basemaps)?s==null?void 0:s.basemaps:[];if(!h.length)return{};const f={};return h.forEach((k,E)=>{const T=k.name??k.title??`basemap-${E}`,j=(k.id??T??`basemap-${E}`).toString().toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,""),B=r(j||`basemap-${E}`,f),V=k.preview||(k.url?l(k.url):void 0);f[B]={url:k.url,preview:V,title:T}}),f}),p=e.computed(()=>{const h=u.value;return Object.keys(h).length?h:n}),w=e.ref(Object.keys(p.value)[0]??"gki"),c=fe("base",{source:{type:"raster",tiles:(m=p.value[w.value])!=null&&m.url?[(g=p.value[w.value])==null?void 0:g.url]:[]},beforeId:0});function y(h){if(!p.value[h])return;w.value=h;const f=p.value[h];if(!(f!=null&&f.url)){c.setVisible(!1);return}c.setVisible(!0),c.setTiles([f.url])}return e.watch(()=>p.value,h=>{h[w.value]||(w.value=Object.keys(h)[0]??w.value);const f=h[w.value];f!=null&&f.url?(c.setVisible(!0),c.setTiles([f.url])):c.setVisible(!1)},{immediate:!0}),(h,f)=>(e.openBlock(),e.createElementBlock("div",Ap,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,E)=>(e.openBlock(),e.createElementBlock("div",{key:E,onClick:T=>y(E)},[E!=="none"&&k.url?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["lg:w-14 lg:h-14 w-10 h-10 flex items-center justify-center bg-gray-200 rounded-xl shadow-2xs cursor-pointer transition-all border-4",w.value===E?"border-blue-500":"border-gray-200"])},[k.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:k.preview,alt:k.title,class:"object-cover rounded-lg lg:w-12 lg:h-12 w-8 h-8"},null,8,Mp)):e.createCommentVNode("",!0)],2)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["lg:w-14 lg:h-14 w-10 h-10 flex items-center justify-center bg-gray-200/80 rounded-xl shadow-2xs cursor-pointer transition-all border-4",w.value===E?"border-blue-500":"border-gray-200"])},[e.createVNode(e.unref(Hr),{class:"w-4 h-4 text-gray-500"})],2))],8,Tp))),128))]))}}),Fp={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%"}},Dp={class:"flex flex-col gap-1 p-5"},Ip={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},hn=e.defineComponent({__name:"MapLegendWidget",props:{items:{}},setup(t){const n=t,{map:o,ready:l}=Le(),r=e.ref([]);let a=null;function i(w){return w?w.map((c,y)=>{var g;const d=(c==null?void 0:c.name)||(c==null?void 0:c.label)||(c==null?void 0:c.title)||(c==null?void 0:c.id)||`Layer ${y+1}`,m=(c==null?void 0:c.color)||(c==null?void 0:c.fill)||((g=c==null?void 0:c.paint)==null?void 0:g.color)||"#3388ff";return{id:`${d}-${y}`,label:d,color:m}}):[]}function s(w){return w!=null&&w.layers?w.layers.filter(c=>{const y=c.paint||{};return y["fill-color"]||y["line-color"]||y["circle-color"]}).map((c,y)=>{var g;const d=c.paint||{},m=d["fill-color"]||d["line-color"]||d["circle-color"]||"#3388ff";return{id:c.id||`layer-${y}`,label:((g=c.metadata)==null?void 0:g.title)||c.id||`Layer ${y+1}`,color:m}}):[]}async function u(){var y;await l();const w=o.value;if(!w)return;const c=(y=w.getStyle)==null?void 0:y.call(w);r.value=s(c)}function p(){o.value&&(a==null||a())}return e.watch(()=>n.items,async w=>{w!=null?(r.value=i(w),a==null||a()):(await l(),p(),u())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(n.items===void 0||n.items===null)&&(await l(),p(),u())}),e.onBeforeUnmount(()=>{a==null||a(),a=null}),(w,c)=>r.value.length?(e.openBlock(),e.createElementBlock("div",Fp,[e.createElementVNode("div",Dp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,y=>(e.openBlock(),e.createElementBlock("div",{key:y.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:y.color})},null,4),e.createElementVNode("span",Ip,[e.createElementVNode("span",null,e.toDisplayString(y.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function jp(){const{map:t,ready:n}=Le(),o=e.ref(null),l=e.ref(null),r=e.ref(null),a=e.ref(null);let i=[];function s(){i.forEach(d=>d()),i=[]}const u=d=>{const m=(d==null?void 0:d.properties)||{};return!!(m.cluster||m.point_count||m.point_count_abbreviated)},p=d=>{var f,k;o.value=[d.point.x,d.point.y];const m=t.value.queryRenderedFeatures(d.point);if(!(m!=null&&m.length)){w();return}const g=m.find(E=>!u(E));if(!g){w();return}const h=fe(g.source)||fe((f=g.layer)==null?void 0:f.id);h!=null&&h.popup&&(l.value=((k=h.popup)==null?void 0:k.fields)||h.popup,a.value=g.properties)},w=()=>{l.value=null,a.value=null,o.value=null};async function c(){await n(),t.value&&(s(),t.value.on("mousemove",p),t.value.on("mouseleave",w))}function y(){s(),l.value=null,a.value=null,o.value=null}return n().then(c),{popupCoords:o,popupFields:l,popupValues:a,disable:y,title:r}}const zp={class:"min-w-[200px] max-w-[280px] rounded-lg border border-slate-200 bg-white/90 p-3 text-xs shadow-lg backdrop-blur"},Op={class:"space-y-1.5"},Rp={class:"font-bold text-slate-700"},Pp={class:"text-slate-700"},sr=e.defineComponent({__name:"MapPopup",setup(t){const{popupCoords:n,popupFields:o,popupValues:l,disable:r}=jp(),{map:a}=Le(),i=e.ref(null),s=e.ref({left:"-9999px",top:"-9999px"}),u=new Intl.NumberFormat("uk-UA",{maximumFractionDigits:2});function p(g,h){if(h==null||h==="")return h;if((g==null?void 0:g.type)==="number"){const f=typeof h=="number"?h:Number(h);if(Number.isFinite(f))return u.format(f)}return h}function w(g,h,f){const k=g.name||g.label||g.title||`field-${f}`,E=g.label||g.title||g.name||k,T=g.name?h[g.name]:void 0,B=(g.name?h[`${g.name}_text`]:void 0)??T??g.value??null;return{key:k,label:E,value:p(g,B)}}const c=e.computed(()=>{const g=o.value||[],h=l.value||{};return g.filter(f=>(f==null?void 0:f.meta)!=="title").map((f,k)=>w(f,h,k)).filter(f=>f.label)}),y=e.computed(()=>{const g=o.value||[],h=l.value||{},f=g.find(k=>(k==null?void 0:k.meta)==="title");return f?w(f,h,0):null}),d=e.computed(()=>{var h;const g=c.value;return(h=y.value)!=null&&h.value?[{...y.value,key:`${y.value.key}-title`,label:"Назва"},...g]:g});function m(){var x,b;if(!d.value.length||!n.value||!i.value){s.value={left:"-9999px",top:"-9999px"};return}const g=i.value,h=g.offsetParent||null,f=(h==null?void 0:h.getBoundingClientRect())??{left:0,top:0,width:window.innerWidth,height:window.innerHeight},k=((b=(x=a.value)==null?void 0:x.getContainer)==null?void 0:b.call(x))||void 0,E=(k==null?void 0:k.getBoundingClientRect())??f,T=E.left-f.left,j=E.top-f.top,B=g.offsetWidth||0,V=g.offsetHeight||0,v=12,S=8,[M,R]=n.value;let I=T+M+v,q=j+R+v;I+B+S>f.width&&(I=T+M-B-v),q+V+S>f.height&&(q=j+R-V-v);const z=S,H=S,L=Math.max(S,f.width-B-S),F=Math.max(S,f.height-V-S);I=Math.min(Math.max(I,z),L),q=Math.min(Math.max(q,H),F),s.value={left:`${I}px`,top:`${q}px`}}return e.watch([n,d],()=>{e.nextTick(()=>m())}),e.onMounted(()=>{window.addEventListener("resize",m)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",m),r()}),(g,h)=>d.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:i,class:"absolute pointer-events-none z-20",style:e.normalizeStyle(s.value)},[e.createElementVNode("div",zp,[e.createElementVNode("div",Op,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,f=>(e.openBlock(),e.createElementBlock("div",{key:f.key,class:"flex flex-col"},[e.createElementVNode("span",Rp,e.toDisplayString(f.label),1),e.createElementVNode("span",Pp,e.toDisplayString(f.value??"—"),1)]))),128))])])],4)):e.createCommentVNode("",!0)}});function Up(){const{map:t,ready:n}=Le(),o=be.useRoute(),l=be.useRouter(),r=e.ref(null),a=e.ref(null),i=e.ref(null),s=e.ref(!1),u=e.ref([]),p=e.ref(0),w=e.computed(()=>u.value.length),c=e.computed(()=>s.value||!!r.value||!!i.value);let y=null,d=!1;function m(){r.value=null,a.value=null,i.value=null,s.value=!1,u.value=[],p.value=0}function g(){if(y){try{y()}catch{}y=null}}async function h(){await n();const I=t.value;I&&(g(),m(),I.on("click",f),y=()=>I.off("click",f),R(v()))}function f(I){const q=t.value;if(!q)return;const z=(q.queryRenderedFeatures(I.point)||[]).filter(H=>{var L;return(L=H==null?void 0:H.properties)==null?void 0:L.id});if(!z.length){m(),M(null);return}u.value=z,p.value=0,k(p.value)}function k(I){const q=u.value[I];if(!q)return;p.value=I;const z=fe(q.source);j(q,z==null?void 0:z.card)}function E(){p.value>=u.value.length-1||k(p.value+1)}function T(){p.value<=0||k(p.value-1)}async function j(I,q){var L,F,x,b;if(!((L=I==null?void 0:I.properties)!=null&&L.id))return;const z=new URLSearchParams;z.set("layer",I.source),z.set("id",String((F=I.properties)==null?void 0:F.id));const H=Array.isArray(q)&&q.length>0;s.value=H,i.value=null,r.value=null,a.value=I||null;try{const $=await fetch(`/api/map-format?${z.toString()}`);if(!$.ok)throw new Error(`Failed (${$.status})`);const D=await $.json(),A=Array.isArray(D.columns)?D.columns:[],N=Array.isArray(q)?q:[];if(!A.length&&!N.length){console.error("Configure layer in admin"),B();return}r.value={rows:D.rows||{},fields:N,columns:A,html:D.html||null},d||M(a.value);const Y=(x=D.rows)==null?void 0:x.geom;if(Y){const Z=typeof Y=="string"?JSON.parse(Y):Y;Z&&(a.value={...a.value,geometry:Z,properties:{...((b=a.value)==null?void 0:b.properties)||{},geom:Z,geom_4326:Z}})}}catch($){console.error("Failed to load feature card:",$),B()}finally{s.value=!1}}function B(){m(),M(null)}function V(){g(),m()}n().then(h),e.onBeforeUnmount(()=>V());function v(){const I=Array.isArray(o.query.info)?o.query.info[0]:o.query.info;return typeof I!="string"?null:I.trim()||null}function S(I){var L,F;const q=(I==null?void 0:I.source)??((L=I==null?void 0:I.layer)==null?void 0:L.id),z=(F=I==null?void 0:I.properties)==null?void 0:F.id;return!q||z===void 0||z===null?null:`${q},${z}`.trim()||null}function M(I){const q=S(I),z=v();if(q===z)return;const H={...o.query};q?H.info=q:delete H.info,l.push({query:H}).catch(()=>{})}async function R(I){if(!I){m();return}if(I===S(a.value))return;const[q,z]=I.split(","),H=q==null?void 0:q.trim(),L=z==null?void 0:z.trim();if(!H||!L){m(),M(null);return}d=!0;try{const F={source:H,properties:{id:L}};u.value=[F],p.value=0;const x=fe(H);await j(F,x==null?void 0:x.card)}finally{d=!1}}return e.watch(()=>v(),I=>{I!==S(a.value)&&(d=!0,R(I).finally(()=>{d=!1}))}),{card:r,cardFeature:a,cardError:i,cardLoading:s,isOpen:c,close:B,next:E,prev:T,count:w,index:p}}function qp(){const{map:t,ready:n}=Le(),o=e.ref([]),l=e.ref(0),r=e.ref(0),a=e.ref(!1),i=e.ref(null),s=e.ref({}),u=e.ref(null),p=e.ref([]),w=e.computed(()=>o.value[r.value]||null),c=e.computed(()=>o.value.length>0);let y=null;const d=()=>{y==null||y.remove(),y=null},m=v=>v?v.type==="FeatureCollection"?v:v.type==="Feature"?{type:"FeatureCollection",features:[v]}:v.type&&Array.isArray(v.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:v,properties:{}}]}:Array.isArray(v.features)?{type:"FeatureCollection",features:v.features}:v.geometry?m(v.geometry):null:null,g=()=>({type:"line",color:"#0a57ff",width:4,opacity:.95}),h=v=>Number(v.toFixed(5)),f=async v=>{if(await n(),!t.value)return;const S=m(v);S&&(d(),y=fe("feature-highlight",{source:{type:"geojson",data:S},style:g()},t))},k=async(v,S,M)=>{var q,z;const[R,I]=[h(v),h(S)];u.value={x:R,y:I},p.value=M,a.value=!0,i.value=null,o.value=[],s.value={},r.value=0;try{const H=M.map(async $=>{const D=`/api/map-info-point?x=${R}&y=${I}&layers=${$}`,A=await fetch(D);if(!A.ok)return null;const N=await A.json();if(!N.count)return null;const Z=await(await fetch(`${D}&index=0`)).json();return{layerId:$,data:Z,count:N.count}}),F=(await Promise.all(H)).filter(Boolean);if(F.length===0){l.value=0;return}o.value=F.map($=>$.data);const[x]=o.value;l.value=F.reduce(($,D)=>$+(D.count||0),0),s.value[0]=x;const b=((q=x==null?void 0:x.data)==null?void 0:q.geom_4326)??((z=x==null?void 0:x.data)==null?void 0:z.geom);await f(b)}catch(H){i.value=H.message}finally{a.value=!1}},E=async v=>{if(!u.value||!p.value.length)return;if(s.value[v]){o.value[v]=s.value[v];return}const{x:S,y:M}=u.value,R=p.value.join(","),I=`/api/map-info-point?x=${S}&y=${M}&index=${v}&layers=${R}`;try{a.value=!0;const q=await fetch(I);if(!q.ok)throw new Error("Failed to fetch feature by index");const z=await q.json();o.value[v]=z,s.value[v]=z}catch(q){i.value=q.message}finally{a.value=!1}},T=async()=>{r.value<l.value-1&&(r.value+=1,s.value[r.value]||await E(r.value))},j=async()=>{r.value>0&&(r.value-=1,s.value[r.value]||await E(r.value))},B=()=>{o.value=[],l.value=0,r.value=0,s.value={},u.value=null,p.value=[],d()};e.watch(r,async()=>{var S,M;const v=w.value;if(v){const R=((S=v==null?void 0:v.data)==null?void 0:S.geom_4326)??((M=v==null?void 0:v.data)==null?void 0:M.geom);await f(R)}});let V=null;return e.onMounted(async()=>{await n(),t.value&&(V=async v=>{const{lng:S,lat:M}=v.lngLat,R=fe(),q=Object.entries(R).map(([z,H])=>{var L,F,x,b;return{id:z,service:((L=H==null?void 0:H.opts)==null?void 0:L.service)??((x=(F=H==null?void 0:H.opts)==null?void 0:F.source)==null?void 0:x.service)??null,count:((b=H==null?void 0:H.opts)==null?void 0:b.count)??null,visible:(()=>{var $;try{return(($=t.value)==null?void 0:$.getLayer(z))?t.value.getLayoutProperty(z,"visibility")!=="none":!0}catch{return!0}})()}}).filter(z=>z.service==="ogc"&&z.visible).map(z=>z.id);q.length>0&&await k(S,M,q)},t.value.on("dblclick",V))}),e.onBeforeUnmount(()=>{t.value&&V&&t.value.off("dblclick",V),d()}),{features:o,count:l,index:r,current:w,loading:a,error:i,active:c,next:T,prev:j,close:B}}const cr=e.defineComponent({__name:"LayerSwitcher",props:{title:{},url:{},id:{},buttonText:{}},emits:["activate"],setup(t,{emit:n}){const o=t,l=n;function r(p){const w=p.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(w)return w;const c=Array.from(p).map(y=>y.charCodeAt(0).toString(16)).join("").slice(0,8);return c?`layer-${c}`:"layer-temp"}const a=e.computed(()=>{var p;return((p=o.id)==null?void 0:p.trim())||r(o.title)}),i=e.computed(()=>o.buttonText||"Показати шар");function s(){return{id:a.value,title:o.title,url:o.url}}function u(){l("activate",s())}return(p,w)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"flex items-center justify-center bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded w-full",onClick:u},[e.renderSlot(p.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(i.value),1)])]))}}),ze=e.ref([]);function Hp(t,n){return typeof t!="string"?"":t.includes("{{")?t.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*}}/g,(o,l)=>{const r=String(l||"").trim();if(!r)return"";const a=n[r];return a!=null?String(a):""}):t}function xn(t){return t==null?"":String(t).trim()}function bn(t){var n,o;(o=(n=t==null?void 0:t.handle)==null?void 0:n.remove)==null||o.call(n)}function Wp(t){return t?typeof(t==null?void 0:t.value)<"u"?t.value:t:null}function Yp(t){var o;if(!(t!=null&&t.getStyle))return;const n=((o=t.getStyle())==null?void 0:o.layers)||[];for(let l=0;l<n.length;l+=1){const r=n[l];if(!(!r||typeof r.id!="string")&&r.type&&r.type!=="background"&&r.type!=="raster")return r.id}}function kn(t){function n(a,i={},s,u){var k,E;const p=xn(a==null?void 0:a.id),w=((k=a==null?void 0:a.title)==null?void 0:k.trim())||p,c=((E=a==null?void 0:a.url)==null?void 0:E.trim())||"";if(!p||!c)return;const y=Hp(c,i);if(!y)return;const d=u??t;if(!d)return;const m=Wp(d);if(!m)return;const g=ze.value.findIndex(T=>T.id===p);g!==-1&&(bn(ze.value[g]),ze.value.splice(g,1));let h=null;const f=a.beforeId??Yp(m);try{h=fe(p,{source:{type:"raster",tiles:[y],tileSize:a.tileSize??256,minzoom:a.minzoom??0,maxzoom:a.maxzoom??19},layer:{id:p,type:"raster",source:p,paint:{"raster-opacity":a.opacity??.85}},beforeId:f},d)}catch(T){const j=(T==null?void 0:T.message)??"";if(!(typeof j=="string"&&j.includes("Map provider")))throw T;return}ze.value=[...ze.value,{id:p,title:w,originalUrl:c,resolvedUrl:y,owner:s??null,handle:h??null}]}function o(a,i){const s=xn(a);if(!s)return;const u=ze.value.findIndex(w=>w.id===s&&(!i||w.owner===i));if(u===-1)return;const[p]=ze.value.splice(u,1);bn(p)}function l(a){if(!ze.value.length)return;const i=[];ze.value.forEach(s=>{(a?s.owner===a:!0)?bn(s):i.push(s)}),ze.value=i}function r(a,i){const s=xn(a);return s?ze.value.some(u=>u.id===s&&(!i||u.owner===i)):!1}return{temporaryLayers:ze,activateTemporaryLayer:n,deactivateTemporaryLayer:o,clearTemporaryLayers:l,isTemporaryLayerActive:r}}const Zp={key:0,class:"card absolute top-4 lg:left-auto right-11 md:left-4 z-[82] w-[calc(100%-36px)] md:w-[400px] max-h-[80%] overflow-hidden rounded-2xl border border-slate-200 bg-white/95 shadow-2xl backdrop-blur-md flex flex-col"},Gp={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},Kp={class:"min-w-0 flex-1"},Xp={class:"text-base font-semibold text-slate-900 truncate"},Jp={key:0,class:"flex gap-1 mt-1"},Qp=["disabled"],em=["disabled"],tm={key:1,class:"flex gap-1 mt-1"},nm=["disabled"],om=["disabled"],rm={class:"flex-1 overflow-y-auto px-4 py-3 space-y-4 text-sm text-slate-700"},lm={key:0,class:"text-center text-xs text-slate-500"},am={key:1,class:"text-center text-xs text-red-500"},im={key:0,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},sm={class:"divide-y divide-gray-100 py-[5px]"},cm={class:"text-gray-900 font-normal"},dm={key:0,class:"flex gap-1 flex-wrap"},um={key:1,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},pm=["innerHTML"],mm=["innerHTML"],fm={key:2,class:"space-y-3 border-t border-slate-200 pt-3"},gm={key:3,class:"border-t border-slate-100 px-4 py-2 text-right text-xs text-slate-500"},ym={class:"text-xs tracking-[0.02em] leading-none"},hm={key:4,class:"space-y-3 border-t border-slate-200 pt-3"},xm={class:"space-y-1"},bm={class:"flex items-center cursor-pointer gap-2 flex-1"},km=["checked","onChange"],wm={class:"text-[13px] text-gray-600"},_m={key:0,class:"text-right text-xs text-gray-400 truncate max-w-[40%]"},Em={key:5,class:"text-center text-xs text-slate-400"},Nm="map:temporary-layer-request",dr="cardHideEmpty",Bm=14,ur=ae(e.defineComponent({__name:"MapCardWidget",props:{mapId:{}},setup(t){const n=t,o=Up(),l=qp(),r=e.computed(()=>l.active.value),a=e.computed(()=>r.value||o.isOpen.value),i=e.computed(()=>r.value?l.loading.value:o.cardLoading.value),s=e.computed(()=>r.value?l.error.value:o.cardError.value),u=e.computed(()=>{var _,C;return r.value?((_=l.current.value)==null?void 0:_.html)||null:((C=o.card.value)==null?void 0:C.html)||null}),p=Le(),w=fn(),c=e.computed(()=>{var _,C;return((C=(_=w.value)==null?void 0:_.map)==null?void 0:C.cardHideEmpty)??null}),y=be.useRoute(),{activateTemporaryLayer:d,deactivateTemporaryLayer:m,clearTemporaryLayers:g,isTemporaryLayerActive:h}=kn(p.map);function f(_){window.dispatchEvent(new CustomEvent(Nm,{detail:_}))}const k=e.computed(()=>{var _;return((_=o.cardFeature.value)==null?void 0:_.source)??null}),E=e.computed(()=>k.value?`map-card:${k.value}`:"map-card"),T=e.computed(()=>{var J,te;const _=o.cardFeature.value,C=(_==null?void 0:_.source)||((J=_==null?void 0:_.layer)==null?void 0:J.id),O=((te=_==null?void 0:_.properties)==null?void 0:te.id)??(_==null?void 0:_.id);return C&&O!=null?`${C}:${O}`:null}),j=e.ref(null),B=e.ref(null),V=e.ref(0),v=new Map;function S(){if(typeof window>"u")return null;const C=(window.location.pathname||"").match(/\/maps?\/([^/]+)/i);return C&&C[1]?C[1]:null}const M=e.computed(()=>{const _=typeof n.mapId=="string"?n.mapId.trim():"";if(_.length)return _;const C=typeof y.params.slug=="string"?y.params.slug.trim():"";if(C.length)return C;const O=typeof y.query.slug=="string"?y.query.slug.trim():"";return O.length?O:S()}),R=e.ref(null),I=e.ref(null),q=new Map;function z(_){const C=_.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(C)return C;const O=Array.from(_).map(J=>J.charCodeAt(0).toString(16)).join("").slice(0,8);return O?`layer-${O}`:`layer-${Math.random().toString(36).slice(2,8)}`}function H(_){if(typeof _!="string")return"";const C=_.trim();if(!C)return"";if(/^https?:\/\//i.test(C))return C;if(C.startsWith("//"))return typeof window>"u"?`https:${C}`:`${window.location.protocol}${C}`;const O=typeof window<"u"?window.location.origin:"";return C.startsWith("/")?O?`${O}${C}`:C:O?`${O}/${C}`:C}function L(_){if(_==null)return[];if(Array.isArray(_))return _.flatMap(C=>L(C));if(typeof _=="number")return Number.isFinite(_)?[_]:[];if(typeof _=="string"){const C=_.match(/-?\d+(?:\.\d+)?/g);return!C||!C.length?[]:C.map(O=>Number(O)).filter(O=>Number.isFinite(O))}return[]}function F(_){const C=L(_);if(C.length<4)return null;const[O,J,te,se]=C;return[O,J,te,se].every(ge=>Number.isFinite(ge))?[O,J,te,se]:null}function x(_){if(!_)return null;const C=_.trim();if(!C.length)return null;try{const te=JSON.parse(C),se=F(te);if(se)return se}catch{}const O=C.match(/-?\d+(?:\.\d+)?/g);if(!O||O.length<4)return null;const J=O.slice(0,4).map(te=>Number(te));return J.every(te=>Number.isFinite(te))?[J[0],J[1],J[2],J[3]]:null}function b(_){const C={},O=/([:@\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;let J;for(;(J=O.exec(_))!==null;){const te=J[1],se=J[2]??J[3]??J[4]??"";te&&(C[te]=se)}return C}function $(_,C){for(const O of C)if(_[O]!=null&&String(_[O]).trim().length)return String(_[O]).trim();return""}function D(_){if(!(_!=null&&_.length))return;const C=Number(_);return Number.isFinite(C)?C:void 0}function A(_){if(typeof _!="string"||!_.length)return[];const C=[],O=/<LayerSwitcher\b([^>]*)>([\s\S]*?)<\/LayerSwitcher>/gi;let J=0,te;const se=new Set,ge=ye=>{let Ve=ye,Me=2;for(;se.has(Ve);)Ve=`${ye}-${Me}`,Me+=1;return se.add(Ve),Ve};for(;(te=O.exec(_))!==null;){const[ye,Ve="",Me=""]=te,_e=te.index;if(_e>J){const Tr=_.slice(J,_e);Tr.trim().length&&C.push({type:"html",content:Tr})}const Fe=b(Ve),je=$(Fe,["title"])||"Тимчасовий шар",Xe=H($(Fe,["url"]));if(!Xe){C.push({type:"html",content:ye}),J=_e+ye.length;continue}const Lt=$(Fe,["id"]),vn=$(Fe,["button-text","buttonText","show","show-label","showLabel"]),Tx=D($(Fe,["tile-size","tileSize"])),Mx=D($(Fe,["minzoom","minZoom"])),Fx=D($(Fe,["maxzoom","maxZoom"])),Dx=D($(Fe,["opacity"])),Ix=x($(Fe,["bounds","data-bounds","bbox"])),jx=Lt||z(`${je}-${Xe}`)||z(je),Lr=ge(jx||`layer-${C.length+1}`),Sn=Me.trim(),Ar=/<[^>]+>/.test(Sn),zx=Ar?Sn:null,Ln=Ar?null:Sn,Ox=vn&&vn.trim().length?vn.trim():Ln&&Ln.trim().length?Ln.trim():void 0;C.push({type:"layer",spec:{id:Lr,title:je,url:Xe,tileSize:Tx,minzoom:Mx,maxzoom:Fx,opacity:Dx,bounds:Ix},componentProps:{title:je,url:Xe,id:Lr,buttonText:Ox},slotText:zx}),J=_e+ye.length}if(J<_.length){const ye=_.slice(J);ye.trim().length&&C.push({type:"html",content:ye})}return!C.length&&_.trim().length&&C.push({type:"html",content:_}),C}function N(_){if(!_)return null;const C=typeof _.id=="string"?_.id.trim():"",O=typeof _.title=="string"?_.title.trim():"",J=H(typeof _.url=="string"?_.url:"");return!C||!J?null:{id:C,title:O||C,url:J,tileSize:_.tileSize,minzoom:_.minzoom,maxzoom:_.maxzoom,opacity:_.opacity,bounds:_.bounds}}const Y=e.computed(()=>{if(r.value&&l.current.value)return l.current.value.data??{};const _=o.card.value;return(_==null?void 0:_.rows)??{}}),Z=e.computed(()=>{if(r.value&&l.current.value)return l.current.value.fields??[];const _=o.card.value;if(!_)return[];const C=Array.isArray(_.columns)?_.columns:[];return C.length?C:Array.isArray(_.fields)?_.fields:[]}),X=e.computed(()=>{const _=Z.value;if(!_.length)return[];const C=Y.value;return _.map(O=>({key:O.name,label:O.ua||O.label||O.title||O.name,value:C[O.name]??"—",format:O.format||"text"}))}),K=new Set(["—","-","–","−"]);function ce(_){if(_==null)return!0;if(typeof _=="string"){const C=_.trim();return C.length?K.has(C):!0}return!1}function de(_){if(!_)return[];if(Array.isArray(_))return _;if(typeof _=="string"){const C=_.trim();if(C.startsWith("{")&&C.endsWith("}")){const J=C.slice(1,-1).match(/"((?:[^"\\]|\\.)*)"/g);return J?J.map(te=>te.slice(1,-1).replace(/\\"/g,'"')):[]}}return[]}const U=e.ref(!1),W=e.ref(!0),G=()=>{var _,C;return typeof window>"u"?null:((C=(_=window.localStorage)==null?void 0:_.getItem)==null?void 0:C.call(_,dr))??null},ne=e.ref(G()),le=_=>{const C=typeof _=="string"&&_.toLowerCase()==="true";U.value=C,W.value=!C},me=_=>{ne.value=_};if(typeof window<"u"){const _=C=>{C.key===dr&&me(C.newValue)};window.addEventListener("storage",_),e.onBeforeUnmount(()=>{window.removeEventListener("storage",_)})}const ke=e.computed(()=>typeof ne.value=="string");e.watch(ne,_=>{le(typeof _=="string"?_:c.value)},{immediate:!0}),e.watch(c,_=>{ke.value||le(_)},{immediate:!0});const pe=e.computed(()=>X.value.filter(_=>ce(_.value)).length),Re=e.computed(()=>U.value&&!W.value?X.value.filter(_=>!ce(_.value)):X.value);function P(_){const C=typeof _=="string"?_:"";if(!C.length)return{sanitized:"",hiddenCount:0};if(typeof DOMParser>"u")return{sanitized:C,hiddenCount:0};const J=new DOMParser().parseFromString(C,"text/html");let te=0;return J.querySelectorAll("dd").forEach(se=>{var Ve;const ge=((Ve=se.textContent)==null?void 0:Ve.trim())??"",ye=se.closest("div");if(ce(ge)){te+=1,ye?ye.remove():se.remove();return}}),{sanitized:J.body.innerHTML,hiddenCount:te}}const Q=e.computed(()=>P(u.value)),ie=e.computed(()=>u.value?Q.value.hiddenCount:0),we=e.computed(()=>pe.value+ie.value),re=e.computed(()=>{var _;return U.value&&!W.value&&!!((_=u.value)!=null&&_.trim())}),he=e.computed(()=>U.value&&we.value>0),Te=e.computed(()=>W.value?"Приховати пусті значення":"Показати пусті значення"),ee=e.computed(()=>W.value?Pr:Rr);function ve(){W.value=!W.value}const $e=e.computed(()=>{const _=re.value?Q.value.sanitized:u.value??"";return A(_)}),Oe=e.computed(()=>$e.value.filter(_=>_.type==="layer"));function tt(_){return Array.isArray(_)?_.map((C,O)=>{const J=H(typeof(C==null?void 0:C.url)=="string"?C.url:""),te=typeof(C==null?void 0:C.geohub)=="string"&&C.geohub.trim().length?`/api-hub/tms/${C.geohub.trim()}/ua/{z}/{x}/{y}.png`:"",se=((C==null?void 0:C.name)||(C==null?void 0:C.title)||(C==null?void 0:C.label)||`Шар ${O+1}`).toString(),ge=(C==null?void 0:C.id)!=null?String(C.id):z(`${se}-${O+1}`),ye=(C==null?void 0:C.buttonText)||(C==null?void 0:C.button_text)||null,Ve=(C==null?void 0:C.description)||(C==null?void 0:C.subtitle)||null,Me=J||H(te)||"";if(!Me)return null;const _e={id:ge,title:se,url:Me,subtitle:Ve,buttonText:ye||void 0};typeof(C==null?void 0:C.tileSize)=="number"&&(_e.tileSize=C.tileSize),typeof(C==null?void 0:C.tile_size)=="number"&&(_e.tileSize=C.tile_size),typeof(C==null?void 0:C.minzoom)=="number"&&(_e.minzoom=C.minzoom),typeof(C==null?void 0:C.maxzoom)=="number"&&(_e.maxzoom=C.maxzoom),typeof(C==null?void 0:C.opacity)=="number"&&(_e.opacity=C.opacity);const Fe=F((C==null?void 0:C.bounds)??(C==null?void 0:C.bbox)??null);return Fe&&(_e.bounds=Fe),_e}).filter(Boolean):[]}const Ue=e.computed(()=>{var J,te;const _=o.card.value,C=l.current.value,O=[(J=_==null?void 0:_.rows)==null?void 0:J.layers,_==null?void 0:_.layers,(te=C==null?void 0:C.data)==null?void 0:te.layers,C==null?void 0:C.layers];for(const se of O){const ge=tt(se);if(ge.length)return ge}return[]}),nt=e.computed(()=>$e.value.length>0||X.value.length>0||Ue.value.length>0),Ke=e.computed(()=>!o.cardLoading.value&&!!o.card.value);function ot(){const _={},C=R.value;if(C&&typeof C=="object"&&Object.entries(C).forEach(([O,J])=>{typeof J=="string"&&(_[O]=J)}),k.value&&(_.layer=k.value),!_.geohub){const O=typeof(C==null?void 0:C.geohub)=="string"?C.geohub:null,J=typeof(C==null?void 0:C.geohub_key)=="string"?C.geohub_key:null,te=typeof(C==null?void 0:C.geohubId)=="string"?C.geohubId:null;_.geohub=O||J||te||_.layer||""}return _}async function vt(){const _=k.value;if(!_)return R.value=null,I.value=null,null;if(I.value===_&&R.value)return R.value;if(q.has(_)){const C=q.get(_);return R.value=C,I.value=_,C}try{const C=await fetch(`/api/gis-service/${encodeURIComponent(_)}`);if(!C.ok)return null;const O=await C.json();return q.set(_,O),R.value=O,I.value=_,O}catch{return null}}async function En(_){if(!(_!=null&&_.id))return;await vt();const C=ot(),O=Oe.value.find(ye=>ye.spec.id===_.id),J=Ue.value.find(ye=>ye.id===_.id),te=(O==null?void 0:O.spec)||N(J)||N(_),se=(O==null?void 0:O.spec.bounds)??(J==null?void 0:J.bounds);if(!te||h(te.id,E.value))return;const ge=E.value||void 0;j.value=ge??null,d(te,C,ge),f({action:"activate",owner:ge,spec:te,context:C}),kx(se)}async function kx(_){var se;if(!(_!=null&&_.length))return;const[C,O,J,te]=_;[C,O,J,te].every(ge=>Number.isFinite(ge))&&typeof p.fitBounds=="function"&&(await((se=p.ready)==null?void 0:se.call(p)),p.fitBounds([[C,O],[J,te]],{padding:48,maxZoom:18}))}function wx(_){if(!_)return;const C=Nn()||void 0;m(_,C),f({action:"deactivate",owner:C,spec:{id:_}})}function _x(_){return h(_,Nn())}function Ex(_,C){const O=C.target;!!(O!=null&&O.checked)?En(_):wx(_.id)}function Nn(){return j.value||E.value||null}e.watch(k,(_,C)=>{_!==C&&(R.value=null,I.value=null)});const{next:_r,prev:Er,count:Bn,index:Ht}=l,Vn=e.computed(()=>o.count.value),Cn=e.computed(()=>o.index.value),Nr=e.computed(()=>Vn.value>1),Br=e.computed(()=>r.value?Bn.value:Vn.value),Vr=e.computed(()=>r.value?Ht.value:Cn.value),Cr=o.next,$r=o.prev;function rt(){const _=Nn();_&&(g(_),f({action:"clear",owner:_}),j.value=null)}function Nx(){o.close(),l.close(),rt()}e.watch(a,(_,C)=>{!_&&C&&(rt(),He())});function vr(){!o.isOpen.value&&!l.active.value&&rt()}e.watch(()=>o.isOpen.value,()=>{vr()}),e.watch(()=>l.active.value,()=>{vr()}),e.watch(k,(_,C)=>{_&&C&&_!==C&&rt()}),e.watch(Ht,(_,C)=>{_!==C&&rt()}),e.watch(T,(_,C)=>{_&&C&&_!==C&&rt()});function Bx(_){if(!_)return null;if(_.geometry)return _.geometry;const C=(_==null?void 0:_.data)??(_==null?void 0:_.properties);return C!=null&&C.geom_4326?C.geom_4326:C!=null&&C.geom?C.geom:null}function He(){var _,C;(C=(_=B.value)==null?void 0:_.remove)==null||C.call(_),B.value=null}function Vx(_){var O,J,te;const C=(_==null?void 0:_.type)||((te=(J=(O=_==null?void 0:_.features)==null?void 0:O[0])==null?void 0:J.geometry)==null?void 0:te.type)||"";return C.includes("Polygon")?{type:"fill",paint:{"fill-color":"#0a57ff","fill-opacity":.2,"fill-outline-color":"#0a57ff"}}:C.includes("LineString")?{type:"line",paint:{"line-color":"#0a57ff","line-width":3,"line-opacity":.9}}:{type:"circle",paint:{"circle-color":"#0a57ff","circle-opacity":.9,"circle-radius":8,"circle-stroke-color":"#ffffff","circle-stroke-width":2}}}let $n=null;function Sr(){const _=Array.isArray(y.query.info)?y.query.info[0]:y.query.info;return typeof _!="string"?null:_.trim()||null}function Cx(_){var te,se;if(!_)return null;const C=(_==null?void 0:_.source)??((te=_==null?void 0:_.layer)==null?void 0:te.id),O=((se=_==null?void 0:_.properties)==null?void 0:se.id)??(_==null?void 0:_.id);return!C||O===void 0||O===null?null:`${C},${O}`.trim()||null}function Wt(_,C){if(_){if(Array.isArray(_)){if(_.length>=2&&typeof _[0]=="number"&&typeof _[1]=="number"){C.push([_[0],_[1]]);return}_.forEach(O=>Wt(O,C));return}typeof _=="object"&&(Array.isArray(_.coordinates)&&Wt(_.coordinates,C),Array.isArray(_.features)&&_.features.forEach(O=>Wt(O==null?void 0:O.geometry,C)))}}function $x(_){var ye,Ve;if(!_)return null;const C=_.type==="FeatureCollection"?(Ve=(ye=_.features)==null?void 0:ye[0])==null?void 0:Ve.geometry:_.type==="Feature"?_.geometry:_,O=[];if(Wt(C,O),!O.length)return null;let J=O[0][0],te=O[0][0],se=O[0][1],ge=O[0][1];return O.forEach(([Me,_e])=>{Me<J&&(J=Me),Me>te&&(te=Me),_e<se&&(se=_e),_e>ge&&(ge=_e)}),[(J+te)/2,(se+ge)/2]}async function vx(_,C){var se;const O=Sr();if(!O)return;const J=Cx(_);if(!J||J!==O||$n===O)return;const te=$x(C);te&&(await((se=p.ready)==null?void 0:se.call(p)),p.flyTo({center:te,zoom:Bm}),$n=O)}function Sx(_){var te;if(!_){He();return}const C=(te=p.map)==null?void 0:te.value,O={type:"FeatureCollection",features:[{type:"Feature",geometry:_,properties:{}}]};He();const J=Vx(_);if(B.value=fe("feature-card-highlight",{source:{type:"geojson",data:O},layer:{id:"feature-card-highlight",type:J.type,source:"feature-card-highlight",paint:J.paint}},p.map),C!=null&&C.moveLayer){const se=()=>{try{C.moveLayer("feature-card-highlight")}catch{}},ge=()=>{typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(()=>{window.requestAnimationFrame(se)}):setTimeout(se,0)};ge();const ye=()=>ge();C.once("styledata",ye);const Ve=()=>{ge(),C.off("styledata",ye),C.off("idle",Ve)};C.on("idle",Ve)}}function Lx(_){var J,te;const C=(_==null?void 0:_.source)||((J=_==null?void 0:_.layer)==null?void 0:J.id)||"unknown",O=((te=_==null?void 0:_.properties)==null?void 0:te.id)??(_==null?void 0:_.id)??"unknown";return`${C}:${O}`}async function Ax(_){var se,ge,ye,Ve,Me;if(!_)return null;const C=Bx(_);if(C)return C;const O=((se=_==null?void 0:_.properties)==null?void 0:se.id)??(_==null?void 0:_.id);if(!O)return null;const J=Lx(_);if(v.has(J))return v.get(J);const te=[M.value,_==null?void 0:_.source,(ge=_==null?void 0:_.layer)==null?void 0:ge.id].map(_e=>typeof _e=="string"?_e.trim():"").filter(Boolean);for(const _e of te)try{const Fe=await fetch(`/api/map-features/${encodeURIComponent(_e)}/${encodeURIComponent(String(O))}`);if(!Fe.ok)continue;const je=await Fe.json(),Xe=((ye=je==null?void 0:je.data)==null?void 0:ye.geom)||((Ve=je==null?void 0:je.data)==null?void 0:Ve.geometry)||((Me=je==null?void 0:je.data)==null?void 0:Me.geom_4326)||null,Lt=typeof Xe=="string"?JSON.parse(Xe):Xe;if(Lt)return v.set(J,Lt),Lt}catch{continue}return null}async function St(_){V.value+=1;const C=V.value;if(!_||r.value){He();return}if(!Ke.value){He();return}const O=await Ax(_);if(C===V.value){if(!O){He();return}Sx(O),vx(_,O)}}return e.watch(()=>o.cardFeature.value,_=>{St(_)},{immediate:!0}),e.watch(()=>o.index.value,()=>{r.value||St(o.cardFeature.value)}),e.watch(r,_=>{_?He():St(o.cardFeature.value)}),e.watch(M,()=>{!r.value&&o.cardFeature.value&&St(o.cardFeature.value)}),e.watch(Ke,_=>{_?St(o.cardFeature.value):He()}),e.watch(()=>Sr(),()=>{$n=null}),e.onBeforeUnmount(()=>{rt(),He()}),(_,C)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("div",Zp,[e.createElementVNode("div",Gp,[e.createElementVNode("div",Kp,[e.createElementVNode("p",Xp,[r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Об’єкт "+e.toDisplayString(Vr.value+1)+" / "+e.toDisplayString(Br.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Nr.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Об’єкт "+e.toDisplayString(Vr.value+1)+" / "+e.toDisplayString(Br.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Інформація про об’єкт ")],64))],64))])]),r.value&&e.unref(Bn)>1?(e.openBlock(),e.createElementBlock("div",Jp,[e.createElementVNode("button",{onClick:C[0]||(C[0]=(...O)=>e.unref(Er)&&e.unref(Er)(...O)),disabled:e.unref(Ht)===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Mn),{class:"h-4 w-4"})],8,Qp),e.createElementVNode("button",{onClick:C[1]||(C[1]=(...O)=>e.unref(_r)&&e.unref(_r)(...O)),disabled:e.unref(Ht)===e.unref(Bn)-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Fn),{class:"h-4 w-4"})],8,em)])):!r.value&&Nr.value?(e.openBlock(),e.createElementBlock("div",tm,[e.createElementVNode("button",{onClick:C[2]||(C[2]=(...O)=>e.unref($r)&&e.unref($r)(...O)),disabled:Cn.value===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Mn),{class:"h-4 w-4"})],8,nm),e.createElementVNode("button",{onClick:C[3]||(C[3]=(...O)=>e.unref(Cr)&&e.unref(Cr)(...O)),disabled:Cn.value===Vn.value-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Fn),{class:"h-4 w-4"})],8,om)])):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 ml-1",onClick:Nx}," ✕ ")]),e.createElementVNode("div",rm,[i.value?(e.openBlock(),e.createElementBlock("div",lm," Завантаження даних… ")):s.value?(e.openBlock(),e.createElementBlock("div",am,e.toDisplayString(s.value),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[X.value.length?(e.openBlock(),e.createElementBlock("div",im,[e.createElementVNode("dl",sm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Re.value,O=>(e.openBlock(),e.createElementBlock("div",{key:O.key,class:"grid grid-cols-1 gap-1 py-3 sm:grid-cols-3 sm:gap-4 even:bg-gray-50 text-[12px]"},[e.createElementVNode("dt",cm,e.toDisplayString(O.label),1),e.createElementVNode("dd",{class:e.normalizeClass(["text-gray-700 sm:col-span-2 font-normal whitespace-pre-wrap",O.format==="badge"?"font-semibold text-yellow-800":""])},[O.format==="tags"?(e.openBlock(),e.createElementBlock("div",dm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(de(O.value),(J,te)=>(e.openBlock(),e.createElementBlock("span",{key:te,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold text-foreground"},e.toDisplayString(J),1))),128))])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(O.value),1)],64))],2)]))),128))])])):$e.value.length?(e.openBlock(),e.createElementBlock("div",um,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($e.value,(O,J)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:J},[O.type==="html"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:O.content},null,8,pm)):(e.openBlock(),e.createBlock(cr,{key:1,title:O.componentProps.title,url:O.componentProps.url,id:O.componentProps.id,"button-text":O.componentProps.buttonText,onActivate:En},e.createSlots({_:2},[O.slotText?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:O.slotText},null,8,mm)]),key:"0"}:void 0]),1032,["title","url","id","button-text"]))],64))),128))])):e.createCommentVNode("",!0),Oe.value.length?(e.openBlock(),e.createElementBlock("div",fm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Oe.value,O=>(e.openBlock(),e.createBlock(cr,{key:O.spec.id,title:O.componentProps.title,url:O.componentProps.url,id:O.spec.id,"button-text":O.componentProps.buttonText,onActivate:En},null,8,["title","url","id","button-text"]))),128))])):e.createCommentVNode("",!0),he.value?(e.openBlock(),e.createElementBlock("div",gm,[e.createElementVNode("button",{type:"button",class:"flex items-center gap-1 justify-end w-full font-medium text-blue-600 hover:text-blue-800 transition-colors disabled:opacity-60 cursor-pointer",onClick:ve},[e.createElementVNode("span",ym,e.toDisplayString(Te.value),1),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(ee.value),{class:"h-3 w-3 stroke-[1.5px]"}))])])):e.createCommentVNode("",!0),Ue.value.length?(e.openBlock(),e.createElementBlock("div",hm,[C[5]||(C[5]=e.createElementVNode("p",{class:"text-xs font-semibold uppercase tracking-wide text-slate-500"},"Шари",-1)),e.createElementVNode("div",xm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ue.value,O=>(e.openBlock(),e.createElementBlock("div",{key:O.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",bm,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:_x(O.id),onChange:J=>Ex(O,J)},null,40,km),C[4]||(C[4]=e.createElementVNode("div",{class:"w-4 h-4 rounded border border-blue-800 flex items-center justify-center peer-checked:bg-blue-600 peer-checked:border-blue-600"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},[e.createElementVNode("path",{d:"M10.6663 1L4.24967 7.41667L1.33301 4.5",stroke:"#fff","stroke-width":"1.4","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),e.createElementVNode("span",wm,e.toDisplayString(O.title),1)]),O.subtitle?(e.openBlock(),e.createElementBlock("div",_m,e.toDisplayString(O.subtitle),1)):e.createCommentVNode("",!0)]))),128))])])):e.createCommentVNode("",!0),nt.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Em," Даних не знайдено. "))],64))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-b9b6f5d5"]]),pr=e.defineComponent({__name:"MapBoundaryLayer",props:{layerId:{},boundary:{},katottg:{},settingsMap:{}},setup(t){var y,d;const n=t,o=((d=(y=e.getCurrentInstance())==null?void 0:y.appContext.config.globalProperties)==null?void 0:d.$settings)||null,{map:l,ready:r}=Le();let a=null;function i(){a==null||a.remove(),a=null}function s(m){if(!m)return null;if(typeof m=="string")try{m=JSON.parse(m)}catch{return null}return m.type==="FeatureCollection"?m:m.type==="Feature"?{type:"FeatureCollection",features:[m]}:m.type&&Array.isArray(m.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:m,properties:{}}]}:Array.isArray(m.features)?{type:"FeatureCollection",features:m.features}:m.geometry?s(m.geometry):null}function u(m){var f,k,E;return{type:"line",color:"#8e4484",width:2,opacity:((((E=(k=(f=m==null?void 0:m.features)==null?void 0:f[0])==null?void 0:k.geometry)==null?void 0:E.type)||"").includes("Polygon"),.95)}}async function p(m){const g=await fetch(m);if(!g.ok)throw new Error(String(g.status));return g.json()}async function w(m,g){if(m){const h=/^https?:\/\//.test(m)?m:new URL(m,location.origin).toString(),f=await p(h).catch(()=>null),k=s(f);if(k)return k}if(g){const h=await p(`https://data.gki.com.ua/api-user/atu/${encodeURIComponent(g)}`).catch(()=>null),f=s(h);if(f)return f}return null}async function c(){var f,k,E,T;if(!n.layerId||!l.value){i();return}typeof r=="function"&&await r().catch(()=>{});const m=n.boundary??((f=n.settingsMap)==null?void 0:f.boundary)??((k=o==null?void 0:o.map)==null?void 0:k.boundary)??null,g=n.katottg??((E=n.settingsMap)==null?void 0:E.katottg)??((T=o==null?void 0:o.map)==null?void 0:T.katottg)??null;if(!m&&!g){i();return}const h=await w(m,g);if(!h){i();return}i(),a=fe(`${n.layerId}-boundary`,{source:{type:"geojson",data:h},style:u(h)},l)}return e.watch(()=>{var m,g;return[n.layerId,n.boundary,n.katottg,(m=n.settingsMap)==null?void 0:m.boundary,(g=n.settingsMap)==null?void 0:g.katottg,l.value]},()=>{c()},{immediate:!0}),e.onBeforeUnmount(i),(m,g)=>null}}),Vm={class:"map-center-control"},Cm=["aria-label"],$m={class:"absolute right-full mr-3 px-1.5 py-0.5 bg-gray-700 text-white text-[0.75rem] font-medium rounded-md opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100 pointer-events-none transition-opacity duration-200 whitespace-nowrap","aria-hidden":"true"},et=ae(e.defineComponent({name:"MapCenterControl",__name:"MapCenterControl",props:{center:{},zoom:{},targetCenter:{},targetZoom:{},targetLabel:{},targetAriaLabel:{}},setup(t){const n=t,{map:o,ready:l}=Le(),r=e.ref(null),a=e.ref(null),i=e.ref(null),s=e.ref(null),u=fn(),p=e.computed(()=>{var k;return((k=u.value)==null?void 0:k.map)??null});function w(k){if(Array.isArray(k)&&k.length>=2){const[E,T]=k.slice(0,2).map(j=>Number(j));return Number.isNaN(E)||Number.isNaN(T)?null:[E,T]}if(k&&typeof k=="object"){const E=k,T=E.lng??E.lon??E.long??E.x,j=E.lat??E.y;if(T!=null&&j!=null){const B=Number(T),V=Number(j);if(!Number.isNaN(B)&&!Number.isNaN(V))return[B,V]}}if(typeof k=="string"){const E=k.split(",").map(T=>Number(T.trim()));if(E.length>=2&&E.every(T=>!Number.isNaN(T)))return[E[0],E[1]]}return null}function c(k){const E=w(k);E&&(r.value=E)}function y(k){const E=Number(k);Number.isNaN(E)||(a.value=E)}e.watch(()=>n.center,k=>c(k),{immediate:!0}),e.watch(()=>n.zoom,k=>y(k),{immediate:!0}),e.watch(()=>n.targetCenter,k=>{i.value=w(k)},{immediate:!0}),e.watch(()=>n.targetZoom,k=>{const E=Number(k);s.value=Number.isNaN(E)?null:E},{immediate:!0}),e.watch(()=>{var k;return(k=p.value)==null?void 0:k.center},k=>{c(k)},{immediate:!0}),e.watch(()=>{var k;return(k=p.value)==null?void 0:k.zoom},k=>{y(k)},{immediate:!0});const d=e.computed(()=>{var k;return((k=n.targetLabel)==null?void 0:k.trim())||"Точка"}),m=e.computed(()=>n.targetAriaLabel||"Перейти до точки"),g=e.computed(()=>!!i.value);e.onMounted(async()=>{await(l==null?void 0:l());const k=o.value;if(k){if(!r.value){const E=k.getCenter();r.value=[E.lng,E.lat]}a.value==null&&(a.value=k.getZoom())}});function h(){const k=o.value;if(!k)return;const E=r.value||(()=>{const j=k.getCenter();return[j.lng,j.lat]})(),T=a.value??k.getZoom();k.flyTo({center:E,zoom:T})}function f(){const k=o.value;if(!k||!i.value)return;const E=s.value??a.value??k.getZoom();k.flyTo({center:i.value,zoom:E})}return(k,E)=>(e.openBlock(),e.createElementBlock("div",Vm,[g.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,id:"center-btn",type:"button",class:"group relative flex items-center justify-center w-9 h-9 rounded-xl shadow-lg transition-transform transition-shadow duration-200 bg-white text-gray-700 hover:bg-gray-50 hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400/60 focus-visible:ring-offset-2","aria-label":"Повернути центр",onClick:e.withModifiers(h,["stop"])},[E[0]||(E[0]=e.createElementVNode("span",{class:"absolute right-full mr-3 px-1.5 py-0.5 bg-gray-700 text-white text-[0.75rem] font-medium rounded-md opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100 pointer-events-none transition-opacity duration-200 whitespace-nowrap","aria-hidden":"true"},"Центр мапи",-1)),e.createVNode(e.unref(Wr),{class:"w-4 h-4"})])),g.value?(e.openBlock(),e.createElementBlock("button",{key:1,id:"goto-target-btn",type:"button",class:"group relative flex items-center justify-center w-9 h-9 rounded-xl shadow-lg transition-transform transition-shadow duration-200 bg-white text-gray-700 hover:bg-gray-50 hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400/60 focus-visible:ring-offset-2","aria-label":m.value,onClick:e.withModifiers(f,["stop"])},[e.createElementVNode("span",$m,e.toDisplayString(d.value),1),e.createVNode(e.unref(Yr),{class:"w-4 h-4"})],8,Cm)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-03fa94f6"]]),vm={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Sm={class:"flex-1 relative overflow-hidden"},Lm={class:"absolute top-0 left-0 w-full z-20"},Am={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},Tm={class:"flex items-center gap-3 h-[2.75rem]"},Mm={class:"font-semibold text-lg text-gray-800 line-clamp-1"},Fm={key:0,class:"text-xs text-gray-500 truncate"},Dm=["title"],Im={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]"},jm={class:"relative w-full h-full"},zm={style:{top:"17px",left:"230px",position:"absolute","z-index":"1"}},Om={class:"absolute top-4 left-4 z-20"},Rm={class:"absolute top-[6.5rem] right-2 space-y-1 z-20"},Pm={class:"absolute bottom-4 left-4 z-20"},Um={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},qm={class:"flex-1 flex flex-col h-full"},Hm={class:"px-3 pt-3 pb-2 border-b border-gray-100"},Wm={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"},Ym=["aria-selected","onClick"],Zm={class:"leading-none"},Gm={class:"flex flex-col flex-1 overflow-y-hidden p-3"},Km="OpenGIS",Xm=1e3,Jm=ae(e.defineComponent({__name:"service",props:{hideServiceKey:{type:Boolean,default:!1}},setup(t){var $,D;const n=t,o=e.toRef(n,"hideServiceKey"),l=be.useRoute(),r=be.useRouter(),{id:a}=l.params,i=e.ref(null),s=e.ref({}),u=e.ref(null),p=((D=($=e.getCurrentInstance())==null?void 0:$.appContext.config.globalProperties)==null?void 0:D.$settings)||null;function w(A){typeof document>"u"||(document.title=A?`${A} — Сервіс`:Km)}const c=e.ref(null),y=e.ref(""),d=e.ref([]),m=e.ref([]),g=e.ref([]),h=e.ref("list"),f=e.ref(""),k=e.ref([]);let E=null;const T=e.computed(()=>{var A,N;return((A=u.value)==null?void 0:A.id)??((N=u.value)==null?void 0:N.service_id)??null}),j=e.computed(()=>{const A=(p==null?void 0:p.map)||null,N=(A==null?void 0:A.boundary)??null,Y=(A==null?void 0:A.katottg)??null;return!N&&!Y?null:{boundary:N,katottg:Y}}),B=e.computed(()=>{const A=u.value;if(!A)return"";const N=[];!o.value&&A.service_key&&N.push(`Сервіс: ${A.service_key}`),A.description&&N.push(A.description);const Y=A.group_name||A.group_id;return Y&&N.push(`Група: ${Y}`),typeof A.is_public<"u"&&N.push(A.is_public?"Публічний":"Не публічний"),typeof A.is_active<"u"&&N.push(A.is_active?"Активний":"Неактивний"),N.join(", ")}),V=[{key:"style",label:"Стиль",icon:tr},{key:"popup",label:"Попап",icon:$u},{key:"filter",label:"Фільтр",icon:Au},{key:"legend",label:"Легенда",icon:ku},{key:"card",label:"Картка",icon:Nu}],v=V.map(A=>A.key),S=e.ref("style");e.onMounted(async()=>{const A=l.query.tab;A&&v.includes(A)&&(S.value=A),await H()}),e.watch(S,A=>{l.query.tab!==A&&r.replace({query:{...l.query,tab:A}})}),e.watch(()=>l.query.tab,A=>{A&&v.includes(A)&&S.value!==A&&(S.value=A)}),e.watch(()=>{var A;return(A=u.value)==null?void 0:A.name},A=>w(A),{immediate:!0});function M(A){if(!A)return null;try{return JSON.parse(JSON.stringify(A))}catch(N){return console.warn("Failed to clone style",N),null}}function R(A){if(!A)return null;if(typeof A=="string")try{return cn(er.load(A)||null)}catch(N){return console.warn("Failed to parse style yaml",N),null}return cn(M(A))}function I(A,N){try{return JSON.stringify(A)===JSON.stringify(N)}catch{return!1}}function q(){var N;if(!u.value)return;const A=R(c.value);I(A,((N=u.value)==null?void 0:N.style)??null)||(u.value={...u.value,style:A})}function z(){E&&clearTimeout(E),E=setTimeout(()=>{E=null,q()},Xm)}const H=async()=>{try{const A=await fetch(`/api/gis-service/${a}`);if(!A.ok)throw new Error(`${A.status}`);const N=await A.json();s.value=N||{},i.value=a;const Y=R(N.style);u.value=N?{...N,style:M(Y)}:null,c.value=Y,y.value=typeof(N==null?void 0:N.style)=="string"?N.style:Y?er.dump(Y):"",m.value=(N==null?void 0:N.popup)||[],h.value=N.card_mode==="html"?"html":"list",g.value=N.card,f.value=N.html,d.value=(N==null?void 0:N.legend)||[],k.value=(N==null?void 0:N.filters)||[]}catch(A){console.error("Failed to fetch map info",A)}};e.watch(()=>{var A;return(A=u.value)==null?void 0:A.style},A=>{c.value=R(A)},{deep:!0}),e.watch(()=>c.value,()=>{z()},{deep:!0}),e.onBeforeUnmount(()=>{E&&(clearTimeout(E),E=null)});async function L(A,N){await x({[A]:N},A)}function F(){const A=M(c.value);u.value=u.value?{...u.value,style:A}:u.value}async function x(A,N){if(u.value={...u.value||{},...A},typeof A.html<"u"&&(s.value={...s.value||{},html:A.html}),!!T.value)try{if(!(await fetch(`/api/gis-service/${T.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)})).ok)throw new Error("Save failed");ue.notify({type:"success",title:"Успіх",message:`${N} saved`}),await H()}catch(Y){ue.notify({type:"error",title:"Помилка",message:`Failed to save ${N}`}),console.error(Y)}}async function b(A,N){if(A!=="card"){await L(A,N);return}const Y=(N==null?void 0:N.card_mode)==="html"?"html":"list",Z=Y==="html"&&typeof(N==null?void 0:N.html)=="string"?N.html:"",X=(Y==="html"?[]:null)||(Array.isArray(N==null?void 0:N.list)?N.list:[]);g.value=X,h.value=Y,f.value=Z;const K={card_mode:Y};Y==="html"&&(K.html=Z),Y==="list"&&(K.card=X),await x(K,"card")}return(A,N)=>{var Y,Z,X;return e.openBlock(),e.createElementBlock("div",vm,[e.createElementVNode("div",Sm,[e.createElementVNode("div",Lm,[e.createElementVNode("div",Am,[e.createElementVNode("div",Tm,[e.createElementVNode("button",{onClick:N[0]||(N[0]=K=>A.$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"},[...N[10]||(N[10]=[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",Mm,e.toDisplayString((Y=u.value)==null?void 0:Y.name),1),B.value?(e.openBlock(),e.createElementBlock("div",Fm,e.toDisplayString(B.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:(Z=u.value)==null?void 0:Z.description},e.toDisplayString((X=u.value)==null?void 0:X.description),9,Dm)])]),e.createElementVNode("div",Im,[e.createElementVNode("div",jm,[e.createVNode(Ot,null,{default:e.withCtx(()=>{var K,ce,de,U,W,G,ne;return[(K=u.value)!=null&&K.service_id?(e.openBlock(),e.createBlock(Np,{key:0,id:(ce=u.value)==null?void 0:ce.service_id,layer:u.value,"style-spec":((de=u.value)==null?void 0:de.style)||null,autoCenter:!1},null,8,["id","layer","style-spec"])):e.createCommentVNode("",!0),T.value?(e.openBlock(),e.createBlock(pr,{key:1,"layer-id":T.value,boundary:((U=u.value)==null?void 0:U.boundary)||((W=j.value)==null?void 0:W.boundary)||null,katottg:((G=u.value)==null?void 0:G.katottg)||((ne=j.value)==null?void 0:ne.katottg)||null},null,8,["layer-id","boundary","katottg"])):e.createCommentVNode("",!0),e.createElementVNode("div",zm,[T.value?(e.openBlock(),e.createBlock(yn,{key:0,"layer-id":T.value,filters:k.value},null,8,["layer-id","filters"])):e.createCommentVNode("",!0)]),N[11]||(N[11]=e.createElementVNode("div",{id:"map-filter-popover-host",class:"map-widget__filter-host"},null,-1)),e.createElementVNode("div",Om,[e.createVNode(Bt)]),e.createElementVNode("div",Rm,[e.createVNode(et),s.value.center?(e.openBlock(),e.createBlock(et,{key:0,targetCenter:s.value.center,targetLabel:"Ценр даних"},null,8,["targetCenter"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Pm,[e.createVNode(hn,{items:d.value||null},null,8,["items"])]),e.createVNode(sr),e.createVNode(ur,{html:s.value.html},null,8,["html"])]}),_:1})])])]),e.createElementVNode("div",Um,[e.createElementVNode("div",qm,[e.createElementVNode("div",Hm,[e.createElementVNode("div",Wm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(V,K=>e.createElementVNode("button",{key:K.key,type:"button",role:"tab","aria-selected":S.value===K.key,class:e.normalizeClass(["whitespace-nowrap 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",S.value===K.key?"bg-white shadow-sm text-gray-700":""]),onClick:ce=>S.value=K.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(K.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Zm,e.toDisplayString(K.label),1)],10,Ym)),64))])]),e.createElementVNode("div",Gm,[S.value==="style"?(e.openBlock(),e.createBlock(zu,{key:0,token:T.value,"style-text":y.value,"style-yaml":c.value,"onUpdate:styleYaml":N[1]||(N[1]=K=>c.value=K),"onUpdate:styleText":N[2]||(N[2]=K=>y.value=K),onUpdate:F},null,8,["token","style-text","style-yaml"])):S.value==="legend"?(e.openBlock(),e.createBlock(mp,{key:1,token:T.value,columns:d.value,"onUpdate:columns":N[3]||(N[3]=K=>d.value=K),onSave:N[4]||(N[4]=K=>L("legend",K))},null,8,["token","columns"])):S.value==="popup"?(e.openBlock(),e.createBlock(lp,{key:2,token:T.value,columns:m.value,fields:s.value.fields,"onUpdate:columns":N[5]||(N[5]=K=>m.value=K),onSave:N[6]||(N[6]=K=>L("popup",K))},null,8,["token","columns","fields"])):S.value==="card"?(e.openBlock(),e.createBlock(wp,{key:3,token:T.value,columns:g.value,fields:s.value.fields,"view-mode":h.value,html:f.value,"onUpdate:columns":N[7]||(N[7]=K=>g.value=K),onSave:b},null,8,["token","columns","fields","view-mode","html"])):S.value==="filter"?(e.openBlock(),e.createBlock(Ep,{key:4,token:T.value,fields:s.value.fields,columns:k.value,"onUpdate:columns":N[8]||(N[8]=K=>k.value=K),onSave:N[9]||(N[9]=K=>L("filters",K))},null,8,["token","fields","columns"])):e.createCommentVNode("",!0)])])])])}}}),[["__scopeId","data-v-5e9526e9"]]),Qm={class:"flex-1 overflow-y-auto p-4 sm:p-6"},ef={class:"space-y-3"},tf={class:"bg-white p-3 rounded-xl border border-gray-200 shadow-sm"},nf={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2"},of={class:"text-xs text-gray-500 mb-1"},rf={key:0,class:"text-base text-md font-semibold text-gray-900"},lf={key:1,class:"text-base text-md font-semibold text-gray-900"},af={class:"bg-white p-3 rounded-xl border border-gray-200 shadow-sm"},sf={class:"space-y-2"},cf={class:"bg-gradient-to-br from-blue-50 to-blue-100/30 p-4 rounded-lg border border-blue-200"},df={class:"text-sm font-semibold text-gray-900"},uf={class:"text-xs text-gray-600 mt-1"},pf={class:"grid grid-cols-2 gap-3"},mf={class:"text-xs text-gray-500 mb-1"},ff={class:"text-sm font-semibold text-gray-900"},gf={class:"bg-gray-50 p-4 rounded-lg"},yf={class:"grid grid-cols-2 gap-4"},hf={class:"text-xs text-gray-500 mb-1"},xf={class:"text-sm font-semibold text-gray-900"},bf=e.defineComponent({directives:{tooltip:ue.TooltipDirective},__name:"raster-info-tab",props:{details:{}},setup(t){return(n,o)=>{const l=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",Qm,[e.createElementVNode("div",ef,[e.createElementVNode("div",tf,[o[0]||(o[0]=e.createElementVNode("div",{class:"mb-4"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Основні параметри")],-1)),e.createElementVNode("div",nf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.baseParams,r=>(e.openBlock(),e.createElementBlock("div",{key:r.label,class:"bg-gray-50 p-2 rounded-lg"},[e.createElementVNode("p",of,e.toDisplayString(r.label),1),r.tooltip?e.withDirectives((e.openBlock(),e.createElementBlock("p",rf,[e.createTextVNode(e.toDisplayString(r.value),1)])),[[l,r.tooltip]]):(e.openBlock(),e.createElementBlock("p",lf,e.toDisplayString(r.value),1))]))),128))])]),e.createElementVNode("div",af,[o[3]||(o[3]=e.createElementVNode("div",{class:"mb-2"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Просторова інформація")],-1)),e.createElementVNode("div",sf,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("p",{class:"text-xs text-gray-500 mb-2"},"Система координат",-1)),e.createElementVNode("div",cf,[e.createElementVNode("p",df,e.toDisplayString(t.details.spatial.crs.code),1),e.createElementVNode("p",uf,e.toDisplayString(t.details.spatial.crs.description),1)])]),e.createElementVNode("div",null,[o[2]||(o[2]=e.createElementVNode("p",{class:"text-xs text-gray-500 mb-2"},"Межі покриття",-1)),e.createElementVNode("div",pf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.spatial.bounds,r=>(e.openBlock(),e.createElementBlock("div",{key:r.label,class:"bg-gray-50 p-2 rounded-lg border border-gray-200"},[e.createElementVNode("p",mf,e.toDisplayString(r.label),1),e.createElementVNode("p",ff,e.toDisplayString(r.value),1)]))),128))])]),e.createElementVNode("div",gf,[e.createElementVNode("div",yf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.spatial.resolution,r=>(e.openBlock(),e.createElementBlock("div",{key:r.label},[e.createElementVNode("p",hf,e.toDisplayString(r.label),1),e.createElementVNode("p",xf,e.toDisplayString(r.value),1)]))),128))])])])])])])}}}),kf={class:"flex-1 overflow-y-auto space-y-3 pr-1"},wf={class:"font-medium text-sm text-gray-800"},_f={class:"text-xs text-gray-500"},Ef=e.defineComponent({__name:"raster-files-tab",props:{files:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",kf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.files,l=>(e.openBlock(),e.createElementBlock("div",{key:l.name,class:"border border-gray-100 rounded-xl p-4 shadow-sm bg-white flex items-start justify-between"},[e.createElementVNode("div",null,[e.createElementVNode("p",wf,e.toDisplayString(l.name),1),e.createElementVNode("p",_f,e.toDisplayString(l.resolution)+" • "+e.toDisplayString(l.size)+"MB",1)]),e.createElementVNode("span",{class:e.normalizeClass(["text-[11px] font-semibold px-2 py-0.5 rounded-full",l.statusClass])},e.toDisplayString(l.status),3)]))),128))]))}}),Nf={},Bf={xmlns:"http://www.w3.org/2000/svg",width:"12px",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"};function Vf(t,n){return e.openBlock(),e.createElementBlock("svg",Bf,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M20,16v4a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4H8",fill:"none",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},null,-1),e.createElementVNode("polygon",{fill:"none",points:"12.5 15.8 22 6.2 17.8 2 8.3 11.5 8 16 12.5 15.8",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},null,-1)])])}const Cf=ae(Nf,[["render",Vf]]),$f={},vf={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 Sf(t,n){return e.openBlock(),e.createElementBlock("svg",vf,[...n[0]||(n[0]=[e.createElementVNode("circle",{cx:"12",cy:"12",r:"9"},null,-1),e.createElementVNode("line",{x1:"12",y1:"8",x2:"12",y2:"8"},null,-1),e.createElementVNode("path",{d:"M11 12h1v4h1"},null,-1)])])}const Lf=ae($f,[["render",Sf]]),Af={class:"absolute top-[5.5rem] left-4 z-30 flex items-center gap-2 rounded-full bg-white/90 px-3 py-1 text-xs font-medium text-slate-600 shadow-sm backdrop-blur"},Tf=e.defineComponent({__name:"RasterLayer",props:{tileUrl:{},extent:{},layerId:{},beforeId:{}},setup(t){const n=t,o=n.layerId||"raster-preview-layer",l=`${o}-source`,r=n.extent&&n.extent.length===4?[...n.extent]:void 0,a=fe(o,{sourceId:l,source:{type:"raster",tiles:n.tileUrl?[n.tileUrl+"?nottl=1"]:[],tileSize:256,...r?{bounds:r}:{}},layer:{id:`${o}-raster`,type:"raster",paint:{"raster-opacity":.95}},beforeId:n.beforeId??null}),{fitBounds:i}=Le(),s=e.ref(.95);e.watch(()=>n.tileUrl,c=>{if(!c){a.setVisible(!1);return}a.setVisible(!0),a.setTiles([c])},{immediate:!0}),e.watch(()=>s.value,c=>{a.setOpacity(c)},{immediate:!0});let u=null,p=!1;e.watch(()=>n.extent,c=>{if(!c||c.length!==4)return;const y=c.join(",");if(y!==u){if(u=y,!p){p=!0;return}i==null||i([[c[0],c[1]],[c[2],c[3]]],{padding:40,maxZoom:17})}},{immediate:!0});const w=e.computed(()=>`${Math.round(s.value*100)}%`);return(c,y)=>(e.openBlock(),e.createElementBlock("div",Af,[y[1]||(y[1]=e.createElementVNode("span",null,"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"1",step:"0.01","onUpdate:modelValue":y[0]||(y[0]=d=>s.value=d),class:"h-1 w-28 cursor-pointer appearance-none rounded-full bg-slate-300 focus:outline-none",style:{"accent-color":"#3b82f6"}},null,512),[[e.vModelText,s.value,void 0,{number:!0}]]),e.createElementVNode("span",null,e.toDisplayString(w.value),1)]))}}),Mf=["href"],Ff={key:0,class:"py-6 px-4 text-sm text-gray-500"},Df={key:1,class:"py-6 px-4 text-sm text-red-600"},If={class:"flex justify-end gap-2 px-4 py-3 border-t border-gray-100 w-full"},jf=["disabled"],zf=["disabled"],Of=192,mr=8,Vt=8,fr=e.defineComponent({__name:"HeaderActions",props:{entityId:{},entityInfo:{},table:{},formEndpoint:{type:[String,Function]},saveEndpoint:{type:[String,Function]},entityLabel:{},editButtonText:{},saveMethod:{}},emits:["saved"],setup(t,{emit:n}){const o=t,l=n,r=e.defineAsyncComponent(()=>import("@opengis/core").then(N=>N.VsModal)),a=e.defineAsyncComponent(()=>import("@opengis/form")),i=e.ref(!1),s=e.ref(null),u=e.ref(null),p=e.ref(null),w=e.ref(null),c=e.computed(()=>w.value?{position:"fixed",top:`${w.value.top}px`,left:`${w.value.left}px`}:{});e.watch(i,N=>{N&&e.nextTick(F)});const y=e.ref(!1),d=e.ref(null),m=e.ref({}),g=e.ref(null),h=e.ref(""),f=e.ref(!1),k=e.ref(!1),E=e.ref(null),T=e.computed(()=>o.entityId||""),j=(N,Y)=>N?typeof N=="function"?N(Y):typeof N!="string"?"":N.includes(":id")?Y?N.replace(":id",encodeURIComponent(Y)):"":N:"",B=e.computed(()=>{var N;return(N=o.table)==null?void 0:N.trim()}),V=e.computed(()=>{if(o.formEndpoint)return o.formEndpoint;if(B.value)return N=>`/api/form/${B.value}/${N}`}),v=e.computed(()=>{if(o.saveEndpoint)return o.saveEndpoint;if(B.value)return N=>`/api/table/${N}`}),S=e.computed(()=>j(V.value,T.value)),M=e.computed(()=>o.saveEndpoint?j(o.saveEndpoint,T.value):E.value?`/api/table/${encodeURIComponent(E.value)}`:j(v.value,T.value)),R=e.computed(()=>j("/api/gis-clear-tiles?id=:id",T.value)),I=e.computed(()=>{var Z,X,K;const N=(X=(Z=o.entityInfo)==null?void 0:Z.name)==null?void 0:X.trim();if(N)return`Редагування ${N}`;const Y=(K=o.entityLabel)==null?void 0:K.trim();return Y?`Редагування ${Y}`:"Редагування"}),q=e.computed(()=>o.editButtonText||"Редагувати"),z=e.computed(()=>(o.saveMethod||"POST").toUpperCase());function H(){i.value||F(),i.value=!i.value}function L(){i.value=!1}function F(){var G;if(typeof window>"u"||!u.value)return;const N=u.value.getBoundingClientRect(),Y=window.innerWidth,Z=window.innerHeight,X=N.left,K=Math.max(Y-Of-Vt,Vt),ce=Math.min(Math.max(X,Vt),K),de=((G=p.value)==null?void 0:G.offsetHeight)??0,U=N.bottom+mr;let W=U;if(de&&U+de>Z-Vt){const ne=N.top-mr-de;W=Math.max(ne,Vt)}w.value={top:W,left:ce}}function x(N){var Z,X;if(!s.value&&!p.value)return;const Y=N.target;Y&&((Z=s.value)!=null&&Z.contains(Y)||(X=p.value)!=null&&X.contains(Y))||(i.value=!1)}function b(){i.value&&F()}e.onMounted(()=>{window.addEventListener("click",x),window.addEventListener("resize",b),window.addEventListener("scroll",b,!0)}),e.onUnmounted(()=>{window.removeEventListener("click",x),window.removeEventListener("resize",b),window.removeEventListener("scroll",b,!0)});async function $(){var N,Y,Z;if(!(!T.value||!S.value)){L(),y.value=!0,f.value=!0,h.value="",d.value=null,m.value={},E.value=null;try{const X=await fetch(S.value);if(!X.ok)throw new Error(`Failed to load form: ${X.status}`);const K=await X.json();m.value=(K==null?void 0:K.data)||{},d.value=(K==null?void 0:K.schema)||null;const ce=typeof(K==null?void 0:K.token)=="string"&&K.token||typeof((N=K==null?void 0:K.tokens)==null?void 0:N.edit)=="string"&&K.tokens.edit||typeof((Y=K==null?void 0:K.tokens)==null?void 0:Y.edit_token)=="string"&&K.tokens.edit_token||typeof((Z=K==null?void 0:K.data)==null?void 0:Z.token)=="string"&&K.data.token||null;E.value=ce,g.value=null}catch(X){console.error("Failed to load edit form",X),h.value="Не вдалося завантажити форму редагування"}finally{f.value=!1}}}function D(){y.value=!1,d.value=null,h.value="",E.value=null}async function A(){var N,Y;if(!(!T.value||!M.value)){if(g.value){const Z=(Y=(N=g.value).validate)==null?void 0:Y.call(N);if(Z){ue.notify({type:"warning",title:"Validation",message:Object.entries(Z).map(([X,K])=>`${X}: ${K}`).join(`
163
+ `)});return}}k.value=!0;try{const Z=await fetch(M.value,{method:z.value,headers:{"Content-Type":"application/json"},body:JSON.stringify(m.value)});if(!Z.ok)throw new Error(`Failed to save: ${Z.status}`);ue.notify({type:"success",title:"Збережено",message:"Зміни збережено"}),l("saved"),D()}catch(Z){console.error("Failed to save edit form",Z),ue.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти зміни"})}finally{k.value=!1}}}return(N,Y)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:s,class:"relative flex items-center"},[e.createElementVNode("button",{ref_key:"triggerButton",ref:u,type:"button",onClick:e.withModifiers(H,["stop"]),class:"flex items-center justify-center w-9 h-9 hover:rounded-md hover:border hover:border-gray-200 bg-white text-gray-600 hover:bg-gray-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sky-500","aria-label":"Дії"},[...Y[3]||(Y[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5.5v.01M12 12v.01M12 18.5v.01"})],-1)])],512),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuContainer",ref:p,style:e.normalizeStyle(c.value),class:"absolute top-0 left-0 mt-2 w-48 rounded-xl border border-gray-200 bg-white shadow-lg text-sm z-[1000]"},[R.value?(e.openBlock(),e.createElementBlock("a",{key:0,href:R.value,target:"_blank",rel:"noreferrer",class:"flex items-center gap-2 px-4 py-2 text-left text-gray-700 hover:bg-slate-50 hover:rounded-t-xl",onClick:L},[e.createVNode(e.unref(zr),{size:16,class:"lucide lucide-brush-cleaning text-gray-500"}),Y[4]||(Y[4]=e.createElementVNode("span",null,"Очистити тайли",-1))],8,Mf)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"flex items-center gap-2 w-full px-4 py-2 text-left text-gray-700 hover:bg-slate-50 hover:rounded-b-xl",onClick:$},[e.createVNode(e.unref(Gr),{size:16,class:"lucide lucide-pencil text-gray-500"}),e.createElementVNode("span",null,e.toDisplayString(q.value),1)])],4)):e.createCommentVNode("",!0)])),e.createVNode(e.unref(r),{teleport:"#modal",visible:y.value,"onUpdate:visible":Y[2]||(Y[2]=Z=>y.value=Z),title:I.value,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",If,[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-gray-100 text-gray-700",onClick:D,disabled:k.value}," Скасувати ",8,jf),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:A,disabled:k.value},e.toDisplayString(k.value?"Зберігається…":"Зберегти"),9,zf)])]),default:e.withCtx(()=>[f.value?(e.openBlock(),e.createElementBlock("div",Ff," Завантаження форми редагування… ")):h.value?(e.openBlock(),e.createElementBlock("div",Df,e.toDisplayString(h.value),1)):(e.openBlock(),e.createBlock(e.unref(a),{key:2,values:m.value,"onUpdate:values":Y[0]||(Y[0]=Z=>m.value=Z),form:g.value,"onUpdate:form":Y[1]||(Y[1]=Z=>g.value=Z),schema:d.value},null,8,["values","form","schema"]))]),_:1},8,["visible","title"])],512))}}),Rf={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Pf={class:"flex-1 relative overflow-hidden"},Uf={class:"absolute top-0 left-0 w-full z-20"},qf={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},Hf={class:"flex items-center gap-3 min-w-0"},Wf={class:"flex flex-col min-w-0"},Yf={class:"font-semibold text-lg text-gray-800 line-clamp-1"},Zf={key:0,class:"text-xs text-gray-500 truncate"},Gf={class:"flex items-center gap-4"},Kf={class:"flex-1 min-w-0"},Xf=["title"],Jf={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]"},Qf={class:"relative w-full h-full"},e0={class:"absolute top-4 left-4 z-20"},t0={class:"absolute top-[6.5rem] right-2 space-y-1 z-20"},n0={class:"w-[520px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},o0={class:"flex-1 flex flex-col h-full"},r0={class:"px-3 pt-3 pb-2 border-b border-gray-100"},l0={class:"items-center justify-center text-muted-foreground grid w-full grid-cols-2 h-12 p-1 bg-gray-50 rounded-xl shadow-sm"},a0=["aria-selected","onClick"],i0={class:"leading-none"},s0={class:"flex flex-col flex-1 overflow-y-hidden p-4"},c0={key:0,class:"mb-3 text-xs text-slate-500"},d0={key:1,class:"mb-3 text-xs text-rose-600"},u0="OpenGIS",p0=e.defineComponent({__name:"raster",setup(t){const n=[{cardClass:"bg-gradient-to-br from-green-50 to-green-100/30 border-green-200",titleClass:"text-green-900"},{cardClass:"bg-gradient-to-br from-blue-50 to-blue-100/30 border-blue-200",titleClass:"text-blue-900"},{cardClass:"bg-gradient-to-br from-purple-50 to-purple-100/30 border-purple-200",titleClass:"text-purple-900"},{cardClass:"bg-gradient-to-br from-gray-50 to-gray-100/30 border-gray-200",titleClass:"text-gray-900"}],o=be.useRouter(),l=be.useRoute(),r=e.computed(()=>{var b;const x=(b=l.params)==null?void 0:b.id;return typeof x=="string"?x:void 0}),a=e.ref(null),i=e.ref(!1),s=e.ref(null);function u(){var b;if(typeof document>"u")return;const x=(b=g.value)==null?void 0:b.name;document.title=x?`${x} — Растер`:u0}const p=e.computed(()=>{var b;const x=(b=a.value)==null?void 0:b.url;return x?/^https?:\/\//i.test(x)||typeof window>"u"||typeof location>"u"?x:`${location.origin}${x}`:""}),w=e.computed(()=>{var x;return((x=a.value)==null?void 0:x.extent)??null}),c=e.computed(()=>r.value?`raster-${r.value}`:void 0),y=e.computed(()=>{const x=c.value??"raster",b=w.value&&w.value.length===4?w.value.join(","):"no-extent";return`${x}-${b}`}),d=e.computed(()=>!!p.value),m=e.computed(()=>{const x=w.value;if(!x||x.length!==4)return null;const[b,$,D,A]=x;return[b,$,D,A].some(N=>typeof N!="number"||Number.isNaN(N))?null:[(b+D)/2,($+A)/2]}),g=e.computed(()=>{var A,N;const x=a.value,b=x==null?void 0:x.extent;return{id:r.value??"—",name:(x==null?void 0:x.name)||((N=(A=x==null?void 0:x.files)==null?void 0:A[0])==null?void 0:N.name),description:x!=null&&x.extension?`Формат ${x.extension.toUpperCase()}`:"Попередній перегляд растрового шару. Реальні метадані підвантажуються.",coverage:b&&b.length===4?`${F(b[0])}, ${F(b[1])} → ${F(b[2])}, ${F(b[3])}`:"Покриття уточнюється",crs:x!=null&&x.srid?`EPSG:${x.srid}`:"EPSG:4326",source:x!=null&&x.proj4?x.proj4:"Джерело: Mapnik",updatedAt:x!=null&&x.cache?"Дані кешовано":"Нові дані"}}),h=e.computed(()=>{const x=a.value;return x?[x.source_path,x.description,x.is_public?"Публічна":"Не публічна",x.is_active?"Архівна":"Активна"].filter(b=>b).join(", "):""}),f=[{key:"info",label:"Інформація",icon:Lf},{key:"files",label:"Файли",icon:Cf}],k=f.map(x=>x.key),E=e.ref(k.includes(l.query.tab)?l.query.tab:"info");e.watch(()=>l.query.tab,x=>{x&&k.includes(x)&&E.value!==x&&(E.value=x)}),e.watch(E,x=>{l.query.tab!==x&&o.replace({query:{...l.query,tab:x}})});const T=e.computed(()=>v(a.value)),j=e.computed(()=>M(a.value));e.watch(()=>a.value,()=>{u()},{immediate:!0}),e.watch(r,()=>{V()},{immediate:!0});function B(){V()}async function V(){const x=r.value;if(!x){a.value=null,s.value=null;return}i.value=!0,s.value=null;try{const b=await fetch(`/api/gis-raster/${encodeURIComponent(x)}`);if(!b.ok)throw new Error(`HTTP ${b.status}`);const $=await b.json();a.value=$}catch(b){console.error("Failed to load raster info",b),a.value=null,s.value=b instanceof Error?b.message:String(b)}finally{i.value=!1}}function v(x){var b;return(b=x==null?void 0:x.files)!=null&&b.length?x.files.map($=>({name:$.name,resolution:S($.name,x),size:$.size||"—",status:"Готово",statusClass:"bg-emerald-50 text-emerald-600 border border-emerald-100"})):[]}function S(x,b){const $=x.toLowerCase();return $.endsWith(".tfw")?"Georeference":$.endsWith(".xml")?"Опис":$.endsWith(".tif")||$.endsWith(".tiff")?b!=null&&b.resolution?b.resolution:"Растер":(b==null?void 0:b.resolution)??"Файл"}function M(x){return x?{baseParams:I(x),spatial:{crs:{code:x.srid?`EPSG:${x.srid}`:"EPSG:4326",description:x.proj4||"WGS 84 — World Geodetic System 1984"},bounds:q(x.extent),resolution:z(x)},statistics:H(x),technical:L(x)}:null}function R(x){return x!=null&&x.length?x.map($=>{var A;if(!$)return"";const D=$.trim().split(/\s+/)[0];return((A=D==null?void 0:D[0])==null?void 0:A.toUpperCase())||""}).filter(Boolean).join(""):""}function I(x){var N,Y;const b=x.bands_count??((N=x.bands)==null?void 0:N.length)??"—",$=R(x.bands),D=(x.bands??[]).map(Z=>Z.trim()).filter(Z=>Z.length>0),A=D.length?D.join(", "):void 0;return[{label:"Розмір растру, px",value:x.width&&x.height?`${x.width}×${x.height}`:"—"},{label:"Формат файлу",value:((Y=x.extension)==null?void 0:Y.toUpperCase())??"—"},{label:"Розмір файлу, mb",value:x.total_size?`${x.total_size}`:"—"},{label:"Кількість каналів",value:typeof b=="number"?`${b}${$?` (${$})`:""}`:`${b}${$?` (${$})`:""}`,tooltip:A},{label:"Глибина кольору",value:x.color_depth?`${x.color_depth} біт/канал`:"—"},{label:"Стиснення",value:x.compression||"—"}]}function q(x){return!x||x.length!==4?[]:[{label:"Північ",value:F(x[3],"N")},{label:"Схід",value:F(x[2],"E")},{label:"Південь",value:F(x[1],"S")},{label:"Захід",value:F(x[0],"W")}]}function z(x){const b=[{label:"Роздільна здатність",value:x.resolution||"—"}];return x.width&&x.height&&b.push({label:"Розмір пікселя",value:`${x.width} × ${x.height} px`}),b}function H(x){var b;return(b=x.bands)!=null&&b.length?x.bands.map(($,D)=>{const A=n[D%n.length];return{label:`Канал ${D+1}${$?` (${$})`:""}`,cardClass:A.cardClass,titleClass:A.titleClass,metrics:[{label:"Назва",value:$||`Канал ${D+1}`},{label:"Глибина",value:x.color_depth?`${x.color_depth} біт`:"—"},{label:"Статус",value:x.cache?"Кешовано":"Готово"}]}}):[]}function L(x){var b;return[{label:"Тип даних",value:x.color_depth?`Unsigned Integer ${x.color_depth}-bit`:"—"},{label:"Компресія",value:x.compression||"—"},{label:"Кольорова інтерпретація",value:((b=x.bands)==null?void 0:b.join(", "))||"—"},{label:"SRID",value:x.srid?`EPSG:${x.srid}`:"—"},{label:"Проекція (proj4)",value:x.proj4||"—"},{label:"URL тайла",value:x.url||"—"}]}function F(x,b){if(x==null||Number.isNaN(x))return"—";const $=`${x.toFixed(5)}°`;return b?`${$} ${b}`:$}return(x,b)=>(e.openBlock(),e.createElementBlock("div",Rf,[e.createElementVNode("div",Pf,[e.createElementVNode("div",Uf,[e.createElementVNode("div",qf,[e.createElementVNode("div",Hf,[e.createElementVNode("button",{type:"button",onClick:b[0]||(b[0]=$=>e.unref(o).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[1]||(b[1]=[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",Wf,[e.createElementVNode("div",Yf,e.toDisplayString(g.value.name),1),h.value?(e.openBlock(),e.createElementBlock("div",Zf,e.toDisplayString(h.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Gf,[e.createElementVNode("div",Kf,[e.createElementVNode("div",{class:"w-full text-xs text-gray-600 truncate",title:g.value.description},e.toDisplayString(g.value.description),9,Xf)]),e.createVNode(fr,{"entity-id":r.value||"","entity-info":{name:g.value.name},table:"gis.rasters.table","entity-label":"Растер","save-method":"put","edit-button-text":"Редагувати",onSaved:B},null,8,["entity-id","entity-info"])])])]),e.createElementVNode("div",Jf,[e.createElementVNode("div",Qf,[e.createVNode(Ot,null,{default:e.withCtx(()=>[d.value?(e.openBlock(),e.createBlock(Tf,{key:y.value,"tile-url":p.value,extent:w.value,"layer-id":c.value},null,8,["tile-url","extent","layer-id"])):e.createCommentVNode("",!0),e.createElementVNode("div",e0,[e.createVNode(Bt)]),e.createElementVNode("div",t0,[e.createVNode(et),m.value?(e.openBlock(),e.createBlock(et,{key:0,targetCenter:m.value,targetLabel:"Центр даних",targetAriaLabel:"Перейти до центру даних"},null,8,["targetCenter"])):e.createCommentVNode("",!0)])]),_:1})])])]),e.createElementVNode("div",n0,[e.createElementVNode("div",o0,[e.createElementVNode("div",r0,[e.createElementVNode("div",l0,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(f,$=>e.createElementVNode("button",{key:$.key,type:"button",role:"tab","aria-selected":E.value===$.key,class:e.normalizeClass(["whitespace-nowrap 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",E.value===$.key?"bg-white shadow-sm text-gray-700":""]),onClick:D=>E.value=$.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent($.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",i0,e.toDisplayString($.label),1)],10,a0)),64))])]),e.createElementVNode("div",s0,[i.value?(e.openBlock(),e.createElementBlock("div",c0," Завантаження метаданих растру… ")):s.value?(e.openBlock(),e.createElementBlock("div",d0," Не вдалося отримати дані: "+e.toDisplayString(s.value),1)):e.createCommentVNode("",!0),E.value==="files"?(e.openBlock(),e.createBlock(Ef,{key:2,files:T.value},null,8,["files"])):j.value?(e.openBlock(),e.createBlock(bf,{key:3,details:j.value},null,8,["details"])):e.createCommentVNode("",!0)])])])]))}}),m0={},f0={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-table"};function g0(t,n){return e.openBlock(),e.createElementBlock("svg",f0,[...n[0]||(n[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 y0=ae(m0,[["render",g0]]),h0={class:"flex flex-col h-full"},x0={class:"flex justify-end mb-3 gap-2"},b0=e.defineComponent({__name:"cartocss-css-tab",props:{modelValue:{}},emits:["update:modelValue","save"],setup(t,{emit:n}){const o=t,l=n,r=e.computed({get:()=>o.modelValue,set:a=>l("update:modelValue",a)});return(a,i)=>(e.openBlock(),e.createElementBlock("div",h0,[e.createElementVNode("div",x0,[e.createElementVNode("button",{type:"button",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",onClick:i[0]||(i[0]=s=>a.$emit("save"))},[...i[2]||(i[2]=[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:"h-3.5 w-3.5"},[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 2H5a 2 2 0 0 1-2-2V5a 2 2 0 0 1 2-2z"}),e.createElementVNode("path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a 1 1 0 0 0-1 1v7"}),e.createElementVNode("path",{d:"M7 3v4a1 1 0 0 0 1 1h7"})],-1),e.createTextVNode(" Зберегти ",-1)])])]),e.createVNode(zt,{modelValue:r.value,"onUpdate:modelValue":i[1]||(i[1]=s=>r.value=s),language:"css",class:"flex-1 rounded-lg overflow-hidden"},null,8,["modelValue"])]))}}),k0={class:"flex flex-col flex-1 min-h-0"},w0={class:"flex justify-between mb-3 gap-2"},_0={class:"text-left"},E0={class:"font-medium text-gray-900"},N0={class:"text-xs text-gray-500"},B0={class:"flex justify-center gap-2"},V0=["checked","onChange"],C0={class:"text-sm font-medium text-gray-900"},$0=e.defineComponent({__name:"cartocss-data-tab",props:{modelValue:{default:[]},modelModifiers:{}},emits:e.mergeModels(["save"],["update:modelValue"]),setup(t,{emit:n}){const o=[{key:"table",label:"Таблиця",slot:"datasetCell"},{key:"active",label:"Активний",slot:"activeCell",width:"140px"},{key:"zoom",label:"Min Зум",slot:"zoomCell",width:"140px"}],l=e.defineAsyncComponent(()=>import("@opengis/core").then(m=>m.VsModal)),r=e.defineAsyncComponent(()=>import("@opengis/form")),a=e.useModel(t,"modelValue"),i=n,s=e.ref(!1),u=e.ref({table:"",query:"",srid:"",key:"",columns:"",minzoom:"",maxzoom:"",proj4text:"",active:!0}),p={table:{type:"text",label:"Таблиця",validators:["required"]},key:{type:"text",label:"Ключ",validators:["required"]},query:{type:"text",label:"Query"},columns:{type:"text",label:"Колонки"},srid:{type:"number",label:"SRID"},proj4text:{type:"text",label:"PROJ4"},active:{type:"switcher",label:"Активна"},minzoom:{type:"number",label:"Min Зум",col:6},maxzoom:{type:"number",label:"Max Зум",col:6}};function w(){u.value={table:"",query:"",srid:"",key:"",columns:"",minzoom:"",maxzoom:"",proj4text:"",active:!0},s.value=!0}function c(){s.value=!1}function y(){var h,f;const m=(h=u.value.table)==null?void 0:h.trim(),g=(f=u.value.key)==null?void 0:f.trim();if(!m||!g){ue.notify({type:"warning",title:"Перевірка",message:"Вкажіть таблицю та підпис"});return}a.value=[...Array.isArray(a.value)?a.value:[],{...u.value,table:m,key:g}],s.value=!1}function d(m,g){var f;const h=((f=g==null?void 0:g.target)==null?void 0:f.checked)??!1;m.active=h,a.value=Array.isArray(a.value)?[...a.value]:[]}return(m,g)=>(e.openBlock(),e.createElementBlock("div",k0,[e.createElementVNode("div",w0,[e.createElementVNode("button",{type:"button",class:"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 hover:from-gray-600 hover:to-gray-500",onClick:w}," Додати таблицю "),e.createElementVNode("button",{type:"button",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",onClick:g[0]||(g[0]=h=>i("save"))}," Зберегти ")]),e.createVNode(We,{modelValue:a.value,"onUpdate:modelValue":g[1]||(g[1]=h=>a.value=h),"columns-scheme":o,"form-scheme":p,"add-button":!1,"main-col-width":"260px"},{datasetCell:e.withCtx(({row:h})=>[e.createElementVNode("div",_0,[e.createElementVNode("div",E0,e.toDisplayString(h.table),1),e.createElementVNode("div",N0,e.toDisplayString(h.key),1)])]),activeCell:e.withCtx(({row:h})=>[e.createElementVNode("label",B0,[e.createElementVNode("input",{type:"checkbox",class:"h-4 w-4 text-sky-500 border-gray-300 rounded focus:ring-sky-300",checked:h.active,onChange:f=>d(h,f)},null,40,V0)])]),zoomCell:e.withCtx(({row:h})=>[e.createElementVNode("div",C0,e.toDisplayString(h.zoom),1)]),_:1},8,["modelValue"]),e.createVNode(e.unref(l),{teleport:"#modal",visible:s.value,"onUpdate:visible":g[3]||(g[3]=h=>s.value=h),title:"Нова таблиця CartoCSS"},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end gap-2 p-4 border-т"},[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-gray-100 text-gray-700",onClick:c}," Скасувати "),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:y}," Додати ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(r),{values:u.value,"onUpdate:values":g[2]||(g[2]=h=>u.value=h),schema:p},null,8,["values"])]),_:1},8,["visible"])]))}}),v0=e.defineComponent({__name:"CartocssLayerLoader",props:{layerId:{type:String,required:!0},tileUrl:{type:String,default:""},title:{type:String,default:""},active:{type:Boolean,default:!1},owner:{type:String,default:""},opacity:{type:Number,default:.85}},setup(t){const n=t,o=Le(),{activateTemporaryLayer:l,deactivateTemporaryLayer:r}=kn(o.map),a=e.computed(()=>{var w;const p=`${(w=n==null?void 0:n.tileUrl)==null?void 0:w.trim()}`;return p?typeof window>"u"||typeof location>"u"||/^https?:\/\//i.test(p)?p:p.startsWith("//")?`${window.location.protocol}${p}`:p.startsWith("/")?`${location.origin}${p}`:`${location.origin}/${p}`:""});let i="",s="";function u(){const p=n.active&&!!a.value;i&&(!p||i!==n.layerId)&&(r(i,s||void 0),i="",s=""),p&&(l({id:n.layerId,title:n.title||n.layerId,url:a.value,opacity:n.opacity},{},n.owner),i=n.layerId,s=n.owner||"")}return e.watch(()=>[n.layerId,a.value,n.active,n.owner],u,{immediate:!0}),e.onUnmounted(()=>{i&&(r(i,s||void 0),i="",s="")}),()=>{}}}),S0={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},L0={class:"flex-1 relative overflow-hidden"},A0={class:"absolute top-0 left-0 w-full z-20"},T0={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},M0={class:"flex items-center gap-3 min-w-0"},F0={class:"flex flex-col min-w-0"},D0={class:"font-semibold text-lg text-gray-800 line-clamp-1"},I0={key:0,class:"text-xs text-gray-500 truncate"},j0={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]"},z0={class:"relative w-full h-full"},O0={class:"absolute top-4 left-4 z-20"},R0={class:"absolute top-[6.5rem] right-2 space-y-1 z-20"},P0={key:0,class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},U0={class:"flex-1 flex flex-col h-full"},q0={class:"px-3 pt-3 pb-2 border-b border-gray-100"},H0={class:"items-center justify-center text-muted-foreground grid w-full grid-cols-2 h-12 p-1 bg-gray-50 rounded-xl shadow-sm"},W0=["aria-selected","onClick"],Y0={class:"leading-none"},Z0={class:"flex flex-col flex-1 overflow-y-hidden p-4"},G0={key:0,class:"flex-1 flex items-center justify-center text-sm text-gray-500"},K0="cartocss-demo-001",X0="OpenGIS",J0=e.defineComponent({__name:"cartocss",setup(t){const n=be.useRouter(),o=be.useRoute(),l=[{key:"css",label:"CSS",icon:tr},{key:"data",label:"Дані",icon:y0}],r=l.map(M=>M.key),a=e.ref(r.includes(o.query.tab)?o.query.tab:"css"),i=e.computed(()=>o.params.id||K0),s=e.ref({id:i.value,name:"",description:""});function u(M){typeof document>"u"||(document.title=M?`${M} — CartoCSS`:X0)}const p=e.ref("");e.ref("");const w=e.ref([]),c=e.ref(!1),y=e.ref(!1),d=e.ref(""),m=e.ref(0),g=e.ref(!1),h=e.computed(()=>`cartocss-layer-${i.value}`),f=e.ref(null),k=e.computed(()=>{var z;const M=(z=d.value)==null?void 0:z.trim();if(!M)return"";const R=M.includes("?")?"&":"?",I=`${M}${R}nottl=1`,q=m.value;return q?`${M}${R}ts=${q}&nocache=1`:I}),E=e.computed(()=>{var H;const M=(H=f.value)==null?void 0:H.bounds;if(!Array.isArray(M)||M.length<4)return null;const[R,I,q,z]=M;return[R,I,q,z].some(L=>typeof L!="number"||Number.isNaN(L))?null:[(R+q)/2,(I+z)/2]}),T=e.computed(()=>{const M=f.value;return M?(w.value.map(I=>I==null?void 0:I.table).filter(Boolean),[M.description,M.group_id?`Група: ${M.group_id}`:null,M.source_path?`Шлях: ${M.source_path}`:null,M.is_public===!0?"Публічний":"Не публічний",M.enabled===!0?"Активний":"Неактивний"].filter(Boolean).join(", ")):""});e.watch(i,M=>{M&&v(M)},{immediate:!0}),e.watch(()=>{var M;return(M=s.value)==null?void 0:M.name},M=>u(M),{immediate:!0}),e.watch(()=>o.query.tab,M=>{M&&r.includes(M)&&a.value!==M&&(a.value=M)}),e.watch(a,M=>{o.query.tab!==M&&n.replace({query:{...o.query,tab:M}})});function j(){i.value&&v(i.value,{bustCache:!0})}function B(M){if(!M)return null;if(typeof M=="string")try{return JSON.parse(M)}catch(R){return console.warn("Failed to parse CartoCSS config",R),null}return typeof M=="object"?M:null}function V(M){const R=Array.isArray(M)?M:M==null?void 0:M.datasets;return Array.isArray(R)?R.map((I,q)=>({table:(I==null?void 0:I.table)||(I==null?void 0:I.id)||`dataset_${q+1}`,query:(I==null?void 0:I.query)||"",srid:(I==null?void 0:I.srid)||"",key:(I==null?void 0:I.key)||(I==null?void 0:I.label)||"Без підпису",active:typeof(I==null?void 0:I.active)=="boolean"?I.active:!0,minzoom:typeof(I==null?void 0:I.zoom)>"u"?"":String(I.zoom),maxzoom:typeof(I==null?void 0:I.maxzoom)>"u"?"":String(I.maxzoom),columns:(I==null?void 0:I.columns)||"",proj4text:(I==null?void 0:I.proj4text)||""})):[]}async function v(M,R){c.value=!0;try{const I=await fetch(`/api/gis-css/${M}`);if(!I.ok)throw new Error(`Failed to load cartocss: ${I.status}`);const q=await I.json(),z=(q==null?void 0:q.message)||q||{};f.value=z,s.value={id:z.cartocss_key||M,name:z.name||s.value.name,description:z.description||s.value.description},p.value=typeof z.style=="string"?z.style:"";const H=B(z.config??[]);w.value=V(H);const L=typeof z.url=="string"?z.url:"";d.value=L,g.value=!!(L&&z.enabled!==!1),m.value=R!=null&&R.bustCache?Date.now():0}catch(I){console.error("Failed to fetch CartoCSS",I),g.value=!1,d.value="",m.value=0,f.value=null}finally{c.value=!1}}async function S(){if(i.value){y.value=!0;try{const M={style:p.value||"",config:w.value},R=await fetch(`/api/gis-css/${i.value}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(M)});if(!R.ok)throw new Error(`Failed to save cartocss: ${R.status}`);ue.notify({type:"success",title:"Збережено",message:"CartoCSS оновлено"}),await v(i.value,{bustCache:!0})}catch(M){console.error("Failed to save CartoCSS",M),ue.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти CartoCSS"})}finally{y.value=!1}}}return(M,R)=>(e.openBlock(),e.createElementBlock("div",S0,[e.createElementVNode("div",L0,[e.createElementVNode("div",A0,[e.createElementVNode("div",T0,[e.createElementVNode("div",M0,[e.createElementVNode("button",{type:"button",onClick:R[0]||(R[0]=I=>e.unref(n).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"},[...R[3]||(R[3]=[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",F0,[e.createElementVNode("div",D0,e.toDisplayString(s.value.name),1),T.value?(e.openBlock(),e.createElementBlock("div",I0,e.toDisplayString(T.value),1)):e.createCommentVNode("",!0)])]),e.createVNode(fr,{"entity-id":i.value,"entity-info":s.value,"form-endpoint":I=>`/api/form/gis.cartocss.table/${I}`,"save-endpoint":I=>`/api/gis-css/${I}`,"entity-label":"CartoCSS","save-method":"post",onSaved:j},null,8,["entity-id","entity-info","form-endpoint","save-endpoint"])])]),e.createElementVNode("div",j0,[e.createElementVNode("div",z0,[e.createVNode(Ot,null,{default:e.withCtx(()=>[e.createElementVNode("div",O0,[e.createVNode(Bt)]),e.createElementVNode("div",R0,[e.createVNode(et),E.value?(e.openBlock(),e.createBlock(et,{key:0,targetCenter:E.value,targetLabel:"Центр даних",targetAriaLabel:"Перейти до центру даних"},null,8,["targetCenter"])):e.createCommentVNode("",!0)]),k.value?(e.openBlock(),e.createBlock(v0,{key:0,"layer-id":h.value,"tile-url":k.value,active:g.value,title:s.value.name,owner:i.value},null,8,["layer-id","tile-url","active","title","owner"])):e.createCommentVNode("",!0)]),_:1})])])]),f.value&&!f.value.source_path?(e.openBlock(),e.createElementBlock("div",P0,[e.createElementVNode("div",U0,[e.createElementVNode("div",q0,[e.createElementVNode("div",H0,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,I=>e.createElementVNode("button",{key:I.key,type:"button",role:"tab","aria-selected":a.value===I.key,class:e.normalizeClass(["whitespace-nowrap 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",a.value===I.key?"bg-white shadow-sm text-gray-700":""]),onClick:q=>a.value=I.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(I.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Y0,e.toDisplayString(I.label),1)],10,W0)),64))])]),e.createElementVNode("div",Z0,[c.value?(e.openBlock(),e.createElementBlock("div",G0," Завантаження стилю… ")):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[a.value==="css"?(e.openBlock(),e.createBlock(b0,{key:0,modelValue:p.value,"onUpdate:modelValue":R[1]||(R[1]=I=>p.value=I),class:"flex-1 min-h-0",onSave:S},null,8,["modelValue"])):(e.openBlock(),e.createBlock($0,{key:1,modelValue:w.value,"onUpdate:modelValue":R[2]||(R[2]=I=>w.value=I),class:"flex-1 min-h-0 flex flex-col",onSave:S},null,8,["modelValue"]))],64))])])])):e.createCommentVNode("",!0)]))}}),Q0={class:"w-full mb-6"},eg={class:"flex items-center w-full h-10 max-w-md p-1 bg-white border border-gray-200 rounded-md"},tg=["onClick"],ng=e.defineComponent({__name:"MapSettingsTabs",props:{tabs:{},activeTab:{}},emits:["update:activeTab"],setup(t,{emit:n}){const o=n,l=r=>{o("update:activeTab",r)};return(r,a)=>(e.openBlock(),e.createElementBlock("div",Q0,[e.createElementVNode("div",eg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tabs,i=>(e.openBlock(),e.createElementBlock("button",{key:i.id,onClick:s=>l(i.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 transition-all",i.id===t.activeTab?"bg-blue-50 text-blue-700":"text-gray-600 hover:bg-gray-50"])},e.toDisplayString(i.name),11,tg))),128))])]))}}),og={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},rg=e.defineComponent({__name:"GeneralSettings",props:{schema:{},modelValue:{},loading:{type:Boolean},form:{}},emits:["update:modelValue","update:form"],setup(t,{emit:n}){const o=e.defineAsyncComponent(()=>import("@opengis/form")),l=t,r=n,a=e.computed({get:()=>l.modelValue,set:s=>r("update:modelValue",s)}),i=e.computed({get:()=>l.form,set:s=>r("update:form",s)});return(s,u)=>(e.openBlock(),e.createElementBlock("section",og,[u[2]||(u[2]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"}," Основна інформація ",-1)),t.loading?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(o),{key:0,schema:t.schema,values:a.value,"onUpdate:values":u[0]||(u[0]=p=>a.value=p),form:i.value,"onUpdate:form":u[1]||(u[1]=p=>i.value=p)},null,8,["schema","values","form"]))]))}}),lg={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},ag=e.defineComponent({__name:"LayerSettings",props:{layerIDs:{},layerNames:{},options:{}},emits:["update:layerIDs","update:layerNames"],setup(t,{emit:n}){const o=t,l=n,r=e.computed({get:()=>o.layerIDs,set:a=>l("update:layerIDs",a)});return e.computed({get:()=>o.layerNames,set:a=>l("update:layerNames",a)}),(a,i)=>(e.openBlock(),e.createElementBlock("section",lg,[i[1]||(i[1]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"},"Шари",-1)),i[2]||(i[2]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Доступні шари",-1)),e.createVNode(e.unref(An.VsInputArraySelect),{options:t.options,modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=s=>r.value=s),placeholder:"Шари"},null,8,["options","modelValue"])]))}}),ig={class:"mapLayer-info__inner"},sg={class:"mapLayer-info__item-label"},wn=ae(e.defineComponent({__name:"MapLayerInfoPopover",props:{items:{}},setup(t,{expose:n}){const o=t,l=e.reactive({open:!1,top:0,left:0,transform:"translateX(-50%)"}),r=e.ref(null),a=e.ref(null);let i=null;const s=e.computed(()=>l.open?{position:"absolute",width:"auto",maxWidth:`${Math.min(300,window.innerWidth-24)}px`,top:`${l.top}px`,left:`${l.left}px`,transform:l.transform,display:"block"}:{display:"none"});function u(g){if(l.open){y();return}const h=g.currentTarget,f=h==null?void 0:h.closest(".mapLayer-info");if(!f){y();return}r.value=f,l.open=!0,e.nextTick(()=>{p(),d(),requestAnimationFrame(()=>{p()})})}function p(){if(!l.open||!r.value||!a.value)return;const g=r.value.getBoundingClientRect(),h=12,f=window.scrollX+h,k=window.scrollX+window.innerWidth-h,E=window.scrollY+h,T=window.scrollY+window.innerHeight-h,j=a.value.offsetWidth||Math.min(300,window.innerWidth-24),B=a.value.offsetHeight||0;let V=g.left+window.scrollX+(g.width-j)/2;V<f&&(V=f),V+j>k&&(V=Math.max(f,k-j)),l.left=V;let v=g.bottom+window.scrollY+h;v+B>T&&(v=g.top+window.scrollY-B-h,v<E&&(v=Math.max(E,T-B))),v<E&&(v=E),v+B>T&&(v=Math.max(E,T-B)),l.top=v,l.transform="none"}function w(g){var f,k;if(!l.open)return;const h=g.target;(f=r.value)!=null&&f.contains(h)||(k=a.value)!=null&&k.contains(h)||y()}function c(g){g.key==="Escape"&&y()}function y(){m(),l.open=!1,r.value=null,a.value=null}function d(){m(),a.value&&(i=new ResizeObserver(()=>{p()}),i.observe(a.value))}function m(){i&&(i.disconnect(),i=null)}return e.onMounted(()=>{document.addEventListener("click",w,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",p,!0),window.addEventListener("resize",p)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",w,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p),m()}),e.watch(()=>o.items,()=>{l.open&&e.nextTick(()=>p())},{deep:!0}),n({close:y}),(g,h)=>(e.openBlock(),e.createElementBlock("div",{class:"mapLayer-info",ref_key:"anchorEl",ref:r},[e.createElementVNode("a",{class:"mapLayer-info__trigger",href:"#",onClick:e.withModifiers(u,["prevent","stop"])},[...h[1]||(h[1]=[e.createStaticVNode('<div class="mapLayer-info__icon" data-v-cc1cc7bf><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" data-v-cc1cc7bf><circle cx="12" cy="12" r="10" data-v-cc1cc7bf></circle><line x1="12" y1="16" x2="12" y2="12" data-v-cc1cc7bf></line><line x1="12" y1="8" x2="12.01" y2="8" data-v-cc1cc7bf></line></svg></div>',1)])]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[l.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vst-popover__content inline-block z-[81] py-3 px-4 bg-white text-sm text-gray-500 rounded-md shadow-lg bottom mapLayer-info__popover",style:e.normalizeStyle(s.value),ref_key:"popoverEl",ref:a,onClick:h[0]||(h[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ig,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,f=>(e.openBlock(),e.createElementBlock("div",{key:f.label,class:"mapLayer-info__item"},[e.createElementVNode("div",sg,e.toDisplayString(f.label),1),e.createElementVNode("div",{class:e.normalizeClass(["mapLayer-info__item-value",{"mapLayer-info__item-value--break-all":f.breakLine}])},e.toDisplayString(f.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-cc1cc7bf"]]),cg={key:0,class:"map-info__title"},dg={class:"map-info__actions"},ug={key:0,class:"map-info__menu"},pg=["href"],mg=["innerHTML"],gr=ae(e.defineComponent({__name:"MapInfoWidget",props:{title:{},content:{},links:{},mapName:{},mapDescription:{}},setup(t){const n=t,o=e.ref(null),l=e.ref(!1),r=e.ref(null),a=e.ref(null),i=e.ref({top:0,left:0});be.useRouter();const s=e.ref(!0),u=e.ref(!1),p=e.computed(()=>Array.isArray(n.links)?n.links.filter(T=>(T==null?void 0:T.name)&&(T==null?void 0:T.slug)):[]),w=e.computed(()=>({top:`${i.value.top}px`,left:`${i.value.left}px`})),c=e.computed(()=>{const T=[];return n.mapName&&T.push({label:"Назва карти",value:n.mapName}),n.mapDescription&&T.push({label:"Опис",value:n.mapDescription,breakLine:!0}),T});function y(T){return T==null?!1:T.replace(/<[^>]*>/g,"").trim().length>0}const d=e.computed(()=>y(n.content)),m=e.computed(()=>d.value);function g(T){T.stopPropagation(),l.value=!l.value}function h(){const T=r.value;if(!T||!a.value)return;const j=T.getBoundingClientRect(),B=12,V=8,v=window.scrollX+B,S=window.scrollX+window.innerWidth-B,M=window.scrollY+B,R=window.scrollY+window.innerHeight-B,I=a.value.offsetWidth||160,q=a.value.offsetHeight||0;let z=j.bottom+window.scrollY+V,H=j.left+window.scrollX;H+I>S&&(H=j.right+window.scrollX-I,H<v&&(H=v)),H<v&&(H=v),z+q>R&&(z=j.top+window.scrollY-q-V,z<M&&(z=Math.max(M,R-q))),z<M&&(z=M),z+q>R&&(z=Math.max(M,R-q)),i.value={top:z,left:H}}function f(T){if(!l.value)return;const j=o.value;if(!j){l.value=!1;return}j.contains(T.target)||(l.value=!1)}e.watch(l,T=>{T?e.nextTick(()=>{h(),requestAnimationFrame(()=>{h()}),window.addEventListener("scroll",h,!0),window.addEventListener("resize",h)}):(window.removeEventListener("scroll",h,!0),window.removeEventListener("resize",h))});function k(){s.value=!s.value}function E(){u.value=window.innerWidth<=768}return e.onMounted(()=>{document.addEventListener("click",f,!0),E(),m.value?u.value&&(s.value=!1):s.value=!1,window.addEventListener("resize",E)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",f,!0),window.removeEventListener("scroll",h,!0),window.removeEventListener("resize",h),window.removeEventListener("resize",E)}),(T,j)=>(e.openBlock(),e.createElementBlock("div",{class:"map-info legend-widget flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget",ref_key:"container",ref:o},[t.title||p.value.length||c.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"map-info__header",style:e.normalizeStyle([d.value?"":"padding-bottom: 20px"])},[t.title?(e.openBlock(),e.createElementBlock("h2",cg,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",dg,[p.value.length?(e.openBlock(),e.createElementBlock("div",ug,[e.createElementVNode("button",{ref_key:"menuButton",ref:r,type:"button",class:"map-info__menu-button",onClick:g,"aria-label":"Показати посилання"},[...j[1]||(j[1]=[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)])],512),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[l.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuPopover",ref:a,class:"vsTailwind vs-popover__content right map-info__popover",style:e.normalizeStyle(w.value),onClick:j[0]||(j[0]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,B=>(e.openBlock(),e.createElementBlock("a",{key:B.slug||B.name,href:`/maps/${B.slug}`,class:"map-info__popover-link"},e.toDisplayString(B.name),9,pg))),128))],4)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0),c.value.length?(e.openBlock(),e.createBlock(wn,{key:1,items:c.value},null,8,["items"])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"map-info__toggle-button",onClick:k,"aria-label":"Розгорнути/згорнути"},[(e.openBlock(),e.createElementBlock("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass({"map-info__toggle-icon--rotated":s.value})},[...j[2]||(j[2]=[e.createElementVNode("path",{d:"M6 9L12 15L18 9",stroke:"#000000","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))])):e.createCommentVNode("",!0)])],4)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["map-info__content",{"map-info__content--collapsed":!s.value}]),innerHTML:t.content},null,10,mg)):e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-813e24fb"]]),fg={class:"opacity-popover__content"},gg={class:"opacity-popover__value"},yr=ae(e.defineComponent({__name:"LayerOpacityPopover",props:{layerId:{}},setup(t){const n=t,o=e.ref(!1),l=e.ref(100),r=e.ref(null),a=e.ref(null),i=e.reactive({top:0,left:0});function s(){var j;const c=(j=a.value)==null?void 0:j.querySelector("button");if(!c||!r.value)return;const y=c.getBoundingClientRect(),d=260,m=r.value.offsetHeight||60,g=8,h=12,f=window.innerWidth,k=window.innerHeight;let E=y.bottom+g+window.scrollY,T=y.left+window.scrollX;T+d>f-h&&(T=f-d-h+window.scrollX),T<h+window.scrollX&&(T=h+window.scrollX),E+m>k+window.scrollY-h&&(E=y.top-m-g+window.scrollY,E<h+window.scrollY&&(E=k-m-h+window.scrollY)),i.top=E,i.left=T}function u(){o.value=!o.value,o.value&&e.nextTick(s)}function p(){var m;const c=fe(n.layerId),y=(l.value??100)/100;if(c!=null&&c.setOpacity){c.setOpacity(y);return}const d=(m=c==null?void 0:c.getLayer)==null?void 0:m.call(c);if(d)switch(d.type){case"raster":c.updatePaint({"raster-opacity":y});break;case"fill":c.updatePaint({"fill-opacity":y});break;case"line":c.updatePaint({"line-opacity":y});break;case"circle":c.updatePaint({"circle-opacity":y});break;case"symbol":c.updatePaint({"icon-opacity":y});break}}function w(c){var d,m;if(!o.value)return;const y=c.target;(d=r.value)!=null&&d.contains(y)||(m=a.value)!=null&&m.contains(y)||(o.value=!1)}return e.onMounted(()=>{document.addEventListener("click",w),window.addEventListener("scroll",s,!0),window.addEventListener("resize",s)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",w),window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s)}),(c,y)=>(e.openBlock(),e.createElementBlock("div",{class:"opacity-wrapper",ref_key:"wrapper",ref:a},[e.renderSlot(c.$slots,"trigger",{toggle:u,opacity:l.value},()=>[e.createElementVNode("button",{type:"button",class:"opacity-btn",onClick:e.withModifiers(u,["stop"])},e.toDisplayString(l.value)+"% ",1)],!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[o.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popoverEl",ref:r,class:"opacity-popover",style:e.normalizeStyle({top:i.top+"px",left:i.left+"px"})},[e.createElementVNode("div",fg,[y[1]||(y[1]=e.createElementVNode("label",{class:"opacity-popover__label"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":y[0]||(y[0]=d=>l.value=d),class:"opacity-popover__range",onInput:p},null,544),[[e.vModelText,l.value]]),e.createElementVNode("span",gg,e.toDisplayString(l.value)+"%",1)])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-b278347a"]]),yg={class:"layers-panel"},hg={class:"layers-panel__header"},xg={class:"layers-panel__heading"},bg={class:"layers-panel__heading-title"},kg={class:"layers-panel__title"},wg={class:"layers-panel__count"},_g={key:0,class:"layers-panel__description"},Eg={class:"layers-panel__header-actions"},Ng={class:"layers-panel__bulk-actions"},Bg={class:"layers-panel__header-controls"},Vg={class:"layers-panel__label"},Cg={class:"layers-panel__label-row"},$g=["checked","onChange"],vg={class:"layers-panel__title-block"},Sg={class:"layers-panel__name"},Lg={class:"layers-panel__meta text-slate-500"},Ag=["onClick"],Tg={class:"inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700"},Mg={key:0,class:"layers-panel__actions"},Fg=["innerHTML","onClick"],hr="map:temporary-layer-request",Dg="#94a3b8",xr=ae(e.defineComponent({__name:"MapDataLayersWidget",props:{layers:{},config:{}},emits:["action"],setup(t,{emit:n}){const o=t,l=e.ref({}),r=e.ref(!0),a=e.ref(!1),i=Le(),{temporaryLayers:s,activateTemporaryLayer:u,deactivateTemporaryLayer:p,clearTemporaryLayers:w}=kn(i.map),c=e.computed(()=>{const b=o.layers.map(D=>({...D,isTemporary:!1,owner:null,visible:D.visible!==!1})),$=s.value.map(D=>({id:D.id,name:D.title,visible:l.value[D.id]??!0,actions:[],filters:null,isTemporary:!0,owner:D.owner??null,handle:D.handle??null,card:D.card??null,popup:D.popup??null,style:D.style??null,group_name:null,count:null,holder:null}));return[...b,...$]}),y=e.computed(()=>c.value.length),d=e.computed(()=>c.value.filter(b=>T(b.id)).length),m=e.computed(()=>y.value>0&&d.value===y.value),g=e.computed(()=>s.value.length>0),h=n;function f(){var b;for(let $=0;$<o.layers.length;$++){const D=o.layers[$],A=k(D);if(!A)continue;const N=fe(D.id,A),Y=D.visible!==!1;l.value[D.id]=Y,Y||(b=N==null?void 0:N.setVisible)==null||b.call(N,!1)}}function k(b){const $=b.id;if(!$)return null;const D=(b.service||b.service_type||b.type||"").toString().toLowerCase(),A=b.service_url||b.url||null;if(!!A&&(D==="tms"||D==="wmts"||D==="wms"||D==="ogc")){const Z=E(A);return Z?{sourceId:$,source:{type:"raster",tiles:[Z],tileSize:b.tileSize||256,minzoom:b.minzoom??0,maxzoom:b.maxzoom??22,scheme:b.scheme||"xyz"},layer:{id:$,type:"raster",source:$},card:b.card,popup:b.popup}:null}const Y=`${location.origin}/api/vtile/${$}/ua/{z}/{x}/{y}.vmt`;return{sourceId:$,source:{type:"vector",tiles:[Y],minZoom:4,maxZoom:14},layer:{id:$,source:$,"source-layer":$,style:b.style},card:b.card,popup:b.popup}}function E(b){return b?/^https?:\/\//i.test(b)?b:b.startsWith("//")?`${window.location.protocol}${b}`:b.startsWith("/")?`${location.origin}${b}`:`${location.origin}/${b}`:null}function T(b){const $=l.value[b];return $??!0}function j(b){var A,N;if(!(b!=null&&b.id))return null;const $=(A=b.title)==null?void 0:A.trim(),D=(N=b.url)==null?void 0:N.trim();return!$||!D?null:{id:b.id,title:$,url:D,tileSize:b.tileSize,minzoom:b.minzoom,maxzoom:b.maxzoom,opacity:b.opacity}}function B(b){if(!b)return;const $=b.owner;if(b.action==="clear"){const A=s.value.filter(N=>!$||N.owner===$).map(N=>N.id);w($),A.forEach(N=>{N in l.value&&delete l.value[N]});return}const D=j(b.spec);if(D){if(b.action==="activate"){u(D,b.context||{},$),l.value[D.id]=!0;return}b.action==="deactivate"&&(p(D.id,$),delete l.value[D.id])}}function V(b){b instanceof CustomEvent&&B(b.detail)}e.watch(()=>s.value.map(b=>b.id),(b,$)=>{const D=new Set($||[]),A=new Set(b);b.forEach(N=>{N in l.value||(l.value[N]=!0)}),D.forEach(N=>{A.has(N)||delete l.value[N]})},{immediate:!0});function v(b,$){var A,N,Y;if(b.isTemporary){if(!$){p(b.id,b.owner||void 0),delete l.value[b.id];return}l.value[b.id]=!0;const Z=b.handle||((A=s.value.find(X=>X.id===b.id))==null?void 0:A.handle);(N=Z==null?void 0:Z.setVisible)==null||N.call(Z,!0);return}l.value[b.id]=$;const D=fe(b.id);(Y=D==null?void 0:D.setVisible)==null||Y.call(D,$)}function S(b,$){const D=$.target;v(b,D.checked)}function M(b){c.value.forEach($=>v($,b))}function R(){M(!m.value)}function I(b){return b.isTemporary?[{label:"Назва",value:b.name??null},{label:"Тип",value:"Тимчасовий шар"},b.owner?{label:"Джерело",value:b.owner}:null].filter(Boolean):[{label:"Назва",value:b.name??null},{label:"Назва групи",value:b.group_name||null},{label:"Кількість",value:b.count??null},{label:"Балансоутримувач",value:b.holder??null}]}function q(b){var $,D,A,N,Y,Z;if(!b)return null;if(typeof b=="string")return b.trim()||null;if(Array.isArray(b)){for(const X of b){const K=q(X);if(K)return K}return null}if(typeof b=="object"){const X=b;return q(X.color??X.fill??X.stroke??X.lineColor??X.fillColor??(($=X.paint)==null?void 0:$["fill-color"])??((D=X.paint)==null?void 0:D["line-color"])??((A=X.paint)==null?void 0:A["circle-color"])??((N=X.paint)==null?void 0:N.color)??((Y=X.paint)==null?void 0:Y.lineColor)??((Z=X.paint)==null?void 0:Z.fillColor)??X.paint??X.value)}return null}function z(b){const $=Array.isArray(b==null?void 0:b.legend)?b.legend[0]:b==null?void 0:b.legend,D=q($);return D||q(b==null?void 0:b.style)||Dg}function H(b){return{"--layers-panel-checkbox-color":z(b)}}function L(){if(!s.value.length)return;const b=s.value.map($=>$.id);w(),b.forEach($=>delete l.value[$])}function F(){r.value=!r.value}function x(){a.value=window.innerWidth<=768}return e.onMounted(()=>{f(),window.addEventListener(hr,V),x(),a.value&&(r.value=!1),window.addEventListener("resize",x)}),e.onBeforeUnmount(()=>{window.removeEventListener(hr,V),window.removeEventListener("resize",x)}),(b,$)=>{var D,A;return e.openBlock(),e.createElementBlock("div",yg,[e.createElementVNode("div",hg,[e.createElementVNode("div",xg,[e.createElementVNode("div",bg,[e.createElementVNode("h2",kg,e.toDisplayString(((D=t.config)==null?void 0:D.title)||"Шари"),1),e.createElementVNode("span",wg," ("+e.toDisplayString(d.value)+" з "+e.toDisplayString(y.value)+") ",1)]),(A=t.config)!=null&&A.description?(e.openBlock(),e.createElementBlock("div",_g,[e.createElementVNode("p",null,e.toDisplayString(t.config.description),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Eg,[e.createElementVNode("div",Ng,[c.value.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"layers-panel__header-link",onClick:R},e.toDisplayString(m.value?"Вимкнути всі":"Увімкнути всі"),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Bg,[c.value.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"layers-panel__toggle-button",onClick:F,"aria-label":"Розгорнути/згорнути"},[(e.openBlock(),e.createElementBlock("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass({"layers-panel__toggle-icon--rotated":r.value})},[...$[0]||($[0]=[e.createElementVNode("path",{d:"M6 9L12 15L18 9",stroke:"#000000","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))])):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"layers-panel__clear",onClick:L}," Очистити тимчасові шари ")):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",{class:e.normalizeClass(["layers-panel__content",{"layers-panel__content--collapsed":!r.value}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,N=>{var Y;return e.openBlock(),e.createElementBlock("div",{key:N.id,class:"layers-panel__item"},[e.createElementVNode("label",Vg,[e.createElementVNode("div",Cg,[e.createElementVNode("input",{type:"checkbox",class:"layers-panel__checkbox",checked:T(N.id),style:e.normalizeStyle(H(N)),onChange:Z=>S(N,Z)},null,44,$g),e.createElementVNode("div",vg,[e.createElementVNode("span",Sg,e.toDisplayString(N.name),1)]),e.createElementVNode("div",Lg,[T(N.id)&&!N.isTemporary?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(yr,{"layer-id":N.id,class:"flex"},{trigger:e.withCtx(({toggle:Z})=>[e.createElementVNode("button",{class:"inline-flex items-center justify-center p-0 text-inherit no-underline cursor-pointer",onClick:e.withModifiers(Z,["prevent","stop"])},[e.createElementVNode("div",Tg,[e.createVNode(e.unref(qr))])],8,Ag)]),_:1},8,["layer-id"]),e.createVNode(Rt,{count:Array.isArray(N.filters)?N.filters.length:0,layer:N},null,8,["count","layer"])],64)):e.createCommentVNode("",!0),e.createVNode(wn,{items:I(N)},null,8,["items"])])])]),(Y=N.actions)!=null&&Y.length?(e.openBlock(),e.createElementBlock("div",Mg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.actions,Z=>(e.openBlock(),e.createElementBlock("button",{key:Z.widget||Z.id||Z.icon,type:"button",class:"layers-panel__action",innerHTML:Z.icon,onClick:X=>h("action",{layerId:Z.widget})},null,8,Fg))),128))])):e.createCommentVNode("",!0)])}),128))],2)])}}}),[["__scopeId","data-v-496b3875"]]),Ig={class:"catalog-tab__search relative mt-[10px]"},jg={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:"absolute top-[40%] left-[8px] w-[16px] h-[16px]",style:{transform:"translate(0, -50%)"}},zg={class:"catalog-tab__list flex-1 overflow-y-auto mt-2"},Og={key:0,class:"text-sm text-gray-400 text-center mt-6"},Rg=["onClick"],Pg={class:"flex items-center gap-x-3"},Ug={class:"max-w-[260px] text-[14px] text-[#4b5563]"},qg={class:"text-xs opacity-60 text-[#4b5563]"},Hg={class:"flex items-center cursor-pointer gap-2 flex-1"},Wg=["checked","onChange"],Yg={class:"text-[13px] text-gray-600 max-w-[260px]"},Zg={class:"flex items-center gap-2"},Gg=ae(e.defineComponent({__name:"LayersCatalogTab",props:{catalog:{},selected:{},search:{}},emits:["toggle-layer","update:search","open-filter"],setup(t,{emit:n}){const o=t,l=n,r=e.reactive({}),a=e.ref(null),i=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0,layerId:null}),s=e.computed(()=>{const g=o.search.trim().toLowerCase();return o.catalog.groups.map(h=>{const f=g?h.layers.filter(k=>(typeof k.name=="string"?k.name:"").toLowerCase().includes(g)):h.layers;return{...h,layers:f}}).filter(h=>h.layers.length>0)}),u=e.computed({get:()=>o.search,set:g=>l("update:search",g)});function p(g){r[g]=!r[g],Bp()}function w(g){return!!r[g]}function c(g,h){if(o.selected.includes(h)){i.visible=!1,i.layerId=null;return}const f=g.currentTarget;if(!f)return;const k=f.getBoundingClientRect(),E=typeof window<"u"?window.scrollX:0,T=typeof window<"u"?window.scrollY:0;i.left=k.left+k.width/2+E,i.top=k.bottom+8+T,i.layerId=h,i.visible=!0}function y(){i.visible=!1,i.layerId=null}function d(g){return[{label:"Назва",value:m(g.name)},{label:"Сервіс",value:m(g.service)},{label:"Посилання",value:m(g.url),breakLine:!0}]}function m(g){return g==null||g===""?null:String(g)}return e.watch(()=>o.selected?o.selected.slice():[],g=>{!i.visible||!i.layerId||g.includes(i.layerId)&&(i.visible=!1,i.layerId=null)}),(g,h)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"catalogRef",ref:a,class:"catalog-tab"},[e.createElementVNode("div",Ig,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[0]||(h[0]=f=>u.value=f),type:"text",placeholder:"Введіть назву шару...",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"},null,512),[[e.vModelText,u.value]]),(e.openBlock(),e.createElementBlock("svg",jg,[...h[1]||(h[1]=[e.createElementVNode("path",{d:"M11 19C15.4183 19 19 15.4183 19 11C19 6.5817 15.4183 3 11 3C6.5817 3 3 6.5817 3 11C3 15.4183 6.5817 19 11 19Z",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),e.createElementVNode("path",{d:"M21 21L16.7 16.7",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])]))]),e.createElementVNode("div",zg,[s.value.length===0?(e.openBlock(),e.createElementBlock("div",Og," Нічого не знайдено ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,f=>(e.openBlock(),e.createElementBlock("div",{key:f.id,class:"mt-2"},[e.createElementVNode("div",{class:"hover:bg-gray-100 cursor-pointer p-[8px] rounded-lg flex justify-between items-center",onClick:k=>p(f.id)},[e.createElementVNode("div",Pg,[(e.openBlock(),e.createElementBlock("svg",{width:"6",height:"10",viewBox:"0 0 6 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass(["transition-transform",w(f.id)?"rotate-90":""])},[...h[2]||(h[2]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2)),e.createElementVNode("div",Ug,e.toDisplayString(f.name),1)]),e.createElementVNode("div",qg,e.toDisplayString(f.layers.length),1)],8,Rg),e.createVNode(e.Transition,{name:"out-in"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.layers,k=>(e.openBlock(),e.createElementBlock("div",{key:k.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between ml-[20px] py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Hg,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:t.selected.includes(k.id),onChange:E=>g.$emit("toggle-layer",k.id,E.target.checked,k)},null,40,Wg),h[3]||(h[3]=e.createElementVNode("div",{class:"w-4 h-4 rounded border border-blue-800 flex items-center justify-center peer-checked:bg-blue-600 peer-checked:border-blue-600"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none"},[e.createElementVNode("path",{d:"M10.6663 1L4.24967 7.41667L1.33301 4.5",stroke:"#fff","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),e.createElementVNode("span",Yg,e.toDisplayString(k.name),1)]),e.createElementVNode("div",Zg,[Array.isArray(k.filters)&&k.filters.length?(e.openBlock(),e.createBlock(Rt,{key:0,count:k.filters.length,layer:k,disabled:!t.selected.includes(k.id),onMouseenter:E=>c(E,k.id),onMouseleave:y,onFocus:E=>c(E,k.id),onBlur:y},null,8,["count","layer","disabled","onMouseenter","onFocus"])):e.createCommentVNode("",!0),e.createVNode(wn,{items:d(k)},null,8,["items"])])]))),128))],512),[[e.vShow,w(f.id)]])]),_:2},1024)]))),128))]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${i.top}px`,left:`${i.left}px`})},e.toDisplayString(i.text),5)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-f68d8bda"]]),Kg={class:"flex flex-col gap-0"},Xg={class:"text-xs text-slate-600 font-semibold"},Jg=e.defineComponent({__name:"MapLayerPopover",props:{items:{}},setup(t,{expose:n}){const o=t,l=e.reactive({open:!1,top:0,left:0,transform:"translateX(-50%)"}),r=e.ref(null),a=e.ref(null);let i=null;const s=e.computed(()=>{if(!l.open)return{display:"none"};const g=Math.min(460,window.innerWidth-24);return{position:"absolute",width:`${g}px`,maxWidth:`${g}px`,top:`${l.top}px`,left:`${l.left}px`,transform:l.transform,display:"block"}});function u(){if(l.open){y();return}if(!r.value){y();return}l.open=!0,e.nextTick(()=>{p(),d(),requestAnimationFrame(()=>{p()})})}function p(){if(!l.open||!r.value||!a.value)return;const g=r.value.getBoundingClientRect(),h=12,f=window.scrollX+h,k=window.scrollX+window.innerWidth-h,E=window.scrollY+h,T=window.scrollY+window.innerHeight-h,j=a.value.offsetWidth||Math.min(460,window.innerWidth-24),B=a.value.offsetHeight||0;let V=g.left+window.scrollX+(g.width-j)/2;V<f&&(V=f),V+j>k&&(V=Math.max(f,k-j)),l.left=V;let v=g.bottom+window.scrollY+h;v+B>T&&(v=g.top+window.scrollY-B-h,v<E&&(v=Math.max(E,T-B))),v<E&&(v=E),v+B>T&&(v=Math.max(E,T-B)),l.top=v,l.transform="none"}function w(g){var f,k;if(!l.open)return;const h=g.target;(f=r.value)!=null&&f.contains(h)||(k=a.value)!=null&&k.contains(h)||y()}function c(g){g.key==="Escape"&&y()}function y(){m(),l.open=!1,r.value=null,a.value=null}function d(){m(),a.value&&(i=new ResizeObserver(()=>{p()}),i.observe(a.value))}function m(){i&&(i.disconnect(),i=null)}return e.onMounted(()=>{document.addEventListener("click",w,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",p,!0),window.addEventListener("resize",p)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",w,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p),m()}),e.watch(()=>o.items,()=>{l.open&&e.nextTick(()=>p())},{deep:!0}),n({close:y}),(g,h)=>(e.openBlock(),e.createElementBlock("div",{class:"inline-flex relative",ref_key:"anchorEl",ref:r},[e.createElementVNode("div",{onClick:e.withModifiers(u,["prevent","stop"])},[e.renderSlot(g.$slots,"default")]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[l.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vst-popover__content inline-block z-[103] py-3 px-4 bg-white text-sm text-gray-500 rounded-md shadow-lg bottom absolute min-w-[200px]",style:e.normalizeStyle(s.value),ref_key:"popoverEl",ref:a,onClick:h[0]||(h[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Kg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,f=>(e.openBlock(),e.createElementBlock("div",{key:f.label,class:"grid grid-cols-[120px_1fr] gap-3 items-start py-1.5 border-b border-slate-200 last:border-b-0"},[e.createElementVNode("div",Xg,e.toDisplayString(f.label),1),e.createElementVNode("div",{class:e.normalizeClass(["text-sm text-gray-800",{"break-all":f.breakLine}])},e.toDisplayString(f.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),Qg={class:"selected-tab"},ey={class:"selected-tab__actions"},ty={key:0,class:"selected-tab__scroll"},ny=["onDragstart","onDragover","onDrop"],oy={class:"selected-tab__item-header"},ry={class:"selected-tab__item-info"},ly=["checked","onChange"],ay={class:"selected-tab__item-name"},iy={class:"selected-tab__item-controls"},sy=["onClick"],cy={class:"selected-tab__menu-inner"},dy=ae(e.defineComponent({__name:"LayersSelectedTab",props:{catalog:{},selected:{}},emits:["select-layer","reorder","remove","toggle-layer"],setup(t,{emit:n}){const o=t,l=n,r=e.reactive({}),a=e.ref(null),i=e.ref(null),s=new Map,u=e.reactive({top:0,left:0}),p=e.ref(null),w=e.reactive({top:0,left:0}),c=e.ref(null),y=new Map,d=e.reactive({});function m(x){var b;for(const $ of((b=o.catalog)==null?void 0:b.groups)??[]){const D=$.layers.find(A=>A.id===x);if(D)return D}return null}e.watch(()=>o.selected,x=>{x.forEach(b=>{r[b]==null&&(r[b]=100)})},{immediate:!0});function g(){if(!a.value)return;const x=s.get(a.value);if(!x)return;const b=x.getBoundingClientRect();u.top=b.bottom+8+window.scrollY,u.left=b.left+window.scrollX}e.watch(()=>o.selected,x=>{x.forEach(b=>{d[b]==null&&(d[b]=!0)})},{immediate:!0});function h(x,b){d[x]=b;const $=fe(x);$&&$.setVisible(b)}function f(x,b){b?y.set(x,b):y.delete(x)}function k(x){p.value=p.value===x?null:x,p.value&&e.nextTick(()=>{E(x),requestAnimationFrame(()=>{E(x)})})}function E(x){const b=y.get(x);if(!b||!c.value)return;const $=b.getBoundingClientRect(),D=12,A=6,N=window.scrollX+D,Y=window.scrollX+window.innerWidth-D,Z=window.scrollY+D,X=window.scrollY+window.innerHeight-D,K=c.value.offsetWidth||190,ce=c.value.offsetHeight||0;let de=$.bottom+window.scrollY+A,U=$.left+window.scrollX;U+K>Y&&(U=$.right+window.scrollX-K,U<N&&(U=N)),U<N&&(U=N),de+ce>X&&(de=$.top+window.scrollY-ce-A,de<Z&&(de=Math.max(Z,X-ce))),de<Z&&(de=Z),de+ce>X&&(de=Math.max(Z,X-ce)),w.top=de,w.left=U}function T(x){const b=fe(x);b&&b.remove(),l("remove",x),p.value=null}function j(x){const b=x.target,$=a.value,D=p.value;if($){const A=i.value,N=s.get($);if(A&&A.contains(b)||N&&N.contains(b))return;a.value=null}if(D){const A=c.value,N=y.get(D);if(A&&A.contains(b)||N&&N.contains(b))return;p.value=null}}function B(){a.value&&g(),p.value&&E(p.value)}e.onMounted(()=>{document.addEventListener("click",j),window.addEventListener("resize",B),window.addEventListener("scroll",B,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",j),window.removeEventListener("resize",B),window.removeEventListener("scroll",B,!0)});const{map:V}=Le();function v(x){var A,N,Y;if(!x)return;const b=fe(x),$=m(x);if(!b&&!$)return;if(((A=$==null?void 0:$.extent)==null?void 0:A.length)===4&&((N=V.value)!=null&&N.fitBounds)){const Z=$.extent.map(X=>Number(X));if(Z.every(X=>Number.isFinite(X))){const[X,K,ce,de]=Z;V.value.fitBounds([[X,K],[ce,de]],{padding:40}),p.value=null;return}}(Y=b==null?void 0:b.getSource)!=null&&Y.call(b)&&(p.value=null)}const S=e.ref(null),M=e.ref(null);function R(x,b){S.value=b,M.value=b,x.dataTransfer&&(x.dataTransfer.effectAllowed="move",x.dataTransfer.setData("text/plain",String(b)))}function I(x){M.value=x}function q(x,b){if(x.preventDefault(),S.value===null||S.value===b){S.value=null,M.value=null;return}const $=[...o.selected],[D]=$.splice(S.value,1);$.splice(b,0,D),l("reorder",$),S.value=null,M.value=null}function z(){S.value=null,M.value=null}function H(x){return x==null||x===""?null:String(x)}function L(x,b){return!Array.isArray(x)||x.length===0?null:`${x.length} ${b}`}function F(x){var de,U,W,G,ne,le;const b=fe(x),$=m(x);if(!b&&!$)return[];const D=($==null?void 0:$.name)||((U=(de=b==null?void 0:b.opts)==null?void 0:de.layer)==null?void 0:U.name)||null,A=($==null?void 0:$.service)||((W=b==null?void 0:b.opts)==null?void 0:W.service)||null,N=(G=b==null?void 0:b.getSource)==null?void 0:G.call(b),Y=N&&"tiles"in N?(ne=N.tiles)==null?void 0:ne[0]:($==null?void 0:$.url)||null,Z=($==null?void 0:$.source_path)||null,X=(b==null?void 0:b.popup)||($==null?void 0:$.popup),K=(b==null?void 0:b.card)||($==null?void 0:$.card),ce=($==null?void 0:$.filters)||((le=b==null?void 0:b.opts)==null?void 0:le.filters);return[{label:"Назва",value:H(D)},{label:"Сервіс",value:H(A)},{label:"Посилання",value:H(Y),breakLine:!0},{label:"Джерело",value:H(Z),breakLine:!0},{label:"Popup",value:L(X,"полів")},{label:"Картка",value:L(K,"полів")},{label:"Фільтри",value:L(ce,"фільтрів")}]}return(x,b)=>(e.openBlock(),e.createElementBlock("div",Qg,[e.createElementVNode("div",ey,[e.createElementVNode("button",{class:"selected-tab__add",onClick:b[0]||(b[0]=$=>l("select-layer"))},[...b[3]||(b[3]=[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)])])]),t.selected.length?(e.openBlock(),e.createElementBlock("div",ty,[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,($,D)=>{var A;return e.openBlock(),e.createElementBlock("div",{key:$,class:e.normalizeClass(["selected-tab__item",{"selected-tab__item--dragging":S.value===D,"selected-tab__item--over":M.value===D}]),draggable:"true",onDragstart:N=>R(N,D),onDragover:e.withModifiers(N=>I(D),["prevent"]),onDrop:N=>q(N,D),onDragend:z},[e.createElementVNode("div",oy,[e.createElementVNode("div",ry,[b[4]||(b[4]=e.createElementVNode("span",{class:"selected-tab__item-handle"},"☰",-1)),e.createElementVNode("input",{type:"checkbox",class:"selected-tab__item-checkbox",checked:d[$]??!0,onChange:N=>h($,N.target.checked)},null,40,ly),e.createElementVNode("span",ay,e.toDisplayString(((A=m($))==null?void 0:A.name)||"Шар"),1)]),e.createElementVNode("div",iy,[e.createVNode(yr,{"layer-id":$},null,8,["layer-id"]),e.createElementVNode("button",{type:"button",class:"selected-tab__item-menu",ref_for:!0,ref:N=>f($,N),onClick:e.withModifiers(N=>k($),["stop"])},[...b[5]||(b[5]=[e.createElementVNode("svg",{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"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"5",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1"})],-1)])],8,sy)])])],42,ny)}),128))])])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[p.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuEl",ref:c,class:"selected-tab__menu",style:e.normalizeStyle({top:w.top+"px",left:w.left+"px"})},[e.createElementVNode("div",cy,[e.createElementVNode("button",{class:"selected-tab__menu-item",onClick:b[1]||(b[1]=$=>v(p.value))},[...b[6]||(b[6]=[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-zoom-in"},[e.createElementVNode("circle",{cx:"11",cy:"11",r:"8"}),e.createElementVNode("line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"}),e.createElementVNode("line",{x1:"11",x2:"11",y1:"8",y2:"14"}),e.createElementVNode("line",{x1:"8",x2:"14",y1:"11",y2:"11"})],-1),e.createTextVNode(" Збільшити до шару ",-1)])]),e.createVNode(Jg,{items:F(p.value)},{default:e.withCtx(()=>[...b[7]||(b[7]=[e.createElementVNode("button",{class:"selected-tab__menu-item"},[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-info"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"}),e.createElementVNode("path",{d:"M12 16v-4"}),e.createElementVNode("path",{d:"M12 8h.01"})]),e.createTextVNode(" Інформація про шар ")],-1)])]),_:1},8,["items"]),b[9]||(b[9]=e.createElementVNode("hr",null,null,-1)),e.createElementVNode("button",{class:"selected-tab__menu-item selected-tab__menu-item--danger",onClick:b[2]||(b[2]=$=>T(p.value))},[...b[8]||(b[8]=[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-trash2"},[e.createElementVNode("path",{d:"M3 6h18"}),e.createElementVNode("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),e.createElementVNode("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"}),e.createElementVNode("line",{x1:"10",x2:"10",y1:"11",y2:"17"}),e.createElementVNode("line",{x1:"14",x2:"14",y1:"11",y2:"17"})],-1),e.createTextVNode(" Видалити шар ",-1)])])])],4)):e.createCommentVNode("",!0)]))]))}}),[["__scopeId","data-v-39b6f281"]]),uy={class:"filter-tab"},py={key:0,class:"filter-tab__header"},my={class:"filter-tab__title"},fy={key:1,class:"filter-tab__content rounded-md"},gy={class:"filter-tab__scroll"},yy={key:2,class:"filter-tab__empty"},hy=ae(e.defineComponent({__name:"LayersFilterTab",props:{layer:{},value:{}},emits:["change"],setup(t,{emit:n}){const o=e.defineAsyncComponent(()=>import("@opengis/filter")),l=t,r=n,a=e.computed(()=>{var u;return((u=l.layer)==null?void 0:u.filters)??[]}),i=e.computed(()=>a.value.length>0);function s(u){r("change",u.data)}return(u,p)=>(e.openBlock(),e.createElementBlock("div",uy,[t.layer&&i.value?(e.openBlock(),e.createElementBlock("div",py,[e.createElementVNode("div",null,[e.createElementVNode("p",my,e.toDisplayString(t.layer.name),1)])])):e.createCommentVNode("",!0),t.layer&&i.value?(e.openBlock(),e.createElementBlock("div",fy,[e.createElementVNode("div",gy,[e.createVNode(e.unref(o),{view:"vertical",schema:a.value,value:t.value,limit:5,class:"rounded-md pb-0",onChange:p[0]||(p[0]=w=>s(w))},null,8,["schema","value"])])])):(e.openBlock(),e.createElementBlock("div",yy,[...p[1]||(p[1]=[e.createElementVNode("p",{class:"filter-tab__empty-title"},"Немає доступних фільтрів",-1),e.createElementVNode("p",{class:"filter-tab__empty-text"}," Оберіть шар із фільтрами у каталозі, щоб налаштувати відбір даних. ",-1)])]))]))}}),[["__scopeId","data-v-c6632fbd"]]),xy={class:"flex items-center justify-between mb-1"},by={class:"flex items-center gap-2"},ky={class:"text-lg font-semibold text-gray-800"},wy={key:0},_y={key:1,class:"block text-sm font-normal text-gray-500"},Ey={class:"flex items-center gap-2"},Ny={class:"flex mb-4 border-b border-gray-200"},By={class:"map-catalog-widget__body"},br=ae(e.defineComponent({__name:"MapCatalogWidget",setup(t){const n=be.useRoute(),o=be.useRouter();function l(){const L=n.query["catalog-tab"];return(Array.isArray(L)?L[0]:L)==="selected"?"selected":"catalog"}const r=e.ref(l()),a=e.ref({groups:[]}),i=e.ref([]),s=e.ref(""),{map:u}=Le(),p=e.reactive({}),w=e.ref(null),c=e.ref(!0),y=e.ref(!1);function d(L){return a.value.groups.map(F=>F.layers.find(x=>x.id===L)).find(Boolean)||null}function m(){const L=w.value;if(!L)return;delete p[L];const F=fe(L);F!=null&&F.setFilter&&F.setFilter("")}function g(L,F){const x=fe(L);if(p[L]={...F},!(x!=null&&x.setFilter))return;const b=Object.entries(F).filter(([,$])=>$!=null&&$!=="").map(([$,D])=>`${$}=${D}`);x.setFilter(b.join("|"))}function h(L){const F=w.value;F&&g(F,L)}function f(L){const F=L.url;let x=null;if(F&&(x=F.startsWith("http")?F:`${window.location.origin}${F}`),!x)return null;const b=(L.service||"").toString().toLowerCase(),$=L.count??null;return b&&b!=="vtile"?{service:b,count:$,source:{type:"raster",tiles:[x],tileSize:256,minzoom:0,maxzoom:20}}:{service:b,count:$,source:{type:"vector",tiles:[x],minzoom:0,maxzoom:14},layer:{style:L.style},card:L.card,popup:L.popup}}function k(L,F,x){var A;const b=x??d(L);if(!b)return;const $=f(b);if(!$)return;const D=fe(b.id,$,u);if(D)if(D.setVisible(F),F){if(!i.value.includes(L)&&(i.value.push(L),(A=u.value)!=null&&A.getLayer(L)))try{u.value.moveLayer(L)}catch(N){console.warn("Cannot move new layer",L,N)}}else i.value=i.value.filter(N=>N!==L),w.value===L&&(m(),w.value=null)}function E(){i.value.forEach(L=>{const F=fe(L);F&&F.setVisible(!1)}),i.value=[]}function T(L){i.value=[...L],e.nextTick(()=>{var $;if(!u.value)return;const F=(($=u.value.getStyle())==null?void 0:$.layers)??[];let x;const b=D=>F.filter(A=>{var N,Y;return(A==null?void 0:A.source)===D||(A==null?void 0:A.id)===D||((Y=(N=A==null?void 0:A.id)==null?void 0:N.startsWith)==null?void 0:Y.call(N,`${D}`))}).map(A=>A.id);for(let D=L.length-1;D>=0;D-=1){const A=L[D],N=b(A);N.length&&(N.forEach(Y=>{var Z;if((Z=u.value)!=null&&Z.getLayer(Y))try{u.value.moveLayer(Y,x)}catch(X){console.warn("Cannot move layer",Y,X)}}),x=N[0])}})}function j(L){!L||!Array.isArray(L.filters)||L.filters.length===0||i.value.includes(L.id)&&(w.value=L.id,p[L.id]||(p[L.id]={}),r.value="filter")}function B(){r.value="catalog"}const V=e.computed(()=>w.value?d(w.value):null),v=e.computed(()=>{const L=w.value;return L?p[L]??{}:{}}),S=e.computed(()=>a.value.groups.reduce((L,F)=>L+F.layers.length,0)),M=e.computed(()=>r.value==="selected"?"Вибрані шари":r.value==="filter"?"Фільтр шарів":"Каталог"),R=e.computed(()=>r.value==="selected"?i.value.length:r.value==="catalog"?S.value:null),I=e.computed(()=>{var L;return r.value==="filter"?((L=V.value)==null?void 0:L.name)??"":""});async function q(){const F=await(await fetch("/api/gis-layer-list")).json(),x=new Map;F.forEach(D=>{const A=D.group_id??"other";x.has(A)||x.set(A,{id:A,name:D.group_name||"Інші шари",layers:[]}),x.get(A).layers.push(D)}),a.value={groups:Array.from(x.values())};const b=n.query.layers;if(!b)return;const $=Array.isArray(b)?b[0]:b;typeof $=="string"&&$.split(",").forEach(D=>{const A=D.trim();if(!A)return;const N=d(A);N&&k(A,!0,N)})}e.watch(w,L=>{!L&&r.value==="filter"&&(r.value="catalog")}),e.watch(V,L=>{!L&&w.value&&(w.value=null)}),e.watch(i,L=>{const F={...n.query};L.length?F.layers=L.join(","):delete F.layers,o.replace({query:F}).catch(()=>{})},{deep:!0});function z(){c.value=!c.value}function H(){y.value=window.innerWidth<=768}return e.onMounted(()=>{q(),H(),y.value&&(c.value=!1),window.addEventListener("resize",H)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",H)}),(L,F)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["map-catalog-widget w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm widget",R.value>1?"min-h-[250px]":"min-h-[0px]"])},[e.createElementVNode("div",xy,[e.createElementVNode("div",by,[F[5]||(F[5]=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",ky,[e.createTextVNode(e.toDisplayString(M.value)+" ",1),R.value!==null?(e.openBlock(),e.createElementBlock("span",wy,"("+e.toDisplayString(R.value)+")",1)):e.createCommentVNode("",!0),I.value?(e.openBlock(),e.createElementBlock("span",_y,e.toDisplayString(I.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ey,[e.createElementVNode("button",{onClick:E,class:"p-1 rounded-full hover:bg-gray-200 transition-colors","aria-label":"Reset layers"},[...F[6]||(F[6]=[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-0023ade8><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-0023ade8></path><path d="M21 3v5h-5" data-v-0023ade8></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-0023ade8></path><path d="M8 16H3v5" data-v-0023ade8></path></svg>',1)])]),e.createElementVNode("button",{type:"button",class:"map-catalog-widget__toggle-button",onClick:z,"aria-label":"Розгорнути/згорнути"},[(e.openBlock(),e.createElementBlock("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass({"map-catalog-widget__toggle-icon--rotated":c.value})},[...F[7]||(F[7]=[e.createElementVNode("path",{d:"M6 9L12 15L18 9",stroke:"#000000","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))])])]),e.createElementVNode("div",{class:e.normalizeClass(["map-catalog-widget__content",{"map-catalog-widget__content--collapsed":!c.value}])},[e.createElementVNode("div",Ny,[e.createElementVNode("button",{onClick:F[0]||(F[0]=x=>r.value="catalog"),class:e.normalizeClass(["px-4 py-2 text-sm font-medium",r.value==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"])}," Каталог ",2),e.createElementVNode("button",{onClick:F[1]||(F[1]=x=>r.value="selected"),class:e.normalizeClass(["px-4 py-2 text-sm font-medium",r.value==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"])}," Вибрані шари ",2)]),e.createElementVNode("div",By,[r.value==="catalog"?(e.openBlock(),e.createBlock(Gg,{key:0,class:"map-catalog-widget__scroll",catalog:a.value,selected:i.value,search:s.value,"onUpdate:search":F[2]||(F[2]=x=>s.value=x),onToggleLayer:k,onOpenFilter:j},null,8,["catalog","selected","search"])):r.value==="selected"?(e.openBlock(),e.createBlock(dy,{key:1,catalog:a.value,selected:i.value,onToggleLayer:k,onSelectLayer:F[3]||(F[3]=x=>r.value="catalog"),onReorder:T,onRemove:F[4]||(F[4]=x=>i.value=i.value.filter(b=>b!==x))},null,8,["catalog","selected"])):(e.openBlock(),e.createBlock(hy,{key:2,layer:V.value,value:v.value,onChange:h,onClose:B},null,8,["layer","value"]))])],2)],2))}}),[["__scopeId","data-v-0023ade8"]]),Vy={key:1,class:"flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},Cy={class:"flex items-start justify-between gap-3 p-5 pb-3"},$y={class:"inline-block text-xl font-semibold text-gray-800"},vy={key:0,class:"mt-1 text-sm text-gray-500"},Sy={class:"flex items-center gap-[6px]"},Ly={class:"px-5 pb-5 space-y-6"},Ay={key:0,class:"space-y-2"},Ty={class:"flex flex-wrap gap-4"},My=["value"],Fy={key:1,class:"text-sm text-gray-500"},Dy={key:2,class:"text-sm text-gray-500"},Iy={class:"text-4xl font-medium text-gray-800"},jy={class:"space-y-[14px]"},zy={class:"flex items-center gap-[10px] text-gray-600"},Oy={class:"font-medium text-gray-700"},Ry={class:"flex items-center justify-end text-end gap-3"},Py={class:"font-medium text-gray-800"},Uy={class:"min-w-[40px] font-medium text-[#3C3C4399]"},kr=ae(e.defineComponent({__name:"MapAttributeWidget",props:{config:{}},setup(t){const n=["#3a7a57","#d970d5","#8e997b","#b4c039","#a855f7","#71823a","#f79d92","#8b5cf6","#a6514e","#6b7280"],o=t,l=e.ref(!0),r=e.ref(!1),a=e.ref([]),i=e.ref(null),s=e.ref(null),u=e.ref(null),p=e.ref(null),w=e.ref(null),c=e.ref({}),y=e.ref(null);function d(L){return L&&JSON.parse(JSON.stringify(L))}const m=e.computed(()=>{const L=o.config.layer;if(typeof L!="string")throw new Error("MapAttributeWidget: `layer` must be a string");const F=L.trim();if(!F)throw new Error("MapAttributeWidget: `layer` must be non-empty");return F}),g=e.computed(()=>{const{list:L,attribute:F}=o.config;if(Array.isArray(L)&&L.length)return L.map(x=>({id:(x==null?void 0:x.id)!=null?String(x.id).trim():"",text:(x==null?void 0:x.text)!=null&&String(x.text).trim()||null})).filter(x=>x.id.length);if(Array.isArray(F))return F.map(x=>x!=null?String(x).trim():"").filter(x=>x.length).map(x=>({id:x,text:null}));if(typeof F=="string"){const x=F.trim();if(!x)throw new Error("MapAttributeWidget: `attribute` must be non-empty");return[{id:x,text:null}]}throw new Error("MapAttributeWidget: `attribute` or `list` must be provided")}),h=e.computed(()=>g.value.map(L=>({id:L.id,label:L.text||c.value[L.id]||L.id})));e.watch(g,L=>{if(!L.length){y.value=null,a.value=[];return}(!y.value||!L.some(F=>F.id===y.value))&&(y.value=L[0].id)},{immediate:!0});const f=e.computed(()=>{var L;return y.value||((L=g.value[0])==null?void 0:L.id)||null});e.watch(m,()=>{var L,F;(F=(L=s.value)==null?void 0:L.remove)==null||F.call(L),s.value=null,u.value=null,p.value=null,w.value=null,c.value={}});const k=e.computed(()=>{var L;return(L=p.value)!=null&&L.length?{id:m.value,name:u.value,filters:p.value}:null}),E=e.computed(()=>{var L,F;return((F=(L=k.value)==null?void 0:L.filters)==null?void 0:F.length)||0});async function T(L){var b;const F=await fetch(`/api/gis-service/${encodeURIComponent(L)}`);if(!F.ok){let $="Не вдалося завантажити налаштування шару";try{const D=await F.json();$=((b=D==null?void 0:D.message)==null?void 0:b.error)||(D==null?void 0:D.message)||$}catch{}throw new Error($)}const x=await F.json();return u.value=(x==null?void 0:x.name)||null,p.value=Array.isArray(x==null?void 0:x.filters)?x.filters:null,w.value=d((x==null?void 0:x.style)||{}),c.value=((x==null?void 0:x.attributes)||[]).reduce(($,D)=>{const A=typeof(D==null?void 0:D.name)=="string"?D.name.trim():"",N=typeof(D==null?void 0:D.ua)=="string"?D.ua.trim():"";return A&&($[A]=N||A),$},{}),x}function j(L,F){let x=fe(L);if(!x){const b=`${location.origin}/api/vtile/${L}/ua/{z}/{x}/{y}.vmt`;x=fe(L,{source:{type:"vector",tiles:[b],minzoom:0,maxzoom:14},layer:{id:L,source:L,"source-layer":L,style:(F==null?void 0:F.style)||{}},card:F==null?void 0:F.card,popup:F==null?void 0:F.popup})}return s.value=x,x}async function B(L,F){var $;const x=`/api/gis-service/${encodeURIComponent(L)}/${encodeURIComponent(F)}`,b=await fetch(x);if(!b.ok){let D="Не вдалося отримати статистику";try{const A=await b.json();D=(($=A==null?void 0:A.message)==null?void 0:$.error)||(A==null?void 0:A.message)||D}catch{}throw new Error(D)}return b.json()}function V(L){const F=new Map;return L&&(L.rules||[]).forEach(b=>{const $=(b==null?void 0:b.value)??(b==null?void 0:b.id);$!=null&&F.set(String($),b)}),F}function v(L,F,x,b,$){if(typeof(F==null?void 0:F.color)=="string"&&F.color.trim())return F.color.trim();const D=o.config.colors||{};if(D[L])return D[L];const N=V(x==null?void 0:x.style).get(L);return typeof(N==null?void 0:N.color)=="string"&&N.color.trim()?N.color.trim():n[$%n.length]}function S(L,F,x,b){var $;return(F==null?void 0:F.text)||(F==null?void 0:F.label)||(F==null?void 0:F.name)||(F==null?void 0:F[`${b}_text`])||(($=V(x==null?void 0:x.style).get(L))==null?void 0:$.label)||L}function M(L,F,x,b){if(!L)return;const $=d((F==null?void 0:F.style)||w.value)||{},D=b.trim();if(!D)return;const A={...$.colors||{},...o.config.colors||{}};D===b&&x.forEach(N=>{N.color.trim()&&(A[N.id]=N.color)}),L.setStyle({...$,type:$.type||"polygon",colorAttr:D,opacity:.8,colors:A})}async function R(){var D,A;a.value=[],i.value=null;const L=m.value,F=f.value;if(!F)return;r.value=!0;const x=await T(L);j(L,x);const b=await B(L,F),$=Array.isArray(b==null?void 0:b.rows)?b.rows.map((N,Y)=>{const Z=(N==null?void 0:N.id)??(N==null?void 0:N.value),X=Z!=null?String(Z):"";if(!X)return null;const K=S(X,N,x,F),ce=Number((N==null?void 0:N.count)??0)||0,de=v(X,N,x,F,Y);return{id:X,label:K,count:ce,color:de}}).filter(Boolean):[];a.value=$,i.value=((D=b==null?void 0:b.field)==null?void 0:D.label)||((A=b==null?void 0:b.field)==null?void 0:A.name)||null,M(s.value,x,$,F),r.value=!1}e.watch(()=>[m.value,f.value],()=>{R()},{immediate:!0});const I=e.computed(()=>"Набори даних"),q=e.computed(()=>a.value.reduce((L,F)=>L+F.count,0)),z=e.computed(()=>{var x;const L=f.value;return((x=h.value.find(b=>b.id===L))==null?void 0:x.label)||null||i.value||L||null});function H(L){return q.value?`${(L/q.value*100).toFixed(2)}%`:"0.00%"}return e.onBeforeUnmount(()=>{var L,F;(F=(L=s.value)==null?void 0:L.remove)==null||F.call(L)}),(L,F)=>l.value?(e.openBlock(),e.createElementBlock("div",Vy,[e.createElementVNode("div",Cy,[e.createElementVNode("div",null,[e.createElementVNode("h2",$y,e.toDisplayString(I.value),1),z.value&&h.value.length===1?(e.openBlock(),e.createElementBlock("p",vy,e.toDisplayString(z.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Sy,[k.value?(e.openBlock(),e.createBlock(Rt,{key:0,class:"flex justify-center items-center h-[36px] w-[36px] text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full",count:E.value,layer:k.value},null,8,["count","layer"])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"flex justify-center items-center h-[36px] w-[36px] text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full",onClick:F[1]||(F[1]=x=>l.value=!1)},[...F[3]||(F[3]=[e.createElementVNode("svg",{class:"w-4 h-4",xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",viewBox:"0 0 24 24"},[e.createElementVNode("path",{d:"M18 6 6 18"}),e.createElementVNode("path",{d:"m6 6 12 12"})],-1)])])])]),e.createElementVNode("div",Ly,[h.value.length>1?(e.openBlock(),e.createElementBlock("div",Ay,[e.createElementVNode("div",Ty,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,x=>(e.openBlock(),e.createElementBlock("label",{key:x.id,class:"inline-flex items-center gap-2 text-sm text-gray-700"},[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"text-sky-600 focus:ring-sky-500",value:x.id,"onUpdate:modelValue":F[2]||(F[2]=b=>y.value=b)},null,8,My),[[e.vModelRadio,y.value]]),e.createElementVNode("span",null,e.toDisplayString(x.label),1)]))),128))])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Fy,"Завантаження…")):a.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h4",Iy,e.toDisplayString(q.value),1),e.createElementVNode("ul",jy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,x=>(e.openBlock(),e.createElementBlock("li",{key:x.id,class:"flex flex-wrap items-center justify-between gap-x-2"},[e.createElementVNode("div",zy,[e.createElementVNode("span",{class:"block w-[16px] h-[16px] rounded",style:e.normalizeStyle({backgroundColor:x.color})},null,4),e.createElementVNode("span",Oy,e.toDisplayString(x.label),1)]),e.createElementVNode("div",Ry,[e.createElementVNode("span",Py,e.toDisplayString(x.count),1),e.createElementVNode("span",Uy,e.toDisplayString(H(x.count)),1)])]))),128))])],64)):(e.openBlock(),e.createElementBlock("div",Dy,"Дані відсутні"))])])):(e.openBlock(),e.createElementBlock("button",{key:0,class:"py-2 px-2.5 max-h-[38px] inline-flex items-center gap-x-1.5 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50",onClick:F[0]||(F[0]=x=>l.value=!0)}," Набори даних "))}}),[["__scopeId","data-v-9686ce7b"]]),qy={class:"map-search-widget flex flex-col gap-2 bg-white border border-stone-200 shadow-2xs rounded-xl widget p-3 min-w-[200px]"},Hy=["title"],Wy={key:0,class:"vs-select__options absolute z-50 mt-1 w-auto min-w-full bg-white border border-gray-300 shadow-lg rounded-lg text-sm text-gray-900"},Yy=["onClick"],Zy=["placeholder"],Gy={class:"absolute inset-y-0 right-2 flex items-center gap-1"},Ky={class:"divide-y divide-gray-100"},Xy=["onClick"],Ct="search-geom-source",$t="search-geom-layer-fill",Pt="search-geom-layer-line",Jy=30,Qy=8,eh="https://data.softpro.ua/api-user/gis-url-proxy",th="https://geo.rv.ua/api-user/dzk.api",nh="https://nominatim.openstreetmap.org/search",wr=ae(e.defineComponent({__name:"MapSearchWidget",props:{config:{}},setup(t){const n=t,o=Le(),l=e.getCurrentInstance();function r(){return typeof globalThis<"u"&&globalThis.proxy?globalThis.proxy:typeof window<"u"&&window.proxy?window.proxy:null}function a(){var ne,le,me;const U=(ne=l==null?void 0:l.appContext.config.globalProperties)==null?void 0:ne.$settings,W=(le=U==null?void 0:U.map)==null?void 0:le.searchViewbox;if(W)return W;const G=r();return(me=G==null?void 0:G.map)==null?void 0:me.searchViewbox}const s=!!a()?["xy","parcel","address"]:["xy","parcel"],u=e.computed(()=>{var W,G;const U=(G=(W=n.config)==null?void 0:W.tools)==null?void 0:G.filter(ne=>s.includes(ne));return U&&U.length?U:s}),p=e.computed(()=>{var U,W;return((W=(U=n.config)==null?void 0:U.placeholder)==null?void 0:W.trim())||"Пошук…"}),w=e.ref(u.value[0]);e.watch(u,U=>{U.includes(w.value)||(w.value=U[0])});const c=e.ref(""),y=e.ref(!1),d=e.ref(null),m=e.ref(null),g=e.ref([]),h=e.ref(null),f=e.computed(()=>w.value==="address"&&g.value.length>0),k=e.computed(()=>{var U;return((U=n.config)==null?void 0:U.addressDebounceMs)??1e3});let E=null;const T=e.ref(!1);let j=null;function B(){j&&(j.remove(),j=null)}function V(){var W;const U=(W=o.map)==null?void 0:W.value;U&&(U.getLayer($t)&&U.removeLayer($t),U.getLayer(Pt)&&U.removeLayer(Pt),U.getSource(Ct)&&U.removeSource(Ct))}function v(U){var le,me,ke,pe;if(!((le=n.config)!=null&&le.showMarker)||!U)return;const W=(me=o.map)==null?void 0:me.value;if(!W)return;V(),M();const G={type:"Feature",geometry:U,properties:{}};W.addSource(Ct,{type:"geojson",data:G});const ne=((ke=n.config)==null?void 0:ke.geometryColor)||((pe=n.config)==null?void 0:pe.markerColor)||"#3B82F6";W.addLayer({id:$t,type:"fill",source:Ct,paint:{"fill-color":ne,"fill-opacity":.3}}),W.addLayer({id:Pt,type:"line",source:Ct,paint:{"line-color":ne,"line-width":1,"line-opacity":1}}),R(W)}let S=null;function M(){S&&(cancelAnimationFrame(S),S=null)}function R(U){const G=performance.now();function ne(le){if(!U.getLayer($t))return;const ke=(le-G)%1200/1200,pe=Math.sin(ke*Math.PI),Re=.2+pe*.3,P=1+pe*1;U.setPaintProperty($t,"fill-opacity",Re),U.setPaintProperty(Pt,"line-width",P),S=requestAnimationFrame(ne)}S=requestAnimationFrame(ne)}function I(U,W){var le,me,ke;if(!((le=n.config)!=null&&le.showMarker))return;B(),V();const G=(me=o.map)==null?void 0:me.value;if(!G)return;if(W){v(W);return}const ne=((ke=n.config)==null?void 0:ke.markerColor)||"#3B82F6";j=new maplibregl.Marker({color:ne}).setLngLat([U.lng,U.lat]).addTo(G)}const q=e.reactive({position:"absolute",left:"0px",top:"0px",width:"100%",display:"none"});function z(){if(!m.value)return;const U=m.value.getBoundingClientRect(),W=U.width+Jy,G=U.left+window.scrollX,ne=U.bottom+window.scrollY+Qy;q.left=`${G}px`,q.top=`${ne}px`,q.width=`${W}px`,q.display="block"}const H=()=>{f.value&&z()};function L(){E&&(clearTimeout(E),E=null)}e.watch(w,()=>{c.value="",y.value=!1,g.value=[],L(),T.value=!1,B(),V()}),e.watch(f,U=>{U?e.nextTick(()=>{z()}):q.display="none"}),e.watch(c,U=>{if(w.value!=="address"){g.value=[],L();return}if(!U.trim()){g.value=[],L();return}L(),E=window.setTimeout(()=>{Z(U).catch(W=>{const G=(W==null?void 0:W.message)||"Помилка пошуку адреси";ue.notify({type:"error",title:"Пошук адреси",message:G})})},k.value)});function F(U){w.value=U}function x(){c.value="",g.value=[],T.value=!1,B(),V()}function b(U){const W=U.target;if(y.value){const G=d.value;G&&!G.contains(W)&&(y.value=!1)}if(f.value){const G=h.value;G&&!G.contains(W)&&(g.value=[])}}e.onMounted(()=>{window.addEventListener("click",b,!0),window.addEventListener("scroll",H,!0),window.addEventListener("resize",H)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",b,!0),window.removeEventListener("scroll",H,!0),window.removeEventListener("resize",H),L(),B(),V()});function $(U){return U==="xy"?"Координати":U==="parcel"?"Кадастр":"Адреси"}function D(U){const W=U.replace(/[,]+/g," ").trim();if(!W)return null;const G=W.split(/\s+/).filter(Boolean);if(G.length<2)return null;const ne=G.slice(0,2).map(Number);if(!ne.every(Q=>Number.isFinite(Q)))return null;let[le,me]=ne,ke=le,pe=me;const Re=Q=>Math.abs(Q)<=90,P=Q=>Math.abs(Q)<=180;if(!Re(ke)||!P(pe))if(Re(pe)&&P(ke))ke=me,pe=le;else return null;return{lat:ke,lng:pe}}function A(U){return((U==null?void 0:U.items)||[]).map((G,ne)=>{var le,me,ke;return{id:String((G==null?void 0:G.id)??ne),title:(G==null?void 0:G.title)||((le=G==null?void 0:G.address)==null?void 0:le.label)||"Знайдений обʼєкт",lat:Number((me=G==null?void 0:G.position)==null?void 0:me.lat),lng:Number((ke=G==null?void 0:G.position)==null?void 0:ke.lng)}})}function N(U){const W=(U==null?void 0:U.result)||(U==null?void 0:U.data)||U;if(!W)return[];const G=W.geom_centroid;if(!G||!Array.isArray(G.coordinates))return[];const[ne,le]=G.coordinates;return!Number.isFinite(le)||!Number.isFinite(ne)?[]:[{id:"parcel",title:W.cadnum||W.cad_num||"Земельна ділянка",lat:le,lng:ne,geom:W.geom||null}]}function Y(U){return(Array.isArray(U==null?void 0:U.features)?U.features:[]).map((G,ne)=>{var Q,ie,we;const le=(Q=G==null?void 0:G.geometry)==null?void 0:Q.coordinates,me=Number(le==null?void 0:le[0]),ke=Number(le==null?void 0:le[1]);if(!Number.isFinite(ke)||!Number.isFinite(me))return null;const pe=(G==null?void 0:G.properties)||{},Re=((ie=pe==null?void 0:pe.geocoding)==null?void 0:ie.label)||(pe==null?void 0:pe.display_name)||(pe==null?void 0:pe.label)||"Адреса";return{id:String(((we=pe==null?void 0:pe.geocoding)==null?void 0:we.place_id)||(pe==null?void 0:pe.place_id)||ne),title:Re,lat:ke,lng:me}}).filter(G=>!!G)}async function Z(U){g.value=[],L();const W=new URL(nh);W.searchParams.set("format","geojson"),W.searchParams.set("q",U),W.searchParams.set("addressdetails","1"),W.searchParams.set("bounded","1");const G=a();G&&W.searchParams.set("viewbox",G);const ne=await fetch(W.toString());if(!ne.ok)throw new Error(`HTTP ${ne.status}`);const le=await ne.json(),me=Y(le);if(!me.length){ue.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}g.value=me}function X(U){ce(U),g.value=[],c.value=U.title}function K(U){const G=U.replace(/\s+/g,"").split(":");if(console.log(G),G.length!==4)return!1;const ne=[10,2,3,4];return G.every((le,me)=>le.length===ne[me]&&/^\d+$/.test(le))}function ce(U){var G,ne;const W=((G=n.config)==null?void 0:G.zoom)??17;(ne=o.flyTo)==null||ne.call(o,{center:[U.lng,U.lat],zoom:W}),I(U,U.geom),T.value=!0}async function de(){const U=c.value.trim();if(U){if(w.value==="xy"){const W=D(U);if(!W){ue.notify({type:"warning",title:"Пошук координат",message:"Не знайдено або невірний формат координат"});return}ce(W);return}if(w.value==="address"){try{await Z(U)}catch(W){const G=(W==null?void 0:W.message)||"Помилка пошуку адреси";ue.notify({type:"error",title:"Пошук адреси",message:G})}return}try{const W=new URL(w.value==="here"?eh:th);if(w.value==="here")W.searchParams.set("searchtext",U);else{if(!K(U)){ue.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}W.searchParams.set("cad_num",U)}const G=await fetch(W.toString());if(!G.ok)throw new Error(`HTTP ${G.status}`);const ne=await G.json(),le=w.value==="here"?A(ne):N(ne);if(!le.length)ue.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const me=le[0];ce(me)}}catch(W){const G=(W==null?void 0:W.message)||"Помилка пошуку";ue.notify({type:"error",title:"Пошук",message:G})}}}return(U,W)=>(e.openBlock(),e.createElementBlock("div",qy,[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(de,["prevent"])},[u.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:d,class:"relative search-type w-[100px]"},[e.createElementVNode("button",{type:"button",class:"vstSelect-input transition-all text-left bg-white border border-gray-200 text-gray-900 rounded-lg focus:ring-blue-500 focus:border-blue-100 block w-full py-1.5 px-3 text-sm cursor-pointer flex items-center justify-between gap-2",onClick:W[0]||(W[0]=G=>y.value=!y.value)},[e.createElementVNode("span",{class:"block w-full truncate",title:$(w.value)},e.toDisplayString($(w.value)),9,Hy),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":y.value}]),viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[...W[3]||(W[3]=[e.createElementVNode("path",{d:"M6 9l6 6 6-6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))]),y.value?(e.openBlock(),e.createElementBlock("div",Wy,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,G=>(e.openBlock(),e.createElementBlock("li",{key:G,class:"px-3 py-2 cursor-pointer hover:bg-gray-100 text-gray-900",onClick:ne=>F(G)},e.toDisplayString($(G)),9,Yy))),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"searchWrapperRef",ref:m,class:"relative flex-1 min-w-[140px]"},[w.value==="parcel"?(e.openBlock(),e.createBlock(e.unref(An.VsInputMask),{key:0,modelValue:c.value,"onUpdate:modelValue":W[1]||(W[1]=G=>c.value=G),mask:"0000000000:00:000:0000",class:e.normalizeClass(["vs-input !h-[34px] transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid py-1.5 pl-3 text-sm",T.value?"!pr-14":"!pr-8"])},null,8,["modelValue","class"])):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":W[2]||(W[2]=G=>c.value=G),placeholder:p.value,type:"text",class:e.normalizeClass(["vs-input transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid py-1.5 pl-3 text-sm",T.value?"!pr-14":"!pr-8"])},null,10,Zy)),[[e.vModelText,c.value,void 0,{trim:!0}]]),e.createElementVNode("div",Gy,[T.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"flex items-center text-gray-400 hover:text-gray-600","aria-label":"Очистити",onClick:x},[...W[4]||(W[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})],-1)])])):e.createCommentVNode("",!0),W[5]||(W[5]=e.createElementVNode("button",{type:"submit",class:"flex items-center text-gray-400 hover:text-gray-600","aria-label":"Пошук"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-4.35-4.35m0 0A7.5 7.5 0 1 0 5 5a7.5 7.5 0 0 0 11.65 11.65Z"})])],-1))]),f.value?(e.openBlock(),e.createBlock(e.Teleport,{key:2,to:"body"},[e.createElementVNode("div",{ref_key:"addressResultsRef",ref:h,class:"vs-select__options mt-1 bg-white border border-gray-300 shadow-lg rounded-lg text-sm text-gray-900 z-50 max-h-60 overflow-auto",style:e.normalizeStyle(q)},[e.createElementVNode("ul",Ky,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,G=>(e.openBlock(),e.createElementBlock("li",{key:G.id,class:"px-3 py-2 cursor-pointer hover:bg-gray-50",onClick:ne=>X(G)},e.toDisplayString(G.title),9,Xy))),128))])],4)])):e.createCommentVNode("",!0)],512)],32)]))}}),[["__scopeId","data-v-d773179e"]]),oh="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css",rh="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js",lh=ae(e.defineComponent({__name:"MapPrintControl",setup(t){const{map:n,ready:o,addControl:l,removeControl:r}=Le(),a=e.ref(null),i=e.ref(null),s=e.ref(null),u=e.ref(null);let p=null;function w(){!window.mapboxgl&&window.maplibregl&&(window.mapboxgl=window.maplibregl)}function c(B){if(Array.from(document.styleSheets).some(S=>{var M;return(M=S==null?void 0:S.href)==null?void 0:M.includes(B)}))return;const v=document.createElement("link");v.rel="stylesheet",v.href=B,document.head.appendChild(v)}function y(B){return new Promise((V,v)=>{const S=Array.from(document.scripts).find(R=>R.src===B);if(S){if(S._loaded)return V();S.addEventListener("load",()=>V()),S.addEventListener("error",()=>v(new Error(`Failed ${B}`)));return}const M=document.createElement("script");M.src=B,M.async=!0,M.onload=()=>{M._loaded=!0,V()},M.onerror=()=>v(new Error(`Failed ${B}`)),document.head.appendChild(M)})}function d(){var V,v,S;const B=window;return B.MapboxExportControl||((V=B.mapboxgl)==null?void 0:V.MapboxExportControl)||((v=B.mapboxglExport)==null?void 0:v.MapboxExportControl)||((S=B.mapboxglExport)==null?void 0:S.default)||null}function m(){const B=document.createElementNS("http://www.w3.org/2000/svg","svg");return B.setAttribute("xmlns","http://www.w3.org/2000/svg"),B.setAttribute("viewBox","0 0 24 24"),B.setAttribute("width","18"),B.setAttribute("height","18"),B.setAttribute("fill","none"),B.setAttribute("stroke","currentColor"),B.setAttribute("stroke-width","2"),B.setAttribute("stroke-linecap","round"),B.setAttribute("stroke-linejoin","round"),B.classList.add("map-control-button__icon"),[{d:"M0 0h24v24H0z",stroke:"none",fill:"none"},{d:"M17 17h2a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-14a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2"},{d:"M17 9v-4a2 2 0 0 0 -2 -2h-6a2 2 0 0 0 -2 2v4"},{d:"M7 13m0 2a2 2 0 0 1 2 -2h6a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2z"}].forEach((v,S)=>{const M=document.createElementNS("http://www.w3.org/2000/svg","path");Object.entries(v).forEach(([R,I])=>{M.setAttribute(R,I)}),B.appendChild(M)}),B}function g(){const B=document.createElement("button");B.id="print-btn",B.type="button",B.className=["group relative flex items-center justify-center","w-9 h-9 rounded-xl shadow-lg transition-transform transition-shadow duration-200","bg-white text-gray-700 hover:bg-gray-50 hover:scale-105","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400/60 focus-visible:ring-offset-2"].join(" "),B.setAttribute("aria-label","Друк карти");const V=m(),v=document.createElement("span");return v.className=["absolute right-full mr-3 px-1.5 py-0.5","bg-gray-700 text-white text-[0.75rem] font-medium rounded-md","opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100","pointer-events-none transition-opacity duration-200 whitespace-nowrap"].join(" "),v.textContent="Друк карти",v.setAttribute("aria-hidden","true"),B.appendChild(V),B.appendChild(v),B.addEventListener("click",S=>{S.stopPropagation(),h()}),u.value=B,B}function h(){if(!s.value)return;s.value.style.display==="block"?k():f()}function f(){var B,V,v;s.value&&(s.value.style.display="block",(B=u.value)==null||B.classList.add("scale-105","shadow-xl"),(V=i.value)==null||V.toggleCrosshair(!0),(v=i.value)==null||v.togglePrintableArea(!0),document.addEventListener("click",E))}function k(){var B,V,v;s.value&&(s.value.style.display="none",(B=u.value)==null||B.classList.remove("scale-105","shadow-xl"),(V=i.value)==null||V.toggleCrosshair(!1),(v=i.value)==null||v.togglePrintableArea(!1),document.removeEventListener("click",E))}function E(B){const V=a.value;V&&(B.target&&V.contains(B.target)||k())}function T(B){const V={Size:"Розмір",Orientation:"Орієнтація",Format:"Формат",DPI:"DPI",Landscape:"Горизонтальна",Portrait:"Вертикальна",PNG:"PNG",JPEG:"JPEG",SVG:"SVG",PDF:"PDF","Page Size":"Розмір","Page Orientation":"Орієнтація"};B.querySelectorAll("label, option").forEach(S=>{var R;const M=(R=S.textContent)==null?void 0:R.trim();M&&V[M]&&(S.textContent=V[M])});const v=B.querySelector("button");v&&(v.textContent="Друкувати")}function j(B){const V=B.querySelector(".mapboxgl-export-list");if(!V||!a.value)return;s.value=V;const v=B.querySelector("button");if(v&&(v.style.display="none"),B.style.display="none",!u.value){const M=g();a.value.appendChild(M)}V.style.display="none";const S="_printControlBound";if(!V[S]){const M=R=>R.stopPropagation();V.addEventListener("click",M),V.addEventListener("mousedown",M),V[S]=!0}a.value.appendChild(V),T(V)}return e.onMounted(async()=>{await(o==null?void 0:o());const B=n.value;if(!B)return;c(oh),w();try{await y(rh)}catch(S){console.warn("[MapPrintControl] load error",S);return}const V=d();if(!V)return;const v=new V({PageSize:"A4",PageOrientation:"landscape",Format:"pdf",DPI:300,Crosshair:!0,PrintableArea:!0});if(i.value=v,typeof v.onAdd=="function"){const S=v.onAdd.bind(v);v.onAdd=M=>{const R=S(M);return setTimeout(()=>R&&j(R),50),R}}l?l(v,"top-right"):B.addControl(v,"top-right"),p=S=>{S.key==="Escape"&&k()},document.addEventListener("keyup",p)}),e.onBeforeUnmount(()=>{k(),p&&(document.removeEventListener("keyup",p),p=null);const B=n.value;if(i.value)try{r?r(i.value):B==null||B.removeControl(i.value)}catch{}i.value=null}),(B,V)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:a,class:"map-print-control"},null,512))}}),[["__scopeId","data-v-4fae7635"]]),ah={class:"cursor-coordinates"},ih={class:"cursor-coordinates__text"},sh=ae(e.defineComponent({__name:"MapCursorCoordinates",props:{coordinates:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",ah,[e.createElementVNode("span",ih,e.toDisplayString(t.coordinates),1)]))}}),[["__scopeId","data-v-334315d9"]]),ch={class:"minimap__wrapper"},Ut="minimap-viewport",dh="minimap-viewport-layer",uh=ae(e.defineComponent({__name:"MapMiniMap",props:{mapContext:{},width:{},height:{},options:{}},setup(t){var E,T,j,B;const n=t,o=((T=(E=e.getCurrentInstance())==null?void 0:E.appContext.config.globalProperties)==null?void 0:T.$settings)||null,l=Qe((j=o==null?void 0:o.map)==null?void 0:j.center)||[30,50],r=e.ref(null),a=e.shallowRef(null),i=(B=n.options)==null?void 0:B.active,s=e.ref(i===void 0?!1:!!i);function u(V,v){return typeof V=="number"&&Number.isFinite(V)?V:v}const p=e.computed(()=>{var R,I;const V=(R=n.options)==null?void 0:R.width,v=(I=n.options)==null?void 0:I.height,S=u(n.width??V,210),M=u(n.height??v,150);return{width:`${S}px`,height:`${M}px`}});function w(){var v,S;const V=(S=(v=n.mapContext)==null?void 0:v.map)==null?void 0:S.value;if(!V||typeof V.getStyle!="function")return null;try{const M=V.getStyle();return M?JSON.parse(JSON.stringify(M)):null}catch{return null}}let c=null;function y(){var R;if(typeof window>"u"||a.value||!r.value)return;const V=w(),v=l,S={container:r.value,style:V??{version:8,sources:{voyager:{type:"raster",tiles:["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"voyager",type:"raster",source:"voyager"}]},center:v,zoom:((R=n.options)==null?void 0:R.zoom)??3,interactive:!1,attributionControl:!1},M={...S,...n.options??{}};M.container=S.container,a.value=new maplibregl.Map(M),a.value.on("load",()=>{m(),h()})}function d(){if(!a.value)return;const V=w();V&&(a.value.once("styledata",()=>{m(),h()}),a.value.setStyle(V))}function m(){if(a.value){if(typeof a.value.isStyleLoaded=="function"&&!a.value.isStyleLoaded()){a.value.once("styledata",()=>{m(),h()});return}a.value.getSource(Ut)||(a.value.addSource(Ut,{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]},properties:{}}}),a.value.addLayer({id:dh,type:"fill",source:Ut,paint:{"fill-color":"#3b82f6","fill-opacity":.2,"fill-outline-color":"#1d4ed8"}}))}}function g(){s.value=!s.value,s.value&&e.nextTick(()=>{var V;return(V=a.value)==null?void 0:V.resize()})}function h(){var q,z;const V=(z=(q=n.mapContext)==null?void 0:q.map)==null?void 0:z.value;if(!a.value||!V||!V.getBounds)return;if(typeof a.value.isStyleLoaded=="function"&&!a.value.isStyleLoaded()){a.value.once("styledata",()=>{h()});return}const v=V.getBounds();if(!v)return;const S=v.getNorthEast(),M=v.getSouthWest();if(!S||!M)return;const R=[[M.lng,S.lat],[S.lng,S.lat],[S.lng,M.lat],[M.lng,M.lat],[M.lng,S.lat]],I=a.value.getSource(Ut);if(!I){m();return}I.setData({type:"Feature",geometry:{type:"Polygon",coordinates:[R]},properties:{}})}function f(){var S;const V=n.mapContext,v=(S=V==null?void 0:V.map)==null?void 0:S.value;!(V!=null&&V.on)||!v||(c==null||c(),c=V.on("move",h),h())}async function k(){const V=n.mapContext;if(V){if(typeof V.ready=="function")try{await V.ready()}catch{return}f()}}return e.onMounted(()=>{y(),k()}),e.watch(()=>n.mapContext,()=>{k(),h()}),e.watch(()=>{var V,v;return(v=(V=n.mapContext)==null?void 0:V.map)==null?void 0:v.value},()=>{a.value&&(d(),k())}),e.watch(p,()=>{a.value&&e.nextTick(()=>{var V;return(V=a.value)==null?void 0:V.resize()})}),e.watch(()=>n.options,()=>{var v;c==null||c(),c=null,a.value&&(a.value.remove(),a.value=null);const V=(v=n.options)==null?void 0:v.active;typeof V=="boolean"&&(s.value=V),e.nextTick(()=>{y(),k()})},{deep:!0}),e.onBeforeUnmount(()=>{c==null||c(),c=null,a.value&&(a.value.remove(),a.value=null)}),(V,v)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["minimap",{"minimap--open":s.value}])},[e.createElementVNode("button",{type:"button",class:"minimap__button",onClick:g},[e.createVNode(e.unref(jr))]),e.createVNode(e.Transition,{name:"minimap-slide"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",ch,[e.createElementVNode("div",{ref_key:"minimapRoot",ref:r,class:"mapboxgl-ctrl-minimap mapboxgl-ctrl mapboxgl-map",style:e.normalizeStyle(p.value),id:"mapboxgl-minimap"},null,4)],512),[[e.vShow,s.value]])]),_:1})],2))}}),[["__scopeId","data-v-bc754c89"]]),ph={key:1,class:"absolute bottom-4 right-4 z-[80] flex items-end gap-2"},mh={class:"absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1"},fh={class:"map-widget__overlay-grid"},gh={key:0,id:"map-filter-popover-host",class:"map-widget__filter-host"},yh={key:1,class:"map-widget__stack-wrapper map-widget__stack-wrapper--top"},hh={class:"map-widget__stack"},xh={key:2,class:"map-widget__stack-wrapper map-widget__stack-wrapper--bottom xl:mb-5 mb-2"},bh={class:"map-widget__stack map-widget__stack--bottom"},kh={key:0,class:"map-widget__state"},wh={key:1,class:"map-widget__state map-widget__state--error"},qt=ae(e.defineComponent({__name:"MapWidget",props:{id:{},height:{},minZoom:{},maxZoom:{},data:{}},setup(t){var me,ke,pe,Re;const n=t,o=be.useRoute(),l=be.useRouter(),r=e.ref(null),a=e.ref({}),i=e.ref(null),s=e.ref(!1),u=e.ref(null),p=e.ref(!1),w=e.ref([]),c=e.computed(()=>n.id||"main"),y=e.computed(()=>{var P,Q;return{height:((P=n.height)==null?void 0:P.trim())||((Q=a.value)==null?void 0:Q.height)||"calc(100vh - 65px)"}}),d=e.computed(()=>{var P;return((P=a.value)==null?void 0:P.name)??null}),m=e.computed(()=>{var P;return((P=a.value)==null?void 0:P.description)??null}),g=e.computed(()=>{var P;return q((P=a.value)==null?void 0:P.maps)}),h=e.computed(()=>{var Q,ie;const P=((Q=a.value)==null?void 0:Q.minZoom)??((ie=a.value)==null?void 0:ie.minzoom)??null;return typeof P=="number"?P:null}),f=e.computed(()=>{var Q,ie;const P=((Q=a.value)==null?void 0:Q.maxZoom)??((ie=a.value)==null?void 0:ie.maxzoom)??null;return typeof P=="number"?P:typeof n.maxZoom=="number"?n.maxZoom:20}),k=e.ref(null),E=e.computed(()=>{if(!k.value)return null;const{lng:P,lat:Q}=k.value;return`${Q.toFixed(6)}, ${P.toFixed(6)}`}),T=e.computed(()=>{var P;return((P=r.value)==null?void 0:P.ctx)??null}),j=e.computed(()=>{var P;return((P=a.value)==null?void 0:P.minimap)??null});function B(P){if(!P||typeof P!="object")return P;const Q=Qe(P.center);return Q?{...P,center:Q}:P}const V=((ke=(me=e.getCurrentInstance())==null?void 0:me.appContext.config.globalProperties)==null?void 0:ke.$settings)||null;function v(P){if(P==null)return null;const Q=Number(typeof P=="string"?P.trim():P);return Number.isFinite(Q)?Q:null}const S=Qe((pe=V==null?void 0:V.map)==null?void 0:pe.center),M=v((Re=V==null?void 0:V.map)==null?void 0:Re.zoom),R=e.computed(()=>{const P=(V==null?void 0:V.map)||null,Q=(P==null?void 0:P.boundary)??null,ie=(P==null?void 0:P.katottg)??null;return!Q&&!ie?null:{boundary:Q,katottg:ie}});function I(P){return typeof P=="string"&&P.trim()?P.trim().toLowerCase():"top-left"}function q(P){return Array.isArray(P)?P:P&&typeof P=="object"?Object.values(P).filter(Boolean):[]}const z=e.computed(()=>{var P;return q((P=a.value)==null?void 0:P.widgets)}),H=["left","right"],L=e.computed(()=>{const P={left:{top:[],bottom:[]},right:{top:[],bottom:[]}},Q={"top-left":{side:"left",align:"top"},"bottom-left":{side:"left",align:"bottom"},"top-right":{side:"right",align:"top"},"bottom-right":{side:"right",align:"bottom"}};return z.value.forEach(ie=>{const we=I(ie.position),re=Q[we]??{side:"left",align:"top"};P[re.side][re.align].push(ie)}),P});function F(P){return Array.isArray(P)?P[0]??null:typeof P=="string"?P:null}async function x(){var Q;await e.nextTick();const P=(Q=r.value)==null?void 0:Q.ctx;return P?(P.ready&&await P.ready(),P):null}function b(){var P,Q,ie;return((ie=(Q=(P=r.value)==null?void 0:P.ctx)==null?void 0:Q.map)==null?void 0:ie.value)??null}function $(){const P=b();if(!P)return null;const Q=P.getCenter();return{z:P.getZoom().toFixed(2),x:Q.lng.toFixed(5),y:Q.lat.toFixed(5)}}async function D(){var ie;const P=await x(),Q=(ie=P==null?void 0:P.map)==null?void 0:ie.value;Q&&(typeof h.value=="number"&&Q.setMinZoom(h.value),typeof f.value=="number"&&Q.setMaxZoom(f.value))}async function A(){var re;if(i.value)return;const P=await x(),Q=(re=P==null?void 0:P.map)==null?void 0:re.value;if(!Q)return;const ie=Q.getCenter(),we=Q.getZoom();i.value={center:[ie.lng,ie.lat],zoom:we}}function N(){const P=$();if(!P)return;const Q=F(o.query.x),ie=F(o.query.y),we=F(o.query.z);Q===P.x&&ie===P.y&&we===P.z||l.replace({query:{...o.query,...P}}).catch(()=>{})}function Y(P,Q,ie=1e-6){return Math.abs(P-Q)<=ie}async function Z(){var $e;const P=await x(),Q=($e=P==null?void 0:P.map)==null?void 0:$e.value;if(!P||!Q)return;const ie=parseFloat(F(o.query.x)??""),we=parseFloat(F(o.query.y)??""),re=parseFloat(F(o.query.z)??""),he=!Number.isNaN(ie),Te=!Number.isNaN(we),ee=!Number.isNaN(re);let ve=!1;if(he&&Te){const Oe=Q.getCenter();(!Y(Oe.lng,ie)||!Y(Oe.lat,we))&&(Q.setCenter([ie,we]),ve=!0)}ee&&Q.setZoom(re),(!he||!Te||!ee||ve)&&N()}let X=null,K=null;function ce(P){const Q=P==null?void 0:P.lngLat;Q&&(k.value={lng:Q.lng,lat:Q.lat})}async function de(){const P=await x();P!=null&&P.on&&(X==null||X(),X=P.on("moveend",N),K==null||K(),K=P.on("mousemove",ce))}e.onUnmounted(()=>{X==null||X(),X=null,K==null||K(),K=null});async function U(P=!1){var ie,we;p.value=!1,u.value=null,k.value=null;const Q=P||!n.data;s.value=Q;try{const re=Q?await(async()=>{const $e=await fetch(`/api/gis-map/${encodeURIComponent(c.value)}`);if(!$e.ok)throw new Error(`Помилка завантаження (${$e.status})`);return $e.json()})():n.data;Q||(p.value=!0);const he=Qe(re.center)??S,Te=q(re.layers).map($e=>B($e)),ee=v(re.zoom)??M;a.value={...re,center:he??null,zoom:ee??re.zoom??null,layers:Te,widgets:re.widgets},w.value=re.tools||["home","print"];const ve=await x();ve&&(he&&((ie=ve.setCenter)==null||ie.call(ve,he)),ee!=null&&((we=ve.setZoom)==null||we.call(ve,ee)),i.value||await A()),await D(),await Z(),await de(),p.value=!0}catch(re){u.value=(re==null?void 0:re.message)||"Не вдалося завантажити карту"}finally{Q&&(s.value=!1)}}const W=e.computed(()=>{var we;const P=new Map;return q((we=a.value)==null?void 0:we.layers).forEach(re=>{if(!(re!=null&&re.id))return;const he=B(re)||re;P.set(re.id,{...he})}),z.value.filter(re=>(re==null?void 0:re.type)==="layers").flatMap(re=>{var he;return q((he=re==null?void 0:re.config)==null?void 0:he.layers)}).forEach(re=>{if(!(re!=null&&re.id))return;const he=P.get(re.id)||{},Te=B(re)||re;P.set(re.id,{...he,...Te,actions:re.actions||he.actions||null,name:he.name||re.name||re.title||he.title||re.id,title:he.title||re.title||he.name||null,visible:he.visible??re.visible??!0})}),Array.from(P.values())}),G=e.ref([]);function ne(P){G.value.includes(P)?G.value=G.value.filter(Q=>Q!==P):G.value.push(P)}const le=e.computed(()=>P=>G.value.includes(P.id));return e.watch([h,f],()=>{D()},{immediate:!0}),e.watch(c,()=>{U(!0)}),e.watch(()=>n.data,P=>{P&&U()}),e.onMounted(()=>{U()}),e.watch(()=>[o.query.x,o.query.y,o.query.z],()=>{Z()}),(P,Q)=>(e.openBlock(),e.createElementBlock("div",{class:"map-widget",style:e.normalizeStyle(y.value)},[Q[2]||(Q[2]=e.createElementVNode("div",{id:"map-filter-popover-host",class:"map-widget__filter-host"},null,-1)),e.createVNode(Ot,{ref_key:"mapViewRef",ref:r,class:"map-widget__view"},{default:e.withCtx(()=>{var ie,we,re,he;return[R.value?(e.openBlock(),e.createBlock(pr,{key:0,"layer-id":"app-boundary",boundary:R.value.boundary,katottg:R.value.katottg},null,8,["boundary","katottg"])):e.createCommentVNode("",!0),T.value?(e.openBlock(),e.createElementBlock("div",ph,[E.value?(e.openBlock(),e.createBlock(sh,{key:0,coordinates:E.value},null,8,["coordinates"])):e.createCommentVNode("",!0),e.createVNode(uh,{"map-context":T.value,options:j.value},null,8,["map-context","options"])])):e.createCommentVNode("",!0),e.createElementVNode("div",mh,[w.value.includes("home")?(e.openBlock(),e.createBlock(et,{key:0,center:((ie=a.value)==null?void 0:ie.center)||((we=i.value)==null?void 0:we.center)||null,zoom:((re=a.value)==null?void 0:re.zoom)??((he=i.value)==null?void 0:he.zoom)??null},null,8,["center","zoom"])):e.createCommentVNode("",!0),w.value.includes("print")?(e.openBlock(),e.createBlock(lh,{key:1})):e.createCommentVNode("",!0)]),p.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",fh,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(H,Te=>e.createElementVNode("div",{key:Te,class:e.normalizeClass(["map-widget__side",`map-widget__side--${Te}`])},[Te==="left"?(e.openBlock(),e.createElementBlock("div",gh)):e.createCommentVNode("",!0),L.value[Te].top.length?(e.openBlock(),e.createElementBlock("div",yh,[e.createElementVNode("div",hh,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value[Te].top,ee=>{var ve,$e,Oe,tt,Ue,nt,Ke,ot;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:ee.id||ee.type,class:"map-overlay__item"},[ee.type==="info"?(e.openBlock(),e.createBlock(gr,{key:0,title:((ve=ee.config)==null?void 0:ve.title)||ee.title||null,content:(($e=ee.config)==null?void 0:$e.content)||"",links:g.value,"map-name":d.value,"map-description":m.value},null,8,["title","content","links","map-name","map-description"])):ee.type==="catalog"?(e.openBlock(),e.createBlock(br,{key:1,api:((Oe=ee.config)==null?void 0:Oe.api)||null},null,8,["api"])):ee.type==="layers"?(e.openBlock(),e.createBlock(xr,{key:2,layers:W.value,onAction:Q[0]||(Q[0]=vt=>ne(vt.layerId)),config:ee.config},null,8,["layers","config"])):ee.type==="basemaps"?(e.openBlock(),e.createBlock(Bt,{key:3,layers:((tt=ee.config)==null?void 0:tt.layers)||null,"default-layer":((Ue=ee.config)==null?void 0:Ue.default)||null,title:ee.title||((nt=ee.config)==null?void 0:nt.title)||null},null,8,["layers","default-layer","title"])):ee.type==="legend"?(e.openBlock(),e.createBlock(hn,{key:4,items:((Ke=ee.config)==null?void 0:Ke.items)||[]},null,8,["items"])):ee.type==="filters"&&le.value(ee)?(e.openBlock(),e.createBlock(yn,{key:5,"layer-id":(ot=ee.config)==null?void 0:ot.layer,onClose:ne},null,8,["layer-id"])):ee.type==="dataset"||ee.type==="attribute"?(e.openBlock(),e.createBlock(kr,{key:6,config:ee.config},null,8,["config"])):ee.type==="search"?(e.openBlock(),e.createBlock(wr,{key:7,config:ee.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,ee.visible!==!1]])}),128))])])):e.createCommentVNode("",!0),L.value[Te].bottom.length?(e.openBlock(),e.createElementBlock("div",xh,[e.createElementVNode("div",bh,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value[Te].bottom,ee=>{var ve,$e,Oe,tt,Ue,nt,Ke,ot;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:ee.id||ee.type,class:"map-overlay__item"},[ee.type==="info"?(e.openBlock(),e.createBlock(gr,{key:0,title:((ve=ee.config)==null?void 0:ve.title)||ee.title||null,content:(($e=ee.config)==null?void 0:$e.content)||"",links:g.value,"map-name":d.value,"map-description":m.value},null,8,["title","content","links","map-name","map-description"])):ee.type==="catalog"?(e.openBlock(),e.createBlock(br,{key:1,api:((Oe=ee.config)==null?void 0:Oe.api)||null},null,8,["api"])):ee.type==="layers"?(e.openBlock(),e.createBlock(xr,{key:2,layers:W.value,onAction:Q[1]||(Q[1]=vt=>ne(vt.layerId)),config:ee.config},null,8,["layers","config"])):ee.type==="basemaps"?(e.openBlock(),e.createBlock(Bt,{key:3,layers:((tt=ee.config)==null?void 0:tt.layers)||null,"default-layer":((Ue=ee.config)==null?void 0:Ue.default)||null,title:ee.title||((nt=ee.config)==null?void 0:nt.title)||null},null,8,["layers","default-layer","title"])):ee.type==="legend"?(e.openBlock(),e.createBlock(hn,{key:4,items:((Ke=ee.config)==null?void 0:Ke.items)||[]},null,8,["items"])):ee.type==="filters"&&le.value(ee)?(e.openBlock(),e.createBlock(yn,{key:5,"layer-id":(ot=ee.config)==null?void 0:ot.layer,onClose:ne},null,8,["layer-id"])):ee.type==="dataset"||ee.type==="attribute"?(e.openBlock(),e.createBlock(kr,{key:6,config:ee.config},null,8,["config"])):ee.type==="search"?(e.openBlock(),e.createBlock(wr,{key:7,config:ee.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,ee.visible!==!1]])}),128))])])):e.createCommentVNode("",!0)],2)),64))]),e.createVNode(sr),e.createVNode(ur,{"map-id":c.value},null,8,["map-id"])],64)):e.createCommentVNode("",!0)]}),_:1},512),s.value?(e.openBlock(),e.createElementBlock("div",kh,"Завантаження карти…")):u.value?(e.openBlock(),e.createElementBlock("div",wh,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0)],4))}}),[["__scopeId","data-v-73d647f9"]]),_h={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},Eh={class:"rounded-xl border border-gray-200 overflow-hidden bg-white"},Nh=e.defineComponent({__name:"MapPreview",props:{id:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("section",_h,[o[0]||(o[0]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"}," Попередній перегляд карти ",-1)),e.createElementVNode("div",Eh,[e.createVNode(qt,{class:"w-full h-[360px]",id:t.id},null,8,["id"])])]))}}),Bh={class:"bg-white rounded-lg shadow-xl w-full max-w-4xl flex flex-col h-[80vh] m-4"},Vh={class:"flex items-center justify-between px-6 py-4 border-b border-gray-200"},Ch={key:0,class:"absolute top-0 left-0 right-0 bg-red-100 text-red-700 text-sm px-4 py-2 z-10 border-b border-red-200"},$h={class:"flex-1 overflow-hidden relative bg-[#fffffe]"},vh={class:"px-6 py-4 border-t border-gray-200 flex justify-end gap-3"},Sh=["disabled"],Lh=e.defineComponent({__name:"ConfigEditor",props:{modelValue:{}},emits:["update:modelValue","save"],setup(t,{emit:n}){const o=t,l=n,r=e.ref(""),a=e.ref(null);e.watch(()=>o.modelValue,u=>{if(u){try{r.value=JSON.stringify(u,null,2)}catch{r.value="{}"}a.value=null}},{immediate:!0}),e.watch(r,u=>{if(!u.trim()){a.value=null;return}try{JSON.parse(u),a.value=null}catch(p){a.value=p.message}}),e.watch(()=>o.modelValue,()=>{setTimeout(()=>{const{monaco:u}=window;if(u&&u.editor){const p=u.editor.getEditors();p.length>0&&p[p.length-1].updateOptions({wordWrap:"on"})}},300)},{immediate:!0});function i(){l("update:modelValue",null),r.value="",a.value=null}function s(){if(!a.value)try{const u=JSON.parse(r.value);l("save",u),i()}catch(u){console.error("Failed to parse JSON",u)}}return(u,p)=>t.modelValue!==null?(e.openBlock(),e.createElementBlock("div",{key:0,class:"fixed inset-0 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:e.withModifiers(i,["self"])},[e.createElementVNode("div",Bh,[e.createElementVNode("div",Vh,[p[1]||(p[1]=e.createElementVNode("h3",{class:"text-lg font-semibold text-gray-800"}," Редагування конфігурації (JSON) ",-1)),e.createElementVNode("button",{onClick:i,class:"text-gray-500 hover:text-gray-700 transition-colors"},[e.createVNode(e.unref(yt),{size:20})])]),a.value?(e.openBlock(),e.createElementBlock("div",Ch," Помилка JSON: "+e.toDisplayString(a.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",$h,[e.createVNode(zt,{modelValue:r.value,"onUpdate:modelValue":p[0]||(p[0]=w=>r.value=w),language:"json",theme:"vs-light",class:"w-full h-full"},null,8,["modelValue"])]),e.createElementVNode("div",vh,[e.createElementVNode("button",{onClick:i,class:"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 transition-colors"}," Скасувати "),e.createElementVNode("button",{onClick:s,disabled:!!a.value,class:"px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"}," Зберегти ",8,Sh)])])])):e.createCommentVNode("",!0)}}),Ah={key:0,class:"text-center py-8 text-gray-500 border rounded-lg bg-gray-50"},Th={key:1,class:"rounded-lg border border-gray-200 overflow-hidden"},Mh={class:"w-full text-sm"},Fh={class:"divide-y divide-gray-200"},Dh={class:"px-4 py-3"},Ih=["onUpdate:modelValue","onChange"],jh=["value"],zh={class:"px-4 py-3"},Oh=["onUpdate:modelValue","onChange"],Rh=["value"],Ph={class:"px-4 py-3 text-center"},Uh=["checked","onChange"],qh={class:"px-4 py-3"},Hh={key:0,class:"flex items-center gap-2"},Wh=["onClick"],Yh=["onClick"],Zh={key:1},Gh=["onClick"],Kh={class:"px-4 py-3 text-right"},Xh=["onClick"],Jh=e.defineComponent({__name:"WidgetSettings",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:n}){const o=t,l=n,r=["catalog","legend","basemaps","info","layers","dataset","filters","search"],a=["top-left","top-right","bottom-left","bottom-right"],i=e.ref(null),s=e.ref(-1),u=e.computed(()=>o.modelValue||[]);function p(){const f=[...u.value,{type:"info",position:"top-left",visible:!0,config:{}}];l("update:modelValue",f)}function w(f){ue.confirm({title:"Видалити віджет?",message:"Ви впевнені, що хочете видалити цей віджет?",type:"warning",onConfirm:()=>{const k=u.value.filter((E,T)=>T!==f);l("update:modelValue",k)}})}function c(f,k,E){const T=[...u.value];T[f]={...T[f],[k]:E},l("update:modelValue",T)}function y(f){return!!f&&Object.keys(f).length>0}function d(f,k){s.value=f,i.value=k||{}}function m(f){d(f,{})}function g(f){ue.confirm({title:"Видалити конфігурацію?",message:"Ви впевнені, що хочете видалити конфігурацію цього віджета?",type:"warning",onConfirm:()=>{c(f,"config",void 0)}})}function h(f){s.value>-1&&c(s.value,"config",f),i.value=null,s.value=-1}return(f,k)=>{var E;return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:"flex items-center justify-between mb-4"},[k[1]||(k[1]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800"},"Віджети",-1)),e.createElementVNode("button",{onClick:p,class:"px-3 py-1.5 text-sm bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors"}," + Додати віджет ")]),(E=u.value)!=null&&E.length?(e.openBlock(),e.createElementBlock("div",Th,[e.createElementVNode("table",Mh,[k[2]||(k[2]=e.createElementVNode("thead",{class:"bg-gray-50 border-b border-gray-200"},[e.createElementVNode("tr",null,[e.createElementVNode("th",{class:"px-4 py-3 text-left font-medium text-gray-700 w-1/4"},"Тип"),e.createElementVNode("th",{class:"px-4 py-3 text-left font-medium text-gray-700 w-1/4"},"Розташування"),e.createElementVNode("th",{class:"px-4 py-3 text-center font-medium text-gray-700 w-24"},"Видимість"),e.createElementVNode("th",{class:"px-4 py-3 text-left font-medium text-gray-700"},"Конфігурація"),e.createElementVNode("th",{class:"px-4 py-3 text-right font-medium text-gray-700 w-24"},"Дії")])],-1)),e.createElementVNode("tbody",Fh,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(T,j)=>(e.openBlock(),e.createElementBlock("tr",{key:j,class:"hover:bg-gray-50"},[e.createElementVNode("td",Dh,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":B=>T.type=B,onChange:B=>c(j,"type",T.type),class:"w-full px-2 py-1.5 bg-white border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-blue-500 text-gray-700"},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,B=>e.createElementVNode("option",{key:B,value:B},e.toDisplayString(B),9,jh)),64))],40,Ih),[[e.vModelSelect,T.type]])]),e.createElementVNode("td",zh,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":B=>T.position=B,onChange:B=>c(j,"position",T.position),class:"w-full px-2 py-1.5 bg-white border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-blue-500 text-gray-700"},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,B=>e.createElementVNode("option",{key:B,value:B},e.toDisplayString(B),9,Rh)),64))],40,Oh),[[e.vModelSelect,T.position]])]),e.createElementVNode("td",Ph,[e.createElementVNode("input",{type:"checkbox",checked:T.visible!==!1,onChange:B=>c(j,"visible",B.target.checked),class:"w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500"},null,40,Uh)]),e.createElementVNode("td",qh,[y(T.config)?(e.openBlock(),e.createElementBlock("div",Hh,[e.createElementVNode("button",{onClick:B=>d(j,T.config),class:"p-1 text-blue-600 hover:text-blue-800 hover:bg-blue-50 rounded transition-colors",title:"Редагувати конфігурацію"},[e.createVNode(e.unref(Zr),{size:16})],8,Wh),e.createElementVNode("button",{onClick:B=>g(j),class:"p-1 text-red-500 hover:text-red-700 hover:bg-red-50 rounded transition-colors",title:"Видалити конфігурацію"},[e.createVNode(e.unref(yt),{size:16})],8,Yh)])):(e.openBlock(),e.createElementBlock("div",Zh,[e.createElementVNode("button",{onClick:B=>m(j),class:"p-1 text-green-600 hover:text-green-800 hover:bg-green-50 rounded transition-colors",title:"Додати конфігурацію"},[e.createVNode(e.unref(Yt),{size:16})],8,Gh)]))]),e.createElementVNode("td",Kh,[e.createElementVNode("button",{onClick:B=>w(j),class:"p-1 text-gray-400 hover:text-red-500 transition-colors",title:"Видалити віджет"},[e.createVNode(e.unref(zn),{size:16})],8,Xh)])]))),128))])])])):(e.openBlock(),e.createElementBlock("div",Ah," Немає віджетів. Додайте перший віджет. ")),e.createVNode(Lh,{teleport:"#modal",modelValue:i.value,"onUpdate:modelValue":k[0]||(k[0]=T=>i.value=T),onSave:h},null,8,["modelValue"])])}}}),Qh={class:"relative min-h-svh flex-1 flex-col flex gap-4 bg-white p-8 overflow-y-auto"},e1={class:"max-w-6xl mx-auto w-full"},t1={class:"flex items-center justify-between mb-6"},n1={class:"mb-2 text-2xl font-semibold text-gray-900"},o1={class:"flex items-center gap-2"},r1=["disabled"],l1={key:0,class:"text-center py-12"},a1={class:"space-y-6"},i1={class:"space-y-6"},s1={class:"space-y-6"},c1=ae(e.defineComponent({__name:"MapSettings",setup(t){const n=be.useRouter(),o=be.useRoute(),l=e.ref(!0),r=e.ref(!1),a=e.ref([]),i=e.ref({}),s=[{name:"Загальна",id:"general"},{name:"Шари",id:"layers"},{name:"Віджети",id:"widgets"},{name:"Карта",id:"map"}],u=s.map(B=>B.id),p=B=>B?Array.isArray(B)?B[0]:B:null,w=(()=>{const B=p(o.query.tab);return B&&u.includes(B)?B:"general"})(),c=e.ref(w);e.watch(()=>o.query.tab,B=>{const V=p(B);V&&u.includes(V)&&c.value!==V&&(c.value=V)}),e.watch(c,B=>{o.query.tab!==B&&n.replace({query:{...o.query,tab:B}})});const y=e.ref({name:"",map_key:"",description:"",holder:"",image:"",keywords:[],center:null,zoom:11,widgets:[],layers:[]}),d=e.computed({get:()=>(y.value.layers||[]).map(B=>B.id||B),set:B=>{y.value.layers=B}}),m=e.computed(()=>a.value.map(B=>({id:B.id,text:B.name||B.id}))),g=e.computed({get:()=>d.value.map(B=>{const V=m.value.find(v=>v.id===B);return V?V.text:B}),set:B=>{const V=B.map(v=>{const S=m.value.find(M=>M.text===v);return S?S.id:null}).filter(v=>v!==null);d.value=V}}),h=e.computed(()=>{const B=y.value.center;if(!Array.isArray(B)||B.length<2)return"Не задано";const[V,v]=B;return V===void 0||v===void 0||V===null||v===null||Number.isNaN(Number(V))||Number.isNaN(Number(v))?"Не задано":`Lng ${Number(V).toFixed(6)}, Lat ${Number(v).toFixed(6)}`}),f=e.computed(()=>{const B=y.value.zoom;if(B==null||B==="")return"Не задано";const V=Number(B);return Number.isNaN(V)?"Не задано":V.toFixed(2)}),k=[{name:"name",type:"text",label:"Назва",col:6,validators:["required"]},{name:"map_key",type:"text",label:"Унікальний ключ",col:6,validators:["required"]},{name:"description",type:"textarea",label:"Опис",col:12},{name:"holder",type:"text",label:"Власник/Утримувач/Відповідальний",col:6},{name:"keywords",type:"Tags",label:"Ключові слова",placeholder:"Введіть тег та натисніть Enter",col:6},{name:"center",type:"array",label:"Центр",inputType:"number",limit:2,count:2,col:6},{name:"zoom",type:"number",label:"Зум",col:6,validators:["required"]},{name:"is_public",type:"switcher",label:"Чи публічна карта?",col:6,data:"yes_no"},{name:"is_active",type:"switcher",label:"Чи активна?",col:6,data:"yes_no"},{name:"image",type:"File",label:"Фото",col:12}];async function E(){try{const B=await fetch("/api/gis-layer-list");B.ok&&(a.value=await B.json())}catch(B){console.error("Failed to load available layers:",B)}}async function T(){try{const V=await(await fetch(`/api/gis-map/${o.params.id}?original=1`)).json();y.value={...V,keywords:V.keywords||[],center:V.center??null,widgets:Array.isArray(V.widgets)?V.widgets:[],layers:(V.layers||[]).map(v=>v.id||v)}}catch(B){console.error("Failed to load map:",B),ue.notify({type:"error",title:"Помилка",message:"Не вдалося завантажити карту"})}finally{l.value=!1}}async function j(){var V,v;const B=(v=(V=i.value)==null?void 0:V.validate)==null?void 0:v.call(V);if(B){ue.notify({type:"warning",title:"Валідація",message:Object.entries(B).map(([S,M])=>`${S}: ${M}`).join(`
164
+ `)});return}r.value=!0;try{const S=JSON.parse(JSON.stringify(y.value));if(S.zoom=Number(S.zoom),Array.isArray(S.center)&&(S.center.every(I=>I==null||I===""||I===0)||S.center.length===0)&&(S.center=null),delete S.created_at,delete S.updated_at,delete S.created_by,delete S.updated_by,delete S.history,delete S.maps,!(await fetch(`/api/gis-map/${o.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(S)})).ok)throw new Error("Save failed");ue.notify({type:"success",title:"Успіх",message:"Збережено!"})}catch(S){console.error("Save error:",S),ue.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти"})}finally{r.value=!1}}return e.onMounted(async()=>{await E(),T()}),(B,V)=>(e.openBlock(),e.createElementBlock("main",Qh,[e.createElementVNode("div",e1,[e.createElementVNode("div",t1,[e.createElementVNode("div",null,[e.createElementVNode("h1",n1,e.toDisplayString(y.value.name||"Налаштування карти"),1),V[7]||(V[7]=e.createElementVNode("p",{class:"text-gray-600"},"Редагування параметрів карти",-1))]),e.createElementVNode("div",o1,[e.createElementVNode("a",{onClick:V[0]||(V[0]=v=>e.unref(n).back()),class:"inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50"}," Повернутися "),e.createElementVNode("button",{onClick:j,disabled:r.value,class:"inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 disabled:opacity-50"},e.toDisplayString(r.value?"Збереження...":"Зберегти"),9,r1)])]),l.value?(e.openBlock(),e.createElementBlock("div",l1,[...V[8]||(V[8]=[e.createElementVNode("p",{class:"text-gray-500"},"Завантаження...",-1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(ng,{tabs:s,activeTab:c.value,"onUpdate:activeTab":V[1]||(V[1]=v=>c.value=v)},null,8,["activeTab"]),e.withDirectives(e.createElementVNode("div",a1,[e.createVNode(rg,{schema:k,loading:l.value,modelValue:y.value,"onUpdate:modelValue":V[2]||(V[2]=v=>y.value=v),form:i.value,"onUpdate:form":V[3]||(V[3]=v=>i.value=v)},null,8,["loading","modelValue","form"])],512),[[e.vShow,c.value==="general"]]),e.withDirectives(e.createElementVNode("div",i1,[e.createVNode(ag,{options:m.value,layerIDs:d.value,"onUpdate:layerIDs":V[4]||(V[4]=v=>d.value=v),layerNames:g.value,"onUpdate:layerNames":V[5]||(V[5]=v=>g.value=v)},null,8,["options","layerIDs","layerNames"])],512),[[e.vShow,c.value==="layers"]]),e.withDirectives(e.createVNode(Jh,{modelValue:y.value.widgets,"onUpdate:modelValue":V[6]||(V[6]=v=>y.value.widgets=v)},null,8,["modelValue"]),[[e.vShow,c.value==="widgets"]]),e.withDirectives(e.createElementVNode("div",s1,[e.createVNode(Nh,{"center-display":h.value,"zoom-display":f.value,"layer-names":g.value,id:e.unref(o).params.id},null,8,["center-display","zoom-display","layer-names","id"])],512),[[e.vShow,c.value==="map"]])],64))])]))}}),[["__scopeId","data-v-75f83258"]]),d1={class:"flex-1 overflow-y-auto p-0"},u1={class:"pt-0 mt-0"},p1={key:0,class:"flex items-center justify-center py-12"},m1={key:1,class:"bg-red-50 border border-red-200 text-red-700 rounded-lg p-4 text-sm"},f1={key:2,class:"text-center py-12 text-gray-500"},g1={key:3,class:"grid grid-cols-1 lg:grid-cols-2 gap-4 max-h-[calc(100vh-400px)] md:max-h-[calc(100vh-370px)] lg:max-h-[calc(100vh-280px)]"},y1=["onClick"],h1={class:"flex items-start justify-between"},x1={class:"flex-1"},b1={class:"text-base font-semibold text-gray-900 mb-1"},k1={class:"flex items-center gap-2 mb-3"},w1=["onClick"],_1={class:"relative"},E1=["onClick"],N1={key:0,class:"absolute left-full top-1/2 -translate-y-1/2 ml-2 px-2 py-1 bg-white text-gray-600 text-xs rounded shadow-sm z-10 whitespace-nowrap animate-fade-in-out border border-gray-200/70"},B1={class:"flex items-center gap-2"},V1={class:"text-xs text-gray-500"},C1=["onClick"],$1={class:"px-6 py-3 border-t border-gray-200 custom-pagination bg-gray-100"},_n=12,v1=ae(e.defineComponent({__name:"DictionariesGrid",props:{search:{},type:{}},emits:["update:counts"],setup(t,{expose:n,emit:o}){const l=t,r=o,a=be.useRouter(),i=be.useRoute(),s=e.ref(Number(i.query.page)||1),u=e.ref(!1),p=e.ref(0),w=e.ref([]),c=e.computed(()=>{const S=(s.value-1)*_n,M=S+_n;return w.value.slice(S,M)}),y=e.ref(!0),d=e.ref(null),m=e.ref(null),g=e.ref(null);let h=null,f=null;const k=(S="",M="")=>{const R=new URLSearchParams,I=S.trim();I&&R.set("search",I);const q=(M||"").trim();q&&R.set("type",q);const z=R.toString();return z?`/api/user-cls?${z}`:"/api/user-cls"},E=async(S="",M="")=>{try{y.value=!0,d.value=null;const R=k(S,M),I=await fetch(R);if(!I.ok)throw new Error(`HTTP error: ${I.status}`);const q=await I.json();if(w.value=q.data,!S.trim())p.value=q.data.length;else if(p.value===0){const z=await fetch(k("",M));if(z.ok){const H=await z.json();p.value=H.data.length}}r("update:counts",{filtered:w.value.length,total:p.value})}catch(R){d.value=R instanceof Error?R.message:"Failed to load classifiers",console.error("Error fetching classifiers:",R)}finally{y.value=!1}};e.onMounted(()=>{u.value=!0,E(l.search,l.type??"")}),e.watch(()=>[l.search,l.type],([S,M])=>{h&&clearTimeout(h),h=setTimeout(()=>{E(S,M??""),s.value=1},300)});const T=S=>{a.push({name:"classifier-detail",params:{name:S.name}})},j=S=>{m.value={name:S.name,description:S.description,alias:S.alias}},B=()=>{E(l.search,l.type??"")},V=async S=>{try{await navigator.clipboard.writeText(S),g.value=S,f&&clearTimeout(f),f=setTimeout(()=>{g.value=null},500)}catch(M){console.error("Failed to copy text: ",M)}};n({refetch:B});const v=S=>{s.value=S,a.replace({query:{...i.query,page:String(S)}})};return(S,M)=>(e.openBlock(),e.createElementBlock("main",d1,[e.createElementVNode("div",u1,[y.value?(e.openBlock(),e.createElementBlock("div",p1,[e.createVNode(e.unref(Dn),{width:32,height:32,"stroke-width":2,class:"text-sky-600 animate-spin"})])):d.value?(e.openBlock(),e.createElementBlock("div",m1,e.toDisplayString(d.value),1)):w.value.length===0?(e.openBlock(),e.createElementBlock("div",f1," Нічого не знайдено ")):e.createCommentVNode("",!0),w.value.length>0?(e.openBlock(),e.createElementBlock("div",g1,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(R,I)=>(e.openBlock(),e.createElementBlock("div",{key:I,class:"bg-white rounded-lg shadow-sm border border-gray-200 p-5 hover:border-sky-300 hover:shadow-md transition-all cursor-pointer relative",onClick:q=>T(R)},[e.createElementVNode("div",h1,[e.createElementVNode("div",x1,[e.createElementVNode("h3",b1,e.toDisplayString(R.description),1),e.createElementVNode("div",k1,[e.createElementVNode("p",{onClick:e.withModifiers(q=>V(R.name),["stop"]),class:"text-sm text-gray-600 mb-0 hover:border-b hover:border-gray-300"},e.toDisplayString(R.name),9,w1),e.createElementVNode("div",_1,[e.createElementVNode("button",{onClick:e.withModifiers(q=>V(R.name),["stop"]),class:"pt-1 mt-0.5 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded transition-colors"},[e.createVNode(e.unref(Ur),{width:14,height:14,"stroke-width":2})],8,E1),g.value===R.name?(e.openBlock(),e.createElementBlock("div",N1," Copied ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",B1,[e.createElementVNode("div",V1,e.toDisplayString(R.count)+" записів ",1)])]),e.createElementVNode("button",{class:"px-3 py-1.5 text-xs font-medium text-sky-600 hover:bg-sky-50 rounded-lg transition-colors",onClick:e.withModifiers(q=>j(R),["stop"])}," Редагувати ",8,C1)]),e.createElementVNode("button",{class:"absolute bottom-4 right-3 pb-1 mr-4 text-gray-400 hover:text-red-600 hover:bg-red-50 rounded transition-colors",onClick:M[0]||(M[0]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(zn),{width:16,height:16,"stroke-width":2,class:""})])],8,y1))),128))])):e.createCommentVNode("",!0)]),u.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:"#pagination"},[e.createElementVNode("div",$1,[e.createVNode(e.unref(ue.VsPagination),{total:w.value.length,page:s.value,"page-size":_n,showPageSizes:!1,pageRange:10,view:"button",color:"gray","onUpdate:page":v,onPageChange:v},null,8,["total","page"])])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-6f5da01d"]]),S1={class:"flex flex-col 2xl:flex-row 2xl:items-center 2xl:justify-between"},L1={class:""},A1={class:"text-2xl font-bold mb-2 flex items-center gap-2"},T1={key:0,class:"text-sm font-normal text-gray-500 mt-2 ml-1"},M1={class:"flex flex-col gap-3 mt-4 lg:mt-5 lg:flex-row lg:items-center"},F1={class:"w-full md:w-auto"},D1=["value"],I1={class:"relative w-full lg:w-[16rem]"},j1={class:"bg-white focus:bg-white focus:border-blue-500 focus:ring-blue-500 rounded-lg"},z1={class:"absolute bottom-2/4 translate-y-2/4 cursor-pointer left-3"},O1=["value"],R1=e.defineComponent({__name:"DictionariesHeader",props:{modelValue:{},filter:{default:""},counts:{}},emits:["update:modelValue","update:filter","refresh"],setup(t,{emit:n}){const o=t,l=n,r=i=>{const s=i.target.value;l("update:filter",s)},a=e.ref(!1);return(i,s)=>(e.openBlock(),e.createElementBlock("div",S1,[e.createElementVNode("div",L1,[e.createElementVNode("h1",A1,[s[3]||(s[3]=e.createTextVNode(" Довідники ",-1)),t.counts&&t.counts.total>0?(e.openBlock(),e.createElementBlock("span",T1,e.toDisplayString(t.counts.filtered)+" / "+e.toDisplayString(t.counts.total),1)):e.createCommentVNode("",!0)]),s[4]||(s[4]=e.createElementVNode("p",{class:"text-sm opacity-60"}," Редагуйте довідники класифікаторів, що використовуються у вашій системі ",-1))]),e.createElementVNode("div",M1,[e.createElementVNode("div",F1,[s[6]||(s[6]=e.createElementVNode("label",{class:"sr-only",for:"dictionary-filter"},"Фільтр типу",-1)),e.createElementVNode("select",{id:"dictionary-filter",class:"w-full md:w-[140px] h-[38px] rounded-lg border border-stone-300 bg-white px-3 text-sm text-stone-800 focus:border-blue-500 focus:ring-blue-500 selection:border-blue-500 selection:text-white active:border-blue-500 active:text-white",value:o.filter,onChange:r},[...s[5]||(s[5]=[e.createElementVNode("option",{value:""},"Всі",-1),e.createElementVNode("option",{value:"cls"},"Довідники",-1),e.createElementVNode("option",{value:"select"},"Вибірки з БД",-1)])],40,D1)]),e.createElementVNode("div",I1,[e.createElementVNode("div",j1,[e.createElementVNode("div",z1,[e.createVNode(e.unref(In),{width:14,height:14,"stroke-width":2,class:"stroke-gray-500 transition-all"})]),e.createElementVNode("input",{type:"text",value:t.modelValue,placeholder:"Пошук за назвою довідника",class:"pl-9 pr-8 bg-white h-[38px] min-w-[100px] py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-300 text-sm text-stone-800 placeholder:text-stone-400 focus:border-2 focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500 rounded-lg",onInput:s[0]||(s[0]=u=>i.$emit("update:modelValue",u.target.value))},null,40,O1),t.modelValue?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute top-1/2 -translate-y-1/2 right-3 cursor-pointer text-gray-400 hover:text-gray-600",onClick:s[1]||(s[1]=u=>i.$emit("update:modelValue",""))},[e.createVNode(e.unref(yt),{width:14,height:14,"stroke-width":2})])):e.createCommentVNode("",!0)])]),e.createElementVNode("button",{onClick:s[2]||(s[2]=u=>a.value=!0),class:"w-full md:w-auto flex items-center justify-center gap-2 px-4 py-2 bg-sky-600 text-white rounded-lg hover:bg-sky-700 transition-colors text-sm font-medium"},[e.createVNode(e.unref(Yt),{width:16,height:16,"stroke-width":2,class:"shrink-0"}),s[7]||(s[7]=e.createTextVNode(" Додати ",-1))])])]))}}),P1={class:"bg-white rounded-lg shadow-sm border border-gray-200 overflow-x-auto"},U1={key:0,class:"flex items-center justify-center py-12"},q1={key:1,class:"bg-red-50 border border-red-200 text-red-700 rounded-lg p-4 text-sm m-4"},H1={key:2,class:"text-center py-12 text-gray-500"},W1={key:3,class:"w-full min-w-[640px] divide-y divide-gray-200"},Y1={class:"bg-gray-50 border-b border-gray-200"},Z1={class:"divide-y divide-gray-200"},G1={class:"px-4 py-3 w-1/12"},K1={class:"px-4 py-3 text-sm font-medium text-gray-900 w-2/12"},X1={class:"px-4 py-3 text-sm text-gray-600 font-mono"},J1=e.defineComponent({__name:"DetailsTable",props:{classifierName:{},search:{}},setup(t,{expose:n}){const o=t,l=[{key:"color",label:"Колір",width:"w-2/12",align:"text-left"},{key:"text",label:"Назва",width:"w-6/12",align:"text-left"},{key:"id",label:"Код",width:"w-4/12",align:"text-left"}],r=e.ref([]),a=e.ref(!0),i=e.ref(null),s=e.computed(()=>{var c;if(!((c=o.search)!=null&&c.trim()))return r.value;const w=o.search.toLowerCase().trim();return r.value.filter(y=>{var d,m;return((d=y.text)==null?void 0:d.toLowerCase().includes(w))||((m=y.id)==null?void 0:m.toLowerCase().includes(w))})}),u=async w=>{try{a.value=!0,i.value=null;const c=await fetch(`/api/suggest/${encodeURIComponent(w)}`);if(!c.ok)throw new Error(`HTTP error: ${c.status}`);const y=await c.json();r.value=y.data}catch(c){i.value=c instanceof Error?c.message:"Failed to load items",console.error("Error fetching suggest items:",c)}finally{a.value=!1}};return e.onMounted(()=>{o.classifierName&&u(o.classifierName)}),e.watch(()=>o.classifierName,w=>{w&&u(w)}),n({refetch:()=>{u(o.classifierName)}}),(w,c)=>(e.openBlock(),e.createElementBlock("div",P1,[a.value?(e.openBlock(),e.createElementBlock("div",U1,[e.createVNode(e.unref(Dn),{width:32,height:32,"stroke-width":2,class:"text-sky-600 animate-spin"})])):i.value?(e.openBlock(),e.createElementBlock("div",q1,e.toDisplayString(i.value),1)):r.value.length===0?(e.openBlock(),e.createElementBlock("div",H1," Записи відсутні ")):(e.openBlock(),e.createElementBlock("table",W1,[e.createElementVNode("thead",Y1,[e.createElementVNode("tr",null,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,y=>e.createElementVNode("th",{key:y.key,class:e.normalizeClass(["px-4 py-3 text-xs font-semibold text-gray-900",[y.width,y.align]])},e.toDisplayString(y.label),3)),64))])]),e.createElementVNode("tbody",Z1,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,y=>(e.openBlock(),e.createElementBlock("tr",{key:y.id,class:"hover:bg-gray-50 transition-colors"},[e.createElementVNode("td",G1,[e.createElementVNode("div",{class:"w-6 h-6 rounded border border-gray-300",style:e.normalizeStyle({backgroundColor:y.color})},null,4)]),e.createElementVNode("td",K1,e.toDisplayString(y.text),1),e.createElementVNode("td",X1,e.toDisplayString(y.id),1)]))),128))])]))]))}}),Q1={class:"space-y-6 flex-1 overflow-y-auto p-0"},ex={class:"flex items-center gap-2 text-sm text-gray-600 mb-4"},tx={class:"text-gray-900"},nx={class:"flex items-start justify-between mb-6"},ox={class:"flex-1 mr-4"},rx={key:0,class:"flex items-center gap-2 group"},lx={class:"text-2xl font-bold text-gray-900"},ax={key:1,class:"flex items-center gap-2"},ix=["disabled"],sx=["disabled"],cx={class:"text-sm text-gray-500 mt-1"},dx={class:"flex items-center gap-3"},ux={class:"bg-white rounded-lg shadow-sm border border-gray-200 p-4 mb-4"},px={class:"relative max-w-md"},mx={class:"vs-form-text relative w-full border-transparent text-sm focus:bg-white focus:border-blue-500 focus:ring-blue-500 rounded-sm"},fx={class:"absolute bottom-2/4 translate-y-2/4 cursor-pointer left-3"},gx=e.defineComponent({__name:"DictionaryDetails",setup(t){const n=be.useRouter(),o=be.useRoute(),l=e.computed(()=>o.params.name),r=e.ref(!1),a=e.ref(null),i=e.ref(null),s=e.ref(""),u=e.ref(""),p=e.ref(""),w=e.ref(!1),c=e.ref(!1),y=e.ref(null),d=async()=>{var E;try{const T=await fetch(`/api/user-cls?name=${encodeURIComponent(l.value)}`);if(!T.ok)return;const B=(E=(await T.json()).data)==null?void 0:E[0];B&&(u.value=B.description||"")}catch(T){console.error("Error fetching classifier details:",T)}},m=()=>{p.value=u.value,w.value=!0,e.nextTick(()=>{var E;(E=y.value)==null||E.focus()})},g=()=>{w.value=!1,p.value=""},h=async()=>{try{c.value=!0;const j=(await(await fetch(`/api/suggest/${encodeURIComponent(l.value)}`)).json()).data||[],B={name:l.value,description:p.value.trim()||null,data:j},V=await fetch(`/api/user-cls/${encodeURIComponent(l.value)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(B)});if(!V.ok)throw new Error(`HTTP error: ${V.status}`);u.value=p.value,w.value=!1}catch(E){console.error("Error saving description:",E)}finally{c.value=!1}};e.onMounted(()=>{d()}),e.watch(l,()=>{d()});const f=()=>{a.value=null,r.value=!0},k=E=>{a.value=E,r.value=!0};return(E,T)=>(e.openBlock(),e.createElementBlock("div",Q1,[e.createElementVNode("div",null,[e.createElementVNode("div",ex,[e.createElementVNode("button",{onClick:T[0]||(T[0]=j=>e.unref(n).back()),class:"text-sky-600 hover:text-sky-500 transition-colors"}," Довідники "),T[4]||(T[4]=e.createElementVNode("span",{class:"text-gray-400"},"/",-1)),e.createElementVNode("span",tx,e.toDisplayString(l.value),1)]),e.createElementVNode("div",nx,[e.createElementVNode("div",ox,[w.value?(e.openBlock(),e.createElementBlock("div",ax,[e.withDirectives(e.createElementVNode("input",{ref_key:"editInputRef",ref:y,"onUpdate:modelValue":T[1]||(T[1]=j=>p.value=j),type:"text",class:"text-2xl font-bold text-gray-900 border-b-2 border-sky-500 focus:outline-none bg-transparent w-full",onKeydown:[e.withKeys(h,["enter"]),e.withKeys(g,["esc"])],placeholder:"Введіть опис"},null,544),[[e.vModelText,p.value]]),e.createElementVNode("button",{onClick:h,disabled:c.value,class:"p-1.5 text-green-600 hover:bg-green-50 rounded transition-colors disabled:opacity-50"},[e.createVNode(e.unref(Or),{width:20,height:20,"stroke-width":2})],8,ix),e.createElementVNode("button",{onClick:g,disabled:c.value,class:"p-1.5 text-gray-400 hover:text-red-500 hover:bg-red-50 rounded transition-colors"},[e.createVNode(e.unref(yt),{width:20,height:20,"stroke-width":2})],8,sx)])):(e.openBlock(),e.createElementBlock("div",rx,[e.createElementVNode("h1",lx,e.toDisplayString(u.value),1),e.createElementVNode("button",{onClick:m,class:"opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-sky-600 transition-all rounded hover:bg-sky-50",title:"Редагувати опис"},[e.createVNode(e.unref(jn),{width:18,height:18,"stroke-width":2})])])),e.createElementVNode("p",cx,e.toDisplayString(l.value),1)]),e.createElementVNode("div",dx,[e.createElementVNode("button",{onClick:f,class:"flex items-center gap-2 px-4 py-2 bg-sky-600 text-white rounded-lg hover:bg-sky-700 transition-colors text-sm font-medium"},[e.createVNode(e.unref(Yt),{width:16,height:16,"stroke-width":2,class:"shrink-0"}),T[5]||(T[5]=e.createTextVNode(" Додати запис ",-1))]),e.createElementVNode("button",{onClick:T[2]||(T[2]=j=>e.unref(n).back()),class:"px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors text-gray-700 text-sm font-medium"}," Назад ")])])]),e.createElementVNode("div",ux,[e.createElementVNode("div",px,[e.createElementVNode("div",mx,[e.createElementVNode("div",fx,[e.createVNode(e.unref(In),{width:18,height:18,"stroke-width":2,class:"stroke-gray-400 transition-all"})]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":T[3]||(T[3]=j=>s.value=j),type:"text",placeholder:"Пошук за назвою або описом...",class:"pl-9 bg-white h-[38px] min-w-[100px] py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-200 text-sm text-stone-800 placeholder:text-stone-400 focus:border-2 focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500 rounded-lg"},null,512),[[e.vModelText,s.value]])])])]),e.createVNode(J1,{ref_key:"detailsTableRef",ref:i,"classifier-name":l.value,search:s.value,onEdit:k},null,8,["classifier-name","search"])]))}}),yx={class:"flex-col justify-between h-full"},hx={class:"classifiers-component space-y-6 p-8 pt-2 max-w-[90%] mx-auto h-[calc(100vh-95px)]"},xx=e.defineComponent({__name:"index",setup(t){const n=be.useRoute(),o=e.ref(""),l=e.ref(""),r=e.ref(null),a=e.ref({filtered:0,total:0}),i=u=>{a.value=u},s=()=>{var u;(u=r.value)==null||u.refetch()};return(u,p)=>(e.openBlock(),e.createElementBlock("div",yx,[e.createElementVNode("div",hx,[e.unref(n).params.name?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(R1,{key:0,modelValue:o.value,"onUpdate:modelValue":p[0]||(p[0]=w=>o.value=w),filter:l.value,"onUpdate:filter":p[1]||(p[1]=w=>l.value=w),counts:a.value,onRefresh:s},null,8,["modelValue","filter","counts"])),e.unref(n).params.name?(e.openBlock(),e.createBlock(gx,{key:2})):(e.openBlock(),e.createBlock(v1,{key:1,ref_key:"gridRef",ref:r,search:o.value,type:l.value,"onUpdate:counts":i},null,8,["search","type"]))]),p[2]||(p[2]=e.createElementVNode("div",{id:"pagination",class:"bg-gray-100"},null,-1))]))}});function bx(t){t.component("MapCustom",qt)}xe.CartoCSS=J0,xe.Classifiers=xx,xe.MapSettings=c1,xe.MapWidget=qt,xe.Raster=p0,xe.Register=Ks,xe.Service=Jm,xe.default=qt,xe.install=bx,xe.template1=Un,xe.template2=qn,xe.template3=Hn,xe.template4=Wn,xe.template5=Yn,Object.defineProperties(xe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));