@opengis/gis 0.2.43 → 0.2.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.js +6662 -6483
- package/dist/index.umd.cjs +53 -53
- package/module/gis/table/gis.cartocss.table.json +3 -2
- package/module/gis/table/gis.maps.table.json +10 -2
- package/module/gis/table/gis.ogc_service.table.json +1 -1
- package/module/gis/table/gis.rasters.table.json +3 -2
- package/module/gis/table/gis.registers.table.json +1 -0
- package/module/gis/table/gis.services.table.json +1 -0
- package/package.json +4 -4
- package/server/routes/gis/cartocss/add.cartocss.js +4 -4
- package/server/routes/gis/registers/funcs/handleRegistryRequest.js +116 -104
- package/server/routes/gis/registers/gis.registry.js +44 -50
- package/server/routes/map/maps/get.map.js +1 -1
package/dist/index.umd.cjs
CHANGED
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(fe,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):(fe=typeof globalThis<"u"?globalThis:fe||self,e(fe.MapCustom={},fe.Vue,fe.vueRouter,fe.openGIScore,fe.openGISform))})(this,(function(fe,e,we,re,xn){"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
|
|
6
|
+
*/const bn=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ul=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,o,l)=>l?l.toUpperCase():o.toLowerCase()),pl=t=>{const n=ul(t);return n.charAt(0).toUpperCase()+n.slice(1)},ml=(...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
|
|
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"};/**
|
|
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
|
|
16
|
+
*/const fl=({size:t,strokeWidth:n=2,absoluteStrokeWidth:o,color:l,iconNode:r,name:a,class:i,...s},{slots:g})=>e.h("svg",{...Vt,width:t||Vt.width,height:t||Vt.height,stroke:l||Vt.stroke,"stroke-width":o?Number(n)*24/Number(t):n,class:ml("lucide",...a?[`lucide-${bn(pl(a))}-icon`,`lucide-${bn(a)}`]:["lucide-icon"]),...s},[...r.map(y=>e.h(...y)),...g.default?[g.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:l})=>e.h(
|
|
21
|
+
*/const Ve=(t,n)=>(o,{slots:l})=>e.h(fl,{...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
|
|
26
|
+
*/const kn=Ve("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
|
|
31
|
+
*/const wn=Ve("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
|
|
36
|
+
*/const gl=Ve("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
|
|
41
|
+
*/const yl=Ve("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
|
|
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
|
|
46
|
+
*/const hl=Ve("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
|
|
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
|
|
51
|
+
*/const xl=Ve("contrast",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 18a6 6 0 0 0 0-12v12z",key:"j4l70d"}]]);/**
|
|
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
|
|
56
|
+
*/const bl=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"}]]);/**
|
|
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
|
|
61
|
+
*/const kl=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"}]]);/**
|
|
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
|
|
66
|
+
*/const wl=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"}]]);/**
|
|
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
|
|
71
|
+
*/const _l=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"}]]);/**
|
|
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
|
|
76
|
+
*/const El=Ve("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/**
|
|
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
|
|
81
|
+
*/const Nl=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"}]]);/**
|
|
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
|
|
86
|
+
*/const Vl=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"}]]);/**
|
|
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
|
|
91
|
+
*/const Bl=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"}]]);/**
|
|
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
|
|
97
|
-
`)});return}r.value[l.index]=c.value,a.value=!1};return(b,d)=>(e.openBlock(),e.createElementBlock("div",Nl,[e.createElementVNode("button",{onClick:d[0]||(d[0]=h=>{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(wl),{class:"w-4 h-4"})]),e.createElementVNode("button",{onClick:y,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(El),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{teleport:"#modal",size:"lg",visible:a.value,"onUpdate:visible":d[4]||(d[4]=h=>a.value=h),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",Vl,[e.createElementVNode("button",{type:"button",class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-black border border-gray-200 rounded-lg hover:bg-gray-100 duration-300",onClick:d[3]||(d[3]=h=>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:f}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(n),{values:c.value,"onUpdate:values":d[1]||(d[1]=h=>c.value=h),schema:t.scheme,form:i.value,"onUpdate:form":d[2]||(d[2]=h=>i.value=h)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),Cl={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")})}},vl={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"},wn=t=>vl[t==null?void 0:t.toLowerCase()]||"gray",$l=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],_n=t=>{var n;return $l.includes((n=t||"")==null?void 0:n.toLowerCase())},Q=(t,n)=>{const o=t.__vccOpts||t;for(const[l,r]of n)o[l]=r;return o},Sl={},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-type",__v0_r:"0,5361,5384"};function Ll(t,n){return e.openBlock(),e.createElementBlock("svg",Al,[...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 Fl=Q(Sl,[["render",Ll]]),Ml={},Tl={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 Dl(t,n){return e.openBlock(),e.createElementBlock("svg",Tl,[...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 Il=Q(Ml,[["render",Dl]]),jl={},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-calendar",__v0_r:"0,5361,5384"};function Ol(t,n){return e.openBlock(),e.createElementBlock("svg",zl,[...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 Pl=Q(jl,[["render",Ol]]),Rl={},Ul={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",Ul,[...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 Hl=Q(Rl,[["render",ql]]),Yl={},Wl={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 Zl(t,n){return e.openBlock(),e.createElementBlock("svg",Wl,[...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 Kl=Q(Yl,[["render",Zl]]),Gl={},Xl={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 Jl(t,n){return e.openBlock(),e.createElementBlock("svg",Xl,[...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 Ql=Q(Gl,[["render",Jl]]),er={},tr={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 nr(t,n){return e.openBlock(),e.createElementBlock("svg",tr,[...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 or=Q(er,[["render",nr]]),lr={},rr={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 ar(t,n){return e.openBlock(),e.createElementBlock("svg",rr,[...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 ir=Q(lr,[["render",ar]]),sr={},cr={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 dr(t,n){return e.openBlock(),e.createElementBlock("svg",cr,[...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 ur=Q(sr,[["render",dr]]),pr={},mr={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 fr(t,n){return e.openBlock(),e.createElementBlock("svg",mr,[...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 gr=Q(pr,[["render",fr]]),yr={},hr={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 xr(t,n){return e.openBlock(),e.createElementBlock("svg",hr,[...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 br=Q(yr,[["render",xr]]),kr={},wr={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 _r(t,n){return e.openBlock(),e.createElementBlock("svg",wr,[...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 Er=Q(kr,[["render",_r]]),Nr={},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-link2",__v0_r:"0,5361,5384"};function Br(t,n){return e.openBlock(),e.createElementBlock("svg",Vr,[...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 Cr=Q(Nr,[["render",Br]]),vr={},$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 Sr(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 Ar=Q(vr,[["render",Sr]]),Lr={},Fr={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 Mr(t,n){return e.openBlock(),e.createElementBlock("svg",Fr,[...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 Tr=Q(Lr,[["render",Mr]]),Dr={},Ir={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function jr(t,n){return e.openBlock(),e.createElementBlock("svg",Ir,[...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 En={IconText:Fl,IconNumber:Il,IconDate:Pl,IconDatetime:Hl,IconRichtext:Kl,IconBoolean:Ql,IconFile:or,IconImage:ir,IconArray:ur,IconSelect:gr,IconSlug:br,IconDatalist:Er,IconReference:Cr,IconReferenceList:Ar,IconBadge:Tr,IconCheck:Q(Dr,[["render",jr]])},zr={key:0,class:"flex items-center justify-between mb-6"},Or={class:"flex justify-end w-full"},Pr={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},Rr={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},Ur={class:"table-fixed w-full text-[13px]"},qr={class:"bg-gray-50 border-b border-gray-200"},Hr={key:0},Yr=["onDragstart","onDragover","onDrop"],Wr={key:0,class:"flex w-fit items-center gap-2 text-left"},Zr={class:"flex-1 min-w-0"},Kr={class:"font-medium text-gray-900 truncate"},Gr={class:"text-xs text-gray-500"},Xr={key:1,class:"flex items-center justify-center"},Jr={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"},Qr={key:1,class:"text-gray-500 text-sm"},ea={key:3},ta={class:"px-6 py-4"},na={key:1},oa=["colspan"],qe=Q(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(F){return F.charAt(0).toUpperCase()+F.slice(1)}const l=e.defineAsyncComponent(()=>import("@opengis/core").then(F=>F.VsModal)),r=e.defineAsyncComponent(()=>import("@opengis/form")),a=e.useModel(t,"modelValue"),i=t,c=e.ref({}),y=e.ref(!1),f=e.ref({}),b=e.ref(null),d=e.useSlots(),h=F=>!!(F&&d[F]);n({openCreateDialog:()=>{y.value=!0}});const p=e.computed({get(){return Array.isArray(a.value)?a.value:a.value&&Array.isArray(a.value.columns)?a.value.columns:[]},set(F){Array.isArray(a.value)?a.value=F:a.value&&Array.isArray(a.value.columns)&&(a.value.columns=F)}}),u=e.computed(()=>{const F=i.columnsScheme.map(M=>M.key);return F.includes("name")&&F.includes("label")||F.includes("id")&&F.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...i.columnsScheme.filter(M=>!["name","id","label"].includes(M.key))]:i.columnsScheme});function m(){y.value=!1,f.value={},b.value=null}async function g(){const F=c.value.validate();if(F){re.notify({type:"warning",title:"Validation",message:Object.entries(F).map(([M,L])=>`${M}: ${L}`).join(`
|
|
98
|
-
`)});return}if(b.value===null)p.value=[...p.value,{...f.value}];else{const M=[...p.value];M[b.value]={...f.value},p.value=M}m()}const s=e.ref(null),x=e.ref(null),_=F=>{s.value=F},D=F=>{x.value=F},P=F=>{if(s.value===null||s.value===F){s.value=null,x.value=null;return}const M=[...p.value],[L]=M.splice(s.value,1);M.splice(F,0,L),p.value=M,s.value=null,x.value=null};return(F,M)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",zr,[e.createElementVNode("div",Or,[e.createElementVNode("button",{onClick:M[0]||(M[0]=L=>y.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"},[...M[4]||(M[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",Pr,[e.createElementVNode("div",Rr,[e.createElementVNode("table",Ur,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,L=>(e.openBlock(),e.createElementBlock("col",{key:L.key,style:e.normalizeStyle(L.type==="main"?`width: ${t.mainColWidth}`:L.width?`width: ${L.width}`:"auto")},null,4))),128)),M[5]||(M[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",qr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,L=>(e.openBlock(),e.createElementBlock("th",{key:L.key,class:"px-6 py-4"},e.toDisplayString(L.label),1))),128)),M[6]||(M[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),p.value.length?(e.openBlock(),e.createElementBlock("tbody",Hr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(L,T)=>(e.openBlock(),e.createElementBlock("tr",{key:L.id||L.name||T,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":s.value===T,"border-t-2 border-b-2 border-blue-500 bg-blue-50":x.value===T}]),draggable:"true",onDragstart:z=>_(T),onDragover:e.withModifiers(z=>D(T),["prevent"]),onDrop:z=>P(T)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,z=>(e.openBlock(),e.createElementBlock("td",{key:z.key,class:"px-6 py-4 align-middle text-center"},[z.type==="main"?(e.openBlock(),e.createElementBlock("div",Wr,[M[7]||(M[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(_n)(L.format==="yes/no"?"check":L.format||L.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(wn)(L.format==="yes/no"?"check":L.format||L.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(L.format==="yes/no"?"icon-check":e.unref(En)["Icon"+o(L.format||L.type)]||e.unref(En).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",Zr,[e.withDirectives((e.openBlock(),e.createElementBlock("p",Kr,[e.createTextVNode(e.toDisplayString(L.name||L.id),1)])),[[e.unref(Cl)]]),e.createElementVNode("p",Gr,e.toDisplayString(L.label||L.ua||L.name||L.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[z.slot&&h(z.slot)?e.renderSlot(F.$slots,z.slot,{key:0,row:L,column:z,value:L[z.key],rowIndex:T},void 0,!0):z.type==="color"?(e.openBlock(),e.createElementBlock("div",Xr,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${L[z.key]}]`])},null,2)])):["format","type","meta"].includes(z.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[L[z.key]?(e.openBlock(),e.createElementBlock("span",Jr,e.toDisplayString(L[z.key]),1)):(e.openBlock(),e.createElementBlock("span",Qr,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",ea,e.toDisplayString(L[z.key]),1))],64))]))),128)),e.createElementVNode("td",ta,[e.createVNode(Bl,{columns:p.value,"onUpdate:columns":M[1]||(M[1]=z=>p.value=z),data:L,index:T,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,Yr))),128))])):(e.openBlock(),e.createElementBlock("tr",na,[e.createElementVNode("td",{colspan:u.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,oa)]))])])]),e.createVNode(e.unref(l),{teleport:"#modal",title:"Створити поле",size:"lg",visible:y.value,"onUpdate:visible":M[3]||(M[3]=L=>y.value=L)},{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:g,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(r),{ref_key:"form",ref:c,modelValue:f.value,"onUpdate:modelValue":M[2]||(M[2]=L=>f.value=L),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-0ede3461"]]),la={class:"p-4 text-[13px]"},ra={class:"grid grid-cols-2 gap-x-6 gap-y-2"},aa=["id","checked","onChange"],ia={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},sa={class:"font-medium text-gray-900 truncate"},ca={class:"text-xs text-gray-500"},da={class:"flex justify-end gap-2 p-4 border-t w-full"},tt=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(x=>x.VsModal)),c=e.computed(()=>Array.isArray(r.fields)?r.fields.filter(Boolean):[]),y=x=>(x==null?void 0:x.name)??(x==null?void 0:x.id)??(x==null?void 0:x.key)??(x==null?void 0:x.code)??(x==null?void 0:x.field)??(x==null?void 0:x.value)??"",f=x=>String(y(x)??"").trim(),b=x=>(x==null?void 0:x.title)??(x==null?void 0:x.label)??f(x),d=e.computed(()=>new Set(l.value.map(x=>String(x??"").trim()))),h=x=>d.value.has(f(x)),p=x=>{const _=f(x);if(!_)return;const D=new Set(d.value);D.has(_)?D.delete(_):D.add(_),l.value=Array.from(D)},u=e.computed(()=>r.confirmText||"Імпортувати"),m=e.computed(()=>r.cancelText||"Скасувати"),g=()=>{o.value=!1,a("cancel")},s=()=>{a("confirm"),o.value=!1};return(x,_)=>(e.openBlock(),e.createBlock(e.unref(i),{visible:o.value,"onUpdate:visible":_[0]||(_[0]=D=>o.value=D),teleport:"#modal",title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",da,[e.createElementVNode("button",{onClick:g,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(m.value),1),e.createElementVNode("button",{onClick:s,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(u.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",la,[e.createElementVNode("div",ra,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,D=>(e.openBlock(),e.createElementBlock("label",{key:f(D),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${f(D)}`,checked:h(D),onChange:P=>p(D)},null,40,aa),e.createElementVNode("div",ia,[e.unref(_n)(D.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(wn)(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",sa,e.toDisplayString(f(D)),1),e.createElementVNode("p",ca,e.toDisplayString(b(D)),1)])])]))),128))])])]),_:1},8,["visible","title"]))}});function nt(t){return t==null?"":String(t).trim()}function He(t){return nt((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 ot(t,n,o){const l=Array.isArray(t)?[...t]:[],r=Array.isArray(n)?n:[],{selectedKeys:a,resolveKey:i}=o,c=new Set;for(const d of a){const h=nt(d);h&&c.add(h)}if(c.size===0)return[];const y=d=>nt(i(d)),f=[],b=new Set;for(const d of l){const h=y(d);!h||!c.has(h)||(f.push(d),b.add(h))}for(const d of r){const h=y(d);!h||b.has(h)||!c.has(h)||(f.push(d),b.add(h))}return f}const ua={class:"vs-form"},pa={class:"vs-form__body auto-rows-max container"},ma={class:"flex flex-wrap"},fa={class:"h-fit w-full mb-6 px-2"},ga={class:"h-fit w-full flex flex-wrap"},ya={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=x=>He(x||{}),i=e.defineAsyncComponent(()=>import("@opengis/form")),c=e.ref(),y=e.ref(!1),f=e.ref([]),b=()=>{const x=h.value.map(_=>a(_)).filter(_=>_.length>0);f.value=[...x],y.value=!0},d=e.computed(()=>{var x,_;return((x=n.value)==null?void 0:x.token)||((_=n.value)==null?void 0:_.id)||"register-form"}),h=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.columns)||(n.value.columns=[]),n.value.columns),set:x=>{n.value||(n.value={}),n.value.columns=Array.isArray(x)?x:[]}}),p=e.computed({get:()=>n.value||{},set:x=>{var D;const _=Array.isArray((D=n.value)==null?void 0:D.columns)?n.value.columns:[];n.value={...n.value,...x,columns:_}}});e.watch(()=>c.value,x=>{o.value=x||null},{immediate:!0}),e.watch(y,x=>{x||(f.value=[])});const u=()=>{const x=new Set(f.value.map(P=>nt(P)).filter(P=>P.length>0)),_=Array.isArray(h.value)?[...h.value]:[],D=r.value.filter(P=>x.has(a(P))).map(P=>{const F=a(P),M=P.title??P.label??F;return{...P,name:F,label:M,type:P.type||"text",meta:P.meta??"features"}});h.value=ot(_,D,{selectedKeys:f.value,resolveKey:a}),y.value=!1,f.value=[]},m={table_name:{type:"text",label:"Table",required:!0,placeholder:"Table",validators:["required"],col:6},name:{type:"text",label:"Name",required:!0,placeholder:"Name",validators:["required"],col:6},query:{type:"text",label:"Query",placeholder:"Query",col:6},order:{type:"text",label:"Order",placeholder:"Order",col:6},description:{type:"text",label:"Description",placeholder:"Description",col:12}},g=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"meta",label:"Мета",type:"text"}],s={name:{type:"text",label:"Name",required:!0},label:{type:"text",label:"Label",required:!0},format:{type:"radio",label:"Format",position:"horizontal",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},is_exportable:{type:"switcher",label:"Чи експортувати дані колонки?",view:"switcher"},meta:{type:"combobox",label:"Мета",mode:"combo",required:!0,options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"},{text:"Image",id:"image"}]},data:{type:"text",label:"Класифікатор"}};return e.onBeforeUnmount(()=>{o.value=null}),(x,_)=>(e.openBlock(),e.createElementBlock("div",ua,[e.createElementVNode("div",pa,[e.createElementVNode("div",ma,[e.createElementVNode("div",fa,[(e.openBlock(),e.createBlock(e.unref(i),{ref_key:"formEl",ref:c,key:d.value,schema:m,modelValue:p.value,"onUpdate:modelValue":_[0]||(_[0]=D=>p.value=D)},null,8,["modelValue"]))]),e.createElementVNode("div",ga,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:b,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"},[..._[4]||(_[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",ya,[e.createVNode(qe,{modelValue:h.value,"onUpdate:modelValue":_[1]||(_[1]=D=>h.value=D),"columns-scheme":g,"form-scheme":s,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(tt,{visible:y.value,"onUpdate:visible":_[2]||(_[2]=D=>y.value=D),selection:f.value,"onUpdate:selection":_[3]||(_[3]=D=>f.value=D),fields:r.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:u},null,8,["visible","selection","fields"])]))}}),xa={class:"vs-form"},ba={class:"vs-form__body auto-rows-max container"},ka={class:"flex flex-wrap"},wa={class:"h-fit w-full flex flex-wrap"},_a={class:"w-full"},Ea=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=p=>He(p||{}),i=e.ref(!1),c=e.ref([]),y=()=>{const p=f.value.map(u=>a(u)).filter(u=>u.length>0);c.value=[...p],i.value=!0},f=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:p=>{n.value||(n.value={}),n.value.filters=Array.isArray(p)?p:[]}});e.watch(i,p=>{p||(c.value=[])});const b=()=>{const p=new Set(c.value.map(g=>nt(g)).filter(g=>g.length>0)),u=Array.isArray(f.value)?[...f.value]:[],m=r.value.filter(g=>p.has(a(g))).map(g=>({name:a(g),label:g.title??g.label??a(g),type:g.type||"text"}));f.value=ot(u,m,{selectedKeys:c.value,resolveKey:a}),i.value=!1,c.value=[]},d=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],h={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}),(p,u)=>(e.openBlock(),e.createElementBlock("div",xa,[e.createElementVNode("div",ba,[e.createElementVNode("div",ka,[u[4]||(u[4]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте фільтри реєстру. Оберіть поля для імпорту або відредагуйте властивості вручну. ")],-1)),e.createElementVNode("div",wa,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:y,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...u[3]||(u[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",_a,[e.createVNode(qe,{modelValue:f.value,"onUpdate:modelValue":u[0]||(u[0]=m=>f.value=m),"columns-scheme":d,"form-scheme":h,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(tt,{visible:i.value,"onUpdate:visible":u[1]||(u[1]=m=>i.value=m),selection:c.value,"onUpdate:selection":u[2]||(u[2]=m=>c.value=m),fields:r.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:b},null,8,["visible","selection","fields"])]))}}),Na={class:"vs-form"},Va={class:"vs-form__body auto-rows-max container"},Ba={class:"flex flex-wrap"},Ca={class:"h-fit w-full flex flex-wrap"},va={class:"w-full"},$a=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=p=>He(p||{}),i=e.ref(!1),c=e.ref([]),y=()=>{const p=f.value.map(u=>a(u)).filter(u=>u.length>0);c.value=[...p],i.value=!0},f=e.computed({get:()=>n.value.card,set:p=>{n.value||(n.value={}),n.value.card=Array.isArray(p)?p:[]}});e.watch(i,p=>{var u;if(p){const m=((u=f.value)==null?void 0:u.map(g=>g.name))||[];c.value=[...m]}});const b=()=>{const p=new Set(c.value.map(g=>nt(g)).filter(g=>g.length>0)),u=Array.isArray(f.value)?[...f.value]:[],m=r.value.filter(g=>p.has(a(g))).map(g=>{const s=a(g),x=g.title??g.label??s;return{...g,name:s,label:x,format:g.format||g.type||"text",meta:g.meta||"title"}});f.value=ot(u,m,{selectedKeys:c.value,resolveKey:a}),i.value=!1,c.value=[]},d=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"format",label:"Format",type:"text"}],h={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},format:{type:"radio",label:"Format",position:"horizontal",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},data:{type:"text",label:"Data"}};return e.onBeforeUnmount(()=>{o.value=null}),(p,u)=>(e.openBlock(),e.createElementBlock("div",Na,[e.createElementVNode("div",Va,[e.createElementVNode("div",Ba,[u[4]||(u[4]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте відображення картки. Оберіть потрібні поля та відредагуйте їхні властивості. ")],-1)),e.createElementVNode("div",Ca,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:y,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...u[3]||(u[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",va,[e.createVNode(qe,{modelValue:f.value,"onUpdate:modelValue":u[0]||(u[0]=m=>f.value=m),"columns-scheme":d,"form-scheme":h,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(tt,{visible:i.value,"onUpdate:visible":u[1]||(u[1]=m=>i.value=m),selection:c.value,"onUpdate:selection":u[2]||(u[2]=m=>c.value=m),fields:r.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:b},null,8,["visible","selection","fields"])]))}}),Sa=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function mt(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),c=Sa[i]||r;let y=`${parseInt(a,10)} ${c} ${l}`;if(o){const f=o.split(".")[0],[b,d,h]=f.split(":");b&&d&&h?y+=`, ${b}:${d}:${h}`:b&&d?y+=`, ${b}:${d}`:b&&(y+=`, ${b}`)}return y}const Aa={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"},La={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"},Fa={class:"flex flex-col gap-2 md:flex-row md:items-center"},Ma={class:"text-base md:text-base lg:text-lg font-bold line-clamp-2"},Ta={key:0,class:"flex flex-wrap items-center gap-1 md:gap-1.5 lg:gap-2 md:ml-2 lg:ml-2"},Da={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"},Ia={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"},za={class:"p-3 md:p-3.5 lg:p-4 pt-2"},Oa={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-2 md:gap-2.5 lg:gap-3 text-sm"},Pa={class:"text-gray-500 shrink-0 md:max-w-[50%]"},Ra={class:"font-medium break-words"},Ua={class:"items-center p-3 bg-slate-50 flex flex-col md:flex-row justify-end gap-2"},qa=["href"],Ha=["href"],Nn=e.defineComponent({__name:"template-1",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},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")),c=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),y=(d,h)=>{if(h)return d[h]},f=d=>{const h=y(d,n.id_key);return`${n.path}?id=${h}`},b=(d,h)=>{const p=y(d,n.id_key);return`/map?layers=${h}&info=${h},${p}`};return(d,h)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,p=>{var u,m,g;return e.openBlock(),e.createElementBlock("div",{key:p.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",Aa,[e.createElementVNode("div",La,[e.createElementVNode("div",Fa,[e.createElementVNode("h2",Ma,e.toDisplayString(p[`${(u=r.value)==null?void 0:u.name}_text`]||p[(m=r.value)==null?void 0:m.name]||p[(g=r.value)==null?void 0:g.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Ta,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.name},[p[s.name]?(e.openBlock(),e.createElementBlock("div",Da,e.toDisplayString(p[`${s.name}_text`]||p[s.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)])]),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Ia,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.name},[p[s.name]?(e.openBlock(),e.createElementBlock("span",ja,e.toDisplayString(p[`${s.name}_text`]||p[s.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",za,[e.createElementVNode("div",Oa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,s=>{var x;return e.openBlock(),e.createElementBlock("div",{key:s.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",Pa,e.toDisplayString((s==null?void 0:s.ua)||s.label||s.name)+": ",1),e.createElementVNode("span",Ra,[Array.isArray(p[s==null?void 0:s.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(p[(s==null?void 0:s.name)+"_text"]||p[s==null?void 0:s.name],(_,D)=>(e.openBlock(),e.createElementBlock("span",{key:D,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(_),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[s.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(mt)(p[s==null?void 0:s.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=p[(s==null?void 0:s.name)+"_data"])==null?void 0:x.text)||p[(s==null?void 0:s.name)+"_text"]||p[s==null?void 0:s.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Ua,[l(p)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(p,p==null?void 0:p.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"},[...h[0]||(h[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,qa)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:f(p),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"},[...h[1]||(h[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,Ha)])])}),128))}}),Ya={class:"p-0"},Wa={class:"border-l-4 border-l-slate-400"},Za={class:"p-4"},Ka={class:"flex flex-wrap items-center gap-2 mb-3"},Ga={class:"text-lg font-bold"},Xa={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"},Ja={key:1,class:"flex"},Qa={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"},ei={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"},ti={class:"text-xs text-gray-500 mb-1"},ni={class:"font-medium"},oi={class:"flex justify-end gap-2 mt-3 border-t pt-3"},li=["href"],ri=["href"],Vn=e.defineComponent({__name:"template-2",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},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")),c=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),y=(d,h)=>{if(h)return d[h]},f=d=>{const h=y(d,n.id_key);return`${n.path}?id=${h}`},b=(d,h)=>{const p=y(d,n.id_key);return`/map?layers=${h}&info=${h},${p}`};return(d,h)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,p=>{var u,m,g;return e.openBlock(),e.createElementBlock("div",{key:p.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",Ya,[e.createElementVNode("div",Wa,[e.createElementVNode("div",Za,[e.createElementVNode("div",Ka,[e.createElementVNode("h2",Ga,e.toDisplayString(p[`${(u=r.value)==null?void 0:u.name}_text`]||p[(m=r.value)==null?void 0:m.name]||p[(g=r.value)==null?void 0:g.label]||"Не вказано"),1),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},[p[s.name]?(e.openBlock(),e.createElementBlock("div",Xa,e.toDisplayString(p[`${s.name}_text`]||p[s.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Ja,[(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 ml-2"},[p[s.name]?(e.openBlock(),e.createElementBlock("span",Qa,e.toDisplayString(p[`${s.name}_text`]||p[s.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ei,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,s=>{var x;return e.openBlock(),e.createElementBlock("div",{key:s.name},[e.createElementVNode("p",ti,e.toDisplayString(s.ua),1),e.createElementVNode("p",ni,[Array.isArray(p[s==null?void 0:s.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(p[s==null?void 0:s.name],(_,D)=>(e.openBlock(),e.createElementBlock("span",{key:D,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(_),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[s.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(mt)(p[s==null?void 0:s.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=p[(s==null?void 0:s.name)+"_data"])==null?void 0:x.text)||p[(s==null?void 0:s.name)+"_text"]||p[s==null?void 0:s.name]||"Немає даних"),1)],64))],64))])])}),128))]),e.createElementVNode("div",oi,[l(p)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(p,p==null?void 0:p.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"},[...h[0]||(h[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),e.createElementVNode("a",{href:f(p),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"},[...h[1]||(h[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,ri)])])])])])}),128))}}),ai={class:"space-y-4"},ii={class:"flex flex-col lg:flex-row lg:items-center py-2 px-2 lg:px-3"},si={class:"flex-1"},ci={class:"grid grid-cols-1 lg:grid-cols-12 gap-2 lg:gap-2 w-full text-xs"},di={class:"col-span-1 lg:col-span-4"},ui={class:"flex flex-row items-center justify-center h-full"},pi={key:0,class:"inline-flex items-center rounded-full border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80 mt-1 text-[9px] lg:text-[10px] font-normal px-1 lg:px-1.5 py-0","data-v0-t":"badge"},mi={key:1,class:"flex flex-wrap gap-1 mt-1"},fi={key:0,class:"inline-flex items-center rounded-full border px-2 lg:px-2.5 py-0.5 text-[10px] lg:text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},gi={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"},hi={class:"text-[9px] lg:text-[10px] text-gray-500 mb-1"},xi={class:"truncate font-medium text-xs lg:text-sm"},bi={class:"flex items-center justify-center gap-2 mt-3 lg:mt-0"},ki=["href"],wi=["href"],Bn=e.defineComponent({__name:"template-3",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=h=>(h==null?void 0:h.service_id)&&(h==null?void 0:h.is_map)&&h[n.id_key]&&(h==null?void 0:h.geom),r=e.computed(()=>n.columns.find(h=>h.meta==="title")),a=e.computed(()=>n.columns.filter(h=>h.meta==="category")),i=e.computed(()=>n.columns.filter(h=>h.meta==="tags")),c=e.computed(()=>n.columns.filter(h=>h.meta!=="title")),y=e.computed(()=>"bg-blue-500"),f=(h,p)=>{if(p)return h[p]},b=h=>{const p=f(h,n.id_key);return`${n.path}?id=${p}`},d=(h,p)=>{const u=f(h,n.id_key);return`/map?layers=${p}&info=${p},${u}`};return(h,p)=>(e.openBlock(),e.createElementBlock("div",ai,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,u=>{var m,g,s;return e.openBlock(),e.createElementBlock("div",{key:u.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",ii,[e.createElementVNode("div",si,[e.createElementVNode("div",ci,[e.createElementVNode("div",di,[e.createElementVNode("div",ui,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-6 lg:h-8 rounded-full mr-2 lg:mr-3 mb-2 lg:mb-0",y.value])},null,2),e.createElementVNode("p",{class:e.normalizeClass(["font-bold text-xs lg:text-sm text-left",{"w-full h-full flex items-center":!Array.isArray(i.value)||!i.value.length}])},e.toDisplayString(u[`${(m=r.value)==null?void 0:m.name}_text`]||u[(g=r.value)==null?void 0:g.name]||u[(s=r.value)==null?void 0:s.label]||"Не вказано"),3)]),Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,x=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:x.name},[u[x.name]?(e.openBlock(),e.createElementBlock("div",pi,e.toDisplayString(u[`${x.name}_text`]||u[x.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",mi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,x=>(e.openBlock(),e.createElementBlock("div",{key:x.name,class:"flex flex-wrap gap-1 mt-1"},[u[x.name]?(e.openBlock(),e.createElementBlock("span",fi,e.toDisplayString(u[`${x.name}_text`]||u[x.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",gi,[e.createElementVNode("div",yi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,x=>{var _;return e.openBlock(),e.createElementBlock("div",{key:x.name},[e.createElementVNode("p",hi,e.toDisplayString(x.ua),1),e.createElementVNode("p",xi,[Array.isArray(u[x==null?void 0:x.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(u[x==null?void 0:x.name],(D,P)=>(e.openBlock(),e.createElementBlock("span",{key:P,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1 text-[10px] lg:text-xs"},e.toDisplayString(D),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[x.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(mt)(u[x==null?void 0:x.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((_=u[(x==null?void 0:x.name)+"_data"])==null?void 0:_.text)||u[(x==null?void 0:x.name)+"_text"]||u[x==null?void 0:x.name]||"Немає даних"),1)],64))],64))])])}),128))])])])]),e.createElementVNode("div",bi,[l(u)?(e.openBlock(),e.createElementBlock("a",{key:0,href:d(u,u==null?void 0:u.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-xs lg: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-8 lg:h-9 rounded-md px-2 lg:px-3"},[...p[0]||(p[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-map-pin-check-inside ml-1 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,ki)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:b(u),class:"ml-auto flex items-center justify-center gap-2 whitespace-nowrap text-xs lg:text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground rounded-md h-8 w-8 lg:h-7 lg:w-7 p-0",style:{"min-width":"2rem"}},[...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-chevron-right h-3.5 w-3.5 lg:h-4 lg:w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,wi)])])])}),128))]))}}),_i={class:"flex flex-col space-y-1.5 p-6 pb-2"},Ei={class:"flex items-center gap-2"},Ni={class:"tracking-tight text-lg font-medium"},Vi={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"},Bi={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"},vi={class:"p-6 pt-0 pb-4"},$i={class:"grid grid-cols-2 gap-4"},Si={class:"text-sm text-gray-500"},Ai={class:"font-medium"},Li={class:"flex items-center p-6 pt-0 gap-2"},Fi=["href"],Mi=["href"],Cn=e.defineComponent({__name:"template-4",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},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")),c=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),y=(d,h)=>{if(h)return d[h]},f=d=>{const h=y(d,n.id_key);return`${n.path}?id=${h}`},b=(d,h)=>{const p=y(d,n.id_key);return`/map?layers=${h}&info=${h},${p}`};return(d,h)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,p=>{var u,m,g;return e.openBlock(),e.createElementBlock("div",{key:p.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",_i,[e.createElementVNode("div",Ei,[e.createElementVNode("h3",Ni,e.toDisplayString(p[`${(u=r.value)==null?void 0:u.name}_text`]||p[(m=r.value)==null?void 0:m.name]||p[(g=r.value)==null?void 0:g.label]||"Не вказано"),1),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},[p[s.name]?(e.openBlock(),e.createElementBlock("div",Vi,e.toDisplayString(p[`${s.name}_text`]||p[s.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Bi,[(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 ml-2"},[p[s.name]?(e.openBlock(),e.createElementBlock("span",Ci,e.toDisplayString(p[`${s.name}_text`]||p[s.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",vi,[e.createElementVNode("div",$i,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,s=>{var x;return e.openBlock(),e.createElementBlock("div",{key:s.name},[e.createElementVNode("p",Si,e.toDisplayString(s.ua),1),e.createElementVNode("p",Ai,[Array.isArray(p[s==null?void 0:s.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(p[s==null?void 0:s.name],(_,D)=>(e.openBlock(),e.createElementBlock("span",{key:D,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(_),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[s.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(mt)(p[s==null?void 0:s.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=p[(s==null?void 0:s.name)+"_data"])==null?void 0:x.text)||p[(s==null?void 0:s.name)+"_text"]||p[s==null?void 0:s.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Li,[l(p)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(p,p==null?void 0:p.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,Fi)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:f(p),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,Mi)])])}),128))}}),Ti={class:"grid grid-cols-1 lg:grid-cols-12 lg:divide-x divide-y lg:divide-y-0 divide-gray-100"},Di={key:0,class:"w-full lg:w-auto lg:col-span-1"},Ii=["src"],ji={key:1,class:"hidden lg:flex lg:col-span-1 items-center justify-center py-4 lg:py-0"},zi={class:"col-span-1 lg:col-span-7 p-4 lg:p-4"},Oi={class:"flex flex-col mb-3 lg:flex-row lg:items-center lg:mb-1"},Pi={class:"text-base lg:text-base font-bold text-gray-900 mb-2 lg:mr-2 lg:mb-0"},Ri={class:"flex flex-wrap gap-2 lg:gap-0"},Ui={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"},qi={class:"text-sm text-gray-600 line-clamp-2 lg:line-clamp-1 mb-3 lg:mb-2"},Hi={class:"grid grid-cols-1 md:grid-cols-2 gap-y-3 md:gap-x-4 md:gap-y-1 text-sm"},Yi={class:"flex items-center mb-1 md:mb-0 md:mr-1 max-w-[50%]"},Wi=["innerHTML"],Zi={class:"text-gray-500 font-medium md:font-normal"},Ki={class:"text-gray-600 break-words line-clamp-2"},Gi={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"},Xi={class:"text-xs text-gray-500 mb-2 lg:mb-1.5"},Ji={key:0,class:"flex flex-wrap gap-1.5 lg:gap-1"},Qi={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"},es={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"},ts={class:"w-full space-y-2"},ns=["href"],os=["href"],vn=e.defineComponent({__name:"template-5",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=p=>(p==null?void 0:p.service_id)&&(p==null?void 0:p.is_map)&&p[n.id_key]&&(p==null?void 0:p.geom),r=e.computed(()=>n.columns.find(p=>p.meta==="title")),a=e.computed(()=>n.columns.filter(p=>p.meta==="category")),i=e.computed(()=>n.columns.filter(p=>p.meta==="tags")),c=e.computed(()=>n.columns.filter(p=>p.meta!=="title")),y=e.computed(()=>n.columns.find(p=>p.meta==="image")),f=e.computed(()=>n.columns.find(p=>p.meta==="desc")||n.columns.find(p=>p.name==="description")),b=(p,u)=>{if(u)return p[u]},d=p=>{const u=b(p,n.id_key);return`${n.path}?id=${u}`},h=(p,u)=>{const m=b(p,n.id_key);return`/map?layers=${u}&info=${u},${m}`};return(p,u)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,m=>{var g,s,x,_,D,P,F,M,L;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",Ti,[y.value?(e.openBlock(),e.createElementBlock("div",Di,[m[(g=y.value)==null?void 0:g.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:m[(s=y.value)==null?void 0:s.name],alt:"image",class:"object-cover w-full h-48 lg:h-full lg:w-auto"},null,8,Ii)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",ji,[...u[0]||(u[0]=[e.createElementVNode("div",{class:"w-3 h-12 rounded-sm bg-blue-500",title:"Пріоритет: Високий","aria-hidden":"true"},null,-1)])])),e.createElementVNode("div",zi,[e.createElementVNode("div",Oi,[e.createElementVNode("h3",Pi,e.toDisplayString(m[`${(x=r.value)==null?void 0:x.name}_text`]||m[(_=r.value)==null?void 0:_.name]||m[(D=r.value)==null?void 0:D.label]||"Не вказано"),1),e.createElementVNode("div",Ri,[Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,T=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:T.name},[m[T.name]?(e.openBlock(),e.createElementBlock("div",Ui,e.toDisplayString(m[`${T.name}_text`]||m[T.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)])]),e.createElementVNode("p",qi,e.toDisplayString(((F=m[((P=f.value)==null?void 0:P.name)+"_data"])==null?void 0:F.text)||m[((M=f.value)==null?void 0:M.name)+"_text"]||m[(L=f.value)==null?void 0:L.name]),1),e.createElementVNode("div",Hi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,T=>{var z;return e.openBlock(),e.createElementBlock("div",{key:T.name,class:"flex flex-col md:flex-row md:items-center"},[e.createElementVNode("div",Yi,[T.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:T.icon},null,8,Wi)):e.createCommentVNode("",!0),e.createElementVNode("span",Zi,e.toDisplayString((T==null?void 0:T.ua)||T.label||T.name)+":",1)]),e.createElementVNode("span",Ki,[Array.isArray(m[T==null?void 0:T.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(m[T==null?void 0:T.name],(H,U)=>(e.openBlock(),e.createElementBlock("span",{key:U,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1 inline-block"},e.toDisplayString(H),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[T.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(mt)(m[T==null?void 0:T.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((z=m[(T==null?void 0:T.name)+"_data"])==null?void 0:z.text)||m[(T==null?void 0:T.name)+"_text"]||m[T==null?void 0:T.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Gi,[e.createElementVNode("p",Xi," Теги: "+e.toDisplayString(i.value.length&&m[i.value[0].name]?"":"відсутні"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Ji,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"flex flex-wrap gap-1"},[m[T.name]?(e.openBlock(),e.createElementBlock("span",Qi,e.toDisplayString(m[`${T.name}_text`]||m[T.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",es,[e.createElementVNode("div",ts,[l(m)?(e.openBlock(),e.createElementBlock("a",{key:0,href:h(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,ns)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:d(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,os)])])])])}),128))}}),$n={template1:Nn,template2:Vn,template3:Bn,template4:Cn,template5:vn},ls={class:"space-y-4"},rs={class:"flex items-center gap-4"},as={class:"text-lg font-semibold mb-4"},is={key:1,class:"text-gray-400 text-center py-12"},ss={key:2,class:"text-gray-400 text-center py-12"},cs=e.defineComponent({__name:"preview-tab",props:{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 b;return Array.isArray((b=o.value)==null?void 0:b.columns)?o.value.columns:[]}),i=e.computed(()=>{var b;return((b=o.value)==null?void 0:b.view)||"template1"}),c=e.computed(()=>$n[i.value]||$n.template1),y=e.computed(()=>{var h;const b=(h=o.value)==null?void 0:h.view;if(!b)return"template1";const d=l.find(p=>p.id===b);return(d==null?void 0:d.text)||b}),f=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5).map(d=>{var h,p;return{...d,service_id:(h=o.value)==null?void 0:h.service_id,is_map:(p=o.value)==null?void 0:p.is_map}}));return(b,d)=>(e.openBlock(),e.createElementBlock("div",ls,[e.createElementVNode("div",rs,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:r,modelValue:o.value,"onUpdate:modelValue":d[0]||(d[0]=h=>o.value=h)},null,8,["modelValue"]))]),e.createElementVNode("h2",as," Превʼю таблиці ("+e.toDisplayString(y.value)+") ",1),c.value&&f.value.length&&a.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value),{items:f.value,columns:a.value,path:"#",id_key:"id",key:i.value},null,8,["items","columns"])):f.value.length?(e.openBlock(),e.createElementBlock("div",ss," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",is," Немає даних для превʼю "))]))}}),ds={class:"relative h-screen flex flex-col bg-white p-8"},us={class:"flex-1 flex flex-col min-h-0 overflow-hidden"},ps={class:"max-w-6xl mx-auto flex-1 flex flex-col min-h-0 w-full"},ms={class:"flex items-center justify-between mb-6 flex-shrink-0"},fs={class:"flex items-center gap-2"},gs={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"},hs=["onClick"],xs={class:"flex-1 min-h-0 overflow-y-auto"},bs=e.defineComponent({__name:"register",setup(t){const n=we.useRoute(),o=we.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:Ea,card:$a,preview:cs},c=a.map(p=>p.id),y=e.ref({columns:[],filters:[],card:[],tableData:[]}),f=e.ref([]),b=async()=>{var u;if(!((u=y.value)==null?void 0:u.token)){re.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(y.value)});if(!m.ok)throw new Error(`Failed to save content: ${m.status}`);re.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(m){re.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(m)}},d=async p=>{try{const m=await(await fetch(`/api/gis-registry/${p}`)).json(),g=Array.isArray(m==null?void 0:m.rows)?m.rows:[];y.value.tableData=g.slice(0,3)}catch(u){console.error("Помилка завантаження превʼю:",u)}},h=async()=>{var p,u;try{const g=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),s=((p=g==null?void 0:g.rows)==null?void 0:p[0])||{};r.value=s.register_key||"",y.value={...s,columns:Array.isArray(s.columns)?s.columns:[],filters:Array.isArray(s.filters)?s.filters:[],card:Array.isArray(s.card)?s.card:[],tableData:Array.isArray(s.tableData)?s.tableData:[]},(u=g==null?void 0:g.tokens)!=null&&u.edit&&(y.value.token=g.tokens.edit),f.value=Array.isArray(g==null?void 0:g.fields)?g.fields:[]}catch(m){console.error("Помилка завантаження даних:",m)}};return e.onMounted(async()=>{const p=n.query.tab;typeof p=="string"&&c.includes(p)&&(l.value=p),await h(),r.value&&await d(r.value)}),e.watch(l,p=>{n.query.tab!==p&&o.replace({query:{...n.query,tab:p}})}),e.watch(()=>n.query.tab,p=>{typeof p=="string"&&c.includes(p)&&l.value!==p&&(l.value=p)}),(p,u)=>(e.openBlock(),e.createElementBlock("main",ds,[e.createElementVNode("div",us,[e.createElementVNode("div",ps,[e.createElementVNode("div",ms,[u[2]||(u[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",fs,[e.createElementVNode("button",{onClick:u[0]||(u[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:b,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",gs,[e.createElementVNode("div",ys,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,m=>e.createElementVNode("button",{key:m.id,onClick:g=>l.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===l.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(m.name),11,hs)),64))])]),e.createElementVNode("div",xs,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i[l.value]),{data:y.value,"onUpdate:data":u[1]||(u[1]=m=>y.value=m),fields:f.value,key:l.value},null,40,["data","fields"]))])])])]))}});/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function Sn(t){return typeof t>"u"||t===null}function ks(t){return typeof t=="object"&&t!==null}function ws(t){return Array.isArray(t)?t:Sn(t)?[]:[t]}function _s(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 Es(t,n){var o="",l;for(l=0;l<n;l+=1)o+=t;return o}function Ns(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var Vs=Sn,Bs=ks,Cs=ws,vs=Es,$s=Ns,Ss=_s,be={isNothing:Vs,isObject:Bs,toArray:Cs,repeat:vs,isNegativeZero:$s,extend:Ss};function An(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+=`
|
|
96
|
+
*/const Pt=Ve("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),Cl={class:"flex items-center justify-center col-span-3 gap-2"},vl={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},$l=e.defineComponent({__name:"vs-datatable-controls",props:e.mergeModels({index:{},data:{},scheme:{}},{columns:{type:Array,default:()=>[]},columnsModifiers:{}}),emits:["update:columns"],setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=e.defineAsyncComponent(()=>import("@opengis/core").then(b=>b.VsModal)),l=t,r=e.useModel(t,"columns"),a=e.ref(!1),i=e.ref({}),s=e.ref({...l.data||{}});e.watch(()=>l.data,b=>{s.value={...b||{}}},{deep:!0});const g=()=>r.value=r.value.filter((b,c)=>c!==l.index),y=async()=>{const b=i.value.validate();if(b){re.notify({type:"warning",title:"Validation",message:Object.entries(b).map(([c,f])=>`${c}: ${f}`).join(`
|
|
97
|
+
`)});return}r.value[l.index]=s.value,a.value=!1};return(b,c)=>(e.openBlock(),e.createElementBlock("div",Cl,[e.createElementVNode("button",{onClick:c[0]||(c[0]=f=>{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(Nl),{class:"w-4 h-4"})]),e.createElementVNode("button",{onClick:g,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 h-8 w-8 rounded-full hover:bg-red-100 text-red-600 hover:text-red-700"},[e.createVNode(e.unref(Bl),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{teleport:"#modal",size:"lg",visible:a.value,"onUpdate:visible":c[4]||(c[4]=f=>a.value=f),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",vl,[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]=f=>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:y}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(n),{values:s.value,"onUpdate:values":c[1]||(c[1]=f=>s.value=f),schema:t.scheme,form:i.value,"onUpdate:form":c[2]||(c[2]=f=>i.value=f)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),Sl={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")})}},Al={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"},_n=t=>Al[t==null?void 0:t.toLowerCase()]||"gray",Ll=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],En=t=>{var n;return Ll.includes((n=t||"")==null?void 0:n.toLowerCase())},Q=(t,n)=>{const o=t.__vccOpts||t;for(const[l,r]of n)o[l]=r;return o},Fl={},Ml={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 Tl(t,n){return e.openBlock(),e.createElementBlock("svg",Ml,[...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 Dl=Q(Fl,[["render",Tl]]),Il={},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 jl(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 Ol=Q(Il,[["render",jl]]),Pl={},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-calendar",__v0_r:"0,5361,5384"};function Ul(t,n){return e.openBlock(),e.createElementBlock("svg",Rl,[...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 ql=Q(Pl,[["render",Ul]]),Hl={},Wl={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 Yl(t,n){return e.openBlock(),e.createElementBlock("svg",Wl,[...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 Zl=Q(Hl,[["render",Yl]]),Kl={},Gl={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 Xl(t,n){return e.openBlock(),e.createElementBlock("svg",Gl,[...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 Jl=Q(Kl,[["render",Xl]]),Ql={},er={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 tr(t,n){return e.openBlock(),e.createElementBlock("svg",er,[...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 nr=Q(Ql,[["render",tr]]),or={},lr={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 rr(t,n){return e.openBlock(),e.createElementBlock("svg",lr,[...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 ar=Q(or,[["render",rr]]),ir={},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-image",__v0_r:"0,5361,5384"};function cr(t,n){return e.openBlock(),e.createElementBlock("svg",sr,[...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 dr=Q(ir,[["render",cr]]),ur={},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 mr(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 fr=Q(ur,[["render",mr]]),gr={},yr={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 hr(t,n){return e.openBlock(),e.createElementBlock("svg",yr,[...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 xr=Q(gr,[["render",hr]]),br={},kr={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 wr(t,n){return e.openBlock(),e.createElementBlock("svg",kr,[...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 _r=Q(br,[["render",wr]]),Er={},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-list",__v0_r:"0,5361,5384"};function Vr(t,n){return e.openBlock(),e.createElementBlock("svg",Nr,[...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 Br=Q(Er,[["render",Vr]]),Cr={},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-link2",__v0_r:"0,5361,5384"};function $r(t,n){return e.openBlock(),e.createElementBlock("svg",vr,[...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 Sr=Q(Cr,[["render",$r]]),Ar={},Lr={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 Fr(t,n){return e.openBlock(),e.createElementBlock("svg",Lr,[...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 Mr=Q(Ar,[["render",Fr]]),Tr={},Dr={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 Ir(t,n){return e.openBlock(),e.createElementBlock("svg",Dr,[...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=Q(Tr,[["render",Ir]]),jr={},Or={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function Pr(t,n){return e.openBlock(),e.createElementBlock("svg",Or,[...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 Nn={IconText:Dl,IconNumber:Ol,IconDate:ql,IconDatetime:Zl,IconRichtext:Jl,IconBoolean:nr,IconFile:ar,IconImage:dr,IconArray:fr,IconSelect:xr,IconSlug:_r,IconDatalist:Br,IconReference:Sr,IconReferenceList:Mr,IconBadge:zr,IconCheck:Q(jr,[["render",Pr]])},Rr={key:0,class:"flex items-center justify-between mb-6"},Ur={class:"flex justify-end w-full"},qr={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},Hr={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},Wr={class:"table-fixed w-full text-[13px]"},Yr={class:"bg-gray-50 border-b border-gray-200"},Zr={key:0},Kr=["onDragstart","onDragover","onDrop"],Gr={key:0,class:"flex w-fit items-center gap-2 text-left"},Xr={class:"flex-1 min-w-0"},Jr={class:"font-medium text-gray-900 truncate"},Qr={class:"text-xs text-gray-500"},ea={key:1,class:"flex items-center justify-center"},ta={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"},na={key:1,class:"text-gray-500 text-sm"},oa={key:3},la={class:"px-6 py-4"},ra={key:1},aa=["colspan"],qe=Q(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(N){return N.charAt(0).toUpperCase()+N.slice(1)}const l=e.defineAsyncComponent(()=>import("@opengis/core").then(N=>N.VsModal)),r=e.defineAsyncComponent(()=>import("@opengis/form")),a=e.useModel(t,"modelValue"),i=t,s=e.ref({}),g=e.ref(!1),y=e.ref({}),b=e.ref(null),c=e.useSlots(),f=N=>!!(N&&c[N]);n({openCreateDialog:()=>{g.value=!0}});const u=e.computed({get(){return Array.isArray(a.value)?a.value:a.value&&Array.isArray(a.value.columns)?a.value.columns:[]},set(N){Array.isArray(a.value)?a.value=N:a.value&&Array.isArray(a.value.columns)&&(a.value.columns=N)}}),p=e.computed(()=>{const N=i.columnsScheme.map(V=>V.key);return N.includes("name")&&N.includes("label")||N.includes("id")&&N.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...i.columnsScheme.filter(V=>!["name","id","label"].includes(V.key))]:i.columnsScheme});function m(){g.value=!1,y.value={},b.value=null}async function h(){const N=s.value.validate();if(N){re.notify({type:"warning",title:"Validation",message:Object.entries(N).map(([V,C])=>`${V}: ${C}`).join(`
|
|
98
|
+
`)});return}if(b.value===null)u.value=[...u.value,{...y.value}];else{const V=[...u.value];V[b.value]={...y.value},u.value=V}m()}const d=e.ref(null),x=e.ref(null),S=N=>{d.value=N},T=N=>{x.value=N},P=N=>{if(d.value===null||d.value===N){d.value=null,x.value=null;return}const V=[...u.value],[C]=V.splice(d.value,1);V.splice(N,0,C),u.value=V,d.value=null,x.value=null};return(N,V)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",Rr,[e.createElementVNode("div",Ur,[e.createElementVNode("button",{onClick:V[0]||(V[0]=C=>g.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",qr,[e.createElementVNode("div",Hr,[e.createElementVNode("table",Wr,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.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)),V[5]||(V[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",Yr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,C=>(e.openBlock(),e.createElementBlock("th",{key:C.key,class:"px-6 py-4"},e.toDisplayString(C.label),1))),128)),V[6]||(V[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),u.value.length?(e.openBlock(),e.createElementBlock("tbody",Zr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(C,F)=>(e.openBlock(),e.createElementBlock("tr",{key:C.id||C.name||F,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":d.value===F,"border-t-2 border-b-2 border-blue-500 bg-blue-50":x.value===F}]),draggable:"true",onDragstart:I=>S(F),onDragover:e.withModifiers(I=>T(F),["prevent"]),onDrop:I=>P(F)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.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",Gr,[V[7]||(V[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(En)(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(_n)(C.format==="yes/no"?"check":C.format||C.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(C.format==="yes/no"?"icon-check":e.unref(Nn)["Icon"+o(C.format||C.type)]||e.unref(Nn).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",Xr,[e.withDirectives((e.openBlock(),e.createElementBlock("p",Jr,[e.createTextVNode(e.toDisplayString(C.name||C.id),1)])),[[e.unref(Sl)]]),e.createElementVNode("p",Qr,e.toDisplayString(C.label||C.ua||C.name||C.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[I.slot&&f(I.slot)?e.renderSlot(N.$slots,I.slot,{key:0,row:C,column:I,value:C[I.key],rowIndex:F},void 0,!0):I.type==="color"?(e.openBlock(),e.createElementBlock("div",ea,[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",ta,e.toDisplayString(C[I.key]),1)):(e.openBlock(),e.createElementBlock("span",na,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",oa,e.toDisplayString(C[I.key]),1))],64))]))),128)),e.createElementVNode("td",la,[e.createVNode($l,{columns:u.value,"onUpdate:columns":V[1]||(V[1]=I=>u.value=I),data:C,index:F,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,Kr))),128))])):(e.openBlock(),e.createElementBlock("tr",ra,[e.createElementVNode("td",{colspan:p.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,aa)]))])])]),e.createVNode(e.unref(l),{teleport:"#modal",title:"Створити поле",size:"lg",visible:g.value,"onUpdate:visible":V[3]||(V[3]=C=>g.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(r),{ref_key:"form",ref:s,modelValue:y.value,"onUpdate:modelValue":V[2]||(V[2]=C=>y.value=C),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-0ede3461"]]),ia={class:"p-4 text-[13px]"},sa={class:"grid grid-cols-2 gap-x-6 gap-y-2"},ca=["id","checked","onChange"],da={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},ua={class:"font-medium text-gray-900 truncate"},pa={class:"text-xs text-gray-500"},ma={class:"flex justify-end gap-2 p-4 border-t w-full"},tt=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(x=>x.VsModal)),s=e.computed(()=>Array.isArray(r.fields)?r.fields.filter(Boolean):[]),g=x=>(x==null?void 0:x.name)??(x==null?void 0:x.id)??(x==null?void 0:x.key)??(x==null?void 0:x.code)??(x==null?void 0:x.field)??(x==null?void 0:x.value)??"",y=x=>String(g(x)??"").trim(),b=x=>(x==null?void 0:x.title)??(x==null?void 0:x.label)??y(x),c=e.computed(()=>new Set(l.value.map(x=>String(x??"").trim()))),f=x=>c.value.has(y(x)),u=x=>{const S=y(x);if(!S)return;const T=new Set(c.value);T.has(S)?T.delete(S):T.add(S),l.value=Array.from(T)},p=e.computed(()=>r.confirmText||"Імпортувати"),m=e.computed(()=>r.cancelText||"Скасувати"),h=()=>{o.value=!1,a("cancel")},d=()=>{a("confirm"),o.value=!1};return(x,S)=>(e.openBlock(),e.createBlock(e.unref(i),{visible:o.value,"onUpdate:visible":S[0]||(S[0]=T=>o.value=T),teleport:"#modal",title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",ma,[e.createElementVNode("button",{onClick:h,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(m.value),1),e.createElementVNode("button",{onClick:d,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(p.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",ia,[e.createElementVNode("div",sa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,T=>(e.openBlock(),e.createElementBlock("label",{key:y(T),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${y(T)}`,checked:f(T),onChange:P=>u(T)},null,40,ca),e.createElementVNode("div",da,[e.unref(En)(T.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(_n)(T.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${T.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",ua,e.toDisplayString(y(T)),1),e.createElementVNode("p",pa,e.toDisplayString(b(T)),1)])])]))),128))])])]),_:1},8,["visible","title"]))}});function nt(t){return t==null?"":String(t).trim()}function He(t){return nt((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 ot(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 f=nt(c);f&&s.add(f)}if(s.size===0)return[];const g=c=>nt(i(c)),y=[],b=new Set;for(const c of l){const f=g(c);!f||!s.has(f)||(y.push(c),b.add(f))}for(const c of r){const f=g(c);!f||b.has(f)||!s.has(f)||(y.push(c),b.add(f))}return y}const fa={class:"vs-form"},ga={class:"vs-form__body auto-rows-max container"},ya={class:"flex flex-wrap"},ha={class:"h-fit w-full mb-6 px-2"},xa={class:"h-fit w-full flex flex-wrap"},ba={class:"w-full"},ka=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=x=>He(x||{}),i=e.defineAsyncComponent(()=>import("@opengis/form")),s=e.ref(),g=e.ref(!1),y=e.ref([]),b=()=>{const x=f.value.map(S=>a(S)).filter(S=>S.length>0);y.value=[...x],g.value=!0},c=e.computed(()=>{var x,S;return((x=n.value)==null?void 0:x.token)||((S=n.value)==null?void 0:S.id)||"register-form"}),f=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.columns)||(n.value.columns=[]),n.value.columns),set:x=>{n.value||(n.value={}),n.value.columns=Array.isArray(x)?x:[]}}),u=e.computed({get:()=>n.value||{},set:x=>{var T;const S=Array.isArray((T=n.value)==null?void 0:T.columns)?n.value.columns:[];n.value={...n.value,...x,columns:S}}});e.watch(()=>s.value,x=>{o.value=x||null},{immediate:!0}),e.watch(g,x=>{x||(y.value=[])});const p=()=>{const x=new Set(y.value.map(P=>nt(P)).filter(P=>P.length>0)),S=Array.isArray(f.value)?[...f.value]:[],T=r.value.filter(P=>x.has(a(P))).map(P=>{const N=a(P),V=P.title??P.label??N;return{...P,name:N,label:V,type:P.type||"text",meta:P.meta??"features"}});f.value=ot(S,T,{selectedKeys:y.value,resolveKey:a}),g.value=!1,y.value=[]},m={table_name:{type:"text",label:"Table",required:!0,placeholder:"Table",validators:["required"],col:6},name:{type:"text",label:"Name",required:!0,placeholder:"Name",validators:["required"],col:6},query:{type:"text",label:"Query",placeholder:"Query",col:6},order:{type:"text",label:"Order",placeholder:"Order",col:6},description:{type:"text",label:"Description",placeholder:"Description",col:12}},h=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"meta",label:"Мета",type:"text"}],d={name:{type:"text",label:"Name",required:!0},label:{type:"text",label:"Label",required:!0},format:{type:"radio",label:"Format",position:"horizontal",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},is_exportable:{type:"switcher",label:"Чи експортувати дані колонки?",view:"switcher"},meta:{type:"combobox",label:"Мета",mode:"combo",required:!0,options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"},{text:"Image",id:"image"}]},data:{type:"text",label:"Класифікатор"}};return e.onBeforeUnmount(()=>{o.value=null}),(x,S)=>(e.openBlock(),e.createElementBlock("div",fa,[e.createElementVNode("div",ga,[e.createElementVNode("div",ya,[e.createElementVNode("div",ha,[(e.openBlock(),e.createBlock(e.unref(i),{ref_key:"formEl",ref:s,key:c.value,schema:m,modelValue:u.value,"onUpdate:modelValue":S[0]||(S[0]=T=>u.value=T)},null,8,["modelValue"]))]),e.createElementVNode("div",xa,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:b,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"},[...S[4]||(S[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",ba,[e.createVNode(qe,{modelValue:f.value,"onUpdate:modelValue":S[1]||(S[1]=T=>f.value=T),"columns-scheme":h,"form-scheme":d,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(tt,{visible:g.value,"onUpdate:visible":S[2]||(S[2]=T=>g.value=T),selection:y.value,"onUpdate:selection":S[3]||(S[3]=T=>y.value=T),fields:r.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:p},null,8,["visible","selection","fields"])]))}}),wa={class:"vs-form"},_a={class:"vs-form__body auto-rows-max container"},Ea={class:"flex flex-wrap"},Na={class:"h-fit w-full flex flex-wrap"},Va={class:"w-full"},Ba=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=u=>He(u||{}),i=e.ref(!1),s=e.ref([]),g=()=>{const u=y.value.map(p=>a(p)).filter(p=>p.length>0);s.value=[...u],i.value=!0},y=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:u=>{n.value||(n.value={}),n.value.filters=Array.isArray(u)?u:[]}});e.watch(i,u=>{u||(s.value=[])});const b=()=>{const u=new Set(s.value.map(h=>nt(h)).filter(h=>h.length>0)),p=Array.isArray(y.value)?[...y.value]:[],m=r.value.filter(h=>u.has(a(h))).map(h=>({name:a(h),label:h.title??h.label??a(h),type:h.type||"text"}));y.value=ot(p,m,{selectedKeys:s.value,resolveKey:a}),i.value=!1,s.value=[]},c=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],f={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}),(u,p)=>(e.openBlock(),e.createElementBlock("div",wa,[e.createElementVNode("div",_a,[e.createElementVNode("div",Ea,[p[4]||(p[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",Na,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:g,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...p[3]||(p[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",Va,[e.createVNode(qe,{modelValue:y.value,"onUpdate:modelValue":p[0]||(p[0]=m=>y.value=m),"columns-scheme":c,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(tt,{visible:i.value,"onUpdate:visible":p[1]||(p[1]=m=>i.value=m),selection:s.value,"onUpdate:selection":p[2]||(p[2]=m=>s.value=m),fields:r.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:b},null,8,["visible","selection","fields"])]))}}),Ca={class:"vs-form"},va={class:"vs-form__body auto-rows-max container"},$a={class:"flex flex-wrap"},Sa={class:"h-fit w-full flex flex-wrap"},Aa={class:"w-full"},La=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=u=>He(u||{}),i=e.ref(!1),s=e.ref([]),g=()=>{const u=y.value.map(p=>a(p)).filter(p=>p.length>0);s.value=[...u],i.value=!0},y=e.computed({get:()=>n.value.card,set:u=>{n.value||(n.value={}),n.value.card=Array.isArray(u)?u:[]}});e.watch(i,u=>{var p;if(u){const m=((p=y.value)==null?void 0:p.map(h=>h.name))||[];s.value=[...m]}});const b=()=>{const u=new Set(s.value.map(h=>nt(h)).filter(h=>h.length>0)),p=Array.isArray(y.value)?[...y.value]:[],m=r.value.filter(h=>u.has(a(h))).map(h=>{const d=a(h),x=h.title??h.label??d;return{...h,name:d,label:x,format:h.format||h.type||"text",meta:h.meta||"title"}});y.value=ot(p,m,{selectedKeys:s.value,resolveKey:a}),i.value=!1,s.value=[]},c=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"format",label:"Format",type:"text"}],f={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},format:{type:"radio",label:"Format",position:"horizontal",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},data:{type:"text",label:"Data"}};return e.onBeforeUnmount(()=>{o.value=null}),(u,p)=>(e.openBlock(),e.createElementBlock("div",Ca,[e.createElementVNode("div",va,[e.createElementVNode("div",$a,[p[4]||(p[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",Sa,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:g,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...p[3]||(p[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",Aa,[e.createVNode(qe,{modelValue:y.value,"onUpdate:modelValue":p[0]||(p[0]=m=>y.value=m),"columns-scheme":c,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(tt,{visible:i.value,"onUpdate:visible":p[1]||(p[1]=m=>i.value=m),selection:s.value,"onUpdate:selection":p[2]||(p[2]=m=>s.value=m),fields:r.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:b},null,8,["visible","selection","fields"])]))}}),Fa=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function ft(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=Fa[i]||r;let g=`${parseInt(a,10)} ${s} ${l}`;if(o){const y=o.split(".")[0],[b,c,f]=y.split(":");b&&c&&f?g+=`, ${b}:${c}:${f}`:b&&c?g+=`, ${b}:${c}`:b&&(g+=`, ${b}`)}return g}const Ma={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"},Ta={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"},Da={class:"flex flex-col gap-2 md:flex-row md:items-center"},Ia={class:"text-base md:text-base lg:text-lg font-bold line-clamp-2"},za={key:0,class:"flex flex-wrap items-center gap-1 md:gap-1.5 lg:gap-2 md:ml-2 lg:ml-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","data-v0-t":"badge"},Oa={key:0,class:"flex flex-wrap items-center gap-1 md:gap-1.5 lg:gap-2"},Pa={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"},Ra={class:"p-3 md:p-3.5 lg:p-4 pt-2"},Ua={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-2 md:gap-2.5 lg:gap-3 text-sm"},qa={class:"text-gray-500 shrink-0 md:max-w-[50%]"},Ha={class:"font-medium break-words"},Wa={class:"items-center p-3 bg-slate-50 flex flex-col md:flex-row justify-end gap-2"},Ya=["href"],Za=["href"],Vn=e.defineComponent({__name:"template-1",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},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")),g=(c,f)=>{if(f)return c[f]},y=c=>{const f=g(c,n.id_key);return`${n.path}?id=${f}`},b=(c,f)=>{const u=g(c,n.id_key);return`/map?layers=${f}&info=${f},${u}`};return(c,f)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,u=>{var p,m,h;return e.openBlock(),e.createElementBlock("div",{key:u.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",Ma,[e.createElementVNode("div",Ta,[e.createElementVNode("div",Da,[e.createElementVNode("h2",Ia,e.toDisplayString(u[`${(p=r.value)==null?void 0:p.name}_text`]||u[(m=r.value)==null?void 0:m.name]||u[(h=r.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",za,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.name},[u[d.name]?(e.openBlock(),e.createElementBlock("div",ja,e.toDisplayString(u[`${d.name}_text`]||u[d.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)])]),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",Oa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.name},[u[d.name]?(e.openBlock(),e.createElementBlock("span",Pa,e.toDisplayString(u[`${d.name}_text`]||u[d.name]),1)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ra,[e.createElementVNode("div",Ua,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,d=>{var x;return e.openBlock(),e.createElementBlock("div",{key:d.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",qa,e.toDisplayString((d==null?void 0:d.ua)||d.label||d.name)+": ",1),e.createElementVNode("span",Ha,[Array.isArray(u[d==null?void 0:d.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(u[(d==null?void 0:d.name)+"_text"]||u[d==null?void 0:d.name],(S,T)=>(e.openBlock(),e.createElementBlock("span",{key:T,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(S),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(u[d==null?void 0:d.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=u[(d==null?void 0:d.name)+"_data"])==null?void 0:x.text)||u[(d==null?void 0:d.name)+"_text"]||u[d==null?void 0:d.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Wa,[l(u)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(u,u==null?void 0:u.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"},[...f[0]||(f[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,Ya)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:y(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 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...f[1]||(f[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,Za)])])}),128))}}),Ka={class:"p-0"},Ga={class:"border-l-4 border-l-slate-400"},Xa={class:"p-4"},Ja={class:"flex flex-wrap items-center gap-2 mb-3"},Qa={class:"text-lg font-bold"},ei={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"},ti={key:1,class:"flex"},ni={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"},oi={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"},li={class:"text-xs text-gray-500 mb-1"},ri={class:"font-medium"},ai={class:"flex justify-end gap-2 mt-3 border-t pt-3"},ii=["href"],si=["href"],Bn=e.defineComponent({__name:"template-2",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},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")),g=(c,f)=>{if(f)return c[f]},y=c=>{const f=g(c,n.id_key);return`${n.path}?id=${f}`},b=(c,f)=>{const u=g(c,n.id_key);return`/map?layers=${f}&info=${f},${u}`};return(c,f)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,u=>{var p,m,h;return e.openBlock(),e.createElementBlock("div",{key:u.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",Ka,[e.createElementVNode("div",Ga,[e.createElementVNode("div",Xa,[e.createElementVNode("div",Ja,[e.createElementVNode("h2",Qa,e.toDisplayString(u[`${(p=r.value)==null?void 0:p.name}_text`]||u[(m=r.value)==null?void 0:m.name]||u[(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,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.name},[u[d.name]?(e.openBlock(),e.createElementBlock("div",ei,e.toDisplayString(u[`${d.name}_text`]||u[d.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",ti,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.name,class:"flex flex-wrap gap-1 ml-2"},[u[d.name]?(e.openBlock(),e.createElementBlock("span",ni,e.toDisplayString(u[`${d.name}_text`]||u[d.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",oi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,d=>{var x;return e.openBlock(),e.createElementBlock("div",{key:d.name},[e.createElementVNode("p",li,e.toDisplayString(d.ua),1),e.createElementVNode("p",ri,[Array.isArray(u[d==null?void 0:d.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(u[d==null?void 0:d.name],(S,T)=>(e.openBlock(),e.createElementBlock("span",{key:T,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(S),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(u[d==null?void 0:d.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=u[(d==null?void 0:d.name)+"_data"])==null?void 0:x.text)||u[(d==null?void 0:d.name)+"_text"]||u[d==null?void 0:d.name]||"Немає даних"),1)],64))],64))])])}),128))]),e.createElementVNode("div",ai,[l(u)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(u,u==null?void 0:u.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"},[...f[0]||(f[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,ii)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:y(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 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...f[1]||(f[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,si)])])])])])}),128))}}),ci={class:"space-y-4"},di={class:"flex flex-col lg:flex-row lg:items-center py-2 px-2 lg:px-3"},ui={class:"flex-1"},pi={class:"grid grid-cols-1 lg:grid-cols-12 gap-2 lg:gap-2 w-full text-xs"},mi={class:"col-span-1 lg:col-span-4"},fi={class:"flex flex-row items-center justify-center h-full"},gi={key:0,class:"inline-flex items-center rounded-full border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80 mt-1 text-[9px] lg:text-[10px] font-normal px-1 lg:px-1.5 py-0","data-v0-t":"badge"},yi={key:1,class:"flex flex-wrap gap-1 mt-1"},hi={key:0,class:"inline-flex items-center rounded-full border px-2 lg:px-2.5 py-0.5 text-[10px] lg:text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},xi={class:"col-span-1 lg:col-span-7 mt-2 lg:mt-0"},bi={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2 lg:gap-3"},ki={class:"text-[9px] lg:text-[10px] text-gray-500 mb-1"},wi={class:"truncate font-medium text-xs lg:text-sm"},_i={class:"flex items-center justify-center gap-2 mt-3 lg:mt-0"},Ei=["href"],Ni=["href"],Cn=e.defineComponent({__name:"template-3",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=f=>(f==null?void 0:f.service_id)&&(f==null?void 0:f.is_map)&&f[n.id_key]&&(f==null?void 0:f.geom),r=e.computed(()=>n.columns.find(f=>f.meta==="title")),a=e.computed(()=>n.columns.filter(f=>f.meta==="category")),i=e.computed(()=>n.columns.filter(f=>f.meta==="tags")),s=e.computed(()=>n.columns.filter(f=>f.meta!=="title")),g=e.computed(()=>"bg-blue-500"),y=(f,u)=>{if(u)return f[u]},b=f=>{const u=y(f,n.id_key);return`${n.path}?id=${u}`},c=(f,u)=>{const p=y(f,n.id_key);return`/map?layers=${u}&info=${u},${p}`};return(f,u)=>(e.openBlock(),e.createElementBlock("div",ci,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,p=>{var m,h,d;return e.openBlock(),e.createElementBlock("div",{key:p.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",di,[e.createElementVNode("div",ui,[e.createElementVNode("div",pi,[e.createElementVNode("div",mi,[e.createElementVNode("div",fi,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-6 lg:h-8 rounded-full mr-2 lg:mr-3 mb-2 lg:mb-0",g.value])},null,2),e.createElementVNode("p",{class:e.normalizeClass(["font-bold text-xs lg:text-sm text-left",{"w-full h-full flex items-center":!Array.isArray(i.value)||!i.value.length}])},e.toDisplayString(p[`${(m=r.value)==null?void 0:m.name}_text`]||p[(h=r.value)==null?void 0:h.name]||p[(d=r.value)==null?void 0:d.label]||"Не вказано"),3)]),Array.isArray(a.value)&&a.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.value,x=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:x.name},[p[x.name]?(e.openBlock(),e.createElementBlock("div",gi,e.toDisplayString(p[`${x.name}_text`]||p[x.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",yi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,x=>(e.openBlock(),e.createElementBlock("div",{key:x.name,class:"flex flex-wrap gap-1 mt-1"},[p[x.name]?(e.openBlock(),e.createElementBlock("span",hi,e.toDisplayString(p[`${x.name}_text`]||p[x.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",xi,[e.createElementVNode("div",bi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,x=>{var S;return e.openBlock(),e.createElementBlock("div",{key:x.name},[e.createElementVNode("p",ki,e.toDisplayString(x.ua),1),e.createElementVNode("p",wi,[Array.isArray(p[x==null?void 0:x.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(p[x==null?void 0:x.name],(T,P)=>(e.openBlock(),e.createElementBlock("span",{key:P,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},[x.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(p[x==null?void 0:x.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((S=p[(x==null?void 0:x.name)+"_data"])==null?void 0:S.text)||p[(x==null?void 0:x.name)+"_text"]||p[x==null?void 0:x.name]||"Немає даних"),1)],64))],64))])])}),128))])])])]),e.createElementVNode("div",_i,[l(p)?(e.openBlock(),e.createElementBlock("a",{key:0,href:c(p,p==null?void 0:p.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-xs lg: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-8 lg:h-9 rounded-md px-2 lg:px-3"},[...u[0]||(u[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-map-pin-check-inside ml-1 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,Ei)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:b(p),class:"ml-auto flex items-center justify-center gap-2 whitespace-nowrap text-xs lg:text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground rounded-md h-8 w-8 lg:h-7 lg:w-7 p-0",style:{"min-width":"2rem"}},[...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-chevron-right h-3.5 w-3.5 lg:h-4 lg:w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,Ni)])])])}),128))]))}}),Vi={class:"flex flex-col space-y-1.5 p-6 pb-2"},Bi={class:"flex items-center gap-2"},Ci={class:"tracking-tight text-lg font-medium"},vi={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"},$i={key:1,class:"flex"},Si={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"},Ai={class:"p-6 pt-0 pb-4"},Li={class:"grid grid-cols-2 gap-4"},Fi={class:"text-sm text-gray-500"},Mi={class:"font-medium"},Ti={class:"flex items-center p-6 pt-0 gap-2"},Di=["href"],Ii=["href"],vn=e.defineComponent({__name:"template-4",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},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")),g=(c,f)=>{if(f)return c[f]},y=c=>{const f=g(c,n.id_key);return`${n.path}?id=${f}`},b=(c,f)=>{const u=g(c,n.id_key);return`/map?layers=${f}&info=${f},${u}`};return(c,f)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,u=>{var p,m,h;return e.openBlock(),e.createElementBlock("div",{key:u.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",Vi,[e.createElementVNode("div",Bi,[e.createElementVNode("h3",Ci,e.toDisplayString(u[`${(p=r.value)==null?void 0:p.name}_text`]||u[(m=r.value)==null?void 0:m.name]||u[(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,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.name},[u[d.name]?(e.openBlock(),e.createElementBlock("div",vi,e.toDisplayString(u[`${d.name}_text`]||u[d.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",$i,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.name,class:"flex flex-wrap gap-1 ml-2"},[u[d.name]?(e.openBlock(),e.createElementBlock("span",Si,e.toDisplayString(u[`${d.name}_text`]||u[d.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ai,[e.createElementVNode("div",Li,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,d=>{var x;return e.openBlock(),e.createElementBlock("div",{key:d.name},[e.createElementVNode("p",Fi,e.toDisplayString(d.ua),1),e.createElementVNode("p",Mi,[Array.isArray(u[d==null?void 0:d.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(u[d==null?void 0:d.name],(S,T)=>(e.openBlock(),e.createElementBlock("span",{key:T,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(S),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(u[d==null?void 0:d.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=u[(d==null?void 0:d.name)+"_data"])==null?void 0:x.text)||u[(d==null?void 0:d.name)+"_text"]||u[d==null?void 0:d.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Ti,[l(u)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(u,u==null?void 0:u.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,Di)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:y(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 border bg-background h-10 px-4 py-2 rounded-md text-black border-black hover:bg-gray-100 hover:text-black"}," Детальніше ",8,Ii)])])}),128))}}),zi={class:"grid grid-cols-1 lg:grid-cols-12 lg:divide-x divide-y lg:divide-y-0 divide-gray-100"},ji={key:0,class:"w-full lg:w-auto lg:col-span-1"},Oi=["src"],Pi={key:1,class:"hidden lg:flex lg:col-span-1 items-center justify-center py-4 lg:py-0"},Ri={class:"col-span-1 lg:col-span-7 p-4 lg:p-4"},Ui={class:"flex flex-col mb-3 lg:flex-row lg:items-center lg:mb-1"},qi={class:"text-base lg:text-base font-bold text-gray-900 mb-2 lg:mr-2 lg:mb-0"},Hi={class:"flex flex-wrap gap-2 lg:gap-0"},Wi={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"},Yi={class:"text-sm text-gray-600 line-clamp-2 lg:line-clamp-1 mb-3 lg:mb-2"},Zi={class:"grid grid-cols-1 md:grid-cols-2 gap-y-3 md:gap-x-4 md:gap-y-1 text-sm"},Ki={class:"flex items-center mb-1 md:mb-0 md:mr-1 max-w-[50%]"},Gi=["innerHTML"],Xi={class:"text-gray-500 font-medium md:font-normal"},Ji={class:"text-gray-600 break-words line-clamp-2"},Qi={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"},es={class:"text-xs text-gray-500 mb-2 lg:mb-1.5"},ts={key:0,class:"flex flex-wrap gap-1.5 lg:gap-1"},ns={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"},os={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"},ls={class:"w-full space-y-2"},rs=["href"],as=["href"],$n=e.defineComponent({__name:"template-5",props:{items:{},item:{},columns:{},path:{},id_key:{default:"id"},query_params:{default:()=>[]}},setup(t){const n=t,o=e.computed(()=>n.items&&n.items.length||n.items?n.items:n.item!=null?[n.item]:[]),l=u=>(u==null?void 0:u.service_id)&&(u==null?void 0:u.is_map)&&u[n.id_key]&&(u==null?void 0:u.geom),r=e.computed(()=>n.columns.find(u=>u.meta==="title")),a=e.computed(()=>n.columns.filter(u=>u.meta==="category")),i=e.computed(()=>n.columns.filter(u=>u.meta==="tags")),s=e.computed(()=>n.columns.filter(u=>u.meta!=="title")),g=e.computed(()=>n.columns.find(u=>u.meta==="image")),y=e.computed(()=>n.columns.find(u=>u.meta==="desc")||n.columns.find(u=>u.name==="description")),b=(u,p)=>{if(p)return u[p]},c=u=>{const p=b(u,n.id_key);return`${n.path}?id=${p}`},f=(u,p)=>{const m=b(u,n.id_key);return`/map?layers=${p}&info=${p},${m}`};return(u,p)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,m=>{var h,d,x,S,T,P,N,V,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",zi,[g.value?(e.openBlock(),e.createElementBlock("div",ji,[m[(h=g.value)==null?void 0:h.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:m[(d=g.value)==null?void 0:d.name],alt:"image",class:"object-cover w-full h-48 lg:h-full lg:w-auto"},null,8,Oi)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Pi,[...p[0]||(p[0]=[e.createElementVNode("div",{class:"w-3 h-12 rounded-sm bg-blue-500",title:"Пріоритет: Високий","aria-hidden":"true"},null,-1)])])),e.createElementVNode("div",Ri,[e.createElementVNode("div",Ui,[e.createElementVNode("h3",qi,e.toDisplayString(m[`${(x=r.value)==null?void 0:x.name}_text`]||m[(S=r.value)==null?void 0:S.name]||m[(T=r.value)==null?void 0:T.label]||"Не вказано"),1),e.createElementVNode("div",Hi,[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},[m[F.name]?(e.openBlock(),e.createElementBlock("div",Wi,e.toDisplayString(m[`${F.name}_text`]||m[F.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)])]),e.createElementVNode("p",Yi,e.toDisplayString(((N=m[((P=y.value)==null?void 0:P.name)+"_data"])==null?void 0:N.text)||m[((V=y.value)==null?void 0:V.name)+"_text"]||m[(C=y.value)==null?void 0:C.name]),1),e.createElementVNode("div",Zi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,F=>{var I;return e.openBlock(),e.createElementBlock("div",{key:F.name,class:"flex flex-col md:flex-row md:items-center"},[e.createElementVNode("div",Ki,[F.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:F.icon},null,8,Gi)):e.createCommentVNode("",!0),e.createElementVNode("span",Xi,e.toDisplayString((F==null?void 0:F.ua)||F.label||F.name)+":",1)]),e.createElementVNode("span",Ji,[Array.isArray(m[F==null?void 0:F.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(m[F==null?void 0:F.name],(q,U)=>(e.openBlock(),e.createElementBlock("span",{key:U,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},[F.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(m[F==null?void 0:F.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((I=m[(F==null?void 0:F.name)+"_data"])==null?void 0:I.text)||m[(F==null?void 0:F.name)+"_text"]||m[F==null?void 0:F.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Qi,[e.createElementVNode("p",es," Теги: "+e.toDisplayString(i.value.length&&m[i.value[0].name]?"":"відсутні"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(),e.createElementBlock("div",ts,[(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"},[m[F.name]?(e.openBlock(),e.createElementBlock("span",ns,e.toDisplayString(m[`${F.name}_text`]||m[F.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",os,[e.createElementVNode("div",ls,[l(m)?(e.openBlock(),e.createElementBlock("a",{key:0,href:f(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,rs)):e.createCommentVNode("",!0),e.createElementVNode("a",{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,as)])])])])}),128))}}),Sn={template1:Vn,template2:Bn,template3:Cn,template4:vn,template5:$n},is={class:"space-y-4"},ss={class:"flex items-center gap-4"},cs={class:"text-lg font-semibold mb-4"},ds={key:1,class:"text-gray-400 text-center py-12"},us={key:2,class:"text-gray-400 text-center py-12"},ps=e.defineComponent({__name:"preview-tab",props:{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 b;return Array.isArray((b=o.value)==null?void 0:b.columns)?o.value.columns:[]}),i=e.computed(()=>{var b;return((b=o.value)==null?void 0:b.view)||"template1"}),s=e.computed(()=>Sn[i.value]||Sn.template1),g=e.computed(()=>{var f;const b=(f=o.value)==null?void 0:f.view;if(!b)return"template1";const c=l.find(u=>u.id===b);return(c==null?void 0:c.text)||b}),y=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5).map(c=>{var f,u;return{...c,service_id:(f=o.value)==null?void 0:f.service_id,is_map:(u=o.value)==null?void 0:u.is_map}}));return(b,c)=>(e.openBlock(),e.createElementBlock("div",is,[e.createElementVNode("div",ss,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:r,modelValue:o.value,"onUpdate:modelValue":c[0]||(c[0]=f=>o.value=f)},null,8,["modelValue"]))]),e.createElementVNode("h2",cs," Превʼю таблиці ("+e.toDisplayString(g.value)+") ",1),s.value&&y.value.length&&a.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{items:y.value,columns:a.value,path:"#",id_key:"id",key:i.value},null,8,["items","columns"])):y.value.length?(e.openBlock(),e.createElementBlock("div",us," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",ds," Немає даних для превʼю "))]))}}),ms={class:"relative h-screen flex flex-col bg-white p-8"},fs={class:"flex-1 flex flex-col min-h-0 overflow-hidden"},gs={class:"max-w-6xl mx-auto flex-1 flex flex-col min-h-0 w-full"},ys={class:"flex items-center justify-between mb-6 flex-shrink-0"},hs={class:"flex items-center gap-2"},xs={class:"w-full flex-shrink-0 mb-6"},bs={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"},ks=["onClick"],ws={class:"flex-1 min-h-0 overflow-y-auto"},_s=e.defineComponent({__name:"register",setup(t){const n=we.useRoute(),o=we.useRouter(),l=e.ref("list"),r=e.ref(""),a=[{name:"Список",id:"list"},{name:"Фільтри",id:"filters"},{name:"Картка",id:"card"},{name:"Перегляд",id:"preview"}],i={list:ka,filters:Ba,card:La,preview:ps},s=a.map(u=>u.id),g=e.ref({columns:[],filters:[],card:[],tableData:[]}),y=e.ref([]),b=async()=>{var p;if(!((p=g.value)==null?void 0:p.token)){re.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(g.value)});if(!m.ok)throw new Error(`Failed to save content: ${m.status}`);re.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(m){re.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(m)}},c=async u=>{try{const m=await(await fetch(`/api/gis-registry/${u}`)).json(),h=Array.isArray(m==null?void 0:m.rows)?m.rows:[];g.value.tableData=h.slice(0,3)}catch(p){console.error("Помилка завантаження превʼю:",p)}},f=async()=>{var u,p;try{const h=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),d=((u=h==null?void 0:h.rows)==null?void 0:u[0])||{};r.value=d.register_key||"",g.value={...d,columns:Array.isArray(d.columns)?d.columns:[],filters:Array.isArray(d.filters)?d.filters:[],card:Array.isArray(d.card)?d.card:[],tableData:Array.isArray(d.tableData)?d.tableData:[]},(p=h==null?void 0:h.tokens)!=null&&p.edit&&(g.value.token=h.tokens.edit),y.value=Array.isArray(h==null?void 0:h.fields)?h.fields:[]}catch(m){console.error("Помилка завантаження даних:",m)}};return e.onMounted(async()=>{const u=n.query.tab;typeof u=="string"&&s.includes(u)&&(l.value=u),await f(),r.value&&await c(r.value)}),e.watch(l,u=>{n.query.tab!==u&&o.replace({query:{...n.query,tab:u}})}),e.watch(()=>n.query.tab,u=>{typeof u=="string"&&s.includes(u)&&l.value!==u&&(l.value=u)}),(u,p)=>(e.openBlock(),e.createElementBlock("main",ms,[e.createElementVNode("div",fs,[e.createElementVNode("div",gs,[e.createElementVNode("div",ys,[p[2]||(p[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:p[0]||(p[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:b,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",xs,[e.createElementVNode("div",bs,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,m=>e.createElementVNode("button",{key:m.id,onClick:h=>l.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===l.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(m.name),11,ks)),64))])]),e.createElementVNode("div",ws,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i[l.value]),{data:g.value,"onUpdate:data":p[1]||(p[1]=m=>g.value=m),fields:y.value,key:l.value},null,40,["data","fields"]))])])])]))}});/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function An(t){return typeof t>"u"||t===null}function Es(t){return typeof t=="object"&&t!==null}function Ns(t){return Array.isArray(t)?t:An(t)?[]:[t]}function Vs(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 Bs(t,n){var o="",l;for(l=0;l<n;l+=1)o+=t;return o}function Cs(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var vs=An,$s=Es,Ss=Ns,As=Bs,Ls=Cs,Fs=Vs,ke={isNothing:vs,isObject:$s,toArray:Ss,repeat:As,isNegativeZero:Ls,extend:Fs};function Ln(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+=`
|
|
99
99
|
|
|
100
|
-
`+t.mark.snippet),l+" "+o):l}function
|
|
101
|
-
`+
|
|
102
|
-
`,
|
|
103
|
-
`,
|
|
104
|
-
`;return
|
|
105
|
-
\r`;function
|
|
106
|
-
`: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
|
|
107
|
-
`,n-1))}function
|
|
108
|
-
`,a?1+
|
|
109
|
-
`);break}for(l?Xe(
|
|
110
|
-
`,a?1+
|
|
111
|
-
`,
|
|
112
|
-
`,
|
|
113
|
-
`,a?1+
|
|
114
|
-
`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var o=new
|
|
115
|
-
`,l),r===-1?(i=t.slice(l),l=
|
|
116
|
-
`&&(a+=o),a+=i;return a}function
|
|
117
|
-
`+
|
|
100
|
+
`+t.mark.snippet),l+" "+o):l}function gt(t,n){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=n,this.message=Ln(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}gt.prototype=Object.create(Error.prototype),gt.prototype.constructor=gt,gt.prototype.toString=function(n){return this.name+": "+Ln(this,n)};var Be=gt;function Rt(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 Ut(t,n){return ke.repeat(" ",n-t.length)+t}function Ms(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="",g,y,b=Math.min(t.line+n.linesAfter,r.length).toString().length,c=n.maxLength-(n.indent+b+3);for(g=1;g<=n.linesBefore&&!(i-g<0);g++)y=Rt(t.buffer,l[i-g],r[i-g],t.position-(l[i]-l[i-g]),c),s=ke.repeat(" ",n.indent)+Ut((t.line-g+1).toString(),b)+" | "+y.str+`
|
|
101
|
+
`+s;for(y=Rt(t.buffer,l[i],r[i],t.position,c),s+=ke.repeat(" ",n.indent)+Ut((t.line+1).toString(),b)+" | "+y.str+`
|
|
102
|
+
`,s+=ke.repeat("-",n.indent+b+3+y.pos)+`^
|
|
103
|
+
`,g=1;g<=n.linesAfter&&!(i+g>=r.length);g++)y=Rt(t.buffer,l[i+g],r[i+g],t.position-(l[i]-l[i+g]),c),s+=ke.repeat(" ",n.indent)+Ut((t.line+g+1).toString(),b)+" | "+y.str+`
|
|
104
|
+
`;return s.replace(/\n$/,"")}var Ts=Ms,Ds=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Is=["scalar","sequence","mapping"];function zs(t){var n={};return t!==null&&Object.keys(t).forEach(function(o){t[o].forEach(function(l){n[String(l)]=o})}),n}function js(t,n){if(n=n||{},Object.keys(n).forEach(function(o){if(Ds.indexOf(o)===-1)throw new Be('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=zs(n.styleAliases||null),Is.indexOf(this.kind)===-1)throw new Be('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var _e=js;function Fn(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 Os(){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 qt(t){return this.extend(t)}qt.prototype.extend=function(n){var o=[],l=[];if(n instanceof _e)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 Be("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");o.forEach(function(a){if(!(a instanceof _e))throw new Be("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Be("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 Be("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 _e))throw new Be("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var r=Object.create(qt.prototype);return r.implicit=(this.implicit||[]).concat(o),r.explicit=(this.explicit||[]).concat(l),r.compiledImplicit=Fn(r,"implicit"),r.compiledExplicit=Fn(r,"explicit"),r.compiledTypeMap=Os(r.compiledImplicit,r.compiledExplicit),r};var Mn=qt,Tn=new _e("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}}),Dn=new _e("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}}),In=new _e("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}}),zn=new Mn({explicit:[Tn,Dn,In]});function Ps(t){if(t===null)return!0;var n=t.length;return n===1&&t==="~"||n===4&&(t==="null"||t==="Null"||t==="NULL")}function Rs(){return null}function Us(t){return t===null}var jn=new _e("tag:yaml.org,2002:null",{kind:"scalar",resolve:Ps,construct:Rs,predicate:Us,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function qs(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 Hs(t){return t==="true"||t==="True"||t==="TRUE"}function Ws(t){return Object.prototype.toString.call(t)==="[object Boolean]"}var On=new _e("tag:yaml.org,2002:bool",{kind:"scalar",resolve:qs,construct:Hs,predicate:Ws,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 Ys(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Zs(t){return 48<=t&&t<=55}function Ks(t){return 48<=t&&t<=57}function Gs(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(!Ys(t.charCodeAt(o)))return!1;l=!0}return l&&r!=="_"}if(r==="o"){for(o++;o<n;o++)if(r=t[o],r!=="_"){if(!Zs(t.charCodeAt(o)))return!1;l=!0}return l&&r!=="_"}}if(r==="_")return!1;for(;o<n;o++)if(r=t[o],r!=="_"){if(!Ks(t.charCodeAt(o)))return!1;l=!0}return!(!l||r==="_")}function Xs(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 Js(t){return Object.prototype.toString.call(t)==="[object Number]"&&t%1===0&&!ke.isNegativeZero(t)}var Pn=new _e("tag:yaml.org,2002:int",{kind:"scalar",resolve:Gs,construct:Xs,predicate:Js,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"]}}),Qs=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ec(t){return!(t===null||!Qs.test(t)||t[t.length-1]==="_")}function tc(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 nc=/^[-+]?[0-9]+e/;function oc(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(ke.isNegativeZero(t))return"-0.0";return o=t.toString(10),nc.test(o)?o.replace("e",".e"):o}function lc(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||ke.isNegativeZero(t))}var Rn=new _e("tag:yaml.org,2002:float",{kind:"scalar",resolve:ec,construct:tc,predicate:lc,represent:oc,defaultStyle:"lowercase"}),Un=zn.extend({implicit:[jn,On,Pn,Rn]}),qn=Un,Hn=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Wn=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 rc(t){return t===null?!1:Hn.exec(t)!==null||Wn.exec(t)!==null}function ac(t){var n,o,l,r,a,i,s,g=0,y=null,b,c,f;if(n=Hn.exec(t),n===null&&(n=Wn.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(g=n[7].slice(0,3);g.length<3;)g+="0";g=+g}return n[9]&&(b=+n[10],c=+(n[11]||0),y=(b*60+c)*6e4,n[9]==="-"&&(y=-y)),f=new Date(Date.UTC(o,l,r,a,i,s,g)),y&&f.setTime(f.getTime()-y),f}function ic(t){return t.toISOString()}var Yn=new _e("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:rc,construct:ac,instanceOf:Date,represent:ic});function sc(t){return t==="<<"||t===null}var Zn=new _e("tag:yaml.org,2002:merge",{kind:"scalar",resolve:sc}),Ht=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
|
|
105
|
+
\r`;function cc(t){if(t===null)return!1;var n,o,l=0,r=t.length,a=Ht;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 dc(t){var n,o,l=t.replace(/[\r\n=]/g,""),r=l.length,a=Ht,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 uc(t){var n="",o=0,l,r,a=t.length,i=Ht;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 pc(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var Kn=new _e("tag:yaml.org,2002:binary",{kind:"scalar",resolve:cc,construct:dc,predicate:pc,represent:uc}),mc=Object.prototype.hasOwnProperty,fc=Object.prototype.toString;function gc(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,fc.call(r)!=="[object Object]")return!1;for(a in r)if(mc.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 yc(t){return t!==null?t:[]}var Gn=new _e("tag:yaml.org,2002:omap",{kind:"sequence",resolve:gc,construct:yc}),hc=Object.prototype.toString;function xc(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 bc(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 Xn=new _e("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:xc,construct:bc}),kc=Object.prototype.hasOwnProperty;function wc(t){if(t===null)return!0;var n,o=t;for(n in o)if(kc.call(o,n)&&o[n]!==null)return!1;return!0}function _c(t){return t!==null?t:{}}var Jn=new _e("tag:yaml.org,2002:set",{kind:"mapping",resolve:wc,construct:_c}),Wt=qn.extend({implicit:[Yn,Zn],explicit:[Kn,Gn,Xn,Jn]}),We=Object.prototype.hasOwnProperty,Bt=1,Qn=2,eo=3,Ct=4,Yt=1,Ec=2,to=3,Nc=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Vc=/[\x85\u2028\u2029]/,Bc=/[,\[\]\{\}]/,no=/^(?:!|!!|![a-z\-]+!)$/i,oo=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function lo(t){return Object.prototype.toString.call(t)}function Te(t){return t===10||t===13}function Xe(t){return t===9||t===32}function ve(t){return t===9||t===32||t===10||t===13}function lt(t){return t===44||t===91||t===93||t===123||t===125}function Cc(t){var n;return 48<=t&&t<=57?t-48:(n=t|32,97<=n&&n<=102?n-97+10:-1)}function vc(t){return t===120?2:t===117?4:t===85?8:0}function $c(t){return 48<=t&&t<=57?t-48:-1}function ro(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?`
|
|
106
|
+
`: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 Sc(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}for(var ao=new Array(256),io=new Array(256),rt=0;rt<256;rt++)ao[rt]=ro(rt)?1:0,io[rt]=ro(rt);function Ac(t,n){this.input=t,this.filename=n.filename||null,this.schema=n.schema||Wt,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 so(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=Ts(o),new Be(n,o)}function X(t,n){throw so(t,n)}function vt(t,n){t.onWarning&&t.onWarning.call(null,so(t,n))}var co={YAML:function(n,o,l){var r,a,i;n.version!==null&&X(n,"duplication of %YAML directive"),l.length!==1&&X(n,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(l[0]),r===null&&X(n,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),i=parseInt(r[2],10),a!==1&&X(n,"unacceptable YAML version of the document"),n.version=l[0],n.checkLineBreaks=i<2,i!==1&&i!==2&&vt(n,"unsupported YAML version of the document")},TAG:function(n,o,l){var r,a;l.length!==2&&X(n,"TAG directive accepts exactly two arguments"),r=l[0],a=l[1],no.test(r)||X(n,"ill-formed tag handle (first argument) of the TAG directive"),We.call(n.tagMap,r)&&X(n,'there is a previously declared suffix for "'+r+'" tag handle'),oo.test(a)||X(n,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{X(n,"tag prefix is malformed: "+a)}n.tagMap[r]=a}};function Ye(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||X(t,"expected valid JSON character");else Nc.test(s)&&X(t,"the stream contains non-printable characters");t.result+=s}}function uo(t,n,o,l){var r,a,i,s;for(ke.isObject(o)||X(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],We.call(n,a)||(n[a]=o[a],l[a]=!0)}function at(t,n,o,l,r,a,i,s,g){var y,b;if(Array.isArray(r))for(r=Array.prototype.slice.call(r),y=0,b=r.length;y<b;y+=1)Array.isArray(r[y])&&X(t,"nested arrays are not supported inside keys"),typeof r=="object"&&lo(r[y])==="[object Object]"&&(r[y]="[object Object]");if(typeof r=="object"&&lo(r)==="[object Object]"&&(r="[object Object]"),r=String(r),n===null&&(n={}),l==="tag:yaml.org,2002:merge")if(Array.isArray(a))for(y=0,b=a.length;y<b;y+=1)uo(t,n,a[y],o);else uo(t,n,a,o);else!t.json&&!We.call(o,r)&&We.call(n,r)&&(t.line=i||t.line,t.lineStart=s||t.lineStart,t.position=g||t.position,X(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 Zt(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++):X(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function he(t,n,o){for(var l=0,r=t.input.charCodeAt(t.position);r!==0;){for(;Xe(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(Te(r))for(Zt(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&&vt(t,"deficient indentation"),l}function $t(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||ve(o)))}function Kt(t,n){n===1?t.result+=" ":n>1&&(t.result+=ke.repeat(`
|
|
107
|
+
`,n-1))}function Lc(t,n,o){var l,r,a,i,s,g,y,b,c=t.kind,f=t.result,u;if(u=t.input.charCodeAt(t.position),ve(u)||lt(u)||u===35||u===38||u===42||u===33||u===124||u===62||u===39||u===34||u===37||u===64||u===96||(u===63||u===45)&&(r=t.input.charCodeAt(t.position+1),ve(r)||o&<(r)))return!1;for(t.kind="scalar",t.result="",a=i=t.position,s=!1;u!==0;){if(u===58){if(r=t.input.charCodeAt(t.position+1),ve(r)||o&<(r))break}else if(u===35){if(l=t.input.charCodeAt(t.position-1),ve(l))break}else{if(t.position===t.lineStart&&$t(t)||o&<(u))break;if(Te(u))if(g=t.line,y=t.lineStart,b=t.lineIndent,he(t,!1,-1),t.lineIndent>=n){s=!0,u=t.input.charCodeAt(t.position);continue}else{t.position=i,t.line=g,t.lineStart=y,t.lineIndent=b;break}}s&&(Ye(t,a,i,!1),Kt(t,t.line-g),a=i=t.position,s=!1),Xe(u)||(i=t.position+1),u=t.input.charCodeAt(++t.position)}return Ye(t,a,i,!1),t.result?!0:(t.kind=c,t.result=f,!1)}function Fc(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(Ye(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 Te(o)?(Ye(t,l,r,!0),Kt(t,he(t,!1,n)),l=r=t.position):t.position===t.lineStart&&$t(t)?X(t,"unexpected end of the document within a single quoted scalar"):(t.position++,r=t.position);X(t,"unexpected end of the stream within a single quoted scalar")}function Mc(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 Ye(t,o,t.position,!0),t.position++,!0;if(s===92){if(Ye(t,o,t.position,!0),s=t.input.charCodeAt(++t.position),Te(s))he(t,!1,n);else if(s<256&&ao[s])t.result+=io[s],t.position++;else if((i=vc(s))>0){for(r=i,a=0;r>0;r--)s=t.input.charCodeAt(++t.position),(i=Cc(s))>=0?a=(a<<4)+i:X(t,"expected hexadecimal character");t.result+=Sc(a),t.position++}else X(t,"unknown escape sequence");o=l=t.position}else Te(s)?(Ye(t,o,l,!0),Kt(t,he(t,!1,n)),o=l=t.position):t.position===t.lineStart&&$t(t)?X(t,"unexpected end of the document within a double quoted scalar"):(t.position++,l=t.position)}X(t,"unexpected end of the stream within a double quoted scalar")}function Tc(t,n){var o=!0,l,r,a,i=t.tag,s,g=t.anchor,y,b,c,f,u,p=Object.create(null),m,h,d,x;if(x=t.input.charCodeAt(t.position),x===91)b=93,u=!1,s=[];else if(x===123)b=125,u=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),x=t.input.charCodeAt(++t.position);x!==0;){if(he(t,!0,n),x=t.input.charCodeAt(t.position),x===b)return t.position++,t.tag=i,t.anchor=g,t.kind=u?"mapping":"sequence",t.result=s,!0;o?x===44&&X(t,"expected the node content, but found ','"):X(t,"missed comma between flow collection entries"),h=m=d=null,c=f=!1,x===63&&(y=t.input.charCodeAt(t.position+1),ve(y)&&(c=f=!0,t.position++,he(t,!0,n))),l=t.line,r=t.lineStart,a=t.position,it(t,n,Bt,!1,!0),h=t.tag,m=t.result,he(t,!0,n),x=t.input.charCodeAt(t.position),(f||t.line===l)&&x===58&&(c=!0,x=t.input.charCodeAt(++t.position),he(t,!0,n),it(t,n,Bt,!1,!0),d=t.result),u?at(t,s,p,h,m,d,l,r,a):c?s.push(at(t,null,p,h,m,d,l,r,a)):s.push(m),he(t,!0,n),x=t.input.charCodeAt(t.position),x===44?(o=!0,x=t.input.charCodeAt(++t.position)):o=!1}X(t,"unexpected end of the stream within a flow collection")}function Dc(t,n){var o,l,r=Yt,a=!1,i=!1,s=n,g=0,y=!1,b,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)Yt===r?r=c===43?to:Ec:X(t,"repeat of a chomping mode identifier");else if((b=$c(c))>=0)b===0?X(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):i?X(t,"repeat of an indentation width identifier"):(s=n+b-1,i=!0);else break;if(Xe(c)){do c=t.input.charCodeAt(++t.position);while(Xe(c));if(c===35)do c=t.input.charCodeAt(++t.position);while(!Te(c)&&c!==0)}for(;c!==0;){for(Zt(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),Te(c)){g++;continue}if(t.lineIndent<s){r===to?t.result+=ke.repeat(`
|
|
108
|
+
`,a?1+g:g):r===Yt&&a&&(t.result+=`
|
|
109
|
+
`);break}for(l?Xe(c)?(y=!0,t.result+=ke.repeat(`
|
|
110
|
+
`,a?1+g:g)):y?(y=!1,t.result+=ke.repeat(`
|
|
111
|
+
`,g+1)):g===0?a&&(t.result+=" "):t.result+=ke.repeat(`
|
|
112
|
+
`,g):t.result+=ke.repeat(`
|
|
113
|
+
`,a?1+g:g),a=!0,i=!0,g=0,o=t.position;!Te(c)&&c!==0;)c=t.input.charCodeAt(++t.position);Ye(t,o,t.position,!1)}return!0}function po(t,n){var o,l=t.tag,r=t.anchor,a=[],i,s=!1,g;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=a),g=t.input.charCodeAt(t.position);g!==0&&(t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,X(t,"tab characters must not be used in indentation")),!(g!==45||(i=t.input.charCodeAt(t.position+1),!ve(i))));){if(s=!0,t.position++,he(t,!0,-1)&&t.lineIndent<=n){a.push(null),g=t.input.charCodeAt(t.position);continue}if(o=t.line,it(t,n,eo,!1,!0),a.push(t.result),he(t,!0,-1),g=t.input.charCodeAt(t.position),(t.line===o||t.lineIndent>n)&&g!==0)X(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 Ic(t,n,o){var l,r,a,i,s,g,y=t.tag,b=t.anchor,c={},f=Object.create(null),u=null,p=null,m=null,h=!1,d=!1,x;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=c),x=t.input.charCodeAt(t.position);x!==0;){if(!h&&t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,X(t,"tab characters must not be used in indentation")),l=t.input.charCodeAt(t.position+1),a=t.line,(x===63||x===58)&&ve(l))x===63?(h&&(at(t,c,f,u,p,null,i,s,g),u=p=m=null),d=!0,h=!0,r=!0):h?(h=!1,r=!0):X(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,x=l;else{if(i=t.line,s=t.lineStart,g=t.position,!it(t,o,Qn,!1,!0))break;if(t.line===a){for(x=t.input.charCodeAt(t.position);Xe(x);)x=t.input.charCodeAt(++t.position);if(x===58)x=t.input.charCodeAt(++t.position),ve(x)||X(t,"a whitespace character is expected after the key-value separator within a block mapping"),h&&(at(t,c,f,u,p,null,i,s,g),u=p=m=null),d=!0,h=!1,r=!1,u=t.tag,p=t.result;else if(d)X(t,"can not read an implicit mapping pair; a colon is missed");else return t.tag=y,t.anchor=b,!0}else if(d)X(t,"can not read a block mapping entry; a multiline key may not be an implicit key");else return t.tag=y,t.anchor=b,!0}if((t.line===a||t.lineIndent>n)&&(h&&(i=t.line,s=t.lineStart,g=t.position),it(t,n,Ct,!0,r)&&(h?p=t.result:m=t.result),h||(at(t,c,f,u,p,m,i,s,g),u=p=m=null),he(t,!0,-1),x=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>n)&&x!==0)X(t,"bad indentation of a mapping entry");else if(t.lineIndent<n)break}return h&&at(t,c,f,u,p,null,i,s,g),d&&(t.tag=y,t.anchor=b,t.kind="mapping",t.result=c),d}function zc(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&&X(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)):X(t,"unexpected end of the stream within a verbatim tag")}else{for(;i!==0&&!ve(i);)i===33&&(l?X(t,"tag suffix cannot contain exclamation marks"):(r=t.input.slice(n-1,t.position+1),no.test(r)||X(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),Bc.test(a)&&X(t,"tag suffix cannot contain flow indicator characters")}a&&!oo.test(a)&&X(t,"tag name cannot contain such characters: "+a);try{a=decodeURIComponent(a)}catch{X(t,"tag name is malformed: "+a)}return o?t.tag=a:We.call(t.tagMap,r)?t.tag=t.tagMap[r]+a:r==="!"?t.tag="!"+a:r==="!!"?t.tag="tag:yaml.org,2002:"+a:X(t,'undeclared tag handle "'+r+'"'),!0}function jc(t){var n,o;if(o=t.input.charCodeAt(t.position),o!==38)return!1;for(t.anchor!==null&&X(t,"duplication of an anchor property"),o=t.input.charCodeAt(++t.position),n=t.position;o!==0&&!ve(o)&&!lt(o);)o=t.input.charCodeAt(++t.position);return t.position===n&&X(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(n,t.position),!0}function Oc(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&&!ve(l)&&!lt(l);)l=t.input.charCodeAt(++t.position);return t.position===n&&X(t,"name of an alias node must contain at least one character"),o=t.input.slice(n,t.position),We.call(t.anchorMap,o)||X(t,'unidentified alias "'+o+'"'),t.result=t.anchorMap[o],he(t,!0,-1),!0}function it(t,n,o,l,r){var a,i,s,g=1,y=!1,b=!1,c,f,u,p,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=Ct===o||eo===o,l&&he(t,!0,-1)&&(y=!0,t.lineIndent>n?g=1:t.lineIndent===n?g=0:t.lineIndent<n&&(g=-1)),g===1)for(;zc(t)||jc(t);)he(t,!0,-1)?(y=!0,s=a,t.lineIndent>n?g=1:t.lineIndent===n?g=0:t.lineIndent<n&&(g=-1)):s=!1;if(s&&(s=y||r),(g===1||Ct===o)&&(Bt===o||Qn===o?m=n:m=n+1,h=t.position-t.lineStart,g===1?s&&(po(t,h)||Ic(t,h,m))||Tc(t,m)?b=!0:(i&&Dc(t,m)||Fc(t,m)||Mc(t,m)?b=!0:Oc(t)?(b=!0,(t.tag!==null||t.anchor!==null)&&X(t,"alias node should not have any properties")):Lc(t,m,Bt===o)&&(b=!0,t.tag===null&&(t.tag="?")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):g===0&&(b=s&&po(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"&&X(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,f=t.implicitTypes.length;c<f;c+=1)if(p=t.implicitTypes[c],p.resolve(t.result)){t.result=p.construct(t.result),t.tag=p.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else if(t.tag!=="!"){if(We.call(t.typeMap[t.kind||"fallback"],t.tag))p=t.typeMap[t.kind||"fallback"][t.tag];else for(p=null,u=t.typeMap.multi[t.kind||"fallback"],c=0,f=u.length;c<f;c+=1)if(t.tag.slice(0,u[c].tag.length)===u[c].tag){p=u[c];break}p||X(t,"unknown tag !<"+t.tag+">"),t.result!==null&&p.kind!==t.kind&&X(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+p.kind+'", not "'+t.kind+'"'),p.resolve(t.result,t.tag)?(t.result=p.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):X(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||b}function Pc(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&&(he(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&&!ve(i);)i=t.input.charCodeAt(++t.position);for(l=t.input.slice(o,t.position),r=[],l.length<1&&X(t,"directive name must not be less than one character in length");i!==0;){for(;Xe(i);)i=t.input.charCodeAt(++t.position);if(i===35){do i=t.input.charCodeAt(++t.position);while(i!==0&&!Te(i));break}if(Te(i))break;for(o=t.position;i!==0&&!ve(i);)i=t.input.charCodeAt(++t.position);r.push(t.input.slice(o,t.position))}i!==0&&Zt(t),We.call(co,l)?co[l](t,l,r):vt(t,'unknown document directive "'+l+'"')}if(he(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,he(t,!0,-1)):a&&X(t,"directives end mark is expected"),it(t,t.lineIndent-1,Ct,!1,!0),he(t,!0,-1),t.checkLineBreaks&&Vc.test(t.input.slice(n,t.position))&&vt(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&$t(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,he(t,!0,-1));return}if(t.position<t.length-1)X(t,"end of the stream or a document separator is expected");else return}function mo(t,n){t=String(t),n=n||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`
|
|
114
|
+
`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var o=new Ac(t,n),l=t.indexOf("\0");for(l!==-1&&(o.position=l,X(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;)Pc(o);return o.documents}function Rc(t,n,o){n!==null&&typeof n=="object"&&typeof o>"u"&&(o=n,n=null);var l=mo(t,o);if(typeof n!="function")return l;for(var r=0,a=l.length;r<a;r+=1)n(l[r])}function Uc(t,n){var o=mo(t,n);if(o.length!==0){if(o.length===1)return o[0];throw new Be("expected a single document in the stream, but found more")}}var qc=Rc,Hc=Uc,fo={loadAll:qc,load:Hc},go=Object.prototype.toString,yo=Object.prototype.hasOwnProperty,Gt=65279,Wc=9,yt=10,Yc=13,Zc=32,Kc=33,Gc=34,Xt=35,Xc=37,Jc=38,Qc=39,ed=42,ho=44,td=45,St=58,nd=61,od=62,ld=63,rd=64,xo=91,bo=93,ad=96,ko=123,id=124,wo=125,Ee={};Ee[0]="\\0",Ee[7]="\\a",Ee[8]="\\b",Ee[9]="\\t",Ee[10]="\\n",Ee[11]="\\v",Ee[12]="\\f",Ee[13]="\\r",Ee[27]="\\e",Ee[34]='\\"',Ee[92]="\\\\",Ee[133]="\\N",Ee[160]="\\_",Ee[8232]="\\L",Ee[8233]="\\P";var sd=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],cd=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function dd(t,n){var o,l,r,a,i,s,g;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)),g=t.compiledTypeMap.fallback[i],g&&yo.call(g.styleAliases,s)&&(s=g.styleAliases[s]),o[i]=s;return o}function ud(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 Be("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+o+ke.repeat("0",l-n.length)+n}var pd=1,ht=2;function md(t){this.schema=t.schema||Wt,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=ke.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=dd(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==='"'?ht:pd,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 _o(t,n){for(var o=ke.repeat(" ",n),l=0,r=-1,a="",i,s=t.length;l<s;)r=t.indexOf(`
|
|
115
|
+
`,l),r===-1?(i=t.slice(l),l=s):(i=t.slice(l,r+1),l=r+1),i.length&&i!==`
|
|
116
|
+
`&&(a+=o),a+=i;return a}function Jt(t,n){return`
|
|
117
|
+
`+ke.repeat(" ",t.indent*n)}function fd(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 At(t){return t===Zc||t===Wc}function xt(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==Gt||65536<=t&&t<=1114111}function Eo(t){return xt(t)&&t!==Gt&&t!==Yc&&t!==yt}function No(t,n,o){var l=Eo(t),r=l&&!At(t);return(o?l:l&&t!==ho&&t!==xo&&t!==bo&&t!==ko&&t!==wo)&&t!==Xt&&!(n===St&&!r)||Eo(n)&&!At(n)&&t===Xt||n===St&&r}function gd(t){return xt(t)&&t!==Gt&&!At(t)&&t!==td&&t!==ld&&t!==St&&t!==ho&&t!==xo&&t!==bo&&t!==ko&&t!==wo&&t!==Xt&&t!==Jc&&t!==ed&&t!==Kc&&t!==id&&t!==nd&&t!==od&&t!==Qc&&t!==Gc&&t!==Xc&&t!==rd&&t!==ad}function yd(t){return!At(t)&&t!==St}function bt(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 Vo(t){var n=/^\n* /;return n.test(t)}var Bo=1,Qt=2,Co=3,vo=4,st=5;function hd(t,n,o,l,r,a,i,s){var g,y=0,b=null,c=!1,f=!1,u=l!==-1,p=-1,m=gd(bt(t,0))&&yd(bt(t,t.length-1));if(n||i)for(g=0;g<t.length;y>=65536?g+=2:g++){if(y=bt(t,g),!xt(y))return st;m=m&&No(y,b,s),b=y}else{for(g=0;g<t.length;y>=65536?g+=2:g++){if(y=bt(t,g),y===yt)c=!0,u&&(f=f||g-p-1>l&&t[p+1]!==" ",p=g);else if(!xt(y))return st;m=m&&No(y,b,s),b=y}f=f||u&&g-p-1>l&&t[p+1]!==" "}return!c&&!f?m&&!i&&!r(t)?Bo:a===ht?st:Qt:o>9&&Vo(t)?st:i?a===ht?st:Qt:f?vo:Co}function xd(t,n,o,l,r){t.dump=(function(){if(n.length===0)return t.quotingType===ht?'""':"''";if(!t.noCompatMode&&(sd.indexOf(n)!==-1||cd.test(n)))return t.quotingType===ht?'"'+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 g(y){return fd(t,y)}switch(hd(n,s,t.indent,i,g,t.quotingType,t.forceQuotes&&!l,r)){case Bo:return n;case Qt:return"'"+n.replace(/'/g,"''")+"'";case Co:return"|"+$o(n,t.indent)+So(_o(n,a));case vo:return">"+$o(n,t.indent)+So(_o(bd(n,i),a));case st:return'"'+kd(n)+'"';default:throw new Be("impossible error: invalid scalar style")}})()}function $o(t,n){var o=Vo(t)?String(n):"",l=t[t.length-1]===`
|
|
118
118
|
`,r=l&&(t[t.length-2]===`
|
|
119
119
|
`||t===`
|
|
120
120
|
`),a=r?"+":l?"":"-";return o+a+`
|
|
121
|
-
`}function
|
|
122
|
-
`?t.slice(0,-1):t}function
|
|
123
|
-
`);return
|
|
124
|
-
`||t[0]===" ",a,i;i=o.exec(t);){var
|
|
125
|
-
`:"")+
|
|
126
|
-
`+t.slice(r,a),r=a+1),i=
|
|
127
|
-
`,t.length-r>n&&i>r?
|
|
128
|
-
`+t.slice(i+1):
|
|
129
|
-
`:""}var Ed=_d,Nd={dump:Ed};function en(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 Vd=_e,Bd=Fn,Cd=In,vd=Rn,$d=Un,Sd=Ht,Fo=mo.load,Ad=mo.loadAll,tn=Nd.dump,Ld=Be,Fd={binary:Zn,float:Pn,map:Dn,null:jn,pairs:Gn,set:Xn,timestamp:Yn,bool:zn,int:On,merge:Wn,omap:Kn,seq:Tn,str:Mn},Md=en("safeLoad","load"),Td=en("safeLoadAll","loadAll"),Dd=en("safeDump","dump"),Id={Type:Vd,Schema:Bd,FAILSAFE_SCHEMA:Cd,JSON_SCHEMA:vd,CORE_SCHEMA:$d,DEFAULT_SCHEMA:Sd,load:Fo,loadAll:Ad,dump:tn,YAMLException:Ld,types:Fd,safeLoad:Md,safeLoadAll:Td,safeDump:Dd};const jd={},zd={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 Od(t,n){return e.openBlock(),e.createElementBlock("svg",zd,[...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 Mo=Q(jd,[["render",Od]]),Pd={},Rd={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 Ud(t,n){return e.openBlock(),e.createElementBlock("svg",Rd,[...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 qd=Q(Pd,[["render",Ud]]),Hd={},Yd={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 Wd(t,n){return e.openBlock(),e.createElementBlock("svg",Yd,[...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 Zd=Q(Hd,[["render",Wd]]),Kd={},Gd={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 Xd(t,n){return e.openBlock(),e.createElementBlock("svg",Gd,[...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 Jd=Q(Kd,[["render",Xd]]),Qd={},eu={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 tu(t,n){return e.openBlock(),e.createElementBlock("svg",eu,[...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 nu=Q(Qd,[["render",tu]]),At=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,c=!1;function y(){return new Promise((b,d)=>{if(i)return b(i);if(window.monaco)return i=window.monaco,b(i);const h=u=>{if([...document.styleSheets].some(g=>{var s;return(s=g==null?void 0:g.href)==null?void 0:s.includes(u)}))return;const m=document.createElement("link");m.rel="stylesheet",m.href=u,document.head.appendChild(m)},p=u=>new Promise((m,g)=>{const s=document.createElement("script");s.src=u,s.onload=()=>m(!0),s.onerror=g,document.body.appendChild(s)});h("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),p("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,b(i)})}).catch(d)})}function f(){!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}}),a.onDidChangeModelContent(()=>{c||l("update:modelValue",a.getValue())}))}return e.watch(()=>o.modelValue,b=>{if(!a)return;const d=a.getValue();b!==d&&(c=!0,a.setValue(b||""),c=!1)}),e.watch(()=>o.language,b=>{a&&i&&i.editor.setModelLanguage(a.getModel(),b||"yaml")}),e.watch(()=>o.theme,b=>{a&&i&&i.editor.setTheme(b||"vs-light")}),e.onMounted(async()=>{await y(),f()}),e.onBeforeUnmount(()=>{a&&a.dispose()}),(b,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"editorContainer",ref:r,class:"w-full h-full"},null,512))}}),ou={class:"flex flex-col flex-1 overflow-hidden"},lu={class:"flex justify-end gap-2"},ru=["href"],au={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"},su={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},cu=e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{}},emits:["update:styleYaml","update"],setup(t,{emit:n}){const o=t,l=n,r=e.ref("");e.watch(()=>o.styleYaml,y=>{try{const f=y?tn(y):"";!r.value&&f!==r.value&&(r.value=f)}catch{r.value=""}},{immediate:!0,deep:!0}),e.watch(r,async y=>{var f,b;try{const d=y?Fo(y):null;if((f=d==null?void 0:d.colorAttr)!=null&&f.length&&((b=o.styleYaml)==null?void 0:b.colorAttr)!==d.colorAttr){const h=await a(d.colorAttr);d.colors=h.reduce((u,m,g)=>({...u,[m.id.toString()]:i[g]}),{});const p=tn(d);p!==r.value&&(r.value=p)}JSON.stringify(d)!==JSON.stringify(o.styleYaml)&&l("update:styleYaml",d)}catch{}});async function a(y){return(await fetch(`/api/gis-service/${o.token}/${y}`).then(b=>b.json())).rows}const i=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],c=async()=>{const y=o.styleYaml?JSON.stringify(o.styleYaml):"null";try{await fetch(`/api/gis-service/${o.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:y})}),l("update"),re.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(f){re.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(f)}};return(y,f)=>(e.openBlock(),e.createElementBlock("div",ou,[e.createElementVNode("div",lu,[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,ru),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"},[...f[1]||(f[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",au,[e.createElementVNode("div",iu,[f[2]||(f[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",su,[e.createVNode(At,{modelValue:r.value,"onUpdate:modelValue":f[0]||(f[0]=b=>r.value=b),language:"yaml",theme:"vs-light"},null,8,["modelValue"])])])])]))}});function ct(t){if(t==null)return null;const n=Number(typeof t=="string"?t.trim():t);return Number.isFinite(n)?n:null}function dt(t){if(!t)return null;if(Array.isArray(t)&&t.length>=2){const n=ct(t[0]),o=ct(t[1]);return n!=null&&o!=null?[n,o]:null}if(typeof t=="object"){const n=t;if(Array.isArray(n.coordinates))return dt(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=ct(o),a=ct(l);if(r!=null&&a!=null)return[r,a]}}if(typeof t=="string"&&t.includes(",")){const[n,o]=t.split(","),l=ct(n),r=ct(o);return l!=null&&r!=null?[l,r]:null}return null}const To=Symbol("MapContext");function du(t){const n=e.shallowRef(null),o=e.ref(!1);let l=!1;const r=[],a=()=>{l=!0,r.length&&r.forEach(h=>h())},i=()=>{const h=t.container;return typeof h=="string"?document.getElementById(h):(h==null?void 0:h.value)!==void 0?h.value:h},c=()=>l?Promise.resolve():new Promise(h=>r.push(h)),y=(h,p)=>{if(h==null)return p;const u=Number(typeof h=="string"?h.trim():h);return Number.isFinite(u)?u:p},f=async()=>{var _,D,P,F,M,L,T;if(typeof window>"u"||n.value)return;const h=i();if(!h)throw new Error("Map container not found");const p=t.settings||null,u=dt((_=p==null?void 0:p.map)==null?void 0:_.center)||[30,50],m=y((D=p==null?void 0:p.map)==null?void 0:D.zoom,7),g=y((P=p==null?void 0:p.map)==null?void 0:P.maxZoom,20),x={...{attributionControl:!1,center:u,zoom:m,maxZoom:g,minZoom:4},...t.mapOptions||{},container:h};x.maxZoom==null&&(x.maxZoom=g),n.value=new maplibregl.Map(x),(F=t.controls)!=null&&F.navigation&&n.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(M=t.controls)!=null&&M.scale&&n.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(L=t.controls)!=null&&L.fullscreen&&n.value.addControl(new maplibregl.FullscreenControl,"top-right"),(T=t.controls)!=null&&T.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()})},b=()=>{n.value&&(n.value.remove(),n.value=null,o.value=!1)};e.onMounted(f),e.onUnmounted(b);const d={map:n,ready:c,flyTo:h=>{var p;return(p=n.value)==null?void 0:p.flyTo(h)},fitBounds:(h,p)=>{var u;return(u=n.value)==null?void 0:u.fitBounds(h,p)},setCenter:h=>{var p;return(p=n.value)==null?void 0:p.setCenter(h)},setZoom:h=>{var p;return(p=n.value)==null?void 0:p.setZoom(h)},addControl:(h,p)=>{var u;return(u=n.value)==null?void 0:u.addControl(h,p)},removeControl:h=>{var p;return(p=n.value)==null?void 0:p.removeControl(h)},on:(h,p,u)=>{var m,g;return typeof p=="string"?((m=n.value)==null||m.on(h,p,u),()=>{var s;return(s=n.value)==null?void 0:s.off(h,p,u)}):((g=n.value)==null||g.on(h,p),()=>{var s;return(s=n.value)==null?void 0:s.off(h,p)})},off:(h,p,u)=>{var m,g;typeof p=="string"?(m=n.value)==null||m.off(h,p,u):(g=n.value)==null||g.off(h,p)},project:h=>{var p;return(p=n.value)==null?void 0:p.project(h)},unproject:h=>{var p;return(p=n.value)==null?void 0:p.unproject(h)}};return e.provide(To,d),d}function ve(t){if(t)return{map:t,flyTo:t.value.flyTo,fitBounds:t.value.fitBounds};const n=e.inject(To);if(!n)throw new Error("useMap() called outside of a Map provider");return n}const uu=["Noto Sans Regular"],pu=12,mu="#0f172a",fu="#fff",gu=14;function ye(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 yu(t){return t?Array.isArray(t)?t:[t]:uu}function nn(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 hu(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 xu(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 bu(t,n={}){if(!t)return[];const o=ye(t,["text-field","textField","textFieldValue","labelText","label"]);if(!o)return[];const l=hu(o);if(!l)return[];const r=l,a=(n.geometry||t.type||"point").toString().toLowerCase(),i=ye(t,["text-font","textFont"]),c=nn(ye(t,["text-size","textSize"]),pu),y=ye(t,["text-allow-overlap","textAllowOverlap"]),f=ye(t,["text-minzoom","textMinZoom","textZoom","text-zoom"]),b=ye(t,["text-maxzoom","textMaxZoom","maxzoom"]),d=ye(t,["text-color","textColor"])||mu,h=ye(t,["text-halo-color","textHaloColor"])||fu,p=ye(t,["text-halo-width","textHaloWidth"]),u=ye(t,["text-halo-blur","textHaloBlur"]),m=ye(t,["text-offset","textOffset"]),g=ye(t,["text-anchor","textAnchor"]),s=ye(t,["text-justify","textJustify"]),x=ye(t,["text-letter-spacing","textLetterSpacing"]),_=ye(t,["text-transform","textTransform"]),D=ye(t,["symbol-placement","symbolPlacement"]),P=ye(t,["symbol-spacing","symbolSpacing"]),F=ye(t,["text-rotation-alignment","textRotationAlignment"]),M=ye(t,["text-pitch-alignment","textPitchAlignment"]),L=ye(t,["text-opacity","textOpacity"]),T={"text-field":r,"text-font":yu(i),"text-size":c,"text-allow-overlap":y??!1};m&&(T["text-offset"]=m),a!=="line"&&(T["text-anchor"]=g??"center"),s&&(T["text-justify"]=s),x!==void 0&&(T["text-letter-spacing"]=x),_&&(T["text-transform"]=_),P!==void 0&&(T["symbol-spacing"]=P),a==="line"?(T["symbol-placement"]=D||"line",T["text-rotation-alignment"]=F||"map",T["text-pitch-alignment"]=M||"map"):(F&&(T["text-rotation-alignment"]=F),M&&(T["text-pitch-alignment"]=M),D&&(T["symbol-placement"]=D)),g&&a==="line"&&(T["text-anchor"]=g);const z={"text-color":d,"text-opacity":L??1};z["text-halo-color"]=h,p!==void 0&&(z["text-halo-width"]=p),u!==void 0&&(z["text-halo-blur"]=u);const H={type:"symbol",layout:T,paint:z},U=nn(f,gu);if(H.minzoom=U,b!==void 0){const E=nn(b,void 0);E!==void 0&&(H.maxzoom=E)}const N=xu(n.filter,n.excludeClusters);return N&&(H.filter=N),[H]}const on=new Map,ln={};function rn(t){if(t.colorAttr&&t.colors){const n=Object.entries(t.colors).flat();return["match",["get",t.colorAttr],...n,"#94a3b8"]}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 ut(t,n){n&&(Array.isArray(n)?t.push(...n):t.push(n))}function wu(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],f={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}},b={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}},d={...n,filter:["all",i,n.filter||!0]};return[f,b,d]}function Do(t,n){const o=rn(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,"circle-stroke-width":t.width||1,"circle-radius":t.radius||5}},r=wu(t,l);return r||l}function _u(t){const n=rn(t);return{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":n||t.color,"fill-opacity":t.opacity||.3,"fill-outline-color":t.stroke}}}function Eu(t){return{type:"line",paint:{"line-color":rn(t)||t.color,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function Nu(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 Io(t,n={}){if(!t)return[];if(!Vu(t))return[];const o=[];t.icon&&ut(o,Nu(t)),t.pointZoom&&ut(o,Do(t,t.pointZoom)),t.type==="polygon"?ut(o,_u(t)):t.type==="line"?ut(o,Eu(t)):ut(o,Do(t));const r=n.sourceType!=="raster"?bu(t,{geometry:t.type||"point",filter:t.filter,excludeClusters:!!t.clusterZoom}):[];return ut(o,r),o.filter(Boolean)}function Vu(t){return t?!!(new Set(["point","line","polygon"]).has(t.type)||t.icon||t.attrType||t.color||t.stroke||t.radius||t.width):!1}function Bu(t){return{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:t}}]}}}async function jo(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 ae(t,n,o){var U,N;if(!t)return ln;if(!n)return ln[t];const{map:l,ready:r=()=>Promise.resolve()}=ve(o),a=t||((U=n.layer)==null?void 0:U.id),i=n.sourceId??t,c={...n};c.point&&(c.source=Bu(c.point)),!c.layer&&((N=c.source)==null?void 0:N.type)==="raster"&&(c.layer={id:i,type:"raster",source:i}),c.layer&&!c.layer.source&&Object.assign(c.layer,{source:i});let y=!1,f=!1;const b=()=>{var E,S,$,A,V,k,B,v;if(!(f||!l.value)){if(c.source&&!l.value.getSource(i)&&l.value.addSource(i,c.source),!l.value.getLayer(a)){const O=c.beforeId===0?(S=(E=l.value.getStyle().layers)==null?void 0:E[0])==null?void 0:S.id:c.beforeId;(A=($=c.layer)==null?void 0:$.style)!=null&&A.icon&&jo(l.value,c.layer.style.icon,c.layer.style.colors);const R=c.style||((V=c.layer)==null?void 0:V.style);let K=[];if(R){const W={...R};(k=c.layer)!=null&&k.filter&&(W.filter=c.layer.filter);const G=((B=c.source)==null?void 0:B.type)||((v=c.layer)==null?void 0:v.type);K=Io(W,{sourceType:G})}if(!K.length){l.value.addLayer(c.layer,O);return}K.forEach((W,G)=>{var se;const le={...W,id:`${a}${G||""}`,source:i};((se=c.source)==null?void 0:se.type)==="vector"&&(le["source-layer"]=i),l.value.addLayer(le,O)})}y=!0}};r().then(b);const d=(E,S)=>l.value?(l.value.on(E,a,S),()=>{var $;return($=l.value)==null?void 0:$.off(E,a,S)}):()=>{},h=E=>{l.value&&l.value.getStyle().layers.filter(S=>S.source===a).forEach(S=>{l.value.setLayoutProperty(S.id,"visibility",E?"visible":"none")})},p=(E=!0)=>{l.value&&(l.value.getStyle().layers.filter(S=>S.source===a).forEach(S=>{l.value.removeLayer(S.id)}),f=!0,c.source&&E&&l.value.getSource(i)&&l.value.removeSource(i))},u=async E=>{var A,V;if(!l.value)return;E.icon&&jo(l.value,E.icon,E.colors);const S=((A=c.source)==null?void 0:A.type)||((V=c.layer)==null?void 0:V.type),$=E?Io(E,{sourceType:S}):[];p(!1),$.forEach((k,B)=>{const v={...k,id:`${a}${B}`,source:c.layer.source,"source-layer":c.layer.source};l.value.addLayer(v)})},m=E=>{l.value&&Object.entries(E).forEach(([S,$])=>{l.value.setPaintProperty(a,S,$)})},g=(E,S,$)=>{const A=l.value;if(A)switch(S){case"raster":A.setPaintProperty(E,"raster-opacity",$);break;case"fill":A.setPaintProperty(E,"fill-opacity",$);break;case"line":A.setPaintProperty(E,"line-opacity",$);break;case"circle":A.setPaintProperty(E,"circle-opacity",$);break;case"symbol":A.setPaintProperty(E,"icon-opacity",$),A.setPaintProperty(E,"text-opacity",$);break}},T={ids:{layerId:a,sourceId:i},isMounted:()=>{var E;return y&&!!((E=l.value)!=null&&E.getLayer(a))},setVisible:h,updatePaint:m,updateLayout:E=>{l.value&&Object.entries(E).forEach(([S,$])=>{l.value.setLayoutProperty(a,S,$)})},updateFilter:E=>{l.value&&l.value.setFilter(a,E)},setOpacity:E=>{var A;if(!l.value)return;const $=(((A=l.value.getStyle())==null?void 0:A.layers)||[]).filter(V=>V.source===i);if(!$.length){const V=l.value.getLayer(a);V&&g(a,V.type,E);return}$.forEach(V=>g(V.id,V.type,E))},setData:E=>{if(!l.value)return;const S=l.value.getSource(i);S&&"setData"in S&&S.setData(E)},setTiles:E=>{if(!l.value)return;const S=l.value.getSource(i);S&&"setTiles"in S&&S.setTiles(E)},setStyle:u,setFilter:E=>{var $,A;if(!l.value)return;const S=l.value.getSource(i);if(S&&"setTiles"in S&&((A=($=c.source)==null?void 0:$.tiles)!=null&&A[0])){const V=c.source.tiles[0];S.setTiles([`${V}${V.includes("?")?"&":"?"}filter=${E}`])}},setFeatureState:(E,S)=>{l.value&&l.value.setFeatureState({source:i,...E},S)},removeFeatureState:(E,S)=>{l.value&&l.value.removeFeatureState({source:i,...E},S?{key:S}:void 0)},remove:p,card:c.card,popup:c.popup,opts:c,getSource:()=>{var E;return(E=l.value)==null?void 0:E.getSource(i)},getLayer:()=>{var E;return(E=l.value)==null?void 0:E.getLayer(a)},on:d};on.set(a,T);const z=()=>{on.get(a)===T&&on.delete(a)},H=T.remove;return T.remove=()=>{z(),H()},e.onBeforeUnmount(T.remove),ln[t]=T,T}const Cu={class:"flex flex-col flex-1 min-h-0"},vu={class:"flex flex-col flex-1 min-h-0"},$u=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,u=>r.value=u||[],{immediate:!0}),e.watch(r,u=>{const m=ae(o.token);m&&(m.popup=u),l("update:columns",u)});const a=e.ref("list"),i=e.ref(!1),c=e.ref([]),y=[{key:"name",label:"Name",type:"main"}],f={name:{type:"text",label:"Name",disabled:!0,validators:["required"]},label:{type:"text",label:"Label",validators:["required"]},meta:{type:"radio",label:"Meta",mode:"combo",options:[{text:"Title",id:"title"},{text:"Feature",id:"feature"},{text:"Badge",id:"badge"}]},data:{type:"text",label:"Data"}};function b(){c.value=r.value.map(u=>u.name||u.id),i.value=!0}function d(){var s;const u=[...r.value],m=((s=o.fields)==null?void 0:s.filter(x=>c.value.includes(x.name)))||[],g=ot(u,m,{selectedKeys:c.value,resolveKey:x=>He(x)});r.value=g,i.value=!1,c.value=[]}function h(){i.value=!1,c.value=[]}function p(){let u=[];a.value==="all"?u=o.fields||[]:a.value==="none"?u=[]:u=r.value,u.filter(m=>!m.label).forEach(m=>m.label=m.ua),l("save",u)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",Cu,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:b,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:p,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",vu,[a.value==="list"?(e.openBlock(),e.createBlock(qe,{key:0,modelValue:r.value,"onUpdate:modelValue":m[0]||(m[0]=g=>r.value=g),"columns-scheme":y,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(tt,{visible:i.value,"onUpdate:visible":m[1]||(m[1]=g=>i.value=g),selection:c.value,"onUpdate:selection":m[2]||(m[2]=g=>c.value=g),fields:t.fields,title:"Імпорт полів","id-prefix":"import-popup",onConfirm:d,onCancel:h},null,8,["visible","selection","fields"])]))}}),Su={class:"flex flex-col flex-1 min-h-0"},Au={class:"flex justify-between mb-3 gap-2"},Lu={class:"p-4 space-y-4 text-sm"},Fu={class:"space-y-1"},Mu={class:"space-y-1"},Tu={class:"flex items-center gap-3"},Du={class:"flex justify-end gap-2 p-4 border-t"},Iu=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,u=>{r.value=u||[]}),e.watch(r,u=>{l("update:columns",u)});const a=e.ref(!1),i=e.ref({name:"",color:"#2E86DE"}),c=e.defineAsyncComponent(()=>import("@opengis/core").then(u=>u.VsModal)),y=[{key:"name",label:"Назва"},{key:"color",label:"Колір",type:"color"}],f={name:{type:"text",label:"Назва",validators:["required"]},color:{type:"color",label:"Колір",validators:["required"]}};function b(u){u&&d(),a.value=u}function d(){i.value={name:"",color:"#2E86DE"}}function h(){var s,x;const u=(s=i.value.name)==null?void 0:s.trim();if(!u){re.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const m=((x=i.value.color)==null?void 0:x.trim())||"#2E86DE";if(r.value.some(_=>He(_)===He({name:u}))){re.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}r.value=[...r.value,{name:u,color:m}],d(),a.value=!1}function p(){l("save",r.value)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",Su,[e.createElementVNode("div",Au,[e.createElementVNode("button",{onClick:m[0]||(m[0]=g=>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:p,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(qe,{modelValue:r.value,"onUpdate:modelValue":m[1]||(m[1]=g=>r.value=g),"columns-scheme":y,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"]),e.createVNode(e.unref(c),{teleport:"#modal",visible:a.value,title:"Новий елемент легенди","onUpdate:visible":b},{footer:e.withCtx(()=>[e.createElementVNode("div",Du,[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]=g=>b(!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:h}," Додати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",Lu,[e.createElementVNode("div",Fu,[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]=g=>i.value.name=g),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",Mu,[m[7]||(m[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Колір ",-1)),e.createElementVNode("div",Tu,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[3]||(m[3]=g=>i.value.color=g),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]=g=>i.value.color=g),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"])]))}}),ju={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},zu=["onClick"],Ou=["aria-checked","value"],Pu={key:0},Ru=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,c)=>(e.openBlock(),e.createElementBlock("div",ju,[c[1]||(c[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),y=>(e.openBlock(),e.createElementBlock("div",{key:y.value,onClick:f=>r(y.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===y.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===y.value,value:y.value,class:"aspect-square rounded-full border border-primary h-4 w-4 flex items-center justify-center text-sky-500"},[t.modelValue===y.value?(e.openBlock(),e.createElementBlock("span",Pu,[...c[0]||(c[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,Ou),e.createElementVNode("label",{class:e.normalizeClass(["text-xs font-medium cursor-pointer",t.modelValue===y.value?"text-gray-700":"text-gray-600"])},e.toDisplayString(y.label),3)],10,zu))),128))],2)]))}}),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-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,g=>r.value=g||[],{immediate:!0}),e.watch(r,g=>l("update:columns",g));const a=e.ref(o.viewMode??"list");e.watch(()=>o.viewMode,g=>{g&&g!==a.value&&(a.value=g)});const i=e.ref(o.html??"");e.watch(()=>o.html,g=>{typeof g=="string"&&g!==i.value&&(i.value=g)},{immediate:!0});const c=e.ref(!1),y=e.ref([]),f=[{key:"name",label:"Name",type:"main"}],b={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"}]},is_admin:{type:"Switcher",label:"Тільки для адміністративної частини"},data:{type:"text",label:"Data"}};function d(){y.value=a.value==="html"?[]:r.value.map(g=>g.name||g.id),c.value=!0}function h(){var _;const g=[...r.value],s=((_=o.fields)==null?void 0:_.filter(D=>y.value.includes(D.name)).map(D=>{const{type:P,format:F,...M}=D;return{...M,format:F??P??"text"}}))||[],x=ot(g,s,{selectedKeys:y.value,resolveKey:D=>He(D)});if(r.value=x,a.value==="html"&&s.length){const D=s.map(M=>{const L=M.label??"",T=M.name??M.id??"";return`<dd>${L}</dd>
|
|
130
|
-
<dt>{{ ${
|
|
131
|
-
`),
|
|
132
|
-
${D}`:D}c.value=!1,y.value=[]}function p(){c.value=!1,y.value=[]}function u(){const g=a.value==="html"?"html":"list",s={card_mode:g};g==="html"?s.html=i.value:g==="list"&&(s.list=r.value),l("save","card",s)}const m=[{value:"all",label:"Всі"},{value:"list",label:"Список"},{value:"none",label:"Жодне"},{value:"html",label:"HTML"}];return(g,s)=>(e.openBlock(),e.createElementBlock("div",Uu,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[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("button",{onClick:u,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(Ru,{modelValue:a.value,"onUpdate:modelValue":s[0]||(s[0]=x=>a.value=x),options:m},null,8,["modelValue"]),e.createElementVNode("div",qu,[a.value==="list"?(e.openBlock(),e.createBlock(qe,{key:0,modelValue:r.value,"onUpdate:modelValue":s[1]||(s[1]=x=>r.value=x),"columns-scheme":f,"form-scheme":b,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):a.value==="html"?(e.openBlock(),e.createBlock(At,{key:1,modelValue:i.value,"onUpdate:modelValue":s[2]||(s[2]=x=>i.value=x),language:"html",theme:"vs-light",class:"flex-1 min-h-0"},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(tt,{visible:c.value,"onUpdate:visible":s[3]||(s[3]=x=>c.value=x),selection:y.value,"onUpdate:selection":s[4]||(s[4]=x=>y.value=x),fields:t.fields,title:"Імпорт полів для картки","id-prefix":"import-card",onConfirm:h,onCancel:p},null,8,["visible","selection","fields"])]))}}),Yu={class:"flex flex-col flex-1 min-h-0"},Wu=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,u=>r.value=u||[],{immediate:!0}),e.watch(r,u=>l("update:columns",u),{deep:!0,immediate:!0});const a=e.ref("list"),i=e.ref(!1),c=e.ref([]),y=[{key:"id",label:"Name"},{key:"label",label:"UA"}],f={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 b(){c.value=r.value.map(u=>u.name||u.id),i.value=!0}function d(){var s;const u=[...r.value],m=((s=o.fields)==null?void 0:s.filter(x=>c.value.includes(x.name)))||[],g=ot(u,m,{selectedKeys:c.value,resolveKey:x=>He(x)});r.value=g,i.value=!1,c.value=[]}function h(){i.value=!1,c.value=[]}function p(){let u=[];a.value==="all"?u=o.fields||[]:a.value==="none"?u=[]:u=r.value,l("save",u)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",Yu,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:b,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:p,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(qe,{key:0,modelValue:r.value,"onUpdate:modelValue":m[0]||(m[0]=g=>r.value=g),"columns-scheme":y,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0),e.createVNode(tt,{visible:i.value,"onUpdate:visible":m[1]||(m[1]=g=>i.value=g),selection:c.value,"onUpdate:selection":m[2]||(m[2]=g=>c.value=g),fields:t.fields,title:"Імпорт полів","id-prefix":"import-filter",onConfirm:d,onCancel:h},null,8,["visible","selection","fields"])]))}}),Lt=e.defineComponent({__name:"MapView",setup(t,{expose:n}){var f,b;const o=e.ref(null),l=e.ref(null),r=((b=(f=e.getCurrentInstance())==null?void 0:f.appContext.config.globalProperties)==null?void 0:b.$settings)||null,a=du({container:o,mapOptions:{style:{version:8,sources:{},layers:[]},doubleClickZoom:!1},controls:{navigation:!0,scale:!0},settings:r});async function i(){var h;await e.nextTick();const d=(h=a.map)==null?void 0:h.value;d!=null&&d.resize&&d.resize()}function c(){typeof ResizeObserver>"u"||l.value||!o.value||(l.value=new ResizeObserver(()=>{i()}),l.value.observe(o.value))}function y(){var d;(d=l.value)==null||d.disconnect(),l.value=null}return e.onMounted(()=>{i(),c(),window.addEventListener("resize",i)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",i),y()}),n({ctx:a}),(d,h)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"el",ref:o,class:"w-full h-full rounded-xl overflow-hidden"},[e.renderSlot(d.$slots,"default")],512))}}),Zu=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleSpec:{}},setup(t,{expose:n}){var u,m,g,s;const{map:o,flyTo:l,setZoom:r}=ve(),a=((m=(u=e.getCurrentInstance())==null?void 0:u.appContext.config.globalProperties)==null?void 0:m.$settings)||null,i=t,c=i.id;String(i.id);const y=`${location.origin}/api/vtile/${i.id}/ua/{z}/{x}/{y}.vmt?all=1`,f=ae(c,{source:{type:"vector",tiles:[y],minzoom:0,maxzoom:14},popup:i.layer.popup,layer:{style:(g=i.layer)==null?void 0:g.style}});n({layerHandle:f}),l({center:i.layer.center||((s=a==null?void 0:a.map)==null?void 0:s.center)||[30,50],animate:!1});let b=null;function d(){if(!(f!=null&&f.setTiles))return;const x=y.includes("?")?"&":"?",_=`${y}${x}_=${Date.now()}`;f.setTiles([_])}function h(){b&&clearTimeout(b),b=setTimeout(()=>{b=null,p().catch(x=>console.error("Failed to update map layer",x))},300)}async function p(){o.value&&i.styleSpec&&(d(),f.setStyle(i.styleSpec))}return e.watch(()=>i.styleSpec,h,{deep:!0}),e.onBeforeUnmount(()=>{f.remove()}),(x,_)=>null}}),bt=e.ref(null);function Ku(){bt.value=null}function Gu(t){const n=e.ref(!1),o=()=>typeof t=="string"?t:t.value;e.watch(bt,i=>{i!==o()&&n.value&&(n.value=!1)});function l(){bt.value=o(),n.value=!0}function r(){bt.value===o()&&(bt.value=null),n.value=!1}function a(){n.value?r():l()}return{isOpen:n,open:l,close:r,toggle:a}}const Xu={class:"map-filter"},Ju={class:"map-filter__header"},Qu={class:"map-filter__title"},ep={"aria-hidden":"true"},an="#map-filter-popover-host",Ft=Q(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 B;return((B=o.layer)==null?void 0:B.id)??""}),r=e.computed(()=>`filter-popover-${l.value}`),{isOpen:a,close:i,toggle:c}=Gu(r),y=e.reactive({top:0,left:0,transform:"translateX(-50%)"}),f=e.ref(null),b=e.ref(null);let d=null;const h=e.ref({}),p=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0}),u=e.computed(()=>a.value),m=e.computed(()=>{var B;return Array.isArray((B=o.layer)==null?void 0:B.filters)?o.layer.filters:[]}),g=e.computed(()=>m.value.length>0),s=e.computed(()=>{var B;return((B=o.layer)==null?void 0:B.name)??""}),x=e.computed(()=>m.value),_=e.ref(null),D=e.computed(()=>m.value.length),P=e.computed(()=>D.value<=2),F=e.computed(()=>P.value?"body":typeof window>"u"||_.value?an:"body"),M=e.computed(()=>{if(!u.value||!P.value)return{};const B=typeof window<"u"?window.innerWidth:280,O=Math.max(280,B-16*2);return{position:"absolute",top:`${y.top}px`,left:`${y.left}px`,transform:y.transform,zIndex:1e3,width:"280px",maxWidth:`${O}px`}});function L(){i()}function T(B,v,O=8){const R=window.scrollY+O,K=window.scrollY+window.innerHeight-O;let W=B;return W+v>K&&(W=K-v),W<R&&(W=R),W}function z(){var le,se,ne;if(!f.value||!P.value)return;const B=f.value.getBoundingClientRect(),v=window.scrollX+8,O=window.scrollX+window.innerWidth-8,R=((le=b.value)==null?void 0:le.offsetWidth)||280,K=((se=b.value)==null?void 0:se.offsetHeight)||0;let W=0,G=0;if((ne=o.catalogAnchor)!=null&&ne.value){const ce=o.catalogAnchor.value.getBoundingClientRect(),ke=ce.top+window.scrollY;W=T(ke,K,8);const Ae=ce.right+window.scrollX+12,Te=O-R,Ie=v;G=Math.min(Math.max(Ae,Ie),Math.max(Ie,Te))}else{const ce=B.bottom+window.scrollY+8;W=T(ce,K,8);let ke=B.left+window.scrollX;ke<v&&(ke=v),ke+R>O&&(ke=Math.max(v,O-R)),G=ke}y.left=G,y.top=W,y.transform="none"}function H(){P.value||k(),c(),a.value&&P.value&&e.nextTick(()=>{z(),A(),requestAnimationFrame(()=>z())})}function U(){o.disabled||H()}e.watch(u,B=>{B&&P.value?e.nextTick(()=>{z(),A(),requestAnimationFrame(()=>z())}):(V(),P.value||k())}),e.watch(x,()=>{!u.value||!P.value||e.nextTick(()=>z())},{deep:!0}),e.watch(P,B=>{u.value&&(B?e.nextTick(()=>{z(),A()}):(V(),k()))}),e.watch(()=>o.disabled,B=>{B&&(i(),h.value={})});function N(){!u.value||!P.value||z()}function E(B){const v=l.value;if(!v)return;const O=ae(v);if(!(O!=null&&O.setFilter))return;h.value=B;const R=Object.entries(B).map(([K,W])=>`${K}=${W}`).join("|");O.setFilter(R)}function S(B){if(!o.disabled)return;const v=B.currentTarget;if(!v)return;const O=v.getBoundingClientRect();p.left=O.left+O.width/2+window.scrollX,p.top=O.bottom+8+window.scrollY,p.visible=!0}function $(){p.visible=!1}e.onMounted(()=>{k(),window.addEventListener("resize",N),window.addEventListener("scroll",N,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",N),window.removeEventListener("scroll",N,!0),V()});function A(){V(),!(!b.value||!P.value)&&(d=new ResizeObserver(()=>{!u.value||!P.value||z()}),d.observe(b.value))}function V(){d&&(d.disconnect(),d=null)}function k(){typeof window>"u"||typeof document>"u"||(_.value=document.querySelector(an))}return(B,v)=>g.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mapLayer-filter",ref_key:"anchor",ref:f},[e.createElementVNode("a",{class:e.normalizeClass(["mapLayer-filter__trigger",{"mapLayer-filter__trigger--disabled":o.disabled}]),href:"#",onClick:e.withModifiers(U,["prevent","stop"]),onMouseenter:S,onMouseleave:$,onFocus:S,onBlur:$},[...v[2]||(v[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),u.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:F.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":!P.value}]),style:e.normalizeStyle(M.value),ref_key:"panel",ref:b,onClick:v[1]||(v[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Xu,[e.createElementVNode("div",Ju,[e.createElementVNode("h3",Qu,e.toDisplayString(s.value||"Фільтр"),1),e.createElementVNode("button",{type:"button",class:"map-filter__close",onClick:L},[e.createElementVNode("span",ep,[e.createVNode(e.unref(Ot),{class:"h-4 w-4"})]),v[3]||(v[3]=e.createElementVNode("span",{class:"sr-only"},"Закрити",-1))])]),e.createVNode(e.unref(n),{view:"inline",schema:x.value,value:h.value,limit:10,onChange:v[0]||(v[0]=O=>E(O.data)),width:250},null,8,["schema","value"])])],6)],8,["to"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[p.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${p.top}px`,left:`${p.left}px`})},e.toDisplayString(p.text),5)):e.createCommentVNode("",!0)]))],512)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-3e84c1ab"]]),tp={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"},sn=Q(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",tp,[e.createVNode(Ft,{layer:{filters:t.filters,id:t.layerId},count:t.filters.length},null,8,["layer","count"])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-d244723f"]]),np={class:"flex flex-row gap-x-3 z-10 relative widget"},op=["onClick"],lp=["src","alt"],kt=e.defineComponent({__name:"BaseMaps",setup(t){var p,u,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 l(g){if(g)return g.replace(/{z}/gi,String(o.z)).replace(/{x}/gi,String(o.x)).replace(/{y}/gi,String(o.y))}function r(g,s){let x=g||`layers-${Object.keys(s).length}`,_=1;for(;s[x];)x=`${g}-${_}`,_+=1;return x}const a=e.getCurrentInstance(),i=(p=a==null?void 0:a.appContext.config.globalProperties)==null?void 0:p.$settings,c=i==null?void 0:i.map,y=e.computed(()=>{const g=Array.isArray(c==null?void 0:c.basemaps)?c==null?void 0:c.basemaps:[];if(!g.length)return{};const s={};return g.forEach((x,_)=>{const D=x.name??x.title??`basemap-${_}`,P=(x.id??D??`basemap-${_}`).toString().toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,""),F=r(P||`basemap-${_}`,s),M=x.preview||(x.url?l(x.url):void 0);s[F]={url:x.url,preview:M,title:D}}),s}),f=e.computed(()=>{const g=y.value;return Object.keys(g).length?g:n}),b=e.ref(Object.keys(f.value)[0]??"gki"),d=ae("base",{source:{type:"raster",tiles:(u=f.value[b.value])!=null&&u.url?[(m=f.value[b.value])==null?void 0:m.url]:[]},beforeId:0});function h(g){if(!f.value[g])return;b.value=g;const s=f.value[g];if(!(s!=null&&s.url)){d.setVisible(!1);return}d.setVisible(!0),d.setTiles([s.url])}return e.watch(()=>f.value,g=>{g[b.value]||(b.value=Object.keys(g)[0]??b.value);const s=g[b.value];s!=null&&s.url?(d.setVisible(!0),d.setTiles([s.url])):d.setVisible(!1)},{immediate:!0}),(g,s)=>(e.openBlock(),e.createElementBlock("div",np,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(x,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,onClick:D=>h(_)},[_!=="none"&&x.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",b.value===_?"border-blue-500":"border-gray-200"])},[x.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:x.preview,alt:x.title,class:"object-cover rounded-lg lg:w-12 lg:h-12 w-8 h-8"},null,8,lp)):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",b.value===_?"border-blue-500":"border-gray-200"])},[e.createVNode(e.unref(yl),{class:"w-4 h-4 text-gray-500"})],2))],8,op))),128))]))}}),rp={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%"}},ap={class:"flex flex-col gap-1 p-5"},ip={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},wt=e.defineComponent({__name:"MapLegendWidget",props:{items:{}},setup(t){const n=t,{map:o,ready:l}=ve(),r=e.ref([]);let a=null;function i(b){return b?b.map((d,h)=>{var m;const p=(d==null?void 0:d.name)||(d==null?void 0:d.label)||(d==null?void 0:d.title)||(d==null?void 0:d.id)||`Layer ${h+1}`,u=(d==null?void 0:d.color)||(d==null?void 0:d.fill)||((m=d==null?void 0:d.paint)==null?void 0:m.color)||"#3388ff";return{id:`${p}-${h}`,label:p,color:u}}):[]}function c(b){return b!=null&&b.layers?b.layers.filter(d=>{const h=d.paint||{};return h["fill-color"]||h["line-color"]||h["circle-color"]}).map((d,h)=>{var m;const p=d.paint||{},u=p["fill-color"]||p["line-color"]||p["circle-color"]||"#3388ff";return{id:d.id||`layer-${h}`,label:((m=d.metadata)==null?void 0:m.title)||d.id||`Layer ${h+1}`,color:u}}):[]}async function y(){var h;await l();const b=o.value;if(!b)return;const d=(h=b.getStyle)==null?void 0:h.call(b);r.value=c(d)}function f(){o.value&&(a==null||a())}return e.watch(()=>n.items,async b=>{b!=null?(r.value=i(b),a==null||a()):(await l(),f(),y())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(n.items===void 0||n.items===null)&&(await l(),f(),y())}),e.onBeforeUnmount(()=>{a==null||a(),a=null}),(b,d)=>r.value.length?(e.openBlock(),e.createElementBlock("div",rp,[e.createElementVNode("div",ap,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.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:h.color})},null,4),e.createElementVNode("span",ip,[e.createElementVNode("span",null,e.toDisplayString(h.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function sp(){const{map:t,ready:n}=ve(),o=e.ref(null),l=e.ref(null),r=e.ref(null),a=e.ref(null);let i=[];function c(){i.forEach(p=>p()),i=[]}const y=p=>{const u=(p==null?void 0:p.properties)||{};return!!(u.cluster||u.point_count||u.point_count_abbreviated)},f=p=>{var s,x;o.value=[p.point.x,p.point.y];const u=t.value.queryRenderedFeatures(p.point);if(!(u!=null&&u.length)){b();return}const m=u.find(_=>!y(_));if(!m){b();return}const g=ae(m.source)||ae((s=m.layer)==null?void 0:s.id);g!=null&&g.popup&&(l.value=((x=g.popup)==null?void 0:x.fields)||g.popup,a.value=m.properties)},b=()=>{l.value=null,a.value=null,o.value=null};async function d(){await n(),t.value&&(c(),t.value.on("mousemove",f),t.value.on("mouseleave",b))}function h(){c(),l.value=null,a.value=null,o.value=null}return n().then(d),{popupCoords:o,popupFields:l,popupValues:a,disable:h,title:r}}const cp={class:"min-w-[200px] max-w-[280px] rounded-lg border border-slate-200 bg-white/90 p-3 text-xs shadow-lg backdrop-blur"},dp={class:"space-y-1.5"},up={class:"font-bold text-slate-700"},pp={class:"text-slate-700"},zo=e.defineComponent({__name:"MapPopup",setup(t){const{popupCoords:n,popupFields:o,popupValues:l,disable:r}=sp(),a=e.ref(null),i=e.ref({left:"-9999px",top:"-9999px"}),c=e.computed(()=>{const u=o.value||[],m=l.value||{};return u.filter(g=>(g==null?void 0:g.meta)!=="title").map((g,s)=>h(g,m,s)).filter(g=>g.label)}),y=e.computed(()=>{const u=o.value||[],m=l.value||{},g=u.find(s=>(s==null?void 0:s.meta)==="title");return g?h(g,m,0):null}),f=e.computed(()=>{var m;const u=c.value;return(m=y.value)!=null&&m.value?[{...y.value,key:`${y.value.key}-title`,label:"Назва"},...u]:u}),b=new Intl.NumberFormat("uk-UA",{maximumFractionDigits:2});function d(u,m){if(m==null||m==="")return m;if((u==null?void 0:u.type)==="number"){const g=typeof m=="number"?m:Number(m);if(Number.isFinite(g))return b.format(g)}return m}function h(u,m,g){const s=u.name||u.label||u.title||`field-${g}`,x=u.label||u.title||u.name||s,_=u.name?m[u.name]:void 0,P=(u.name?m[`${u.name}_text`]:void 0)??_??u.value??null;return{key:s,label:x,value:d(u,P)}}function p(){if(!f.value.length||!n.value||!a.value){i.value={left:"-9999px",top:"-9999px"};return}const[u,m]=n.value;i.value={left:`${u+18}px`,top:`${m+18}px`}}return e.watch([n,f],()=>{e.nextTick(()=>p())}),e.onBeforeUnmount(()=>{r()}),(u,m)=>f.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:a,class:"absolute pointer-events-none z-20",style:e.normalizeStyle(i.value)},[e.createElementVNode("div",cp,[e.createElementVNode("div",dp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,g=>(e.openBlock(),e.createElementBlock("div",{key:g.key,class:"flex flex-col"},[e.createElementVNode("span",up,e.toDisplayString(g.label),1),e.createElementVNode("span",pp,e.toDisplayString(g.value??"—"),1)]))),128))])])],4)):e.createCommentVNode("",!0)}});function mp(){const{map:t,ready:n}=ve(),o=we.useRoute(),l=we.useRouter(),r=e.ref(null),a=e.ref(null),i=e.ref(null),c=e.ref(!1),y=e.ref([]),f=e.ref(0),b=e.computed(()=>y.value.length),d=e.computed(()=>c.value||!!r.value||!!i.value);let h=null,p=!1;function u(){r.value=null,a.value=null,i.value=null,c.value=!1,y.value=[],f.value=0}function m(){if(h){try{h()}catch{}h=null}}async function g(){await n();const U=t.value;U&&(m(),u(),U.on("click",s),h=()=>U.off("click",s),H(L()))}function s(U){const N=t.value;if(!N)return;const E=(N.queryRenderedFeatures(U.point)||[]).filter(S=>{var $;return($=S==null?void 0:S.properties)==null?void 0:$.id});if(!E.length){u(),z(null);return}y.value=E,f.value=0,x(f.value)}function x(U){const N=y.value[U];if(!N)return;f.value=U;const E=ae(N.source);P(N,E==null?void 0:E.card)}function _(){f.value>=y.value.length-1||x(f.value+1)}function D(){f.value<=0||x(f.value-1)}async function P(U,N){var $,A,V,k;if(!(($=U==null?void 0:U.properties)!=null&&$.id))return;const E=new URLSearchParams;E.set("layer",U.source),E.set("id",String((A=U.properties)==null?void 0:A.id));const S=Array.isArray(N)&&N.length>0;c.value=S,i.value=null,r.value=null,a.value=U||null;try{const B=await fetch(`/api/map-format?${E.toString()}`);if(!B.ok)throw new Error(`Failed (${B.status})`);const v=await B.json(),O=Array.isArray(v.columns)?v.columns:[],R=Array.isArray(N)?N:[];if(!O.length&&!R.length){console.error("Configure layer in admin"),F();return}r.value={rows:v.rows||{},fields:R,columns:O,html:v.html||null},p||z(a.value);const K=(V=v.rows)==null?void 0:V.geom;if(K){const W=typeof K=="string"?JSON.parse(K):K;W&&(a.value={...a.value,geometry:W,properties:{...((k=a.value)==null?void 0:k.properties)||{},geom:W,geom_4326:W}})}}catch(B){console.error("Failed to load feature card:",B),F()}finally{c.value=!1}}function F(){u(),z(null)}function M(){m(),u()}n().then(g),e.onBeforeUnmount(()=>M());function L(){const U=Array.isArray(o.query.info)?o.query.info[0]:o.query.info;return typeof U!="string"?null:U.trim()||null}function T(U){var $,A;const N=(U==null?void 0:U.source)??(($=U==null?void 0:U.layer)==null?void 0:$.id),E=(A=U==null?void 0:U.properties)==null?void 0:A.id;return!N||E===void 0||E===null?null:`${N},${E}`.trim()||null}function z(U){const N=T(U),E=L();if(N===E)return;const S={...o.query};N?S.info=N:delete S.info,l.push({query:S}).catch(()=>{})}async function H(U){if(!U){u();return}if(U===T(a.value))return;const[N,E]=U.split(","),S=N==null?void 0:N.trim(),$=E==null?void 0:E.trim();if(!S||!$){u(),z(null);return}p=!0;try{const A={source:S,properties:{id:$}};y.value=[A],f.value=0;const V=ae(S);await P(A,V==null?void 0:V.card)}finally{p=!1}}return e.watch(()=>L(),U=>{U!==T(a.value)&&(p=!0,H(U).finally(()=>{p=!1}))}),{card:r,cardFeature:a,cardError:i,cardLoading:c,isOpen:d,close:F,next:_,prev:D,count:b,index:f}}function fp(){const{map:t,ready:n}=ve(),o=e.ref([]),l=e.ref(0),r=e.ref(0),a=e.ref(!1),i=e.ref(null),c=e.ref({}),y=e.ref(null),f=e.ref([]),b=e.computed(()=>o.value[r.value]||null),d=e.computed(()=>o.value.length>0);let h=null;const p=()=>{h==null||h.remove(),h=null},u=L=>L?L.type==="FeatureCollection"?L:L.type==="Feature"?{type:"FeatureCollection",features:[L]}:L.type&&Array.isArray(L.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:L,properties:{}}]}:Array.isArray(L.features)?{type:"FeatureCollection",features:L.features}:L.geometry?u(L.geometry):null:null,m=()=>({type:"line",color:"#0a57ff",width:4,opacity:.95}),g=L=>Number(L.toFixed(5)),s=async L=>{if(await n(),!t.value)return;const T=u(L);T&&(p(),h=ae("feature-highlight",{source:{type:"geojson",data:T},style:m()},t))},x=async(L,T,z)=>{var N,E;const[H,U]=[g(L),g(T)];y.value={x:H,y:U},f.value=z,a.value=!0,i.value=null,o.value=[],c.value={},r.value=0;try{const S=z.map(async B=>{const v=`/api/map-info-point?x=${H}&y=${U}&layers=${B}`,O=await fetch(v);if(!O.ok)return null;const R=await O.json();if(!R.count)return null;const W=await(await fetch(`${v}&index=0`)).json();return{layerId:B,data:W,count:R.count}}),A=(await Promise.all(S)).filter(Boolean);if(A.length===0){l.value=0;return}o.value=A.map(B=>B.data);const[V]=o.value;l.value=A.reduce((B,v)=>B+(v.count||0),0),c.value[0]=V;const k=((N=V==null?void 0:V.data)==null?void 0:N.geom_4326)??((E=V==null?void 0:V.data)==null?void 0:E.geom);await s(k)}catch(S){i.value=S.message}finally{a.value=!1}},_=async L=>{if(!y.value||!f.value.length)return;if(c.value[L]){o.value[L]=c.value[L];return}const{x:T,y:z}=y.value,H=f.value.join(","),U=`/api/map-info-point?x=${T}&y=${z}&index=${L}&layers=${H}`;try{a.value=!0;const N=await fetch(U);if(!N.ok)throw new Error("Failed to fetch feature by index");const E=await N.json();o.value[L]=E,c.value[L]=E}catch(N){i.value=N.message}finally{a.value=!1}},D=async()=>{r.value<l.value-1&&(r.value+=1,c.value[r.value]||await _(r.value))},P=async()=>{r.value>0&&(r.value-=1,c.value[r.value]||await _(r.value))},F=()=>{o.value=[],l.value=0,r.value=0,c.value={},y.value=null,f.value=[],p()};e.watch(r,async()=>{var T,z;const L=b.value;if(L){const H=((T=L==null?void 0:L.data)==null?void 0:T.geom_4326)??((z=L==null?void 0:L.data)==null?void 0:z.geom);await s(H)}});let M=null;return e.onMounted(async()=>{await n(),t.value&&(M=async L=>{const{lng:T,lat:z}=L.lngLat,H=ae(),N=Object.entries(H).map(([E,S])=>{var $,A,V,k;return{id:E,service:(($=S==null?void 0:S.opts)==null?void 0:$.service)??((V=(A=S==null?void 0:S.opts)==null?void 0:A.source)==null?void 0:V.service)??null,count:((k=S==null?void 0:S.opts)==null?void 0:k.count)??null,visible:(()=>{var B;try{return((B=t.value)==null?void 0:B.getLayer(E))?t.value.getLayoutProperty(E,"visibility")!=="none":!0}catch{return!0}})()}}).filter(E=>E.service==="ogc"&&E.visible).map(E=>E.id);N.length>0&&await x(T,z,N)},t.value.on("dblclick",M))}),e.onBeforeUnmount(()=>{t.value&&M&&t.value.off("dblclick",M),p()}),{features:o,count:l,index:r,current:b,loading:a,error:i,active:d,next:D,prev:P,close:F}}const Oo=e.defineComponent({__name:"LayerSwitcher",props:{title:{},url:{},id:{},buttonText:{}},emits:["activate"],setup(t,{emit:n}){const o=t,l=n;function r(f){const b=f.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(b)return b;const d=Array.from(f).map(h=>h.charCodeAt(0).toString(16)).join("").slice(0,8);return d?`layer-${d}`:"layer-temp"}const a=e.computed(()=>{var f;return((f=o.id)==null?void 0:f.trim())||r(o.title)}),i=e.computed(()=>o.buttonText||"Показати шар");function c(){return{id:a.value,title:o.title,url:o.url}}function y(){l("activate",c())}return(f,b)=>(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:y},[e.renderSlot(f.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(i.value),1)])]))}}),Se=e.ref([]);function gp(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 cn(t){return t==null?"":String(t).trim()}function dn(t){var n,o;(o=(n=t==null?void 0:t.handle)==null?void 0:n.remove)==null||o.call(n)}function yp(t){return t?typeof(t==null?void 0:t.value)<"u"?t.value:t:null}function hp(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 Po(t){function n(a,i={},c,y){var x,_;const f=cn(a==null?void 0:a.id),b=((x=a==null?void 0:a.title)==null?void 0:x.trim())||f,d=((_=a==null?void 0:a.url)==null?void 0:_.trim())||"";if(!f||!d)return;const h=gp(d,i);if(!h)return;const p=y??t;if(!p)return;const u=yp(p);if(!u)return;const m=Se.value.findIndex(D=>D.id===f);m!==-1&&(dn(Se.value[m]),Se.value.splice(m,1));let g=null;const s=a.beforeId??hp(u);try{g=ae(f,{source:{type:"raster",tiles:[h],tileSize:a.tileSize??256,minzoom:a.minzoom??0,maxzoom:a.maxzoom??19},layer:{id:f,type:"raster",source:f,paint:{"raster-opacity":a.opacity??.85}},beforeId:s},p)}catch(D){const P=(D==null?void 0:D.message)??"";if(!(typeof P=="string"&&P.includes("Map provider")))throw D;return}Se.value=[...Se.value,{id:f,title:b,originalUrl:d,resolvedUrl:h,owner:c??null,handle:g??null}]}function o(a,i){const c=cn(a);if(!c)return;const y=Se.value.findIndex(b=>b.id===c&&(!i||b.owner===i));if(y===-1)return;const[f]=Se.value.splice(y,1);dn(f)}function l(a){if(!Se.value.length)return;const i=[];Se.value.forEach(c=>{(a?c.owner===a:!0)?dn(c):i.push(c)}),Se.value=i}function r(a,i){const c=cn(a);return c?Se.value.some(y=>y.id===c&&(!i||y.owner===i)):!1}return{temporaryLayers:Se,activateTemporaryLayer:n,deactivateTemporaryLayer:o,clearTemporaryLayers:l,isTemporaryLayerActive:r}}const xp={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"},bp={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},kp={class:"min-w-0 flex-1"},wp={class:"text-base font-semibold text-slate-900 truncate"},_p={key:0,class:"flex gap-1 mt-1"},Ep=["disabled"],Np=["disabled"],Vp={key:1,class:"flex gap-1 mt-1"},Bp=["disabled"],Cp=["disabled"],vp={class:"flex-1 overflow-y-auto px-4 py-3 space-y-4 text-sm text-slate-700"},$p={key:0,class:"text-center text-xs text-slate-500"},Sp={key:1,class:"text-center text-xs text-red-500"},Ap={key:0,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},Lp={class:"divide-y divide-gray-100 py-[5px]"},Fp={class:"text-gray-900 font-normal"},Mp={key:1,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},Tp=["innerHTML"],Dp=["innerHTML"],Ip={key:2,class:"space-y-3 border-t border-slate-200 pt-3"},jp={key:3,class:"border-t border-slate-100 px-4 py-2 text-right text-xs text-slate-500"},zp={class:"text-xs tracking-[0.02em] leading-none"},Op={key:4,class:"space-y-3 border-t border-slate-200 pt-3"},Pp={class:"space-y-1"},Rp={class:"flex items-center cursor-pointer gap-2 flex-1"},Up=["checked","onChange"],qp={class:"text-[13px] text-gray-600"},Hp={key:0,class:"text-right text-xs text-gray-400 truncate max-w-[40%]"},Yp={key:5,class:"text-center text-xs text-slate-400"},Wp="map:temporary-layer-request",Zp=14,Ro=Q(e.defineComponent({__name:"MapCardWidget",props:{mapId:{}},setup(t){var jt,ll;const n=t,o=mp(),l=fp(),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),c=e.computed(()=>r.value?l.error.value:o.cardError.value),y=e.computed(()=>{var w,C;return r.value?((w=l.current.value)==null?void 0:w.html)||null:((C=o.card.value)==null?void 0:C.html)||null}),f=ve(),b=we.useRoute(),{activateTemporaryLayer:d,deactivateTemporaryLayer:h,clearTemporaryLayers:p,isTemporaryLayerActive:u}=Po(f.map);function m(w){window.dispatchEvent(new CustomEvent(Wp,{detail:w}))}const g=e.computed(()=>{var w;return((w=o.cardFeature.value)==null?void 0:w.source)??null}),s=e.computed(()=>g.value?`map-card:${g.value}`:"map-card"),x=e.computed(()=>{var Z,ee;const w=o.cardFeature.value,C=(w==null?void 0:w.source)||((Z=w==null?void 0:w.layer)==null?void 0:Z.id),I=((ee=w==null?void 0:w.properties)==null?void 0:ee.id)??(w==null?void 0:w.id);return C&&I!=null?`${C}:${I}`:null}),_=e.ref(null),D=e.ref(null),P=e.ref(0),F=new Map;function M(){if(typeof window>"u")return null;const C=(window.location.pathname||"").match(/\/maps?\/([^/]+)/i);return C&&C[1]?C[1]:null}const L=e.computed(()=>{const w=typeof n.mapId=="string"?n.mapId.trim():"";if(w.length)return w;const C=typeof b.params.slug=="string"?b.params.slug.trim():"";if(C.length)return C;const I=typeof b.query.slug=="string"?b.query.slug.trim():"";return I.length?I:M()}),T=e.ref(null),z=e.ref(null),H=new Map;function U(w){const C=w.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(C)return C;const I=Array.from(w).map(Z=>Z.charCodeAt(0).toString(16)).join("").slice(0,8);return I?`layer-${I}`:`layer-${Math.random().toString(36).slice(2,8)}`}function N(w){if(typeof w!="string")return"";const C=w.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 I=typeof window<"u"?window.location.origin:"";return C.startsWith("/")?I?`${I}${C}`:C:I?`${I}/${C}`:C}function E(w){const C={},I=/([:@\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;let Z;for(;(Z=I.exec(w))!==null;){const ee=Z[1],oe=Z[2]??Z[3]??Z[4]??"";ee&&(C[ee]=oe)}return C}function S(w,C){for(const I of C)if(w[I]!=null&&String(w[I]).trim().length)return String(w[I]).trim();return""}function $(w){if(!(w!=null&&w.length))return;const C=Number(w);return Number.isFinite(C)?C:void 0}function A(w){if(typeof w!="string"||!w.length)return[];const C=[],I=/<LayerSwitcher\b([^>]*)>([\s\S]*?)<\/LayerSwitcher>/gi;let Z=0,ee;const oe=new Set,de=ue=>{let xe=ue,Ne=2;for(;oe.has(xe);)xe=`${ue}-${Ne}`,Ne+=1;return oe.add(xe),xe};for(;(ee=I.exec(w))!==null;){const[ue,xe="",Ne=""]=ee,fe=ee.index;if(fe>Z){const il=w.slice(Z,fe);il.trim().length&&C.push({type:"html",content:il})}const Me=E(xe),$e=S(Me,["title"])||"Тимчасовий шар",Ge=N(S(Me,["url"]));if(!Ge){C.push({type:"html",content:ue}),Z=fe+ue.length;continue}const Et=S(Me,["id"]),gn=S(Me,["button-text","buttonText","show","show-label","showLabel"]),Eh=$(S(Me,["tile-size","tileSize"])),Nh=$(S(Me,["minzoom","minZoom"])),Vh=$(S(Me,["maxzoom","maxZoom"])),Bh=$(S(Me,["opacity"])),Ch=Et||U(`${$e}-${Ge}`)||U($e),rl=de(Ch||`layer-${C.length+1}`),yn=Ne.trim(),al=/<[^>]+>/.test(yn),vh=al?yn:null,hn=al?null:yn,$h=gn&&gn.trim().length?gn.trim():hn&&hn.trim().length?hn.trim():void 0;C.push({type:"layer",spec:{id:rl,title:$e,url:Ge,tileSize:Eh,minzoom:Nh,maxzoom:Vh,opacity:Bh},componentProps:{title:$e,url:Ge,id:rl,buttonText:$h},slotText:vh}),Z=fe+ue.length}if(Z<w.length){const ue=w.slice(Z);ue.trim().length&&C.push({type:"html",content:ue})}return!C.length&&w.trim().length&&C.push({type:"html",content:w}),C}function V(w){if(!w)return null;const C=typeof w.id=="string"?w.id.trim():"",I=typeof w.title=="string"?w.title.trim():"",Z=N(typeof w.url=="string"?w.url:"");return!C||!Z?null:{id:C,title:I||C,url:Z,tileSize:w.tileSize,minzoom:w.minzoom,maxzoom:w.maxzoom,opacity:w.opacity}}const k=e.computed(()=>{if(r.value&&l.current.value)return l.current.value.data??{};const w=o.card.value;return(w==null?void 0:w.rows)??{}}),B=e.computed(()=>{if(r.value&&l.current.value)return l.current.value.fields??[];const w=o.card.value;if(!w)return[];const C=Array.isArray(w.columns)?w.columns:[];return C.length?C:Array.isArray(w.fields)?w.fields:[]}),v=e.computed(()=>{const w=B.value;if(!w.length)return[];const C=k.value;return w.map(I=>({key:I.name,label:I.ua||I.label||I.title||I.name,value:C[I.name]??"—",format:I.format||"text"}))}),O=new Set(["—","-","–","−"]);function R(w){if(w==null)return!0;if(typeof w=="string"){const C=w.trim();return C.length?O.has(C):!0}return!1}const K=e.ref(!1),W=e.ref(!0);if(typeof window<"u"){const w=(ll=(jt=window.localStorage)==null?void 0:jt.getItem)==null?void 0:ll.call(jt,"cardHideEmpty"),C=typeof w=="string"&&w.toLowerCase()==="true";K.value=C,W.value=!C}const G=e.computed(()=>v.value.filter(w=>R(w.value)).length),le=e.computed(()=>K.value&&!W.value?v.value.filter(w=>!R(w.value)):v.value);function se(w){const C=typeof w=="string"?w:"";if(!C.length)return{sanitized:"",hiddenCount:0};if(typeof DOMParser>"u")return{sanitized:C,hiddenCount:0};const Z=new DOMParser().parseFromString(C,"text/html");let ee=0;return Z.querySelectorAll("dd").forEach(oe=>{var xe;const de=((xe=oe.textContent)==null?void 0:xe.trim())??"",ue=oe.closest("div");if(R(de)){ee+=1,ue?ue.remove():oe.remove();return}}),{sanitized:Z.body.innerHTML,hiddenCount:ee}}const ne=e.computed(()=>se(y.value)),ce=e.computed(()=>y.value?ne.value.hiddenCount:0),ke=e.computed(()=>G.value+ce.value),Ae=e.computed(()=>{var w;return K.value&&!W.value&&!!((w=y.value)!=null&&w.trim())}),Te=e.computed(()=>K.value&&ke.value>0),Ie=e.computed(()=>W.value?"Приховати пусті значення":"Показати пусті значення"),Tt=e.computed(()=>W.value?fl:ml);function Dt(){W.value=!W.value}const Je=e.computed(()=>{const w=Ae.value?ne.value.sanitized:y.value??"";return A(w)}),pt=e.computed(()=>Je.value.filter(w=>w.type==="layer"));function j(w){return Array.isArray(w)?w.map((C,I)=>{const Z=N(typeof(C==null?void 0:C.url)=="string"?C.url:""),ee=typeof(C==null?void 0:C.geohub)=="string"&&C.geohub.trim().length?`/api-hub/tms/${C.geohub.trim()}/ua/{z}/{x}/{y}.png`:"",oe=((C==null?void 0:C.name)||(C==null?void 0:C.title)||(C==null?void 0:C.label)||`Шар ${I+1}`).toString(),de=(C==null?void 0:C.id)!=null?String(C.id):U(`${oe}-${I+1}`),ue=(C==null?void 0:C.buttonText)||(C==null?void 0:C.button_text)||null,xe=(C==null?void 0:C.description)||(C==null?void 0:C.subtitle)||null,Ne=Z||N(ee)||"";if(!Ne)return null;const fe={id:de,title:oe,url:Ne,subtitle:xe,buttonText:ue||void 0};return typeof(C==null?void 0:C.tileSize)=="number"&&(fe.tileSize=C.tileSize),typeof(C==null?void 0:C.tile_size)=="number"&&(fe.tileSize=C.tile_size),typeof(C==null?void 0:C.minzoom)=="number"&&(fe.minzoom=C.minzoom),typeof(C==null?void 0:C.maxzoom)=="number"&&(fe.maxzoom=C.maxzoom),typeof(C==null?void 0:C.opacity)=="number"&&(fe.opacity=C.opacity),fe}).filter(Boolean):[]}const q=e.computed(()=>{var Z,ee;const w=o.card.value,C=l.current.value,I=[(Z=w==null?void 0:w.rows)==null?void 0:Z.layers,w==null?void 0:w.layers,(ee=C==null?void 0:C.data)==null?void 0:ee.layers,C==null?void 0:C.layers];for(const oe of I){const de=j(oe);if(de.length)return de}return[]}),te=e.computed(()=>Je.value.length>0||v.value.length>0||q.value.length>0),ie=e.computed(()=>!o.cardLoading.value&&!!o.card.value);function J(){const w={},C=T.value;if(C&&typeof C=="object"&&Object.entries(C).forEach(([I,Z])=>{typeof Z=="string"&&(w[I]=Z)}),g.value&&(w.layer=g.value),!w.geohub){const I=typeof(C==null?void 0:C.geohub)=="string"?C.geohub:null,Z=typeof(C==null?void 0:C.geohub_key)=="string"?C.geohub_key:null,ee=typeof(C==null?void 0:C.geohubId)=="string"?C.geohubId:null;w.geohub=I||Z||ee||w.layer||""}return w}async function me(){const w=g.value;if(!w)return T.value=null,z.value=null,null;if(z.value===w&&T.value)return T.value;if(H.has(w)){const C=H.get(w);return T.value=C,z.value=w,C}try{const C=await fetch(`/api/gis-service/${encodeURIComponent(w)}`);if(!C.ok)return null;const I=await C.json();return H.set(w,I),T.value=I,z.value=w,I}catch{return null}}async function he(w){if(!(w!=null&&w.id))return;await me();const C=J(),I=pt.value.find(de=>de.spec.id===w.id),Z=q.value.find(de=>de.id===w.id),ee=(I==null?void 0:I.spec)||V(Z)||V(w);if(!ee||u(ee.id,s.value))return;const oe=s.value||void 0;_.value=oe??null,d(ee,C,oe),m({action:"activate",owner:oe,spec:ee,context:C})}function Y(w){if(!w)return;const C=Fe()||void 0;h(w,C),m({action:"deactivate",owner:C,spec:{id:w}})}function Le(w){return u(w,Fe())}function je(w,C){const I=C.target;!!(I!=null&&I.checked)?he(w):Y(w.id)}function Fe(){return _.value||s.value||null}e.watch(g,(w,C)=>{w!==C&&(T.value=null,z.value=null)});const{next:Ze,prev:Ke,count:Pe,index:ze}=l,Re=e.computed(()=>o.count.value),Qe=e.computed(()=>o.index.value),Xo=e.computed(()=>Re.value>1),Jo=e.computed(()=>r.value?Pe.value:Re.value),Qo=e.computed(()=>r.value?ze.value:Qe.value),el=o.next,tl=o.prev;function et(){const w=Fe();w&&(p(w),m({action:"clear",owner:w}),_.value=null)}function fh(){o.close(),l.close(),et()}e.watch(a,(w,C)=>{!w&&C&&(et(),Ue())});function nl(){!o.isOpen.value&&!l.active.value&&et()}e.watch(()=>o.isOpen.value,()=>{nl()}),e.watch(()=>l.active.value,()=>{nl()}),e.watch(g,(w,C)=>{w&&C&&w!==C&&et()}),e.watch(ze,(w,C)=>{w!==C&&et()}),e.watch(x,(w,C)=>{w&&C&&w!==C&&et()});function gh(w){if(!w)return null;if(w.geometry)return w.geometry;const C=(w==null?void 0:w.data)??(w==null?void 0:w.properties);return C!=null&&C.geom_4326?C.geom_4326:C!=null&&C.geom?C.geom:null}function Ue(){var w,C;(C=(w=D.value)==null?void 0:w.remove)==null||C.call(w),D.value=null}function yh(w){var I,Z,ee;const C=(w==null?void 0:w.type)||((ee=(Z=(I=w==null?void 0:w.features)==null?void 0:I[0])==null?void 0:Z.geometry)==null?void 0:ee.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 fn=null;function ol(){const w=Array.isArray(b.query.info)?b.query.info[0]:b.query.info;return typeof w!="string"?null:w.trim()||null}function hh(w){var ee,oe;if(!w)return null;const C=(w==null?void 0:w.source)??((ee=w==null?void 0:w.layer)==null?void 0:ee.id),I=((oe=w==null?void 0:w.properties)==null?void 0:oe.id)??(w==null?void 0:w.id);return!C||I===void 0||I===null?null:`${C},${I}`.trim()||null}function It(w,C){if(w){if(Array.isArray(w)){if(w.length>=2&&typeof w[0]=="number"&&typeof w[1]=="number"){C.push([w[0],w[1]]);return}w.forEach(I=>It(I,C));return}typeof w=="object"&&(Array.isArray(w.coordinates)&&It(w.coordinates,C),Array.isArray(w.features)&&w.features.forEach(I=>It(I==null?void 0:I.geometry,C)))}}function xh(w){var ue,xe;if(!w)return null;const C=w.type==="FeatureCollection"?(xe=(ue=w.features)==null?void 0:ue[0])==null?void 0:xe.geometry:w.type==="Feature"?w.geometry:w,I=[];if(It(C,I),!I.length)return null;let Z=I[0][0],ee=I[0][0],oe=I[0][1],de=I[0][1];return I.forEach(([Ne,fe])=>{Ne<Z&&(Z=Ne),Ne>ee&&(ee=Ne),fe<oe&&(oe=fe),fe>de&&(de=fe)}),[(Z+ee)/2,(oe+de)/2]}async function bh(w,C){var oe;const I=ol();if(!I)return;const Z=hh(w);if(!Z||Z!==I||fn===I)return;const ee=xh(C);ee&&(await((oe=f.ready)==null?void 0:oe.call(f)),f.flyTo({center:ee,zoom:Zp}),fn=I)}function kh(w){var ee;if(!w){Ue();return}const C=(ee=f.map)==null?void 0:ee.value,I={type:"FeatureCollection",features:[{type:"Feature",geometry:w,properties:{}}]};Ue();const Z=yh(w);if(D.value=ae("feature-card-highlight",{source:{type:"geojson",data:I},layer:{id:"feature-card-highlight",type:Z.type,source:"feature-card-highlight",paint:Z.paint}},f.map),C!=null&&C.moveLayer){const oe=()=>{try{C.moveLayer("feature-card-highlight")}catch{}},de=()=>{typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(()=>{window.requestAnimationFrame(oe)}):setTimeout(oe,0)};de();const ue=()=>de();C.once("styledata",ue);const xe=()=>{de(),C.off("styledata",ue),C.off("idle",xe)};C.on("idle",xe)}}function wh(w){var Z,ee;const C=(w==null?void 0:w.source)||((Z=w==null?void 0:w.layer)==null?void 0:Z.id)||"unknown",I=((ee=w==null?void 0:w.properties)==null?void 0:ee.id)??(w==null?void 0:w.id)??"unknown";return`${C}:${I}`}async function _h(w){var oe,de,ue,xe,Ne;if(!w)return null;const C=gh(w);if(C)return C;const I=((oe=w==null?void 0:w.properties)==null?void 0:oe.id)??(w==null?void 0:w.id);if(!I)return null;const Z=wh(w);if(F.has(Z))return F.get(Z);const ee=[L.value,w==null?void 0:w.source,(de=w==null?void 0:w.layer)==null?void 0:de.id].map(fe=>typeof fe=="string"?fe.trim():"").filter(Boolean);for(const fe of ee)try{const Me=await fetch(`/api/map-features/${encodeURIComponent(fe)}/${encodeURIComponent(String(I))}`);if(!Me.ok)continue;const $e=await Me.json(),Ge=((ue=$e==null?void 0:$e.data)==null?void 0:ue.geom)||((xe=$e==null?void 0:$e.data)==null?void 0:xe.geometry)||((Ne=$e==null?void 0:$e.data)==null?void 0:Ne.geom_4326)||null,Et=typeof Ge=="string"?JSON.parse(Ge):Ge;if(Et)return F.set(Z,Et),Et}catch{continue}return null}async function _t(w){P.value+=1;const C=P.value;if(!w||r.value){Ue();return}if(!ie.value){Ue();return}const I=await _h(w);if(C===P.value){if(!I){Ue();return}kh(I),bh(w,I)}}return e.watch(()=>o.cardFeature.value,w=>{_t(w)},{immediate:!0}),e.watch(()=>o.index.value,()=>{r.value||_t(o.cardFeature.value)}),e.watch(r,w=>{w?Ue():_t(o.cardFeature.value)}),e.watch(L,()=>{!r.value&&o.cardFeature.value&&_t(o.cardFeature.value)}),e.watch(ie,w=>{w?_t(o.cardFeature.value):Ue()}),e.watch(()=>ol(),()=>{fn=null}),e.onBeforeUnmount(()=>{et(),Ue()}),(w,C)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("div",xp,[e.createElementVNode("div",bp,[e.createElementVNode("div",kp,[e.createElementVNode("p",wp,[r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Об’єкт "+e.toDisplayString(Qo.value+1)+" / "+e.toDisplayString(Jo.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Xo.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Об’єкт "+e.toDisplayString(Qo.value+1)+" / "+e.toDisplayString(Jo.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Інформація про об’єкт ")],64))],64))])]),r.value&&e.unref(Pe)>1?(e.openBlock(),e.createElementBlock("div",_p,[e.createElementVNode("button",{onClick:C[0]||(C[0]=(...I)=>e.unref(Ke)&&e.unref(Ke)(...I)),disabled:e.unref(ze)===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(bn),{class:"h-4 w-4"})],8,Ep),e.createElementVNode("button",{onClick:C[1]||(C[1]=(...I)=>e.unref(Ze)&&e.unref(Ze)(...I)),disabled:e.unref(ze)===e.unref(Pe)-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(kn),{class:"h-4 w-4"})],8,Np)])):!r.value&&Xo.value?(e.openBlock(),e.createElementBlock("div",Vp,[e.createElementVNode("button",{onClick:C[2]||(C[2]=(...I)=>e.unref(tl)&&e.unref(tl)(...I)),disabled:Qe.value===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(bn),{class:"h-4 w-4"})],8,Bp),e.createElementVNode("button",{onClick:C[3]||(C[3]=(...I)=>e.unref(el)&&e.unref(el)(...I)),disabled:Qe.value===Re.value-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(kn),{class:"h-4 w-4"})],8,Cp)])):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:fh}," ✕ ")]),e.createElementVNode("div",vp,[i.value?(e.openBlock(),e.createElementBlock("div",$p," Завантаження даних… ")):c.value?(e.openBlock(),e.createElementBlock("div",Sp,e.toDisplayString(c.value),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[v.value.length?(e.openBlock(),e.createElementBlock("div",Ap,[e.createElementVNode("dl",Lp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(le.value,I=>(e.openBlock(),e.createElementBlock("div",{key:I.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",Fp,e.toDisplayString(I.label),1),e.createElementVNode("dd",{class:e.normalizeClass(["text-gray-700 sm:col-span-2 font-normal whitespace-pre-wrap",I.format==="badge"?"font-semibold text-yellow-800":""])},e.toDisplayString(I.value),3)]))),128))])])):Je.value.length?(e.openBlock(),e.createElementBlock("div",Mp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Je.value,(I,Z)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:Z},[I.type==="html"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:I.content},null,8,Tp)):(e.openBlock(),e.createBlock(Oo,{key:1,title:I.componentProps.title,url:I.componentProps.url,id:I.componentProps.id,"button-text":I.componentProps.buttonText,onActivate:he},e.createSlots({_:2},[I.slotText?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:I.slotText},null,8,Dp)]),key:"0"}:void 0]),1032,["title","url","id","button-text"]))],64))),128))])):e.createCommentVNode("",!0),pt.value.length?(e.openBlock(),e.createElementBlock("div",Ip,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(pt.value,I=>(e.openBlock(),e.createBlock(Oo,{key:I.spec.id,title:I.componentProps.title,url:I.componentProps.url,id:I.spec.id,"button-text":I.componentProps.buttonText,onActivate:he},null,8,["title","url","id","button-text"]))),128))])):e.createCommentVNode("",!0),Te.value?(e.openBlock(),e.createElementBlock("div",jp,[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:Dt},[e.createElementVNode("span",zp,e.toDisplayString(Ie.value),1),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(Tt.value),{class:"h-3 w-3 stroke-[1.5px]"}))])])):e.createCommentVNode("",!0),q.value.length?(e.openBlock(),e.createElementBlock("div",Op,[C[5]||(C[5]=e.createElementVNode("p",{class:"text-xs font-semibold uppercase tracking-wide text-slate-500"},"Шари",-1)),e.createElementVNode("div",Pp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(q.value,I=>(e.openBlock(),e.createElementBlock("div",{key:I.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Rp,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:Le(I.id),onChange:Z=>je(I,Z)},null,40,Up),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",qp,e.toDisplayString(I.title),1)]),I.subtitle?(e.openBlock(),e.createElementBlock("div",Hp,e.toDisplayString(I.subtitle),1)):e.createCommentVNode("",!0)]))),128))])])):e.createCommentVNode("",!0),te.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Yp," Даних не знайдено. "))],64))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-370b3cd8"]]),Uo=e.defineComponent({__name:"MapBoundaryLayer",props:{layerId:{},boundary:{},katottg:{},settingsMap:{}},setup(t){var h,p;const n=t,o=((p=(h=e.getCurrentInstance())==null?void 0:h.appContext.config.globalProperties)==null?void 0:p.$settings)||null,{map:l,ready:r}=ve();let a=null;function i(){a==null||a.remove(),a=null}function c(u){if(!u)return null;if(typeof u=="string")try{u=JSON.parse(u)}catch{return null}return u.type==="FeatureCollection"?u:u.type==="Feature"?{type:"FeatureCollection",features:[u]}:u.type&&Array.isArray(u.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:u,properties:{}}]}:Array.isArray(u.features)?{type:"FeatureCollection",features:u.features}:u.geometry?c(u.geometry):null}function y(u){var s,x,_;return{type:"line",color:"#8e4484",width:2,opacity:((((_=(x=(s=u==null?void 0:u.features)==null?void 0:s[0])==null?void 0:x.geometry)==null?void 0:_.type)||"").includes("Polygon"),.95)}}async function f(u){const m=await fetch(u);if(!m.ok)throw new Error(String(m.status));return m.json()}async function b(u,m){if(u){const g=/^https?:\/\//.test(u)?u:new URL(u,location.origin).toString(),s=await f(g).catch(()=>null),x=c(s);if(x)return x}if(m){const g=await f(`https://data.gki.com.ua/api-user/atu/${encodeURIComponent(m)}`).catch(()=>null),s=c(g);if(s)return s}return null}async function d(){var s,x,_,D;if(!n.layerId||!l.value){i();return}typeof r=="function"&&await r().catch(()=>{});const u=n.boundary??((s=n.settingsMap)==null?void 0:s.boundary)??((x=o==null?void 0:o.map)==null?void 0:x.boundary)??null,m=n.katottg??((_=n.settingsMap)==null?void 0:_.katottg)??((D=o==null?void 0:o.map)==null?void 0:D.katottg)??null;if(!u&&!m){i();return}const g=await b(u,m);if(!g){i();return}i(),a=ae(`${n.layerId}-boundary`,{source:{type:"geojson",data:g},style:y(g)},l)}return e.watch(()=>{var u,m;return[n.layerId,n.boundary,n.katottg,(u=n.settingsMap)==null?void 0:u.boundary,(m=n.settingsMap)==null?void 0:m.katottg,l.value]},()=>{d()},{immediate:!0}),e.onBeforeUnmount(i),(u,m)=>null}}),Kp={class:"map-center-control"},Gp=["aria-label"],Xp={class:"absolute left-full ml-3 px-3 py-1.5 bg-gray-900 text-white text-sm 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"},un=Q(e.defineComponent({__name:"MapCenterControl",props:{center:{},zoom:{},targetCenter:{},targetZoom:{},targetLabel:{},targetAriaLabel:{}},setup(t){const n=t,{map:o,ready:l}=ve(),r=e.ref(null),a=e.ref(null),i=e.ref(null),c=e.ref(null);function y(u){if(Array.isArray(u)&&u.length>=2){const[m,g]=u.slice(0,2).map(s=>Number(s));return Number.isNaN(m)||Number.isNaN(g)?null:[m,g]}if(u&&typeof u=="object"){const m=u,g=m.lng??m.lon??m.long??m.x,s=m.lat??m.y;if(g!=null&&s!=null){const x=Number(g),_=Number(s);if(!Number.isNaN(x)&&!Number.isNaN(_))return[x,_]}}if(typeof u=="string"){const m=u.split(",").map(g=>Number(g.trim()));if(m.length>=2&&m.every(g=>!Number.isNaN(g)))return[m[0],m[1]]}return null}e.watch(()=>n.center,u=>{const m=y(u);m&&(r.value=m)},{immediate:!0}),e.watch(()=>n.zoom,u=>{const m=Number(u);Number.isNaN(m)||(a.value=m)},{immediate:!0}),e.watch(()=>n.targetCenter,u=>{i.value=y(u)},{immediate:!0}),e.watch(()=>n.targetZoom,u=>{const m=Number(u);c.value=Number.isNaN(m)?null:m},{immediate:!0});const f=e.computed(()=>{var u;return((u=n.targetLabel)==null?void 0:u.trim())||"Точка"}),b=e.computed(()=>n.targetAriaLabel||"Перейти до точки"),d=e.computed(()=>!!i.value);e.onMounted(async()=>{await(l==null?void 0:l());const u=o.value;if(u){if(!r.value){const m=u.getCenter();r.value=[m.lng,m.lat]}a.value==null&&(a.value=u.getZoom())}});function h(){const u=o.value;if(!u)return;const m=r.value||(()=>{const s=u.getCenter();return[s.lng,s.lat]})(),g=a.value??u.getZoom();u.flyTo({center:m,zoom:g})}function p(){const u=o.value;if(!u||!i.value)return;const m=c.value??a.value??u.getZoom();u.flyTo({center:i.value,zoom:m})}return(u,m)=>(e.openBlock(),e.createElementBlock("div",Kp,[d.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.createVNode(e.unref(hl),{class:"w-4 h-4"}),m[0]||(m[0]=e.createElementVNode("span",{class:"absolute left-full ml-3 px-3 py-1.5 bg-gray-900 text-white text-sm 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))])),d.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":b.value,onClick:e.withModifiers(p,["stop"])},[e.createVNode(e.unref(xl),{class:"w-4 h-4"}),e.createElementVNode("span",Xp,e.toDisplayString(f.value),1)],8,Gp)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-40f00452"]]),Jp={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Qp={class:"flex-1 relative overflow-hidden"},em={class:"absolute top-0 left-0 w-full z-20"},tm={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},nm={class:"flex items-center gap-3"},om={class:"font-semibold text-lg text-gray-800 line-clamp-1"},lm={class:"text-xs text-gray-500 truncate"},rm=["title"],am={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]"},im={class:"relative w-full h-full"},sm={style:{top:"17px",left:"230px",position:"absolute","z-index":"1"}},cm={class:"absolute top-4 left-4 z-20"},dm={class:"absolute top-[6.5rem] right-2 space-y-1 z-20"},um={class:"absolute bottom-4 left-4 z-20"},pm={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},mm={class:"flex-1 flex flex-col h-full"},fm={class:"px-3 pt-3 pb-2 border-b border-gray-100"},gm={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"],hm={class:"leading-none"},xm={class:"flex flex-col flex-1 overflow-y-hidden p-3"},bm=Q(e.defineComponent({__name:"service",setup(t){var H,U;const n=we.useRoute(),o=we.useRouter(),{id:l}=n.params,r=e.ref(null),a=e.ref({}),i=e.ref(null),c=((U=(H=e.getCurrentInstance())==null?void 0:H.appContext.config.globalProperties)==null?void 0:U.$settings)||null,y=e.ref(null),f=e.ref([]),b=e.ref([]),d=e.ref([]),h=e.ref("list"),p=e.ref(""),u=e.ref([]),m=e.computed(()=>{var N,E;return((N=i.value)==null?void 0:N.id)??((E=i.value)==null?void 0:E.service_id)??null}),g=e.computed(()=>{const N=(c==null?void 0:c.map)||null,E=(N==null?void 0:N.boundary)??null,S=(N==null?void 0:N.katottg)??null;return!E&&!S?null:{boundary:E,katottg:S}}),s=[{key:"style",label:"Стиль",icon:Mo},{key:"popup",label:"Попап",icon:Jd},{key:"filter",label:"Фільтр",icon:nu},{key:"legend",label:"Легенда",icon:qd},{key:"card",label:"Картка",icon:Zd}],x=s.map(N=>N.key),_=e.ref("style");e.onMounted(async()=>{const N=n.query.tab;N&&x.includes(N)&&(_.value=N),await F()}),e.watch(_,N=>{n.query.tab!==N&&o.replace({query:{...n.query,tab:N}})}),e.watch(()=>n.query.tab,N=>{N&&x.includes(N)&&_.value!==N&&(_.value=N)});function D(N){if(!N)return null;try{return JSON.parse(JSON.stringify(N))}catch(E){return console.warn("Failed to clone style",E),null}}function P(N){if(!N)return null;if(typeof N=="string")try{return Id.load(N)||null}catch(E){return console.warn("Failed to parse style yaml",E),null}return D(N)}const F=async()=>{try{const N=await fetch(`/api/gis-service/${l}`);if(!N.ok)throw new Error(`${N.status}`);const E=await N.json();a.value=E||{},r.value=l;const S=P(E.style);i.value=E?{...E,style:D(S)}:null,y.value=S,b.value=(E==null?void 0:E.popup)||[],h.value=E.card_mode==="html"?"html":"list",d.value=E.card,p.value=E.html,f.value=(E==null?void 0:E.legend)||[],u.value=(E==null?void 0:E.filters)||[]}catch(N){console.error("Failed to fetch map info",N)}};e.watch(()=>{var N;return(N=i.value)==null?void 0:N.style},N=>{y.value=P(N)},{deep:!0});async function M(N,E){await T({[N]:E},N)}function L(){const N=D(y.value);N&&(i.value=i.value?{...i.value,style:N}:i.value)}async function T(N,E){if(i.value={...i.value||{},...N},typeof N.html<"u"&&(a.value={...a.value||{},html:N.html}),!!m.value)try{if(!(await fetch(`/api/gis-service/${m.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(N)})).ok)throw new Error("Save failed");re.notify({type:"success",title:"Успіх",message:`${E} saved`}),await F()}catch(S){re.notify({type:"error",title:"Помилка",message:`Failed to save ${E}`}),console.error(S)}}async function z(N,E){if(N!=="card"){await M(N,E);return}const S=(E==null?void 0:E.card_mode)==="html"?"html":"list",$=S==="html"&&typeof(E==null?void 0:E.html)=="string"?E.html:"",A=(S==="html"?[]:null)||(Array.isArray(E==null?void 0:E.list)?E.list:[]);d.value=A,h.value=S,p.value=$;const V={card_mode:S};S==="html"&&(V.html=$),S==="list"&&(V.card=A),await T(V,"card")}return(N,E)=>{var S,$,A,V;return e.openBlock(),e.createElementBlock("div",Jp,[e.createElementVNode("div",Qp,[e.createElementVNode("div",em,[e.createElementVNode("div",tm,[e.createElementVNode("div",nm,[e.createElementVNode("button",{onClick:E[0]||(E[0]=k=>N.$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"},[...E[9]||(E[9]=[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",om,e.toDisplayString((S=i.value)==null?void 0:S.name),1),e.createElementVNode("div",lm," Сервіс: "+e.toDisplayString(($=i.value)==null?void 0:$.service_key),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:(A=i.value)==null?void 0:A.description},e.toDisplayString((V=i.value)==null?void 0:V.description),9,rm)])]),e.createElementVNode("div",am,[e.createElementVNode("div",im,[e.createVNode(Lt,null,{default:e.withCtx(()=>{var k,B,v,O,R,K,W;return[(k=i.value)!=null&&k.service_id?(e.openBlock(),e.createBlock(Zu,{key:0,id:(B=i.value)==null?void 0:B.service_id,layer:i.value,"style-spec":((v=i.value)==null?void 0:v.style)||null},null,8,["id","layer","style-spec"])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createBlock(Uo,{key:1,"layer-id":m.value,boundary:((O=i.value)==null?void 0:O.boundary)||((R=g.value)==null?void 0:R.boundary)||null,katottg:((K=i.value)==null?void 0:K.katottg)||((W=g.value)==null?void 0:W.katottg)||null},null,8,["layer-id","boundary","katottg"])):e.createCommentVNode("",!0),e.createElementVNode("div",sm,[m.value?(e.openBlock(),e.createBlock(sn,{key:0,"layer-id":m.value,filters:u.value},null,8,["layer-id","filters"])):e.createCommentVNode("",!0)]),E[10]||(E[10]=e.createElementVNode("div",{id:"map-filter-popover-host",class:"map-widget__filter-host"},null,-1)),e.createElementVNode("div",cm,[e.createVNode(kt)]),e.createElementVNode("div",dm,[e.createVNode(un),a.value.center?(e.openBlock(),e.createBlock(un,{key:0,targetCenter:a.value.center,targetLabel:"Ценр даних"},null,8,["targetCenter"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",um,[e.createVNode(wt,{items:f.value||null},null,8,["items"])]),e.createVNode(zo),e.createVNode(Ro,{html:a.value.html},null,8,["html"])]}),_:1})])])]),e.createElementVNode("div",pm,[e.createElementVNode("div",mm,[e.createElementVNode("div",fm,[e.createElementVNode("div",gm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(s,k=>e.createElementVNode("button",{key:k.key,type:"button",role:"tab","aria-selected":_.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",_.value===k.key?"bg-white shadow-sm text-gray-700":""]),onClick:B=>_.value=k.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(k.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",hm,e.toDisplayString(k.label),1)],10,ym)),64))])]),e.createElementVNode("div",xm,[_.value==="style"?(e.openBlock(),e.createBlock(cu,{key:0,token:m.value,"style-yaml":y.value,"onUpdate:styleYaml":E[1]||(E[1]=k=>y.value=k),onUpdate:L},null,8,["token","style-yaml"])):_.value==="legend"?(e.openBlock(),e.createBlock(Iu,{key:1,token:m.value,columns:f.value,"onUpdate:columns":E[2]||(E[2]=k=>f.value=k),onSave:E[3]||(E[3]=k=>M("legend",k))},null,8,["token","columns"])):_.value==="popup"?(e.openBlock(),e.createBlock($u,{key:2,token:m.value,columns:b.value,fields:a.value.fields,"onUpdate:columns":E[4]||(E[4]=k=>b.value=k),onSave:E[5]||(E[5]=k=>M("popup",k))},null,8,["token","columns","fields"])):_.value==="card"?(e.openBlock(),e.createBlock(Hu,{key:3,token:m.value,columns:d.value,fields:a.value.fields,"view-mode":h.value,html:p.value,"onUpdate:columns":E[6]||(E[6]=k=>d.value=k),onSave:z},null,8,["token","columns","fields","view-mode","html"])):_.value==="filter"?(e.openBlock(),e.createBlock(Wu,{key:4,token:m.value,fields:a.value.fields,columns:u.value,"onUpdate:columns":E[7]||(E[7]=k=>u.value=k),onSave:E[8]||(E[8]=k=>M("filters",k))},null,8,["token","fields","columns"])):e.createCommentVNode("",!0)])])])])}}}),[["__scopeId","data-v-027e34d0"]]),km={class:"flex-1 overflow-y-auto p-4 sm:p-6"},wm={class:"space-y-6"},_m={class:"bg-white p-6 rounded-xl border border-gray-200 shadow-sm"},Em={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"},Nm={class:"text-xs text-gray-500 mb-1"},Vm={class:"text-base font-semibold text-gray-900"},Bm={class:"bg-white p-6 rounded-xl border border-gray-200 shadow-sm"},Cm={class:"space-y-4"},vm={class:"bg-gradient-to-br from-blue-50 to-blue-100/30 p-4 rounded-lg border border-blue-200"},$m={class:"text-sm font-semibold text-gray-900"},Sm={class:"text-xs text-gray-600 mt-1"},Am={class:"grid grid-cols-2 gap-3"},Lm={class:"text-xs text-gray-500 mb-1"},Fm={class:"text-sm font-semibold text-gray-900"},Mm={class:"bg-gray-50 p-4 rounded-lg"},Tm={class:"grid grid-cols-2 gap-4"},Dm={class:"text-xs text-gray-500 mb-1"},Im={class:"text-sm font-semibold text-gray-900"},jm={class:"bg-white p-6 rounded-xl border border-gray-200 shadow-sm"},zm={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Om={class:"space-y-2"},Pm={class:"text-gray-600"},Rm={class:"font-semibold text-gray-900"},Um={class:"bg-white p-6 rounded-xl border border-gray-200 shadow-sm"},qm={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Hm={class:"text-xs text-gray-500 mb-1"},Ym={class:"text-sm font-medium text-gray-900"},Wm=e.defineComponent({__name:"raster-info-tab",props:{details:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",km,[e.createElementVNode("div",wm,[o[6]||(o[6]=e.createElementVNode("div",null,[e.createElementVNode("h3",{class:"text-lg font-semibold text-gray-900 mb-4"},"Інформація про растр")],-1)),e.createElementVNode("div",_m,[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",Em,[(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-4 rounded-lg"},[e.createElementVNode("p",Nm,e.toDisplayString(l.label),1),e.createElementVNode("p",Vm,e.toDisplayString(l.value),1)]))),128))])]),e.createElementVNode("div",Bm,[o[3]||(o[3]=e.createElementVNode("div",{class:"mb-4"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Просторова інформація")],-1)),e.createElementVNode("div",Cm,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("p",{class:"text-xs text-gray-500 mb-2"},"Система координат",-1)),e.createElementVNode("div",vm,[e.createElementVNode("p",$m,e.toDisplayString(t.details.spatial.crs.code),1),e.createElementVNode("p",Sm,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",Am,[(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-3 rounded-lg border border-gray-200"},[e.createElementVNode("p",Lm,e.toDisplayString(l.label),1),e.createElementVNode("p",Fm,e.toDisplayString(l.value),1)]))),128))])]),e.createElementVNode("div",Mm,[e.createElementVNode("div",Tm,[(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",Dm,e.toDisplayString(l.label),1),e.createElementVNode("p",Im,e.toDisplayString(l.value),1)]))),128))])])])]),e.createElementVNode("div",jm,[o[4]||(o[4]=e.createElementVNode("div",{class:"mb-4"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Статистика даних")],-1)),e.createElementVNode("div",zm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.statistics,l=>(e.openBlock(),e.createElementBlock("div",{key:l.label,class:e.normalizeClass(["p-4 rounded-lg border",l.cardClass])},[e.createElementVNode("p",{class:e.normalizeClass(["text-xs font-medium mb-2",l.titleClass])},e.toDisplayString(l.label),3),e.createElementVNode("div",Om,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.metrics,r=>(e.openBlock(),e.createElementBlock("div",{class:"flex justify-between text-xs",key:r.label},[e.createElementVNode("span",Pm,e.toDisplayString(r.label)+":",1),e.createElementVNode("span",Rm,e.toDisplayString(r.value),1)]))),128))])],2))),128))])]),e.createElementVNode("div",Um,[o[5]||(o[5]=e.createElementVNode("div",{class:"mb-4"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Технічні деталі")],-1)),e.createElementVNode("div",qm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.technical,l=>(e.openBlock(),e.createElementBlock("div",{key:l.label},[e.createElementVNode("p",Hm,e.toDisplayString(l.label),1),e.createElementVNode("p",Ym,e.toDisplayString(l.value),1)]))),128))])])])]))}}),Zm={class:"flex-1 overflow-y-auto space-y-3 pr-1"},Km={class:"font-medium text-sm text-gray-800"},Gm={class:"text-xs text-gray-500"},Xm=e.defineComponent({__name:"raster-files-tab",props:{files:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",Zm,[(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",Km,e.toDisplayString(l.name),1),e.createElementVNode("p",Gm,e.toDisplayString(l.resolution)+" • "+e.toDisplayString(l.size),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))]))}}),Jm={},Qm={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 ef(t,n){return e.openBlock(),e.createElementBlock("svg",Qm,[...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 tf=Q(Jm,[["render",ef]]),nf={},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"};function lf(t,n){return e.openBlock(),e.createElementBlock("svg",of,[...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 rf=Q(nf,[["render",lf]]),af={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},sf={class:"flex-1 relative overflow-hidden"},cf={class:"absolute top-0 left-0 w-full z-20"},df={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},uf={class:"flex items-center gap-3"},pf={class:"font-semibold text-lg text-gray-800 line-clamp-1"},mf={class:"text-xs text-gray-500 truncate"},ff=["title"],gf={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]"},yf={class:"relative w-full h-full"},hf={class:"absolute top-4 left-4 z-20"},xf={class:"absolute bottom-4 left-4 z-20"},bf={class:"w-[520px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},kf={class:"flex-1 flex flex-col h-full"},wf={class:"px-3 pt-3 pb-2 border-b border-gray-100"},_f={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"},Ef=["aria-selected","onClick"],Nf={class:"leading-none"},Vf={class:"flex flex-col flex-1 overflow-y-hidden p-4"},Bf="3600301717964457703",Cf=e.defineComponent({__name:"raster",setup(t){const n=we.useRouter(),o=we.useRoute(),l=e.computed(()=>{var d;return((d=o.params)==null?void 0:d.id)||Bf}),r=e.computed(()=>({id:l.value,name:"Фрагмент растра 30 см",description:"Попередній перегляд растрового шару. Реальні метадані підтягнемо після підключення API.",coverage:"Київська область, 2024 рік",crs:"EPSG:4326",source:"ДП «Центр ДЗК»",updatedAt:"14 травня 2024"})),a=[{key:"files",label:"Файли",icon:tf},{key:"info",label:"Інформація",icon:rf}],i=a.map(d=>d.key),c=e.ref(i.includes(o.query.tab)?o.query.tab:"files");e.watch(()=>o.query.tab,d=>{d&&i.includes(d)&&c.value!==d&&(c.value=d)}),e.watch(c,d=>{o.query.tab!==d&&n.replace({query:{...o.query,tab:d}})});const y=[{label:"Покриття 2024",color:"#0ea5e9"},{label:"Попередні дані 2023",color:"#94a3b8"}],f=e.ref([{name:"mosaic_01.tif",resolution:"0.3 м/піксель",size:"245 MB",status:"Готово",statusClass:"bg-emerald-50 text-emerald-600 border border-emerald-100"},{name:"mosaic_01.tfw",resolution:"georeferencing",size:"4 KB",status:"Готово",statusClass:"bg-emerald-50 text-emerald-600 border border-emerald-100"},{name:"metadata.xml",resolution:"опис",size:"8 KB",status:"Чернетка",statusClass:"bg-amber-50 text-amber-600 border border-amber-100"}]),b=e.computed(()=>({baseParams:[{label:"Розмір растру",value:"2048 × 1536 px"},{label:"Формат файлу",value:"GeoTIFF"},{label:"Розмір файлу",value:"45.2 MB"},{label:"Кількість каналів",value:"4 (RGBA)"},{label:"Глибина кольору",value:"8 біт/канал"},{label:"Стиснення",value:"LZW"}],spatial:{crs:{code:"EPSG:4326",description:"WGS 84 — World Geodetic System 1984"},bounds:[{label:"Північ",value:"52.3791° N"},{label:"Схід",value:"31.1656° E"},{label:"Південь",value:"44.3864° N"},{label:"Захід",value:"22.1371° E"}],resolution:[{label:"Роздільна здатність X",value:"0.00417° (~460 м)"},{label:"Роздільна здатність Y",value:"0.00417° (~460 м)"}]},statistics:[{label:"Канал 1 (Червоний)",cardClass:"bg-gradient-to-br from-green-50 to-green-100/30 border-green-200",titleClass:"text-green-900",metrics:[{label:"Min",value:"0"},{label:"Max",value:"255"},{label:"Середнє",value:"127.3"}]},{label:"Канал 2 (Зелений)",cardClass:"bg-gradient-to-br from-blue-50 to-blue-100/30 border-blue-200",titleClass:"text-blue-900",metrics:[{label:"Min",value:"0"},{label:"Max",value:"255"},{label:"Середнє",value:"134.8"}]},{label:"Канал 3 (Синій)",cardClass:"bg-gradient-to-br from-purple-50 to-purple-100/30 border-purple-200",titleClass:"text-purple-900",metrics:[{label:"Min",value:"0"},{label:"Max",value:"255"},{label:"Середнє",value:"118.5"}]},{label:"Канал 4 (Альфа)",cardClass:"bg-gradient-to-br from-gray-50 to-gray-100/30 border-gray-200",titleClass:"text-gray-900",metrics:[{label:"Min",value:"0"},{label:"Max",value:"255"},{label:"Середнє",value:"255.0"}]}],technical:[{label:"Тип даних",value:"Unsigned Integer 8-bit"},{label:"Інтерливінг",value:"Pixel"},{label:"Значення NoData",value:"0"},{label:"Кольорова інтерпретація",value:"RGB + Alpha"},{label:"Тайлування",value:"256 × 256"},{label:"Оверв'ю",value:"4 рівні"}]}));return(d,h)=>(e.openBlock(),e.createElementBlock("div",af,[e.createElementVNode("div",sf,[e.createElementVNode("div",cf,[e.createElementVNode("div",df,[e.createElementVNode("div",uf,[e.createElementVNode("button",{type:"button",onClick:h[0]||(h[0]=p=>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"},[...h[1]||(h[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",pf,e.toDisplayString(r.value.name),1),e.createElementVNode("div",mf," Растер ID: "+e.toDisplayString(r.value.id),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:r.value.description},e.toDisplayString(r.value.description),9,ff)])]),e.createElementVNode("div",gf,[e.createElementVNode("div",yf,[e.createVNode(Lt,null,{default:e.withCtx(()=>[e.createElementVNode("div",hf,[e.createVNode(kt)]),e.createElementVNode("div",xf,[e.createVNode(wt,{items:y})])]),_:1})])])]),e.createElementVNode("div",bf,[e.createElementVNode("div",kf,[e.createElementVNode("div",wf,[e.createElementVNode("div",_f,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,p=>e.createElementVNode("button",{key:p.key,type:"button",role:"tab","aria-selected":c.value===p.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",c.value===p.key?"bg-white shadow-sm text-gray-700":""]),onClick:u=>c.value=p.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Nf,e.toDisplayString(p.label),1)],10,Ef)),64))])]),e.createElementVNode("div",Vf,[c.value==="files"?(e.openBlock(),e.createBlock(Xm,{key:0,files:f.value},null,8,["files"])):(e.openBlock(),e.createBlock(Wm,{key:1,details:b.value},null,8,["details"]))])])])]))}}),vf={},$f={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 Sf(t,n){return e.openBlock(),e.createElementBlock("svg",$f,[...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 Af=Q(vf,[["render",Sf]]),Lf={class:"flex flex-col h-full"},Ff={class:"flex justify-end mb-3 gap-2"},Mf=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",Lf,[e.createElementVNode("div",Ff,[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]=c=>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(At,{modelValue:r.value,"onUpdate:modelValue":i[1]||(i[1]=c=>r.value=c),language:"css",class:"flex-1 rounded-lg overflow-hidden"},null,8,["modelValue"])]))}}),Tf={class:"flex flex-col flex-1 min-h-0"},Df={class:"flex justify-between mb-3 gap-2"},If={class:"text-left"},jf={class:"font-medium text-gray-900"},zf={class:"text-xs text-gray-500"},Of={class:"flex justify-center gap-2"},Pf=["checked","onChange"],Rf={class:"text-sm font-medium text-gray-900"},Uf=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:"Зум",slot:"zoomCell",width:"140px"}],l={table:{type:"text",label:"Таблиця",validators:["required"]},caption:{type:"text",label:"Підпис",validators:["required"]},active:{type:"switcher",label:"Активний"},zoom:{type:"number",label:"Зум"}},r=e.defineAsyncComponent(()=>import("@opengis/core").then(m=>m.VsModal)),a=e.defineAsyncComponent(()=>import("@opengis/form")),i=e.useModel(t,"modelValue"),c=n,y=e.ref(!1),f=e.ref({table:"",caption:"",zoom:"0-12",active:!0}),b={table:{type:"text",label:"Таблиця",validators:["required"]},caption:{type:"text",label:"Підпис",validators:["required"]},active:{type:"switcher",label:"Активна"},zoom:{type:"text",label:"Зум",placeholder:"0-12"}};function d(){f.value={table:"",caption:"",zoom:"",active:!0},y.value=!0}function h(){y.value=!1}function p(){var s,x;const m=(s=f.value.table)==null?void 0:s.trim(),g=(x=f.value.caption)==null?void 0:x.trim();if(!m||!g){re.notify({type:"warning",title:"Перевірка",message:"Вкажіть таблицю та підпис"});return}i.value=[...Array.isArray(i.value)?i.value:[],{...f.value,table:m,caption:g}],y.value=!1}function u(m,g){var x;const s=((x=g==null?void 0:g.target)==null?void 0:x.checked)??!1;m.active=s,i.value=Array.isArray(i.value)?[...i.value]:[]}return(m,g)=>(e.openBlock(),e.createElementBlock("div",Tf,[e.createElementVNode("div",Df,[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:d}," Додати таблицю "),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]=s=>c("save"))}," Зберегти ")]),e.createVNode(qe,{modelValue:i.value,"onUpdate:modelValue":g[1]||(g[1]=s=>i.value=s),"columns-scheme":o,"form-scheme":l,"add-button":!1,"main-col-width":"260px"},{datasetCell:e.withCtx(({row:s})=>[e.createElementVNode("div",If,[e.createElementVNode("div",jf,e.toDisplayString(s.table),1),e.createElementVNode("div",zf,e.toDisplayString(s.caption),1)])]),activeCell:e.withCtx(({row:s})=>[e.createElementVNode("label",Of,[e.createElementVNode("input",{type:"checkbox",class:"h-4 w-4 text-sky-500 border-gray-300 rounded focus:ring-sky-300",checked:s.active,onChange:x=>u(s,x)},null,40,Pf)])]),zoomCell:e.withCtx(({row:s})=>[e.createElementVNode("div",Rf,e.toDisplayString(s.zoom),1)]),_:1},8,["modelValue"]),e.createVNode(e.unref(r),{teleport:"#modal",visible:y.value,"onUpdate:visible":g[3]||(g[3]=s=>y.value=s),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:h},"Скасувати"),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:p},"Додати")])]),default:e.withCtx(()=>[e.createVNode(e.unref(a),{values:f.value,"onUpdate:values":g[2]||(g[2]=s=>f.value=s),schema:b},null,8,["values"])]),_:1},8,["visible"])]))}}),qf={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Hf={class:"flex-1 relative overflow-hidden"},Yf={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"},Zf={class:"flex items-center gap-3"},Kf={class:"font-semibold text-lg text-gray-800 line-clamp-1"},Gf={class:"text-xs text-gray-500 truncate"},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 bottom-4 left-4 z-20"},n0={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},o0={class:"flex-1 flex flex-col h-full"},l0={class:"px-3 pt-3 pb-2 border-b border-gray-100"},r0={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:"flex-1 flex items-center justify-center text-sm text-gray-500"},d0="cartocss-demo-001",u0=e.defineComponent({__name:"cartocss",setup(t){const n=we.useRouter(),o=we.useRoute(),l=[{label:"Основні дороги",color:"#e11d48"},{label:"Населені пункти",color:"#f97316"},{label:"Фон",color:"#0ea5e9"}],r=[{key:"css",label:"CSS",icon:Mo},{key:"data",label:"Дані",icon:Af}],a=r.map(s=>s.key),i=e.ref(a.includes(o.query.tab)?o.query.tab:"css"),c=e.computed(()=>o.params.id||d0),y=e.ref({id:c.value,name:"",description:""}),f=e.ref(""),b=e.ref([]),d=e.ref(!1),h=e.ref(!1);e.watch(c,s=>{s&&m(s)},{immediate:!0}),e.watch(()=>o.query.tab,s=>{s&&a.includes(s)&&i.value!==s&&(i.value=s)}),e.watch(i,s=>{o.query.tab!==s&&n.replace({query:{...o.query,tab:s}})});function p(s){if(!s)return null;if(typeof s=="string")try{return JSON.parse(s)}catch(x){return console.warn("Failed to parse CartoCSS config",x),null}return typeof s=="object"?s:null}function u(s){const x=Array.isArray(s)?s:s==null?void 0:s.datasets;return Array.isArray(x)?x.map((_,D)=>({table:(_==null?void 0:_.table)||(_==null?void 0:_.id)||`dataset_${D+1}`,caption:(_==null?void 0:_.caption)||(_==null?void 0:_.label)||"Без підпису",active:typeof(_==null?void 0:_.active)=="boolean"?_.active:!0,zoom:typeof(_==null?void 0:_.zoom)>"u"?"0-12":String(_.zoom)})):[]}async function m(s){d.value=!0;try{const x=await fetch(`/api/cartocss/${s}`);if(!x.ok)throw new Error(`Failed to load cartocss: ${x.status}`);const _=await x.json(),D=(_==null?void 0:_.message)||_||{};y.value={id:D.cartocss_key||s,name:D.name||y.value.name,description:D.description||y.value.description},f.value=typeof D.style=="string"?D.style:"";const P=p(D.config);b.value=u(P)}catch(x){console.error("Failed to fetch CartoCSS",x)}finally{d.value=!1}}async function g(){if(c.value){h.value=!0;try{const s={style:f.value||"",config:JSON.stringify(b.value)},x=await fetch(`/api/cartocss/${c.value}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!x.ok)throw new Error(`Failed to save cartocss: ${x.status}`);re.notify({type:"success",title:"Збережено",message:"CartoCSS оновлено"}),await m(c.value)}catch(s){console.error("Failed to save CartoCSS",s),re.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти CartoCSS"})}finally{h.value=!1}}}return(s,x)=>(e.openBlock(),e.createElementBlock("div",qf,[e.createElementVNode("div",Hf,[e.createElementVNode("div",Yf,[e.createElementVNode("div",Wf,[e.createElementVNode("div",Zf,[e.createElementVNode("button",{type:"button",onClick:x[0]||(x[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"},[...x[3]||(x[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",Kf,e.toDisplayString(y.value.name),1),e.createElementVNode("div",Gf," CartoCSS ID: "+e.toDisplayString(y.value.id),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:y.value.description},e.toDisplayString(y.value.description),9,Xf)])]),e.createElementVNode("div",Jf,[e.createElementVNode("div",Qf,[e.createVNode(Lt,null,{default:e.withCtx(()=>[e.createElementVNode("div",e0,[e.createVNode(kt)]),e.createElementVNode("div",t0,[e.createVNode(wt,{items:l})])]),_:1})])])]),e.createElementVNode("div",n0,[e.createElementVNode("div",o0,[e.createElementVNode("div",l0,[e.createElementVNode("div",r0,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,_=>e.createElementVNode("button",{key:_.key,type:"button",role:"tab","aria-selected":i.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",i.value===_.key?"bg-white shadow-sm text-gray-700":""]),onClick:D=>i.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,[d.value?(e.openBlock(),e.createElementBlock("div",c0," Завантаження стилю… ")):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[i.value==="css"?(e.openBlock(),e.createBlock(Mf,{key:0,modelValue:f.value,"onUpdate:modelValue":x[1]||(x[1]=_=>f.value=_),class:"flex-1 min-h-0",onSave:g},null,8,["modelValue"])):(e.openBlock(),e.createBlock(Uf,{key:1,modelValue:b.value,"onUpdate:modelValue":x[2]||(x[2]=_=>b.value=_),class:"flex-1 min-h-0 flex flex-col",onSave:g},null,8,["modelValue"]))],64))])])])]))}}),p0={class:"bg-white rounded-lg shadow-xl w-full max-w-4xl flex flex-col h-[80vh] m-4"},m0={class:"flex items-center justify-between px-6 py-4 border-b border-gray-200"},f0={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"},g0={class:"flex-1 overflow-hidden relative bg-[#fffffe]"},y0={class:"px-6 py-4 border-t border-gray-200 flex justify-end gap-3"},h0=["disabled"],x0=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,y=>{if(y){try{r.value=JSON.stringify(y,null,2)}catch{r.value="{}"}a.value=null}},{immediate:!0}),e.watch(r,y=>{if(!y.trim()){a.value=null;return}try{JSON.parse(y),a.value=null}catch(f){a.value=f.message}}),e.watch(()=>o.modelValue,()=>{setTimeout(()=>{const{monaco:y}=window;if(y&&y.editor){const f=y.editor.getEditors();f.length>0&&f[f.length-1].updateOptions({wordWrap:"on"})}},300)},{immediate:!0});function i(){l("update:modelValue",null),r.value="",a.value=null}function c(){if(!a.value)try{const y=JSON.parse(r.value);l("save",y),i()}catch(y){console.error("Failed to parse JSON",y)}}return(y,f)=>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",p0,[e.createElementVNode("div",m0,[f[1]||(f[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(Ot),{size:20})])]),a.value?(e.openBlock(),e.createElementBlock("div",f0," Помилка JSON: "+e.toDisplayString(a.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",g0,[e.createVNode(At,{modelValue:r.value,"onUpdate:modelValue":f[0]||(f[0]=b=>r.value=b),language:"json",theme:"vs-light",class:"w-full h-full"},null,8,["modelValue"])]),e.createElementVNode("div",y0,[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:c,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,h0)])])])):e.createCommentVNode("",!0)}}),b0={key:0,class:"text-center py-8 text-gray-500 border rounded-lg bg-gray-50"},k0={key:1,class:"rounded-lg border border-gray-200 overflow-hidden"},w0={class:"w-full text-sm"},_0={class:"divide-y divide-gray-200"},E0={class:"px-4 py-3"},N0=["onUpdate:modelValue","onChange"],V0=["value"],B0={class:"px-4 py-3"},C0=["onUpdate:modelValue","onChange"],v0=["value"],$0={class:"px-4 py-3 text-center"},S0=["checked","onChange"],A0={class:"px-4 py-3"},L0={key:0,class:"flex items-center gap-2"},F0=["onClick"],M0=["onClick"],T0={key:1},D0=["onClick"],I0={class:"px-4 py-3 text-right"},j0=["onClick"],z0=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),c=e.ref(-1),y=e.computed(()=>o.modelValue||[]);function f(){const s=[...y.value,{type:"info",position:"top-left",visible:!0,config:{}}];l("update:modelValue",s)}function b(s){re.confirm({title:"Видалити віджет?",message:"Ви впевнені, що хочете видалити цей віджет?",type:"warning",onConfirm:()=>{const x=y.value.filter((_,D)=>D!==s);l("update:modelValue",x)}})}function d(s,x,_){const D=[...y.value];D[s]={...D[s],[x]:_},l("update:modelValue",D)}function h(s){return!!s&&Object.keys(s).length>0}function p(s,x){c.value=s,i.value=x||{}}function u(s){p(s,{})}function m(s){re.confirm({title:"Видалити конфігурацію?",message:"Ви впевнені, що хочете видалити конфігурацію цього віджета?",type:"warning",onConfirm:()=>{d(s,"config",void 0)}})}function g(s){c.value>-1&&d(c.value,"config",s),i.value=null,c.value=-1}return(s,x)=>{var _;return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:"flex items-center justify-between mb-4"},[x[1]||(x[1]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800"},"Віджети",-1)),e.createElementVNode("button",{onClick:f,class:"px-3 py-1.5 text-sm bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors"}," + Додати віджет ")]),(_=y.value)!=null&&_.length?(e.openBlock(),e.createElementBlock("div",k0,[e.createElementVNode("table",w0,[x[2]||(x[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",_0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,(D,P)=>(e.openBlock(),e.createElementBlock("tr",{key:P,class:"hover:bg-gray-50"},[e.createElementVNode("td",E0,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":F=>D.type=F,onChange:F=>d(P,"type",D.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,F=>e.createElementVNode("option",{key:F,value:F},e.toDisplayString(F),9,V0)),64))],40,N0),[[e.vModelSelect,D.type]])]),e.createElementVNode("td",B0,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":F=>D.position=F,onChange:F=>d(P,"position",D.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,F=>e.createElementVNode("option",{key:F,value:F},e.toDisplayString(F),9,v0)),64))],40,C0),[[e.vModelSelect,D.position]])]),e.createElementVNode("td",$0,[e.createElementVNode("input",{type:"checkbox",checked:D.visible!==!1,onChange:F=>d(P,"visible",F.target.checked),class:"w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500"},null,40,S0)]),e.createElementVNode("td",A0,[h(D.config)?(e.openBlock(),e.createElementBlock("div",L0,[e.createElementVNode("button",{onClick:F=>p(P,D.config),class:"p-1 text-blue-600 hover:text-blue-800 hover:bg-blue-50 rounded transition-colors",title:"Редагувати конфігурацію"},[e.createVNode(e.unref(bl),{size:16})],8,F0),e.createElementVNode("button",{onClick:F=>m(P),class:"p-1 text-red-500 hover:text-red-700 hover:bg-red-50 rounded transition-colors",title:"Видалити конфігурацію"},[e.createVNode(e.unref(Ot),{size:16})],8,M0)])):(e.openBlock(),e.createElementBlock("div",T0,[e.createElementVNode("button",{onClick:F=>u(P),class:"p-1 text-green-600 hover:text-green-800 hover:bg-green-50 rounded transition-colors",title:"Додати конфігурацію"},[e.createVNode(e.unref(kl),{size:16})],8,D0)]))]),e.createElementVNode("td",I0,[e.createElementVNode("button",{onClick:F=>b(P),class:"p-1 text-gray-400 hover:text-red-500 transition-colors",title:"Видалити віджет"},[e.createVNode(e.unref(_l),{size:16})],8,j0)])]))),128))])])])):(e.openBlock(),e.createElementBlock("div",b0," Немає віджетів. Додайте перший віджет. ")),e.createVNode(x0,{teleport:"#modal",modelValue:i.value,"onUpdate:modelValue":x[0]||(x[0]=D=>i.value=D),onSave:g},null,8,["modelValue"])])}}}),O0={class:"relative min-h-svh flex-1 flex-col flex gap-4 bg-white p-8 overflow-y-auto"},P0={class:"max-w-6xl mx-auto w-full"},R0={class:"flex items-center justify-between mb-6"},U0={class:"mb-2 text-2xl font-semibold text-gray-900"},q0={class:"flex items-center gap-2"},H0=["disabled"],Y0={key:0,class:"text-center py-12"},W0={class:"w-full mb-6"},Z0={class:"flex items-center w-full h-10 max-w-md p-1 bg-white border border-gray-200 rounded-md"},K0=["onClick"],G0={class:"space-y-6"},X0={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},J0={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},Q0=Q(e.defineComponent({__name:"MapSettings",setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=we.useRoute(),l=e.ref(!0),r=e.ref(!1),a=e.ref("info"),i=e.ref([]),c=e.ref({}),y=[{name:"Основна",id:"info"},{name:"Віджети",id:"widgets"}],f=e.ref({name:"",map_key:"",description:"",holder:"",image:"",keywords:[],center:null,zoom:11,widgets:[],layers:[]}),b=e.computed({get:()=>(f.value.layers||[]).map(g=>g.id||g),set:g=>{f.value.layers=g}}),d=e.computed(()=>i.value.map(g=>({id:g.id,text:g.name||g.id}))),h=[{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 p(){try{const g=await fetch("/api/gis-layer-list");g.ok&&(i.value=await g.json())}catch(g){console.error("Failed to load available layers:",g)}}async function u(){try{const s=await(await fetch(`/api/gis-map/${o.params.id}?original=1`)).json();f.value={...s,keywords:s.keywords||[],center:s.center??null,widgets:Array.isArray(s.widgets)?s.widgets:[],layers:(s.layers||[]).map(x=>x.id||x)}}catch(g){console.error("Failed to load map:",g),re.notify({type:"error",title:"Помилка",message:"Не вдалося завантажити карту"})}finally{l.value=!1}}async function m(){var s,x;const g=(x=(s=c.value)==null?void 0:s.validate)==null?void 0:x.call(s);if(g){re.notify({type:"warning",title:"Валідація",message:Object.entries(g).map(([_,D])=>`${_}: ${D}`).join(`
|
|
133
|
-
`)});return}r.value=!0;try{const _=JSON.parse(JSON.stringify(f.value));if(_.zoom=Number(_.zoom),Array.isArray(_.center)&&(_.center.every(F=>F==null||F===""||F===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");re.notify({type:"success",title:"Успіх",message:"Збережено!"})}catch(_){console.error("Save error:",_),re.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти"})}finally{r.value=!1}}return e.onMounted(async()=>{await p(),u()}),(g,s)=>(e.openBlock(),e.createElementBlock("main",O0,[e.createElementVNode("div",P0,[e.createElementVNode("div",R0,[e.createElementVNode("div",null,[e.createElementVNode("h1",U0,e.toDisplayString(f.value.name||"Налаштування карти"),1),s[5]||(s[5]=e.createElementVNode("p",{class:"text-gray-600"},"Редагування параметрів карти",-1))]),e.createElementVNode("div",q0,[s[6]||(s[6]=e.createElementVNode("a",{href:"/dashboard",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"}," Повернутися ",-1)),e.createElementVNode("button",{onClick:m,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,H0)])]),l.value?(e.openBlock(),e.createElementBlock("div",Y0,[...s[7]||(s[7]=[e.createElementVNode("p",{class:"text-gray-500"},"Завантаження...",-1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",W0,[e.createElementVNode("div",Z0,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(y,x=>e.createElementVNode("button",{key:x.id,onClick:_=>a.value=x.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",x.id===a.value?"bg-blue-50 text-blue-700":"text-gray-600 hover:bg-gray-50"])},e.toDisplayString(x.name),11,K0)),64))])]),e.withDirectives(e.createElementVNode("div",G0,[e.createElementVNode("section",X0,[s[8]||(s[8]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"}," Основна інформація ",-1)),l.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(n),{key:0,schema:h,values:f.value,"onUpdate:values":s[0]||(s[0]=x=>f.value=x),form:c.value,"onUpdate:form":s[1]||(s[1]=x=>c.value=x)},null,8,["values","form"]))]),e.createElementVNode("section",J0,[s[9]||(s[9]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"},"Шари",-1)),s[10]||(s[10]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Доступні шари",-1)),e.createVNode(e.unref(zt.VsInputSelect),{modelValue:b.value,"onUpdate:modelValue":s[2]||(s[2]=x=>b.value=x),options:d.value,multiple:"",label:"Виберіть шари (MultiSelect)",placeholder:"Оберіть один або декілька шарів"},null,8,["modelValue","options"]),s[11]||(s[11]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 mb-2 mt-4"},"Список обранихID шарів",-1)),e.createVNode(e.unref(zt.VsInputTextArray),{modelValue:b.value,"onUpdate:modelValue":s[3]||(s[3]=x=>b.value=x),placeholder:"id шару",class:"mb-6 hide-add-btn"},null,8,["modelValue"])])],512),[[e.vShow,a.value==="info"]]),e.withDirectives(e.createVNode(z0,{modelValue:f.value.widgets,"onUpdate:modelValue":s[4]||(s[4]=x=>f.value.widgets=x)},null,8,["modelValue"]),[[e.vShow,a.value==="widgets"]])],64))])]))}}),[["__scopeId","data-v-78724473"]]),eg={class:"mapLayer-info__inner"},tg={class:"mapLayer-info__item-label"},pn=Q(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 c=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 y(m){if(l.open){h();return}const g=m.currentTarget,s=g==null?void 0:g.closest(".mapLayer-info");if(!s){h();return}r.value=s,l.open=!0,e.nextTick(()=>{f(),p(),requestAnimationFrame(()=>{f()})})}function f(){if(!l.open||!r.value||!a.value)return;const m=r.value.getBoundingClientRect(),g=12,s=window.scrollX+g,x=window.scrollX+window.innerWidth-g,_=window.scrollY+g,D=window.scrollY+window.innerHeight-g,P=a.value.offsetWidth||Math.min(300,window.innerWidth-24),F=a.value.offsetHeight||0;let M=m.left+window.scrollX+(m.width-P)/2;M<s&&(M=s),M+P>x&&(M=Math.max(s,x-P)),l.left=M;let L=m.bottom+window.scrollY+g;L+F>D&&(L=m.top+window.scrollY-F-g,L<_&&(L=Math.max(_,D-F))),L<_&&(L=_),L+F>D&&(L=Math.max(_,D-F)),l.top=L,l.transform="none"}function b(m){var s,x;if(!l.open)return;const g=m.target;(s=r.value)!=null&&s.contains(g)||(x=a.value)!=null&&x.contains(g)||h()}function d(m){m.key==="Escape"&&h()}function h(){u(),l.open=!1,r.value=null,a.value=null}function p(){u(),a.value&&(i=new ResizeObserver(()=>{f()}),i.observe(a.value))}function u(){i&&(i.disconnect(),i=null)}return e.onMounted(()=>{document.addEventListener("click",b,!0),document.addEventListener("keydown",d),window.addEventListener("scroll",f,!0),window.addEventListener("resize",f)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b,!0),document.removeEventListener("keydown",d),window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f),u()}),e.watch(()=>o.items,()=>{l.open&&e.nextTick(()=>f())},{deep:!0}),n({close:h}),(m,g)=>(e.openBlock(),e.createElementBlock("div",{class:"mapLayer-info",ref_key:"anchorEl",ref:r},[e.createElementVNode("a",{class:"mapLayer-info__trigger",href:"#",onClick:e.withModifiers(y,["prevent","stop"])},[...g[1]||(g[1]=[e.createStaticVNode('<div class="mapLayer-info__icon" data-v-5688d192><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-5688d192><circle cx="12" cy="12" r="10" data-v-5688d192></circle><line x1="12" y1="16" x2="12" y2="12" data-v-5688d192></line><line x1="12" y1="8" x2="12.01" y2="8" data-v-5688d192></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(c.value),ref_key:"popoverEl",ref:a,onClick:g[0]||(g[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",eg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,s=>(e.openBlock(),e.createElementBlock("div",{key:s.label,class:"mapLayer-info__item"},[e.createElementVNode("div",tg,e.toDisplayString(s.label),1),e.createElementVNode("div",{class:e.normalizeClass(["mapLayer-info__item-value",{"mapLayer-info__item-value--break-all":s.breakLine}])},e.toDisplayString(s.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-5688d192"]]),ng={key:0,class:"map-info__title"},og={class:"map-info__actions"},lg={key:0,class:"map-info__menu"},rg=["onClick"],ag=["innerHTML"],qo=Q(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}),c=we.useRouter(),y=e.ref(!1),f=e.ref(!1),b=e.computed(()=>Array.isArray(n.links)?n.links.filter(_=>(_==null?void 0:_.name)&&(_==null?void 0:_.slug)):[]),d=e.computed(()=>({top:`${i.value.top}px`,left:`${i.value.left}px`})),h=e.computed(()=>{const _=[];return n.mapName&&_.push({label:"Назва карти",value:n.mapName}),n.mapDescription&&_.push({label:"Опис",value:n.mapDescription,breakLine:!0}),_});function p(_){_.stopPropagation(),l.value=!l.value}function u(){const _=r.value;if(!_||!a.value)return;const D=_.getBoundingClientRect(),P=12,F=8,M=window.scrollX+P,L=window.scrollX+window.innerWidth-P,T=window.scrollY+P,z=window.scrollY+window.innerHeight-P,H=a.value.offsetWidth||160,U=a.value.offsetHeight||0;let N=D.bottom+window.scrollY+F,E=D.left+window.scrollX;E+H>L&&(E=D.right+window.scrollX-H,E<M&&(E=M)),E<M&&(E=M),N+U>z&&(N=D.top+window.scrollY-U-F,N<T&&(N=Math.max(T,z-U))),N<T&&(N=T),N+U>z&&(N=Math.max(T,z-U)),i.value={top:N,left:E}}function m(_){if(!l.value)return;const D=o.value;if(!D){l.value=!1;return}D.contains(_.target)||(l.value=!1)}e.watch(l,_=>{_?e.nextTick(()=>{u(),requestAnimationFrame(()=>{u()}),window.addEventListener("scroll",u,!0),window.addEventListener("resize",u)}):(window.removeEventListener("scroll",u,!0),window.removeEventListener("resize",u))});function g(_){l.value=!1,c.push(`/maps/${_}`)}function s(){y.value=!y.value}function x(){f.value=window.innerWidth<=768}return e.onMounted(()=>{document.addEventListener("click",m,!0),x(),window.addEventListener("resize",x)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",m,!0),window.removeEventListener("scroll",u,!0),window.removeEventListener("resize",u),window.removeEventListener("resize",x)}),(_,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||b.value.length||h.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"map-info__header",style:e.normalizeStyle([t.content?"":"padding-bottom: 20px"])},[t.title?(e.openBlock(),e.createElementBlock("h2",ng,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",og,[b.value.length?(e.openBlock(),e.createElementBlock("div",lg,[e.createElementVNode("button",{ref_key:"menuButton",ref:r,type:"button",class:"map-info__menu-button",onClick:p,"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"},[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(d.value),onClick:D[0]||(D[0]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,P=>(e.openBlock(),e.createElementBlock("button",{key:P.slug||P.name,type:"button",class:"map-info__popover-link",onClick:F=>g(P.slug)},e.toDisplayString(P.name),9,rg))),128))],4)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0),h.value.length?(e.openBlock(),e.createBlock(pn,{key:1,items:h.value},null,8,["items"])):e.createCommentVNode("",!0),f.value&&(t.content||h.value.length)?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"map-info__toggle-button",onClick:s,"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":y.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),t.content?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["map-info__content",{"map-info__content--collapsed":f.value&&!y.value}]),innerHTML:t.content},null,10,ag)):e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-d8c9a613"]]),ig={class:"opacity-popover__content"},sg={class:"opacity-popover__value"},Ho=Q(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 c(){var P;const d=(P=a.value)==null?void 0:P.querySelector("button");if(!d||!r.value)return;const h=d.getBoundingClientRect(),p=260,u=r.value.offsetHeight||60,m=8,g=12,s=window.innerWidth,x=window.innerHeight;let _=h.bottom+m+window.scrollY,D=h.left+window.scrollX;D+p>s-g&&(D=s-p-g+window.scrollX),D<g+window.scrollX&&(D=g+window.scrollX),_+u>x+window.scrollY-g&&(_=h.top-u-m+window.scrollY,_<g+window.scrollY&&(_=x-u-g+window.scrollY)),i.top=_,i.left=D}function y(){o.value=!o.value,o.value&&e.nextTick(c)}function f(){var u;const d=ae(n.layerId),h=(l.value??100)/100;if(d!=null&&d.setOpacity){d.setOpacity(h);return}const p=(u=d==null?void 0:d.getLayer)==null?void 0:u.call(d);if(p)switch(p.type){case"raster":d.updatePaint({"raster-opacity":h});break;case"fill":d.updatePaint({"fill-opacity":h});break;case"line":d.updatePaint({"line-opacity":h});break;case"circle":d.updatePaint({"circle-opacity":h});break;case"symbol":d.updatePaint({"icon-opacity":h});break}}function b(d){var p,u;if(!o.value)return;const h=d.target;(p=r.value)!=null&&p.contains(h)||(u=a.value)!=null&&u.contains(h)||(o.value=!1)}return e.onMounted(()=>{document.addEventListener("click",b),window.addEventListener("scroll",c,!0),window.addEventListener("resize",c)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}),(d,h)=>(e.openBlock(),e.createElementBlock("div",{class:"opacity-wrapper",ref_key:"wrapper",ref:a},[e.renderSlot(d.$slots,"trigger",{toggle:y,opacity:l.value},()=>[e.createElementVNode("button",{type:"button",class:"opacity-btn",onClick:e.withModifiers(y,["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",ig,[h[1]||(h[1]=e.createElementVNode("label",{class:"opacity-popover__label"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":h[0]||(h[0]=p=>l.value=p),class:"opacity-popover__range",onInput:f},null,544),[[e.vModelText,l.value]]),e.createElementVNode("span",sg,e.toDisplayString(l.value)+"%",1)])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-0f5e9595"]]),cg={class:"layers-panel"},dg={class:"layers-panel__header"},ug={class:"layers-panel__heading"},pg={class:"layers-panel__title"},mg={key:0,class:"layers-panel__description"},fg={class:"layers-panel__header-actions"},gg={class:"layers-panel__label"},yg={class:"layers-panel__label-row"},hg=["checked","onChange"],xg={class:"layers-panel__title-block"},bg=["aria-label"],kg={class:"layers-panel__name"},wg={class:"layers-panel__meta text-slate-500"},_g=["onClick"],Eg={class:"inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700"},Ng={key:0,class:"layers-panel__actions"},Vg=["innerHTML","onClick"],Yo="map:temporary-layer-request",Bg=e.defineComponent({directives:{tooltip:re.TooltipDirective},__name:"MapDataLayersWidget",props:{layers:{},config:{}},emits:["action"],setup(t,{emit:n}){const o=t,l=e.ref({}),r=e.ref(!1),a=e.ref(!1),i=ve(),{temporaryLayers:c,activateTemporaryLayer:y,deactivateTemporaryLayer:f,clearTemporaryLayers:b}=Po(i.map),d=e.computed(()=>{const N=o.layers.map(S=>({...S,isTemporary:!1,owner:null,visible:S.visible!==!1})),E=c.value.map(S=>({id:S.id,name:S.title,visible:l.value[S.id]??!0,actions:[],filters:null,isTemporary:!0,owner:S.owner??null,handle:S.handle??null,card:S.card??null,popup:S.popup??null,style:S.style??null,group_name:null,count:null,holder:null}));return[...N,...E]}),h=e.computed(()=>c.value.length>0),p=n;function u(){var N;for(let E=0;E<o.layers.length;E++){const S=o.layers[E],$=m(S);if(!$)continue;const A=ae(S.id,$),V=S.visible!==!1;l.value[S.id]=V,V||(N=A==null?void 0:A.setVisible)==null||N.call(A,!1)}}function m(N){const E=N.id;if(!E)return null;const S=(N.service||N.service_type||N.type||"").toString().toLowerCase(),$=N.service_url||N.url||null;if(!!$&&(S==="tms"||S==="wmts"||S==="wms"||S==="ogc")){const k=g($);return k?{sourceId:E,source:{type:"raster",tiles:[k],tileSize:N.tileSize||256,minzoom:N.minzoom??0,maxzoom:N.maxzoom??22,scheme:N.scheme||"xyz"},layer:{id:E,type:"raster",source:E},card:N.card,popup:N.popup}:null}const V=`${location.origin}/api/vtile/${E}/ua/{z}/{x}/{y}.vmt`;return{sourceId:E,source:{type:"vector",tiles:[V],minZoom:4,maxZoom:14},layer:{id:E,source:E,"source-layer":E,style:N.style},card:N.card,popup:N.popup}}function g(N){return N?/^https?:\/\//i.test(N)?N:N.startsWith("//")?`${window.location.protocol}${N}`:N.startsWith("/")?`${location.origin}${N}`:`${location.origin}/${N}`:null}function s(N){const E=l.value[N];return E??!0}function x(N){var $,A;if(!(N!=null&&N.id))return null;const E=($=N.title)==null?void 0:$.trim(),S=(A=N.url)==null?void 0:A.trim();return!E||!S?null:{id:N.id,title:E,url:S,tileSize:N.tileSize,minzoom:N.minzoom,maxzoom:N.maxzoom,opacity:N.opacity}}function _(N){if(!N)return;const E=N.owner;if(N.action==="clear"){const $=c.value.filter(A=>!E||A.owner===E).map(A=>A.id);b(E),$.forEach(A=>{A in l.value&&delete l.value[A]});return}const S=x(N.spec);if(S){if(N.action==="activate"){y(S,N.context||{},E),l.value[S.id]=!0;return}N.action==="deactivate"&&(f(S.id,E),delete l.value[S.id])}}function D(N){N instanceof CustomEvent&&_(N.detail)}e.watch(()=>c.value.map(N=>N.id),(N,E)=>{const S=new Set(E||[]),$=new Set(N);N.forEach(A=>{A in l.value||(l.value[A]=!0)}),S.forEach(A=>{$.has(A)||delete l.value[A]})},{immediate:!0});function P(N,E){var V,k,B;const $=E.target.checked;if(l.value[N.id]=$,N.isTemporary){if(!$){f(N.id,N.owner||void 0),delete l.value[N.id];return}const v=N.handle||((V=c.value.find(O=>O.id===N.id))==null?void 0:V.handle);(k=v==null?void 0:v.setVisible)==null||k.call(v,!0);return}const A=ae(N.id);(B=A==null?void 0:A.setVisible)==null||B.call(A,$)}function F(N){return N.isTemporary?[{label:"Назва",value:N.name??null},{label:"Тип",value:"Тимчасовий шар"},N.owner?{label:"Джерело",value:N.owner}:null].filter(Boolean):[{label:"Назва",value:N.name??null},{label:"Назва групи",value:N.group_name||null},{label:"Кількість",value:N.count??null},{label:"Балансоутримувач",value:N.holder??null}]}function M(N){var E,S,$;return((E=N==null?void 0:N.style)==null?void 0:E.color)||((S=N==null?void 0:N.style)==null?void 0:S.stroke)||(($=N==null?void 0:N.style)==null?void 0:$.fill)||null}function L(N){var E,S;return((S=(E=N==null?void 0:N.legend)==null?void 0:E[0])==null?void 0:S.name)||null}function T(N){return L(N)||null}function z(){if(!c.value.length)return;const N=c.value.map(E=>E.id);b(),N.forEach(E=>delete l.value[E])}function H(){r.value=!r.value}function U(){a.value=window.innerWidth<=768}return e.onMounted(()=>{u(),window.addEventListener(Yo,D),U(),window.addEventListener("resize",U)}),e.onBeforeUnmount(()=>{window.removeEventListener(Yo,D),window.removeEventListener("resize",U)}),(N,E)=>{var $,A;const S=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",cg,[e.createElementVNode("div",dg,[e.createElementVNode("div",ug,[e.createElementVNode("h2",pg,e.toDisplayString((($=t.config)==null?void 0:$.title)||"Шари"),1),(A=t.config)!=null&&A.description?(e.openBlock(),e.createElementBlock("div",mg,[e.createElementVNode("p",null,e.toDisplayString(t.config.description),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",fg,[a.value&&d.value.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"layers-panel__toggle-button",onClick:H,"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})},[...E[0]||(E[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),h.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"layers-panel__clear",onClick:z}," Очистити тимчасові шари ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",{class:e.normalizeClass(["layers-panel__content",{"layers-panel__content--collapsed":a.value&&!r.value}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,V=>{var k;return e.openBlock(),e.createElementBlock("div",{key:V.id,class:"layers-panel__item"},[e.createElementVNode("label",gg,[e.createElementVNode("div",yg,[e.createElementVNode("input",{type:"checkbox",class:"layers-panel__checkbox",checked:s(V.id),onChange:B=>P(V,B)},null,40,hg),e.createElementVNode("div",xg,[s(V.id)&&M(V)&&T(V)?e.withDirectives((e.openBlock(),e.createElementBlock("span",{key:0,class:"layers-panel__legend-dot layers-panel__legend-dot--inline",style:e.normalizeStyle({background:M(V)}),"aria-label":T(V),role:"img"},null,12,bg)),[[S,T(V)]]):s(V.id)&&M(V)?(e.openBlock(),e.createElementBlock("span",{key:1,class:"layers-panel__legend-dot layers-panel__legend-dot--inline",style:e.normalizeStyle({background:M(V)}),role:"img"},null,4)):e.createCommentVNode("",!0),e.createElementVNode("span",kg,e.toDisplayString(V.name),1)]),e.createElementVNode("div",wg,[s(V.id)&&!V.isTemporary?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(Ho,{"layer-id":V.id,class:"flex"},{trigger:e.withCtx(({toggle:B})=>[e.createElementVNode("button",{class:"inline-flex items-center justify-center p-0 text-inherit no-underline cursor-pointer",onClick:e.withModifiers(B,["prevent","stop"])},[e.createElementVNode("div",Eg,[e.createVNode(e.unref(gl))])],8,_g)]),_:1},8,["layer-id"]),e.createVNode(Ft,{count:Array.isArray(V.filters)?V.filters.length:0,layer:V},null,8,["count","layer"])],64)):e.createCommentVNode("",!0),e.createVNode(pn,{items:F(V)},null,8,["items"])])])]),(k=V.actions)!=null&&k.length?(e.openBlock(),e.createElementBlock("div",Ng,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.actions,B=>(e.openBlock(),e.createElementBlock("button",{key:B.widget||B.id||B.icon,type:"button",class:"layers-panel__action",innerHTML:B.icon,onClick:v=>p("action",{layerId:B.widget})},null,8,Vg))),128))])):e.createCommentVNode("",!0)])}),128))],2)])}}}),Wo=Q(Bg,[["__scopeId","data-v-b69f6110"]]),Cg={class:"catalog-tab__search relative mt-[10px]"},vg={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%)"}},$g={class:"catalog-tab__list flex-1 overflow-y-auto mt-2"},Sg={key:0,class:"text-sm text-gray-400 text-center mt-6"},Ag=["onClick"],Lg={class:"flex items-center gap-x-3"},Fg={class:"max-w-[260px] text-[14px] text-[#4b5563]"},Mg={class:"text-xs opacity-60 text-[#4b5563]"},Tg={class:"flex items-center cursor-pointer gap-2 flex-1"},Dg=["checked","onChange"],Ig={class:"text-[13px] text-gray-600 max-w-[260px]"},jg={class:"flex items-center gap-2"},zg=Q(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}),c=e.computed(()=>{const m=o.search.trim().toLowerCase();return o.catalog.groups.map(g=>{const s=m?g.layers.filter(x=>(typeof x.name=="string"?x.name:"").toLowerCase().includes(m)):g.layers;return{...g,layers:s}}).filter(g=>g.layers.length>0)}),y=e.computed({get:()=>o.search,set:m=>l("update:search",m)});function f(m){r[m]=!r[m],Ku()}function b(m){return!!r[m]}function d(m,g){if(o.selected.includes(g)){i.visible=!1,i.layerId=null;return}const s=m.currentTarget;if(!s)return;const x=s.getBoundingClientRect(),_=typeof window<"u"?window.scrollX:0,D=typeof window<"u"?window.scrollY:0;i.left=x.left+x.width/2+_,i.top=x.bottom+8+D,i.layerId=g,i.visible=!0}function h(){i.visible=!1,i.layerId=null}function p(m){return[{label:"Назва",value:u(m.name)},{label:"Сервіс",value:u(m.service)},{label:"Посилання",value:u(m.url),breakLine:!0}]}function u(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,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"catalogRef",ref:a,class:"catalog-tab"},[e.createElementVNode("div",Cg,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[0]||(g[0]=s=>y.value=s),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,y.value]]),(e.openBlock(),e.createElementBlock("svg",vg,[...g[1]||(g[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",$g,[c.value.length===0?(e.openBlock(),e.createElementBlock("div",Sg," Нічого не знайдено ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,s=>(e.openBlock(),e.createElementBlock("div",{key:s.id,class:"mt-2"},[e.createElementVNode("div",{class:"hover:bg-gray-100 cursor-pointer p-[8px] rounded-lg flex justify-between items-center",onClick:x=>f(s.id)},[e.createElementVNode("div",Lg,[(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",b(s.id)?"rotate-90":""])},[...g[2]||(g[2]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2)),e.createElementVNode("div",Fg,e.toDisplayString(s.name),1)]),e.createElementVNode("div",Mg,e.toDisplayString(s.layers.length),1)],8,Ag),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(s.layers,x=>(e.openBlock(),e.createElementBlock("div",{key:x.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between ml-[20px] py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Tg,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:t.selected.includes(x.id),onChange:_=>m.$emit("toggle-layer",x.id,_.target.checked,x)},null,40,Dg),g[3]||(g[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",Ig,e.toDisplayString(x.name),1)]),e.createElementVNode("div",jg,[Array.isArray(x.filters)&&x.filters.length?(e.openBlock(),e.createBlock(Ft,{key:0,count:x.filters.length,layer:x,disabled:!t.selected.includes(x.id),onMouseenter:_=>d(_,x.id),onMouseleave:h,onFocus:_=>d(_,x.id),onBlur:h},null,8,["count","layer","disabled","onMouseenter","onFocus"])):e.createCommentVNode("",!0),e.createVNode(pn,{items:p(x)},null,8,["items"])])]))),128))],512),[[e.vShow,b(s.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-7d3953c5"]]),Og={class:"flex flex-col gap-0"},Pg={class:"text-xs text-slate-600 font-semibold"},Rg=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 c=e.computed(()=>{if(!l.open)return{display:"none"};const m=Math.min(460,window.innerWidth-24);return{position:"absolute",width:`${m}px`,maxWidth:`${m}px`,top:`${l.top}px`,left:`${l.left}px`,transform:l.transform,display:"block"}});function y(){if(l.open){h();return}if(!r.value){h();return}l.open=!0,e.nextTick(()=>{f(),p(),requestAnimationFrame(()=>{f()})})}function f(){if(!l.open||!r.value||!a.value)return;const m=r.value.getBoundingClientRect(),g=12,s=window.scrollX+g,x=window.scrollX+window.innerWidth-g,_=window.scrollY+g,D=window.scrollY+window.innerHeight-g,P=a.value.offsetWidth||Math.min(460,window.innerWidth-24),F=a.value.offsetHeight||0;let M=m.left+window.scrollX+(m.width-P)/2;M<s&&(M=s),M+P>x&&(M=Math.max(s,x-P)),l.left=M;let L=m.bottom+window.scrollY+g;L+F>D&&(L=m.top+window.scrollY-F-g,L<_&&(L=Math.max(_,D-F))),L<_&&(L=_),L+F>D&&(L=Math.max(_,D-F)),l.top=L,l.transform="none"}function b(m){var s,x;if(!l.open)return;const g=m.target;(s=r.value)!=null&&s.contains(g)||(x=a.value)!=null&&x.contains(g)||h()}function d(m){m.key==="Escape"&&h()}function h(){u(),l.open=!1,r.value=null,a.value=null}function p(){u(),a.value&&(i=new ResizeObserver(()=>{f()}),i.observe(a.value))}function u(){i&&(i.disconnect(),i=null)}return e.onMounted(()=>{document.addEventListener("click",b,!0),document.addEventListener("keydown",d),window.addEventListener("scroll",f,!0),window.addEventListener("resize",f)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b,!0),document.removeEventListener("keydown",d),window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f),u()}),e.watch(()=>o.items,()=>{l.open&&e.nextTick(()=>f())},{deep:!0}),n({close:h}),(m,g)=>(e.openBlock(),e.createElementBlock("div",{class:"inline-flex relative",ref_key:"anchorEl",ref:r},[e.createElementVNode("div",{onClick:e.withModifiers(y,["prevent","stop"])},[e.renderSlot(m.$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(c.value),ref_key:"popoverEl",ref:a,onClick:g[0]||(g[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Og,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,s=>(e.openBlock(),e.createElementBlock("div",{key:s.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",Pg,e.toDisplayString(s.label),1),e.createElementVNode("div",{class:e.normalizeClass(["text-sm text-gray-800",{"break-all":s.breakLine}])},e.toDisplayString(s.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),Ug={class:"selected-tab"},qg={class:"selected-tab__actions"},Hg={key:0,class:"selected-tab__scroll"},Yg=["onDragstart","onDragover","onDrop"],Wg={class:"selected-tab__item-header"},Zg={class:"selected-tab__item-info"},Kg=["checked","onChange"],Gg={class:"selected-tab__item-name"},Xg={class:"selected-tab__item-controls"},Jg=["onClick"],Qg={class:"selected-tab__menu-inner"},ey=Q(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),c=new Map,y=e.reactive({top:0,left:0}),f=e.ref(null),b=e.reactive({top:0,left:0}),d=e.ref(null),h=new Map,p=e.reactive({});function u(V){var k;for(const B of((k=o.catalog)==null?void 0:k.groups)??[]){const v=B.layers.find(O=>O.id===V);if(v)return v}return null}e.watch(()=>o.selected,V=>{V.forEach(k=>{r[k]==null&&(r[k]=100)})},{immediate:!0});function m(){if(!a.value)return;const V=c.get(a.value);if(!V)return;const k=V.getBoundingClientRect();y.top=k.bottom+8+window.scrollY,y.left=k.left+window.scrollX}e.watch(()=>o.selected,V=>{V.forEach(k=>{p[k]==null&&(p[k]=!0)})},{immediate:!0});function g(V,k){p[V]=k;const B=ae(V);B&&B.setVisible(k)}function s(V,k){k?h.set(V,k):h.delete(V)}function x(V){f.value=f.value===V?null:V,f.value&&e.nextTick(()=>{_(V),requestAnimationFrame(()=>{_(V)})})}function _(V){const k=h.get(V);if(!k||!d.value)return;const B=k.getBoundingClientRect(),v=12,O=6,R=window.scrollX+v,K=window.scrollX+window.innerWidth-v,W=window.scrollY+v,G=window.scrollY+window.innerHeight-v,le=d.value.offsetWidth||190,se=d.value.offsetHeight||0;let ne=B.bottom+window.scrollY+O,ce=B.left+window.scrollX;ce+le>K&&(ce=B.right+window.scrollX-le,ce<R&&(ce=R)),ce<R&&(ce=R),ne+se>G&&(ne=B.top+window.scrollY-se-O,ne<W&&(ne=Math.max(W,G-se))),ne<W&&(ne=W),ne+se>G&&(ne=Math.max(W,G-se)),b.top=ne,b.left=ce}function D(V){const k=ae(V);k&&k.remove(),l("remove",V),f.value=null}function P(V){const k=V.target,B=a.value,v=f.value;if(B){const O=i.value,R=c.get(B);if(O&&O.contains(k)||R&&R.contains(k))return;a.value=null}if(v){const O=d.value,R=h.get(v);if(O&&O.contains(k)||R&&R.contains(k))return;f.value=null}}function F(){a.value&&m(),f.value&&_(f.value)}e.onMounted(()=>{document.addEventListener("click",P),window.addEventListener("resize",F),window.addEventListener("scroll",F,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",P),window.removeEventListener("resize",F),window.removeEventListener("scroll",F,!0)});const{map:M}=ve();function L(V){var O,R,K;if(!V)return;const k=ae(V),B=u(V);if(!k&&!B)return;if(((O=B==null?void 0:B.extent)==null?void 0:O.length)===4&&((R=M.value)!=null&&R.fitBounds)){const W=B.extent.map(G=>Number(G));if(W.every(G=>Number.isFinite(G))){const[G,le,se,ne]=W;M.value.fitBounds([[G,le],[se,ne]],{padding:40}),f.value=null;return}}(K=k==null?void 0:k.getSource)!=null&&K.call(k)&&(f.value=null)}const T=e.ref(null),z=e.ref(null);function H(V,k){T.value=k,z.value=k,V.dataTransfer&&(V.dataTransfer.effectAllowed="move",V.dataTransfer.setData("text/plain",String(k)))}function U(V){z.value=V}function N(V,k){if(V.preventDefault(),T.value===null||T.value===k){T.value=null,z.value=null;return}const B=[...o.selected],[v]=B.splice(T.value,1);B.splice(k,0,v),l("reorder",B),T.value=null,z.value=null}function E(){T.value=null,z.value=null}function S(V){return V==null||V===""?null:String(V)}function $(V,k){return!Array.isArray(V)||V.length===0?null:`${V.length} ${k}`}function A(V){var ne,ce,ke,Ae,Te,Ie;const k=ae(V),B=u(V);if(!k&&!B)return[];const v=(B==null?void 0:B.name)||((ce=(ne=k==null?void 0:k.opts)==null?void 0:ne.layer)==null?void 0:ce.name)||null,O=(B==null?void 0:B.service)||((ke=k==null?void 0:k.opts)==null?void 0:ke.service)||null,R=(Ae=k==null?void 0:k.getSource)==null?void 0:Ae.call(k),K=R&&"tiles"in R?(Te=R.tiles)==null?void 0:Te[0]:(B==null?void 0:B.url)||null,W=(B==null?void 0:B.source_path)||null,G=(k==null?void 0:k.popup)||(B==null?void 0:B.popup),le=(k==null?void 0:k.card)||(B==null?void 0:B.card),se=(B==null?void 0:B.filters)||((Ie=k==null?void 0:k.opts)==null?void 0:Ie.filters);return[{label:"Назва",value:S(v)},{label:"Сервіс",value:S(O)},{label:"Посилання",value:S(K),breakLine:!0},{label:"Джерело",value:S(W),breakLine:!0},{label:"Popup",value:$(G,"полів")},{label:"Картка",value:$(le,"полів")},{label:"Фільтри",value:$(se,"фільтрів")}]}return(V,k)=>(e.openBlock(),e.createElementBlock("div",Ug,[e.createElementVNode("div",qg,[e.createElementVNode("button",{class:"selected-tab__add",onClick:k[0]||(k[0]=B=>l("select-layer"))},[...k[3]||(k[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",Hg,[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,(B,v)=>{var O;return e.openBlock(),e.createElementBlock("div",{key:B,class:e.normalizeClass(["selected-tab__item",{"selected-tab__item--dragging":T.value===v,"selected-tab__item--over":z.value===v}]),draggable:"true",onDragstart:R=>H(R,v),onDragover:e.withModifiers(R=>U(v),["prevent"]),onDrop:R=>N(R,v),onDragend:E},[e.createElementVNode("div",Wg,[e.createElementVNode("div",Zg,[k[4]||(k[4]=e.createElementVNode("span",{class:"selected-tab__item-handle"},"☰",-1)),e.createElementVNode("input",{type:"checkbox",class:"selected-tab__item-checkbox",checked:p[B]??!0,onChange:R=>g(B,R.target.checked)},null,40,Kg),e.createElementVNode("span",Gg,e.toDisplayString(((O=u(B))==null?void 0:O.name)||"Шар"),1)]),e.createElementVNode("div",Xg,[e.createVNode(Ho,{"layer-id":B},null,8,["layer-id"]),e.createElementVNode("button",{type:"button",class:"selected-tab__item-menu",ref_for:!0,ref:R=>s(B,R),onClick:e.withModifiers(R=>x(B),["stop"])},[...k[5]||(k[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,Jg)])])],42,Yg)}),128))])])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[f.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuEl",ref:d,class:"selected-tab__menu",style:e.normalizeStyle({top:b.top+"px",left:b.left+"px"})},[e.createElementVNode("div",Qg,[e.createElementVNode("button",{class:"selected-tab__menu-item",onClick:k[1]||(k[1]=B=>L(f.value))},[...k[6]||(k[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(Rg,{items:A(f.value)},{default:e.withCtx(()=>[...k[7]||(k[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"]),k[9]||(k[9]=e.createElementVNode("hr",null,null,-1)),e.createElementVNode("button",{class:"selected-tab__menu-item selected-tab__menu-item--danger",onClick:k[2]||(k[2]=B=>D(f.value))},[...k[8]||(k[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-e8c4b151"]]),ty={class:"filter-tab"},ny={key:0,class:"filter-tab__header"},oy={class:"filter-tab__title"},ly={key:1,class:"filter-tab__content rounded-md"},ry={class:"filter-tab__scroll"},ay={key:2,class:"filter-tab__empty"},iy=Q(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 y;return((y=l.layer)==null?void 0:y.filters)??[]}),i=e.computed(()=>a.value.length>0);function c(y){r("change",y.data)}return(y,f)=>(e.openBlock(),e.createElementBlock("div",ty,[t.layer&&i.value?(e.openBlock(),e.createElementBlock("div",ny,[e.createElementVNode("div",null,[e.createElementVNode("p",oy,e.toDisplayString(t.layer.name),1)])])):e.createCommentVNode("",!0),t.layer&&i.value?(e.openBlock(),e.createElementBlock("div",ly,[e.createElementVNode("div",ry,[e.createVNode(e.unref(o),{view:"vertical",schema:a.value,value:t.value,limit:5,class:"rounded-md pb-0",onChange:f[0]||(f[0]=b=>c(b))},null,8,["schema","value"])])])):(e.openBlock(),e.createElementBlock("div",ay,[...f[1]||(f[1]=[e.createElementVNode("p",{class:"filter-tab__empty-title"},"Немає доступних фільтрів",-1),e.createElementVNode("p",{class:"filter-tab__empty-text"}," Оберіть шар із фільтрами у каталозі, щоб налаштувати відбір даних. ",-1)])]))]))}}),[["__scopeId","data-v-b9cd2910"]]),sy={class:"map-catalog-widget w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm widget"},cy={class:"flex items-center justify-between mb-4"},dy={class:"flex items-center gap-2"},uy={class:"text-lg font-semibold text-gray-800"},py={key:0},my={key:1,class:"block text-sm font-normal text-gray-500"},fy={class:"flex items-center gap-2"},gy={class:"flex mb-4 border-b border-gray-200"},yy={class:"map-catalog-widget__body"},Zo=Q(e.defineComponent({__name:"MapCatalogWidget",setup(t){const n=e.ref("catalog"),o=e.ref({groups:[]}),l=e.ref([]),r=e.ref(""),{map:a}=ve(),i=we.useRoute(),c=we.useRouter(),y=e.reactive({}),f=e.ref(null),b=e.ref(!1),d=e.ref(!1);function h(S){return o.value.groups.map($=>$.layers.find(A=>A.id===S)).find(Boolean)||null}function p(){const S=f.value;if(!S)return;delete y[S];const $=ae(S);$!=null&&$.setFilter&&$.setFilter("")}function u(S,$){const A=ae(S);if(y[S]={...$},!(A!=null&&A.setFilter))return;const V=Object.entries($).filter(([,k])=>k!=null&&k!=="").map(([k,B])=>`${k}=${B}`);A.setFilter(V.join("|"))}function m(S){const $=f.value;$&&u($,S)}function g(S){const $=S.url;let A=null;if($&&(A=$.startsWith("http")?$:`${window.location.origin}${$}`),!A)return null;const V=(S.service||"").toString().toLowerCase(),k=S.count??null;return V&&V!=="vtile"?{service:V,count:k,source:{type:"raster",tiles:[A],tileSize:256,minzoom:0,maxzoom:20}}:{service:V,count:k,source:{type:"vector",tiles:[A],minzoom:0,maxzoom:14},layer:{style:S.style},card:S.card,popup:S.popup}}function s(S,$,A){var v;const V=A??h(S);if(!V)return;const k=g(V);if(!k)return;const B=ae(V.id,k,a);if(B)if(B.setVisible($),$){if(!l.value.includes(S)&&(l.value.push(S),(v=a.value)!=null&&v.getLayer(S)))try{a.value.moveLayer(S)}catch(O){console.warn("Cannot move new layer",S,O)}}else l.value=l.value.filter(O=>O!==S),f.value===S&&(p(),f.value=null)}function x(){l.value.forEach(S=>{const $=ae(S);$&&$.setVisible(!1)}),l.value=[]}function _(S){l.value=[...S],e.nextTick(()=>{var k;if(!a.value)return;const $=((k=a.value.getStyle())==null?void 0:k.layers)??[];let A;const V=B=>$.filter(v=>{var O,R;return(v==null?void 0:v.source)===B||(v==null?void 0:v.id)===B||((R=(O=v==null?void 0:v.id)==null?void 0:O.startsWith)==null?void 0:R.call(O,`${B}`))}).map(v=>v.id);for(let B=S.length-1;B>=0;B-=1){const v=S[B],O=V(v);O.length&&(O.forEach(R=>{var K;if((K=a.value)!=null&&K.getLayer(R))try{a.value.moveLayer(R,A)}catch(W){console.warn("Cannot move layer",R,W)}}),A=O[0])}})}function D(S){!S||!Array.isArray(S.filters)||S.filters.length===0||l.value.includes(S.id)&&(f.value=S.id,y[S.id]||(y[S.id]={}),n.value="filter")}function P(){n.value="catalog"}const F=e.computed(()=>f.value?h(f.value):null),M=e.computed(()=>{const S=f.value;return S?y[S]??{}:{}}),L=e.computed(()=>o.value.groups.reduce((S,$)=>S+$.layers.length,0)),T=e.computed(()=>n.value==="selected"?"Вибрані шари":n.value==="filter"?"Фільтр шарів":"Каталог"),z=e.computed(()=>n.value==="selected"?l.value.length:n.value==="catalog"?L.value:null),H=e.computed(()=>{var S;return n.value==="filter"?((S=F.value)==null?void 0:S.name)??"":""});async function U(){const $=await(await fetch("/api/gis-layer-list")).json(),A=new Map;$.forEach(B=>{const v=B.group_id??"other";A.has(v)||A.set(v,{id:v,name:B.group_name||"Інші шари",layers:[]}),A.get(v).layers.push(B)}),o.value={groups:Array.from(A.values())};const V=i.query.layers;if(!V)return;const k=Array.isArray(V)?V[0]:V;typeof k=="string"&&k.split(",").forEach(B=>{const v=B.trim();if(!v)return;const O=h(v);O&&s(v,!0,O)})}e.watch(f,S=>{!S&&n.value==="filter"&&(n.value="catalog")}),e.watch(F,S=>{!S&&f.value&&(f.value=null)}),e.watch(l,S=>{const $={...i.query};S.length?$.layers=S.join(","):delete $.layers,c.replace({query:$}).catch(()=>{})},{deep:!0});function N(){b.value=!b.value}function E(){d.value=window.innerWidth<=768}return e.onMounted(()=>{U(),E(),window.addEventListener("resize",E)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",E)}),(S,$)=>(e.openBlock(),e.createElementBlock("div",sy,[e.createElementVNode("div",cy,[e.createElementVNode("div",dy,[$[5]||($[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",uy,[e.createTextVNode(e.toDisplayString(T.value)+" ",1),z.value!==null?(e.openBlock(),e.createElementBlock("span",py,"("+e.toDisplayString(z.value)+")",1)):e.createCommentVNode("",!0),H.value?(e.openBlock(),e.createElementBlock("span",my,e.toDisplayString(H.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",fy,[e.createElementVNode("button",{onClick:x,class:"p-1 rounded-full hover:bg-gray-200 transition-colors","aria-label":"Reset layers"},[...$[6]||($[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-70df6af0><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-70df6af0></path><path d="M21 3v5h-5" data-v-70df6af0></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-70df6af0></path><path d="M8 16H3v5" data-v-70df6af0></path></svg>',1)])]),d.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"map-catalog-widget__toggle-button",onClick:N,"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":b.value})},[...$[7]||($[7]=[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)])]),e.createElementVNode("div",{class:e.normalizeClass(["map-catalog-widget__content",{"map-catalog-widget__content--collapsed":d.value&&!b.value}])},[e.createElementVNode("div",gy,[e.createElementVNode("button",{onClick:$[0]||($[0]=A=>n.value="catalog"),class:e.normalizeClass(["px-4 py-2 text-sm font-medium",n.value==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"])}," Каталог ",2),e.createElementVNode("button",{onClick:$[1]||($[1]=A=>n.value="selected"),class:e.normalizeClass(["px-4 py-2 text-sm font-medium",n.value==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"])}," Вибрані шари ",2)]),e.createElementVNode("div",yy,[n.value==="catalog"?(e.openBlock(),e.createBlock(zg,{key:0,class:"map-catalog-widget__scroll",catalog:o.value,selected:l.value,search:r.value,"onUpdate:search":$[2]||($[2]=A=>r.value=A),onToggleLayer:s,onOpenFilter:D},null,8,["catalog","selected","search"])):n.value==="selected"?(e.openBlock(),e.createBlock(ey,{key:1,catalog:o.value,selected:l.value,onToggleLayer:s,onSelectLayer:$[3]||($[3]=A=>n.value="catalog"),onReorder:_,onRemove:$[4]||($[4]=A=>l.value=l.value.filter(V=>V!==A))},null,8,["catalog","selected"])):(e.openBlock(),e.createBlock(iy,{key:2,layer:F.value,value:M.value,onChange:m,onClose:P},null,8,["layer","value"]))])],2)]))}}),[["__scopeId","data-v-70df6af0"]]),hy={key:1,class:"flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},xy={class:"flex items-start justify-between gap-3 p-5 pb-3"},by={class:"inline-block text-xl font-semibold text-gray-800"},ky={key:0,class:"mt-1 text-sm text-gray-500"},wy={class:"flex items-center gap-[6px]"},_y={class:"px-5 pb-5 space-y-6"},Ey={key:0,class:"space-y-2"},Ny={class:"flex flex-wrap gap-4"},Vy=["value"],By={key:1,class:"text-sm text-gray-500"},Cy={key:2,class:"text-sm text-gray-500"},vy={class:"text-4xl font-medium text-gray-800"},$y={class:"space-y-[14px]"},Sy={class:"flex items-center gap-[10px] text-gray-600"},Ay={class:"font-medium text-gray-700"},Ly={class:"flex items-center justify-end text-end gap-3"},Fy={class:"font-medium text-gray-800"},My={class:"min-w-[40px] font-medium text-[#3C3C4399]"},Ko=Q(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),c=e.ref(null),y=e.ref(null),f=e.ref(null),b=e.ref(null),d=e.ref({}),h=e.ref(null);function p($){return $&&JSON.parse(JSON.stringify($))}const u=e.computed(()=>{const $=o.config.layer;if(typeof $!="string")throw new Error("MapAttributeWidget: `layer` must be a string");const A=$.trim();if(!A)throw new Error("MapAttributeWidget: `layer` must be non-empty");return A}),m=e.computed(()=>{const{list:$,attribute:A}=o.config;if(Array.isArray($)&&$.length)return $.map(V=>({id:(V==null?void 0:V.id)!=null?String(V.id).trim():"",text:(V==null?void 0:V.text)!=null&&String(V.text).trim()||null})).filter(V=>V.id.length);if(Array.isArray(A))return A.map(V=>V!=null?String(V).trim():"").filter(V=>V.length).map(V=>({id:V,text:null}));if(typeof A=="string"){const V=A.trim();if(!V)throw new Error("MapAttributeWidget: `attribute` must be non-empty");return[{id:V,text:null}]}throw new Error("MapAttributeWidget: `attribute` or `list` must be provided")}),g=e.computed(()=>m.value.map($=>({id:$.id,label:$.text||d.value[$.id]||$.id})));e.watch(m,$=>{if(!$.length){h.value=null,a.value=[];return}(!h.value||!$.some(A=>A.id===h.value))&&(h.value=$[0].id)},{immediate:!0});const s=e.computed(()=>{var $;return h.value||(($=m.value[0])==null?void 0:$.id)||null});e.watch(u,()=>{var $,A;(A=($=c.value)==null?void 0:$.remove)==null||A.call($),c.value=null,y.value=null,f.value=null,b.value=null,d.value={}});const x=e.computed(()=>{var $;return($=f.value)!=null&&$.length?{id:u.value,name:y.value,filters:f.value}:null}),_=e.computed(()=>{var $,A;return((A=($=x.value)==null?void 0:$.filters)==null?void 0:A.length)||0});async function D($){var k;const A=await fetch(`/api/gis-service/${encodeURIComponent($)}`);if(!A.ok){let B="Не вдалося завантажити налаштування шару";try{const v=await A.json();B=((k=v==null?void 0:v.message)==null?void 0:k.error)||(v==null?void 0:v.message)||B}catch{}throw new Error(B)}const V=await A.json();return y.value=(V==null?void 0:V.name)||null,f.value=Array.isArray(V==null?void 0:V.filters)?V.filters:null,b.value=p((V==null?void 0:V.style)||{}),d.value=((V==null?void 0:V.attributes)||[]).reduce((B,v)=>{const O=typeof(v==null?void 0:v.name)=="string"?v.name.trim():"",R=typeof(v==null?void 0:v.ua)=="string"?v.ua.trim():"";return O&&(B[O]=R||O),B},{}),V}function P($,A){let V=ae($);if(!V){const k=`${location.origin}/api/vtile/${$}/ua/{z}/{x}/{y}.vmt`;V=ae($,{source:{type:"vector",tiles:[k],minzoom:0,maxzoom:14},layer:{id:$,source:$,"source-layer":$,style:(A==null?void 0:A.style)||{}},card:A==null?void 0:A.card,popup:A==null?void 0:A.popup})}return c.value=V,V}async function F($,A){var B;const V=`/api/gis-service/${encodeURIComponent($)}/${encodeURIComponent(A)}`,k=await fetch(V);if(!k.ok){let v="Не вдалося отримати статистику";try{const O=await k.json();v=((B=O==null?void 0:O.message)==null?void 0:B.error)||(O==null?void 0:O.message)||v}catch{}throw new Error(v)}return k.json()}function M($){const A=new Map;return $&&($.rules||[]).forEach(k=>{const B=(k==null?void 0:k.value)??(k==null?void 0:k.id);B!=null&&A.set(String(B),k)}),A}function L($,A,V,k,B){if(typeof(A==null?void 0:A.color)=="string"&&A.color.trim())return A.color.trim();const v=o.config.colors||{};if(v[$])return v[$];const R=M(V==null?void 0:V.style).get($);return typeof(R==null?void 0:R.color)=="string"&&R.color.trim()?R.color.trim():n[B%n.length]}function T($,A,V,k){var B;return(A==null?void 0:A.text)||(A==null?void 0:A.label)||(A==null?void 0:A.name)||(A==null?void 0:A[`${k}_text`])||((B=M(V==null?void 0:V.style).get($))==null?void 0:B.label)||$}function z($,A,V,k){if(!$)return;const B=p((A==null?void 0:A.style)||b.value)||{},v=k.trim();if(!v)return;const O={...B.colors||{},...o.config.colors||{}};v===k&&V.forEach(R=>{R.color.trim()&&(O[R.id]=R.color)}),$.setStyle({...B,type:B.type||"polygon",colorAttr:v,opacity:.8,colors:O})}async function H(){var v,O;a.value=[],i.value=null;const $=u.value,A=s.value;if(!A)return;r.value=!0;const V=await D($);P($,V);const k=await F($,A),B=Array.isArray(k==null?void 0:k.rows)?k.rows.map((R,K)=>{const W=(R==null?void 0:R.id)??(R==null?void 0:R.value),G=W!=null?String(W):"";if(!G)return null;const le=T(G,R,V,A),se=Number((R==null?void 0:R.count)??0)||0,ne=L(G,R,V,A,K);return{id:G,label:le,count:se,color:ne}}).filter(Boolean):[];a.value=B,i.value=((v=k==null?void 0:k.field)==null?void 0:v.label)||((O=k==null?void 0:k.field)==null?void 0:O.name)||null,z(c.value,V,B,A),r.value=!1}e.watch(()=>[u.value,s.value],()=>{H()},{immediate:!0});const U=e.computed(()=>"Набори даних"),N=e.computed(()=>a.value.reduce(($,A)=>$+A.count,0)),E=e.computed(()=>{var V;const $=s.value;return((V=g.value.find(k=>k.id===$))==null?void 0:V.label)||null||i.value||$||null});function S($){return N.value?`${($/N.value*100).toFixed(2)}%`:"0.00%"}return e.onBeforeUnmount(()=>{var $,A;(A=($=c.value)==null?void 0:$.remove)==null||A.call($)}),($,A)=>l.value?(e.openBlock(),e.createElementBlock("div",hy,[e.createElementVNode("div",xy,[e.createElementVNode("div",null,[e.createElementVNode("h2",by,e.toDisplayString(U.value),1),E.value&&g.value.length===1?(e.openBlock(),e.createElementBlock("p",ky,e.toDisplayString(E.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",wy,[x.value?(e.openBlock(),e.createBlock(Ft,{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:_.value,layer:x.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:A[1]||(A[1]=V=>l.value=!1)},[...A[3]||(A[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",_y,[g.value.length>1?(e.openBlock(),e.createElementBlock("div",Ey,[e.createElementVNode("div",Ny,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,V=>(e.openBlock(),e.createElementBlock("label",{key:V.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:V.id,"onUpdate:modelValue":A[2]||(A[2]=k=>h.value=k)},null,8,Vy),[[e.vModelRadio,h.value]]),e.createElementVNode("span",null,e.toDisplayString(V.label),1)]))),128))])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",By,"Завантаження…")):a.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h4",vy,e.toDisplayString(N.value),1),e.createElementVNode("ul",$y,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,V=>(e.openBlock(),e.createElementBlock("li",{key:V.id,class:"flex flex-wrap items-center justify-between gap-x-2"},[e.createElementVNode("div",Sy,[e.createElementVNode("span",{class:"block w-[16px] h-[16px] rounded",style:e.normalizeStyle({backgroundColor:V.color})},null,4),e.createElementVNode("span",Ay,e.toDisplayString(V.label),1)]),e.createElementVNode("div",Ly,[e.createElementVNode("span",Fy,e.toDisplayString(V.count),1),e.createElementVNode("span",My,e.toDisplayString(S(V.count)),1)])]))),128))])],64)):(e.openBlock(),e.createElementBlock("div",Cy,"Дані відсутні"))])])):(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:A[0]||(A[0]=V=>l.value=!0)}," Набори даних "))}}),[["__scopeId","data-v-437c8d68"]]),Ty={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]"},Dy=["title"],Iy={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"},jy=["onClick"],zy=["placeholder"],Oy={class:"divide-y divide-gray-100"},Py=["onClick"],Ry=600,Uy=30,qy=8,Hy="https://data.softpro.ua/api-user/gis-url-proxy",Yy="https://geo.rv.ua/api-user/dzk.api",Wy="https://nominatim.openstreetmap.org/search",Go=Q(e.defineComponent({__name:"MapSearchWidget",props:{config:{}},setup(t){const n=t,o=ve(),l=e.getCurrentInstance();function r(){return typeof globalThis<"u"&&globalThis.proxy?globalThis.proxy:typeof window<"u"&&window.proxy?window.proxy:null}function a(){var O,R,K;const k=(O=l==null?void 0:l.appContext.config.globalProperties)==null?void 0:O.$settings,B=(R=k==null?void 0:k.map)==null?void 0:R.searchViewbox;if(B)return B;const v=r();return(K=v==null?void 0:v.map)==null?void 0:K.searchViewbox}const c=!!a()?["xy","parcel","address"]:["xy","parcel"],y=e.computed(()=>{var B,v;const k=(v=(B=n.config)==null?void 0:B.tools)==null?void 0:v.filter(O=>c.includes(O));return k&&k.length?k:c}),f=e.computed(()=>{var k,B;return((B=(k=n.config)==null?void 0:k.placeholder)==null?void 0:B.trim())||"Пошук…"}),b=e.ref(y.value[0]);e.watch(y,k=>{k.includes(b.value)||(b.value=k[0])});const d=e.ref(""),h=e.ref(!1),p=e.ref(null),u=e.ref(null),m=e.ref([]),g=e.ref(null),s=e.computed(()=>b.value==="address"&&m.value.length>0);let x=null;const _=e.reactive({position:"absolute",left:"0px",top:"0px",width:"100%",display:"none"});function D(){if(!u.value)return;const k=u.value.getBoundingClientRect(),B=k.width+Uy,v=k.left+window.scrollX,O=k.bottom+window.scrollY+qy;_.left=`${v}px`,_.top=`${O}px`,_.width=`${B}px`,_.display="block"}const P=()=>{s.value&&D()};function F(){x&&(clearTimeout(x),x=null)}e.watch(b,()=>{d.value="",h.value=!1,m.value=[],F()}),e.watch(s,k=>{k?e.nextTick(()=>{D()}):_.display="none"}),e.watch(d,k=>{if(b.value!=="address"){m.value=[],F();return}if(!k.trim()){m.value=[],F();return}F(),x=window.setTimeout(()=>{E(k).catch(B=>{const v=(B==null?void 0:B.message)||"Помилка пошуку адреси";re.notify({type:"error",title:"Пошук адреси",message:v})})},Ry)});function M(k){b.value=k}function L(k){const B=k.target;if(h.value){const v=p.value;v&&!v.contains(B)&&(h.value=!1)}if(s.value){const v=g.value;v&&!v.contains(B)&&(m.value=[])}}e.onMounted(()=>{window.addEventListener("click",L,!0),window.addEventListener("scroll",P,!0),window.addEventListener("resize",P)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",L,!0),window.removeEventListener("scroll",P,!0),window.removeEventListener("resize",P),F()});function T(k){return k==="xy"?"Координати":k==="parcel"?"Кадастр":"Адреси"}function z(k){const B=k.replace(/[,]+/g," ").trim();if(!B)return null;const v=B.split(/\s+/).filter(Boolean);if(v.length<2)return null;const O=v.slice(0,2).map(Number);if(!O.every(ne=>Number.isFinite(ne)))return null;let[R,K]=O,W=R,G=K;const le=ne=>Math.abs(ne)<=90,se=ne=>Math.abs(ne)<=180;if(!le(W)||!se(G))if(le(G)&&se(W))W=K,G=R;else return null;return{lat:W,lng:G}}function H(k){return((k==null?void 0:k.items)||[]).map((v,O)=>{var R,K,W;return{id:String((v==null?void 0:v.id)??O),title:(v==null?void 0:v.title)||((R=v==null?void 0:v.address)==null?void 0:R.label)||"Знайдений обʼєкт",lat:Number((K=v==null?void 0:v.position)==null?void 0:K.lat),lng:Number((W=v==null?void 0:v.position)==null?void 0:W.lng)}})}function U(k){const B=(k==null?void 0:k.result)||(k==null?void 0:k.data)||k;if(!B)return[];const v=B.geom_centroid;if(!v||!Array.isArray(v.coordinates))return[];const[O,R]=v.coordinates;return!Number.isFinite(R)||!Number.isFinite(O)?[]:[{id:"parcel",title:B.cadnum||B.cad_num||"Земельна ділянка",lat:R,lng:O}]}function N(k){return(Array.isArray(k==null?void 0:k.features)?k.features:[]).map((v,O)=>{var ne,ce,ke;const R=(ne=v==null?void 0:v.geometry)==null?void 0:ne.coordinates,K=Number(R==null?void 0:R[0]),W=Number(R==null?void 0:R[1]);if(!Number.isFinite(W)||!Number.isFinite(K))return null;const G=(v==null?void 0:v.properties)||{},le=((ce=G==null?void 0:G.geocoding)==null?void 0:ce.label)||(G==null?void 0:G.display_name)||(G==null?void 0:G.label)||"Адреса";return{id:String(((ke=G==null?void 0:G.geocoding)==null?void 0:ke.place_id)||(G==null?void 0:G.place_id)||O),title:le,lat:W,lng:K}}).filter(v=>!!v)}async function E(k){m.value=[],F();const B=new URL(Wy);B.searchParams.set("format","geojson"),B.searchParams.set("q",k),B.searchParams.set("addressdetails","1"),B.searchParams.set("bounded","1");const v=a();v&&B.searchParams.set("viewbox",v);const O=await fetch(B.toString());if(!O.ok)throw new Error(`HTTP ${O.status}`);const R=await O.json(),K=N(R);if(!K.length){re.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}m.value=K}function S(k){A(k),m.value=[],d.value=""}function $(k){const v=k.replace(/\s+/g,"").split(":");if(console.log(v),v.length!==4)return!1;const O=[10,2,3,4];return v.every((R,K)=>R.length===O[K]&&/^\d+$/.test(R))}function A(k){var v,O;const B=((v=n.config)==null?void 0:v.zoom)??17;(O=o.flyTo)==null||O.call(o,{center:[k.lng,k.lat],zoom:B})}async function V(){const k=d.value.trim();if(k){if(b.value==="xy"){const B=z(k);if(!B){re.notify({type:"warning",title:"Пошук координат",message:"Не знайдено або невірний формат координат"});return}A({...B}),d.value="";return}if(b.value==="address"){try{await E(k)}catch(B){const v=(B==null?void 0:B.message)||"Помилка пошуку адреси";re.notify({type:"error",title:"Пошук адреси",message:v})}return}try{const B=new URL(b.value==="here"?Hy:Yy);if(b.value==="here")B.searchParams.set("searchtext",k);else{if(!$(k)){re.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}B.searchParams.set("cad_num",k)}const v=await fetch(B.toString());if(!v.ok)throw new Error(`HTTP ${v.status}`);const O=await v.json(),R=b.value==="here"?H(O):U(O);if(!R.length)re.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const K=R[0];A(K),d.value=""}}catch(B){const v=(B==null?void 0:B.message)||"Помилка пошуку";re.notify({type:"error",title:"Пошук",message:v})}}}return(k,B)=>(e.openBlock(),e.createElementBlock("div",Ty,[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(V,["prevent"])},[y.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:p,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:B[0]||(B[0]=v=>h.value=!h.value)},[e.createElementVNode("span",{class:"block w-full truncate",title:T(b.value)},e.toDisplayString(T(b.value)),9,Dy),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":h.value}]),viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[...B[3]||(B[3]=[e.createElementVNode("path",{d:"M6 9l6 6 6-6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))]),h.value?(e.openBlock(),e.createElementBlock("div",Iy,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,v=>(e.openBlock(),e.createElementBlock("li",{key:v,class:"px-3 py-2 cursor-pointer hover:bg-gray-100 text-gray-900",onClick:O=>M(v)},e.toDisplayString(T(v)),9,jy))),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"searchWrapperRef",ref:u,class:"relative flex-1 min-w-[140px]"},[b.value==="parcel"?(e.openBlock(),e.createBlock(e.unref(zt.VsInputMask),{key:0,modelValue:d.value,"onUpdate:modelValue":B[1]||(B[1]=v=>d.value=v),mask:"0000000000:00:000:0000",class:"vs-input !h-[34px] transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid !pr-8 py-1.5 pl-3 text-sm"},null,8,["modelValue"])):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":B[2]||(B[2]=v=>d.value=v),placeholder:f.value,type:"text",class:"vs-input transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid !pr-8 py-1.5 pl-3 text-sm"},null,8,zy)),[[e.vModelText,d.value,void 0,{trim:!0}]]),B[4]||(B[4]=e.createElementVNode("button",{type:"submit",class:"absolute inset-y-0 right-2 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)),s.value?(e.openBlock(),e.createBlock(e.Teleport,{key:2,to:"body"},[e.createElementVNode("div",{ref_key:"addressResultsRef",ref:g,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(_)},[e.createElementVNode("ul",Oy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,v=>(e.openBlock(),e.createElementBlock("li",{key:v.id,class:"px-3 py-2 cursor-pointer hover:bg-gray-50",onClick:O=>S(v)},e.toDisplayString(v.title),9,Py))),128))])],4)])):e.createCommentVNode("",!0)],512)],32)]))}}),[["__scopeId","data-v-3403649e"]]),Zy="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css",Ky="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js",Gy=Q(e.defineComponent({__name:"MapPrintControl",setup(t){const{map:n,ready:o,addControl:l,removeControl:r}=ve(),a=e.ref(null),i=e.ref(null),c=e.ref(null),y=e.ref(null);let f=null;function b(){!window.mapboxgl&&window.maplibregl&&(window.mapboxgl=window.maplibregl)}function d(F){if(Array.from(document.styleSheets).some(T=>{var z;return(z=T==null?void 0:T.href)==null?void 0:z.includes(F)}))return;const L=document.createElement("link");L.rel="stylesheet",L.href=F,document.head.appendChild(L)}function h(F){return new Promise((M,L)=>{const T=Array.from(document.scripts).find(H=>H.src===F);if(T){if(T._loaded)return M();T.addEventListener("load",()=>M()),T.addEventListener("error",()=>L(new Error(`Failed ${F}`)));return}const z=document.createElement("script");z.src=F,z.async=!0,z.onload=()=>{z._loaded=!0,M()},z.onerror=()=>L(new Error(`Failed ${F}`)),document.head.appendChild(z)})}function p(){var M,L,T;const F=window;return F.MapboxExportControl||((M=F.mapboxgl)==null?void 0:M.MapboxExportControl)||((L=F.mapboxglExport)==null?void 0:L.MapboxExportControl)||((T=F.mapboxglExport)==null?void 0:T.default)||null}function u(){const F=document.createElementNS("http://www.w3.org/2000/svg","svg");return F.setAttribute("xmlns","http://www.w3.org/2000/svg"),F.setAttribute("viewBox","0 0 24 24"),F.setAttribute("width","18"),F.setAttribute("height","18"),F.setAttribute("fill","none"),F.setAttribute("stroke","currentColor"),F.setAttribute("stroke-width","2"),F.setAttribute("stroke-linecap","round"),F.setAttribute("stroke-linejoin","round"),F.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((L,T)=>{const z=document.createElementNS("http://www.w3.org/2000/svg","path");Object.entries(L).forEach(([H,U])=>{z.setAttribute(H,U)}),F.appendChild(z)}),F}function m(){const F=document.createElement("button");F.id="print-btn",F.type="button",F.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(" "),F.setAttribute("aria-label","Друк");const M=u(),L=document.createElement("span");return L.className=["absolute left-full ml-3 px-3 py-1.5","bg-gray-900 text-white text-sm 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(" "),L.textContent="Друк",L.setAttribute("aria-hidden","true"),F.appendChild(M),F.appendChild(L),F.addEventListener("click",T=>{T.stopPropagation(),g()}),y.value=F,F}function g(){if(!c.value)return;c.value.style.display==="block"?x():s()}function s(){var F,M,L;c.value&&(c.value.style.display="block",(F=y.value)==null||F.classList.add("scale-105","shadow-xl"),(M=i.value)==null||M.toggleCrosshair(!0),(L=i.value)==null||L.togglePrintableArea(!0),document.addEventListener("click",_))}function x(){var F,M,L;c.value&&(c.value.style.display="none",(F=y.value)==null||F.classList.remove("scale-105","shadow-xl"),(M=i.value)==null||M.toggleCrosshair(!1),(L=i.value)==null||L.togglePrintableArea(!1),document.removeEventListener("click",_))}function _(F){const M=a.value;M&&(F.target&&M.contains(F.target)||x())}function D(F){const M={Size:"Розмір",Orientation:"Орієнтація",Format:"Формат",DPI:"DPI",Landscape:"Горизонтальна",Portrait:"Вертикальна",PNG:"PNG",JPEG:"JPEG",SVG:"SVG",PDF:"PDF","Page Size":"Розмір","Page Orientation":"Орієнтація"};F.querySelectorAll("label, option").forEach(T=>{var H;const z=(H=T.textContent)==null?void 0:H.trim();z&&M[z]&&(T.textContent=M[z])});const L=F.querySelector("button");L&&(L.textContent="Друкувати")}function P(F){const M=F.querySelector(".mapboxgl-export-list");if(!M||!a.value)return;c.value=M;const L=F.querySelector("button");if(L&&(L.style.display="none"),F.style.display="none",!y.value){const z=m();a.value.appendChild(z)}M.style.display="none";const T="_printControlBound";if(!M[T]){const z=H=>H.stopPropagation();M.addEventListener("click",z),M.addEventListener("mousedown",z),M[T]=!0}a.value.appendChild(M),D(M)}return e.onMounted(async()=>{await(o==null?void 0:o());const F=n.value;if(!F)return;d(Zy),b();try{await h(Ky)}catch(T){console.warn("[MapPrintControl] load error",T);return}const M=p();if(!M)return;const L=new M({PageSize:"A4",PageOrientation:"landscape",Format:"pdf",DPI:300,Crosshair:!0,PrintableArea:!0});if(i.value=L,typeof L.onAdd=="function"){const T=L.onAdd.bind(L);L.onAdd=z=>{const H=T(z);return setTimeout(()=>H&&P(H),50),H}}l?l(L,"top-right"):F.addControl(L,"top-right"),f=T=>{T.key==="Escape"&&x()},document.addEventListener("keyup",f)}),e.onBeforeUnmount(()=>{x(),f&&(document.removeEventListener("keyup",f),f=null);const F=n.value;if(i.value)try{r?r(i.value):F==null||F.removeControl(i.value)}catch{}i.value=null}),(F,M)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:a,class:"map-print-control"},null,512))}}),[["__scopeId","data-v-d08551cb"]]),Xy={class:"cursor-coordinates"},Jy={class:"cursor-coordinates__text"},Qy=Q(e.defineComponent({__name:"MapCursorCoordinates",props:{coordinates:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",Xy,[e.createElementVNode("span",Jy,e.toDisplayString(t.coordinates),1)]))}}),[["__scopeId","data-v-d83db59a"]]),eh={class:"minimap__wrapper"},Mt="minimap-viewport",th="minimap-viewport-layer",nh=Q(e.defineComponent({__name:"MapMiniMap",props:{mapContext:{},width:{},height:{},options:{}},setup(t){var _,D,P,F;const n=t,o=((D=(_=e.getCurrentInstance())==null?void 0:_.appContext.config.globalProperties)==null?void 0:D.$settings)||null,l=dt((P=o==null?void 0:o.map)==null?void 0:P.center)||[30,50],r=e.ref(null),a=e.shallowRef(null),i=(F=n.options)==null?void 0:F.active,c=e.ref(i===void 0?!1:!!i);function y(M,L){return typeof M=="number"&&Number.isFinite(M)?M:L}const f=e.computed(()=>{var H,U;const M=(H=n.options)==null?void 0:H.width,L=(U=n.options)==null?void 0:U.height,T=y(n.width??M,210),z=y(n.height??L,150);return{width:`${T}px`,height:`${z}px`}});function b(){var L,T;const M=(T=(L=n.mapContext)==null?void 0:L.map)==null?void 0:T.value;if(!M||typeof M.getStyle!="function")return null;try{const z=M.getStyle();return z?JSON.parse(JSON.stringify(z)):null}catch{return null}}let d=null;function h(){var H;if(typeof window>"u"||a.value||!r.value)return;const M=b(),L=l,T={container:r.value,style:M??{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:L,zoom:((H=n.options)==null?void 0:H.zoom)??3,interactive:!1,attributionControl:!1},z={...T,...n.options??{}};z.container=T.container,a.value=new maplibregl.Map(z),a.value.on("load",()=>{u(),g()})}function p(){if(!a.value)return;const M=b();M&&(a.value.once("styledata",()=>{u(),g()}),a.value.setStyle(M))}function u(){if(a.value){if(typeof a.value.isStyleLoaded=="function"&&!a.value.isStyleLoaded()){a.value.once("styledata",()=>{u(),g()});return}a.value.getSource(Mt)||(a.value.addSource(Mt,{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]},properties:{}}}),a.value.addLayer({id:th,type:"fill",source:Mt,paint:{"fill-color":"#3b82f6","fill-opacity":.2,"fill-outline-color":"#1d4ed8"}}))}}function m(){c.value=!c.value,c.value&&e.nextTick(()=>{var M;return(M=a.value)==null?void 0:M.resize()})}function g(){var N,E;const M=(E=(N=n.mapContext)==null?void 0:N.map)==null?void 0:E.value;if(!a.value||!M||!M.getBounds)return;if(typeof a.value.isStyleLoaded=="function"&&!a.value.isStyleLoaded()){a.value.once("styledata",()=>{g()});return}const L=M.getBounds();if(!L)return;const T=L.getNorthEast(),z=L.getSouthWest();if(!T||!z)return;const H=[[z.lng,T.lat],[T.lng,T.lat],[T.lng,z.lat],[z.lng,z.lat],[z.lng,T.lat]],U=a.value.getSource(Mt);if(!U){u();return}U.setData({type:"Feature",geometry:{type:"Polygon",coordinates:[H]},properties:{}})}function s(){var T;const M=n.mapContext,L=(T=M==null?void 0:M.map)==null?void 0:T.value;!(M!=null&&M.on)||!L||(d==null||d(),d=M.on("move",g),g())}async function x(){const M=n.mapContext;if(M){if(typeof M.ready=="function")try{await M.ready()}catch{return}s()}}return e.onMounted(()=>{h(),x()}),e.watch(()=>n.mapContext,()=>{x(),g()}),e.watch(()=>{var M,L;return(L=(M=n.mapContext)==null?void 0:M.map)==null?void 0:L.value},()=>{a.value&&(p(),x())}),e.watch(f,()=>{a.value&&e.nextTick(()=>{var M;return(M=a.value)==null?void 0:M.resize()})}),e.watch(()=>n.options,()=>{var L;d==null||d(),d=null,a.value&&(a.value.remove(),a.value=null);const M=(L=n.options)==null?void 0:L.active;typeof M=="boolean"&&(c.value=M),e.nextTick(()=>{h(),x()})},{deep:!0}),e.onBeforeUnmount(()=>{d==null||d(),d=null,a.value&&(a.value.remove(),a.value=null)}),(M,L)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["minimap",{"minimap--open":c.value}])},[e.createElementVNode("button",{type:"button",class:"minimap__button",onClick:m},[e.createVNode(e.unref(pl))]),e.createVNode(e.Transition,{name:"minimap-slide"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",eh,[e.createElementVNode("div",{ref_key:"minimapRoot",ref:r,class:"mapboxgl-ctrl-minimap mapboxgl-ctrl mapboxgl-map",style:e.normalizeStyle(f.value),id:"mapboxgl-minimap"},null,4)],512),[[e.vShow,c.value]])]),_:1})],2))}}),[["__scopeId","data-v-ff9c5f7b"]]),oh={key:1,class:"absolute bottom-4 right-4 z-[80] flex items-end gap-2"},lh={class:"absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1"},rh={class:"map-widget__overlay-grid"},ah={key:0,id:"map-filter-popover-host",class:"map-widget__filter-host"},ih={key:1,class:"map-widget__stack-wrapper map-widget__stack-wrapper--top"},sh={class:"map-widget__stack"},ch={key:2,class:"map-widget__stack-wrapper map-widget__stack-wrapper--bottom xl:mb-5 mb-2"},dh={class:"map-widget__stack map-widget__stack--bottom"},uh={key:0,class:"map-widget__state"},ph={key:1,class:"map-widget__state map-widget__state--error"},mn=Q(e.defineComponent({__name:"MapWidget",props:{id:{},height:{},minZoom:{},maxZoom:{}},setup(t){var Tt,Dt,Je,pt;const n=t,o=we.useRoute(),l=we.useRouter(),r=e.ref(null),a=e.ref({}),i=e.ref(null),c=e.ref(!1),y=e.ref(null),f=e.ref(!1),b=e.ref([]),d=e.computed(()=>n.id||"main"),h=e.computed(()=>{var j,q;return{height:((j=n.height)==null?void 0:j.trim())||((q=a.value)==null?void 0:q.height)||"calc(100vh - 65px)"}}),p=e.computed(()=>{var j;return((j=a.value)==null?void 0:j.name)??null}),u=e.computed(()=>{var j;return((j=a.value)==null?void 0:j.description)??null}),m=e.computed(()=>{var j;return N((j=a.value)==null?void 0:j.maps)}),g=e.computed(()=>{var q,te;const j=((q=a.value)==null?void 0:q.minZoom)??((te=a.value)==null?void 0:te.minzoom)??null;return typeof j=="number"?j:null}),s=e.computed(()=>{var q,te;const j=((q=a.value)==null?void 0:q.maxZoom)??((te=a.value)==null?void 0:te.maxzoom)??null;return typeof j=="number"?j:typeof n.maxZoom=="number"?n.maxZoom:20}),x=e.ref(null),_=e.computed(()=>{if(!x.value)return null;const{lng:j,lat:q}=x.value;return`${q.toFixed(6)}, ${j.toFixed(6)}`}),D=e.computed(()=>{var j;return((j=r.value)==null?void 0:j.ctx)??null}),P=e.computed(()=>{var j;return((j=a.value)==null?void 0:j.minimap)??null});function F(j){if(!j||typeof j!="object")return j;const q=dt(j.center);return q?{...j,center:q}:j}const M=((Dt=(Tt=e.getCurrentInstance())==null?void 0:Tt.appContext.config.globalProperties)==null?void 0:Dt.$settings)||null;function L(j){if(j==null)return null;const q=Number(typeof j=="string"?j.trim():j);return Number.isFinite(q)?q:null}const T=dt((Je=M==null?void 0:M.map)==null?void 0:Je.center),z=L((pt=M==null?void 0:M.map)==null?void 0:pt.zoom),H=e.computed(()=>{const j=(M==null?void 0:M.map)||null,q=(j==null?void 0:j.boundary)??null,te=(j==null?void 0:j.katottg)??null;return!q&&!te?null:{boundary:q,katottg:te}});function U(j){return typeof j=="string"&&j.trim()?j.trim().toLowerCase():"top-left"}function N(j){return Array.isArray(j)?j:j&&typeof j=="object"?Object.values(j).filter(Boolean):[]}const E=e.computed(()=>{var j;return N((j=a.value)==null?void 0:j.widgets)}),S=["left","right"],$=e.computed(()=>{const j={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 E.value.forEach(te=>{const ie=U(te.position),J=q[ie]??{side:"left",align:"top"};j[J.side][J.align].push(te)}),j});function A(j){return Array.isArray(j)?j[0]??null:typeof j=="string"?j:null}async function V(){var q;await e.nextTick();const j=(q=r.value)==null?void 0:q.ctx;return j?(j.ready&&await j.ready(),j):null}function k(){var j,q,te;return((te=(q=(j=r.value)==null?void 0:j.ctx)==null?void 0:q.map)==null?void 0:te.value)??null}function B(){const j=k();if(!j)return null;const q=j.getCenter();return{z:j.getZoom().toFixed(2),x:q.lng.toFixed(5),y:q.lat.toFixed(5)}}async function v(){var te;const j=await V(),q=(te=j==null?void 0:j.map)==null?void 0:te.value;q&&(typeof g.value=="number"&&q.setMinZoom(g.value),typeof s.value=="number"&&q.setMaxZoom(s.value))}async function O(){var J;if(i.value)return;const j=await V(),q=(J=j==null?void 0:j.map)==null?void 0:J.value;if(!q)return;const te=q.getCenter(),ie=q.getZoom();i.value={center:[te.lng,te.lat],zoom:ie}}function R(){const j=B();if(!j)return;const q=A(o.query.x),te=A(o.query.y),ie=A(o.query.z);q===j.x&&te===j.y&&ie===j.z||l.replace({query:{...o.query,...j}}).catch(()=>{})}function K(j,q,te=1e-6){return Math.abs(j-q)<=te}async function W(){var je;const j=await V(),q=(je=j==null?void 0:j.map)==null?void 0:je.value;if(!j||!q)return;const te=parseFloat(A(o.query.x)??""),ie=parseFloat(A(o.query.y)??""),J=parseFloat(A(o.query.z)??""),me=!Number.isNaN(te),he=!Number.isNaN(ie),Y=!Number.isNaN(J);let Le=!1;if(me&&he){const Fe=q.getCenter();(!K(Fe.lng,te)||!K(Fe.lat,ie))&&(q.setCenter([te,ie]),Le=!0)}Y&&q.setZoom(J),(!me||!he||!Y||Le)&&R()}let G=null,le=null;function se(j){const q=j==null?void 0:j.lngLat;q&&(x.value={lng:q.lng,lat:q.lat})}async function ne(){const j=await V();j!=null&&j.on&&(G==null||G(),G=j.on("moveend",R),le==null||le(),le=j.on("mousemove",se))}e.onUnmounted(()=>{G==null||G(),G=null,le==null||le(),le=null});async function ce(){var j,q;f.value=!1,c.value=!0,y.value=null,x.value=null;try{const te=await fetch(`/api/gis-map/${encodeURIComponent(d.value)}`);if(!te.ok)throw new Error(`Помилка завантаження (${te.status})`);const ie=await te.json(),J=dt(ie.center)??T,me=N(ie.layers).map(Le=>F(Le)),he=L(ie.zoom)??z;a.value={...ie,center:J??null,zoom:he??ie.zoom??null,layers:me,widgets:ie.widgets},b.value=ie.tools||["home","print"];const Y=await V();Y&&(J&&((j=Y.setCenter)==null||j.call(Y,J)),he!=null&&((q=Y.setZoom)==null||q.call(Y,he)),i.value||await O()),await v(),await W(),await ne(),f.value=!0}catch(te){y.value=(te==null?void 0:te.message)||"Не вдалося завантажити карту"}finally{c.value=!1}}const ke=e.computed(()=>{var ie;const j=new Map;return N((ie=a.value)==null?void 0:ie.layers).forEach(J=>{if(!(J!=null&&J.id))return;const me=F(J)||J;j.set(J.id,{...me})}),E.value.filter(J=>(J==null?void 0:J.type)==="layers").flatMap(J=>{var me;return N((me=J==null?void 0:J.config)==null?void 0:me.layers)}).forEach(J=>{if(!(J!=null&&J.id))return;const me=j.get(J.id)||{},he=F(J)||J;j.set(J.id,{...me,...he,actions:J.actions||me.actions||null,name:me.name||J.name||J.title||me.title||J.id,title:me.title||J.title||me.name||null,visible:me.visible??J.visible??!0})}),Array.from(j.values())}),Ae=e.ref([]);function Te(j){Ae.value.includes(j)?Ae.value=Ae.value.filter(q=>q!==j):Ae.value.push(j)}const Ie=e.computed(()=>j=>Ae.value.includes(j.id));return e.watch([g,s],()=>{v()},{immediate:!0}),e.watch(d,()=>{ce()}),e.onMounted(()=>{ce()}),e.watch(()=>[o.query.x,o.query.y,o.query.z],()=>{W()}),(j,q)=>(e.openBlock(),e.createElementBlock("div",{class:"map-widget",style:e.normalizeStyle(h.value)},[q[2]||(q[2]=e.createElementVNode("div",{id:"map-filter-popover-host",class:"map-widget__filter-host"},null,-1)),e.createVNode(Lt,{ref_key:"mapViewRef",ref:r,class:"map-widget__view"},{default:e.withCtx(()=>{var te,ie,J,me;return[H.value?(e.openBlock(),e.createBlock(Uo,{key:0,"layer-id":"app-boundary",boundary:H.value.boundary,katottg:H.value.katottg},null,8,["boundary","katottg"])):e.createCommentVNode("",!0),D.value?(e.openBlock(),e.createElementBlock("div",oh,[_.value?(e.openBlock(),e.createBlock(Qy,{key:0,coordinates:_.value},null,8,["coordinates"])):e.createCommentVNode("",!0),e.createVNode(nh,{"map-context":D.value,options:P.value},null,8,["map-context","options"])])):e.createCommentVNode("",!0),e.createElementVNode("div",lh,[b.value.includes("home")?(e.openBlock(),e.createBlock(un,{key:0,center:((te=a.value)==null?void 0:te.center)||((ie=i.value)==null?void 0:ie.center)||null,zoom:((J=a.value)==null?void 0:J.zoom)??((me=i.value)==null?void 0:me.zoom)??null},null,8,["center","zoom"])):e.createCommentVNode("",!0),b.value.includes("print")?(e.openBlock(),e.createBlock(Gy,{key:1})):e.createCommentVNode("",!0)]),f.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",rh,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(S,he=>e.createElementVNode("div",{key:he,class:e.normalizeClass(["map-widget__side",`map-widget__side--${he}`])},[he==="left"?(e.openBlock(),e.createElementBlock("div",ah)):e.createCommentVNode("",!0),$.value[he].top.length?(e.openBlock(),e.createElementBlock("div",ih,[e.createElementVNode("div",sh,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value[he].top,Y=>{var Le,je,Fe,Ze,Ke,Pe,ze,Re;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:Y.id||Y.type,class:"map-overlay__item"},[Y.type==="info"?(e.openBlock(),e.createBlock(qo,{key:0,title:((Le=Y.config)==null?void 0:Le.title)||Y.title||null,content:((je=Y.config)==null?void 0:je.content)||"",links:m.value,"map-name":p.value,"map-description":u.value},null,8,["title","content","links","map-name","map-description"])):Y.type==="catalog"?(e.openBlock(),e.createBlock(Zo,{key:1,api:((Fe=Y.config)==null?void 0:Fe.api)||null},null,8,["api"])):Y.type==="layers"?(e.openBlock(),e.createBlock(Wo,{key:2,layers:ke.value,onAction:q[0]||(q[0]=Qe=>Te(Qe.layerId)),config:Y.config},null,8,["layers","config"])):Y.type==="basemaps"?(e.openBlock(),e.createBlock(kt,{key:3,layers:((Ze=Y.config)==null?void 0:Ze.layers)||null,"default-layer":((Ke=Y.config)==null?void 0:Ke.default)||null,title:Y.title||((Pe=Y.config)==null?void 0:Pe.title)||null},null,8,["layers","default-layer","title"])):Y.type==="legend"?(e.openBlock(),e.createBlock(wt,{key:4,items:((ze=Y.config)==null?void 0:ze.items)||[]},null,8,["items"])):Y.type==="filters"&&Ie.value(Y)?(e.openBlock(),e.createBlock(sn,{key:5,"layer-id":(Re=Y.config)==null?void 0:Re.layer,onClose:Te},null,8,["layer-id"])):Y.type==="dataset"||Y.type==="attribute"?(e.openBlock(),e.createBlock(Ko,{key:6,config:Y.config},null,8,["config"])):Y.type==="search"?(e.openBlock(),e.createBlock(Go,{key:7,config:Y.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,Y.visible!==!1]])}),128))])])):e.createCommentVNode("",!0),$.value[he].bottom.length?(e.openBlock(),e.createElementBlock("div",ch,[e.createElementVNode("div",dh,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value[he].bottom,Y=>{var Le,je,Fe,Ze,Ke,Pe,ze,Re;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:Y.id||Y.type,class:"map-overlay__item"},[Y.type==="info"?(e.openBlock(),e.createBlock(qo,{key:0,title:((Le=Y.config)==null?void 0:Le.title)||Y.title||null,content:((je=Y.config)==null?void 0:je.content)||"",links:m.value,"map-name":p.value,"map-description":u.value},null,8,["title","content","links","map-name","map-description"])):Y.type==="catalog"?(e.openBlock(),e.createBlock(Zo,{key:1,api:((Fe=Y.config)==null?void 0:Fe.api)||null},null,8,["api"])):Y.type==="layers"?(e.openBlock(),e.createBlock(Wo,{key:2,layers:ke.value,onAction:q[1]||(q[1]=Qe=>Te(Qe.layerId)),config:Y.config},null,8,["layers","config"])):Y.type==="basemaps"?(e.openBlock(),e.createBlock(kt,{key:3,layers:((Ze=Y.config)==null?void 0:Ze.layers)||null,"default-layer":((Ke=Y.config)==null?void 0:Ke.default)||null,title:Y.title||((Pe=Y.config)==null?void 0:Pe.title)||null},null,8,["layers","default-layer","title"])):Y.type==="legend"?(e.openBlock(),e.createBlock(wt,{key:4,items:((ze=Y.config)==null?void 0:ze.items)||[]},null,8,["items"])):Y.type==="filters"&&Ie.value(Y)?(e.openBlock(),e.createBlock(sn,{key:5,"layer-id":(Re=Y.config)==null?void 0:Re.layer,onClose:Te},null,8,["layer-id"])):Y.type==="dataset"||Y.type==="attribute"?(e.openBlock(),e.createBlock(Ko,{key:6,config:Y.config},null,8,["config"])):Y.type==="search"?(e.openBlock(),e.createBlock(Go,{key:7,config:Y.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,Y.visible!==!1]])}),128))])])):e.createCommentVNode("",!0)],2)),64))]),e.createVNode(zo),e.createVNode(Ro,{"map-id":d.value},null,8,["map-id"])],64)):e.createCommentVNode("",!0)]}),_:1},512),c.value?(e.openBlock(),e.createElementBlock("div",uh,"Завантаження карти…")):y.value?(e.openBlock(),e.createElementBlock("div",ph,e.toDisplayString(y.value),1)):e.createCommentVNode("",!0)],4))}}),[["__scopeId","data-v-9e7af925"]]);function mh(t){t.component("MapCustom",mn)}pe.CartoCSS=u0,pe.MapSettings=Q0,pe.MapWidget=mn,pe.Raster=Cf,pe.Register=bs,pe.Service=bm,pe.default=mn,pe.install=mh,pe.template1=Nn,pe.template2=Vn,pe.template3=Bn,pe.template4=Cn,pe.template5=vn,Object.defineProperties(pe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
121
|
+
`}function So(t){return t[t.length-1]===`
|
|
122
|
+
`?t.slice(0,-1):t}function bd(t,n){for(var o=/(\n+)([^\n]*)/g,l=(function(){var y=t.indexOf(`
|
|
123
|
+
`);return y=y!==-1?y:t.length,o.lastIndex=y,Ao(t.slice(0,y),n)})(),r=t[0]===`
|
|
124
|
+
`||t[0]===" ",a,i;i=o.exec(t);){var s=i[1],g=i[2];a=g[0]===" ",l+=s+(!r&&!a&&g!==""?`
|
|
125
|
+
`:"")+Ao(g,n),r=a}return l}function Ao(t,n){if(t===""||t[0]===" ")return t;for(var o=/ [^ ]/g,l,r=0,a,i=0,s=0,g="";l=o.exec(t);)s=l.index,s-r>n&&(a=i>r?i:s,g+=`
|
|
126
|
+
`+t.slice(r,a),r=a+1),i=s;return g+=`
|
|
127
|
+
`,t.length-r>n&&i>r?g+=t.slice(r,i)+`
|
|
128
|
+
`+t.slice(i+1):g+=t.slice(r),g.slice(1)}function kd(t){for(var n="",o=0,l,r=0;r<t.length;o>=65536?r+=2:r++)o=bt(t,r),l=Ee[o],!l&&xt(o)?(n+=t[r],o>=65536&&(n+=t[r+1])):n+=l||ud(o);return n}function wd(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)),(Oe(t,n,s,!1,!1)||typeof s>"u"&&Oe(t,n,null,!1,!1))&&(l!==""&&(l+=","+(t.condenseFlow?"":" ")),l+=t.dump);t.tag=r,t.dump="["+l+"]"}function Lo(t,n,o,l){var r="",a=t.tag,i,s,g;for(i=0,s=o.length;i<s;i+=1)g=o[i],t.replacer&&(g=t.replacer.call(o,String(i),g)),(Oe(t,n+1,g,!0,!0,!1,!0)||typeof g>"u"&&Oe(t,n+1,null,!0,!0,!1,!0))&&((!l||r!=="")&&(r+=Jt(t,n)),t.dump&&yt===t.dump.charCodeAt(0)?r+="-":r+="- ",r+=t.dump);t.tag=a,t.dump=r||"[]"}function _d(t,n,o){var l="",r=t.tag,a=Object.keys(o),i,s,g,y,b;for(i=0,s=a.length;i<s;i+=1)b="",l!==""&&(b+=", "),t.condenseFlow&&(b+='"'),g=a[i],y=o[g],t.replacer&&(y=t.replacer.call(o,g,y)),Oe(t,n,g,!1,!1)&&(t.dump.length>1024&&(b+="? "),b+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Oe(t,n,y,!1,!1)&&(b+=t.dump,l+=b));t.tag=r,t.dump="{"+l+"}"}function Ed(t,n,o,l){var r="",a=t.tag,i=Object.keys(o),s,g,y,b,c,f;if(t.sortKeys===!0)i.sort();else if(typeof t.sortKeys=="function")i.sort(t.sortKeys);else if(t.sortKeys)throw new Be("sortKeys must be a boolean or a function");for(s=0,g=i.length;s<g;s+=1)f="",(!l||r!=="")&&(f+=Jt(t,n)),y=i[s],b=o[y],t.replacer&&(b=t.replacer.call(o,y,b)),Oe(t,n+1,y,!0,!0,!0)&&(c=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,c&&(t.dump&&yt===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,c&&(f+=Jt(t,n)),Oe(t,n+1,b,!0,c)&&(t.dump&&yt===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,r+=f));t.tag=a,t.dump=r||"{}"}function Fo(t,n,o){var l,r,a,i,s,g;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(g=t.styleMap[s.tag]||s.defaultStyle,go.call(s.represent)==="[object Function]")l=s.represent(n,g);else if(yo.call(s.represent,g))l=s.represent[g](n,g);else throw new Be("!<"+s.tag+'> tag resolver accepts not "'+g+'" style');t.dump=l}return!0}return!1}function Oe(t,n,o,l,r,a,i){t.tag=null,t.dump=o,Fo(t,o,!1)||Fo(t,o,!0);var s=go.call(t.dump),g=l,y;l&&(l=t.flowLevel<0||t.flowLevel>n);var b=s==="[object Object]"||s==="[object Array]",c,f;if(b&&(c=t.duplicates.indexOf(o),f=c!==-1),(t.tag!==null&&t.tag!=="?"||f||t.indent!==2&&n>0)&&(r=!1),f&&t.usedDuplicates[c])t.dump="*ref_"+c;else{if(b&&f&&!t.usedDuplicates[c]&&(t.usedDuplicates[c]=!0),s==="[object Object]")l&&Object.keys(t.dump).length!==0?(Ed(t,n,t.dump,r),f&&(t.dump="&ref_"+c+t.dump)):(_d(t,n,t.dump),f&&(t.dump="&ref_"+c+" "+t.dump));else if(s==="[object Array]")l&&t.dump.length!==0?(t.noArrayIndent&&!i&&n>0?Lo(t,n-1,t.dump,r):Lo(t,n,t.dump,r),f&&(t.dump="&ref_"+c+t.dump)):(wd(t,n,t.dump),f&&(t.dump="&ref_"+c+" "+t.dump));else if(s==="[object String]")t.tag!=="?"&&xd(t,t.dump,n,a,g);else{if(s==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Be("unacceptable kind of an object to dump "+s)}t.tag!==null&&t.tag!=="?"&&(y=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?y="!"+y:y.slice(0,18)==="tag:yaml.org,2002:"?y="!!"+y.slice(18):y="!<"+y+">",t.dump=y+" "+t.dump)}return!0}function Nd(t,n){var o=[],l=[],r,a;for(en(t,o,l),r=0,a=l.length;r<a;r+=1)n.duplicates.push(o[l[r]]);n.usedDuplicates=new Array(a)}function en(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)en(t[r],n,o);else for(l=Object.keys(t),r=0,a=l.length;r<a;r+=1)en(t[l[r]],n,o)}function Vd(t,n){n=n||{};var o=new md(n);o.noRefs||Nd(t,o);var l=t;return o.replacer&&(l=o.replacer.call({"":l},"",l)),Oe(o,0,l,!0,!0)?o.dump+`
|
|
129
|
+
`:""}var Bd=Vd,Cd={dump:Bd};function tn(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 vd=_e,$d=Mn,Sd=zn,Ad=Un,Ld=qn,Fd=Wt,Mo=fo.load,Md=fo.loadAll,To=Cd.dump,Td=Be,Dd={binary:Kn,float:Rn,map:In,null:jn,pairs:Xn,set:Jn,timestamp:Yn,bool:On,int:Pn,merge:Zn,omap:Gn,seq:Dn,str:Tn},Id=tn("safeLoad","load"),zd=tn("safeLoadAll","loadAll"),jd=tn("safeDump","dump"),Od={Type:vd,Schema:$d,FAILSAFE_SCHEMA:Sd,JSON_SCHEMA:Ad,CORE_SCHEMA:Ld,DEFAULT_SCHEMA:Fd,load:Mo,loadAll:Md,dump:To,YAMLException:Td,types:Dd,safeLoad:Id,safeLoadAll:zd,safeDump:jd};const ct="#9ca3af";function nn(t){return!t||typeof t!="object"||Array.isArray(t)?null:{...t}}const Pd={},Rd={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 Ud(t,n){return e.openBlock(),e.createElementBlock("svg",Rd,[...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 Do=Q(Pd,[["render",Ud]]),qd={},Hd={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 Wd(t,n){return e.openBlock(),e.createElementBlock("svg",Hd,[...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 Yd=Q(qd,[["render",Wd]]),Zd={},Kd={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 Gd(t,n){return e.openBlock(),e.createElementBlock("svg",Kd,[...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 Xd=Q(Zd,[["render",Gd]]),Jd={},Qd={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 eu(t,n){return e.openBlock(),e.createElementBlock("svg",Qd,[...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 tu=Q(Jd,[["render",eu]]),nu={},ou={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",ou,[...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 ru=Q(nu,[["render",lu]]),Lt=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 g(){return new Promise((b,c)=>{if(i)return b(i);if(window.monaco)return i=window.monaco,b(i);const f=p=>{if([...document.styleSheets].some(h=>{var d;return(d=h==null?void 0:h.href)==null?void 0:d.includes(p)}))return;const m=document.createElement("link");m.rel="stylesheet",m.href=p,document.head.appendChild(m)},u=p=>new Promise((m,h)=>{const d=document.createElement("script");d.src=p,d.onload=()=>m(!0),d.onerror=h,document.body.appendChild(d)});f("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),u("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,b(i)})}).catch(c)})}function y(){var b,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=(b=i.languages)==null?void 0:b.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,b=>{if(!a)return;const c=a.getValue();b!==c&&(s=!0,a.setValue(b||""),s=!1)}),e.watch(()=>o.language,b=>{a&&i&&i.editor.setModelLanguage(a.getModel(),b||"yaml")}),e.watch(()=>o.theme,b=>{a&&i&&i.editor.setTheme(b||"vs-light")}),e.onMounted(async()=>{await g(),y()}),e.onBeforeUnmount(()=>{a&&a.dispose()}),(b,c)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"editorContainer",ref:r,class:"w-full h-full"},null,512))}}),au={class:"flex flex-col flex-1 overflow-hidden"},iu={class:"flex justify-end gap-2"},su=["href"],cu={class:"flex flex-col flex-1 overflow-hidden"},du={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},uu={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},pu=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,g=>{const y=g??"";r.value!==y&&(r.value=y)},{immediate:!0}),e.watch(r,async g=>{var b,c;const y=g??"";o.styleText!==y&&l("update:style-text",y);try{const f=g?Mo(g):null;if((b=f==null?void 0:f.colorAttr)!=null&&b.length&&((c=o.styleYaml)==null?void 0:c.colorAttr)!==f.colorAttr){const u=await a(f.colorAttr);f.colors=u.reduce((m,h,d)=>({...m,[h.id.toString()]:i[d]}),{});const p=To(f);p!==r.value&&(r.value=p)}JSON.stringify(f)!==JSON.stringify(o.styleYaml)&&l("update:style-yaml",f&&typeof f=="object"?f:null)}catch{o.styleYaml!==null&&l("update:style-yaml",null)}});async function a(g){return(await fetch(`/api/gis-service/${o.token}/${g}`).then(b=>b.json())).rows}const i=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],s=async()=>{const g=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:g})}),l("update"),re.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(y){re.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(y)}};return(g,y)=>(e.openBlock(),e.createElementBlock("div",au,[e.createElementVNode("div",iu,[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,su),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"},[...y[1]||(y[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",cu,[e.createElementVNode("div",du,[y[2]||(y[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",uu,[e.createVNode(Lt,{modelValue:r.value,"onUpdate:modelValue":y[0]||(y[0]=b=>r.value=b),language:"yaml",theme:"vs-light"},null,8,["modelValue"])])])])]))}});function dt(t){if(t==null)return null;const n=Number(typeof t=="string"?t.trim():t);return Number.isFinite(n)?n:null}function ut(t){if(!t)return null;if(Array.isArray(t)&&t.length>=2){const n=dt(t[0]),o=dt(t[1]);return n!=null&&o!=null?[n,o]:null}if(typeof t=="object"){const n=t;if(Array.isArray(n.coordinates))return ut(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=dt(o),a=dt(l);if(r!=null&&a!=null)return[r,a]}}if(typeof t=="string"&&t.includes(",")){const[n,o]=t.split(","),l=dt(n),r=dt(o);return l!=null&&r!=null?[l,r]:null}return null}const Io=Symbol("MapContext");function mu(t){const n=e.shallowRef(null),o=e.ref(!1);let l=!1;const r=[],a=()=>{l=!0,r.length&&r.forEach(f=>f())},i=()=>{const f=t.container;return typeof f=="string"?document.getElementById(f):(f==null?void 0:f.value)!==void 0?f.value:f},s=()=>l?Promise.resolve():new Promise(f=>r.push(f)),g=(f,u)=>{if(f==null)return u;const p=Number(typeof f=="string"?f.trim():f);return Number.isFinite(p)?p:u},y=async()=>{var S,T,P,N,V,C,F;if(typeof window>"u"||n.value)return;const f=i();if(!f)throw new Error("Map container not found");const u=t.settings||null,p=ut((S=u==null?void 0:u.map)==null?void 0:S.center)||[30,50],m=g((T=u==null?void 0:u.map)==null?void 0:T.zoom,7),h=g((P=u==null?void 0:u.map)==null?void 0:P.maxZoom,20),x={...{attributionControl:!1,center:p,zoom:m,maxZoom:h,minZoom:4},...t.mapOptions||{},container:f};x.maxZoom==null&&(x.maxZoom=h),n.value=new maplibregl.Map(x),(N=t.controls)!=null&&N.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"),(C=t.controls)!=null&&C.fullscreen&&n.value.addControl(new maplibregl.FullscreenControl,"top-right"),(F=t.controls)!=null&&F.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()})},b=()=>{n.value&&(n.value.remove(),n.value=null,o.value=!1)};e.onMounted(y),e.onUnmounted(b);const c={map:n,ready:s,flyTo:f=>{var u;return(u=n.value)==null?void 0:u.flyTo(f)},fitBounds:(f,u)=>{var p;return(p=n.value)==null?void 0:p.fitBounds(f,u)},setCenter:f=>{var u;return(u=n.value)==null?void 0:u.setCenter(f)},setZoom:f=>{var u;return(u=n.value)==null?void 0:u.setZoom(f)},addControl:(f,u)=>{var p;return(p=n.value)==null?void 0:p.addControl(f,u)},removeControl:f=>{var u;return(u=n.value)==null?void 0:u.removeControl(f)},on:(f,u,p)=>{var m,h;return typeof u=="string"?((m=n.value)==null||m.on(f,u,p),()=>{var d;return(d=n.value)==null?void 0:d.off(f,u,p)}):((h=n.value)==null||h.on(f,u),()=>{var d;return(d=n.value)==null?void 0:d.off(f,u)})},off:(f,u,p)=>{var m,h;typeof u=="string"?(m=n.value)==null||m.off(f,u,p):(h=n.value)==null||h.off(f,u)},project:f=>{var u;return(u=n.value)==null?void 0:u.project(f)},unproject:f=>{var u;return(u=n.value)==null?void 0:u.unproject(f)}};return e.provide(Io,c),c}function Ce(t){if(t)return{map:t,flyTo:t.value.flyTo,fitBounds:t.value.fitBounds};const n=e.inject(Io);if(!n)throw new Error("useMap() called outside of a Map provider");return n}const fu=["Noto Sans Regular"],gu=12,yu="#0f172a",hu="#fff",xu=14;function xe(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 bu(t){return t?Array.isArray(t)?t:[t]:fu}function on(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 ku(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 wu(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 _u(t,n={}){if(!t)return[];const o=xe(t,["text-field","textField","textFieldValue","labelText","label"]);if(!o)return[];const l=ku(o);if(!l)return[];const r=l,a=(n.geometry||t.type||"point").toString().toLowerCase(),i=xe(t,["text-font","textFont"]),s=on(xe(t,["text-size","textSize"]),gu),g=xe(t,["text-allow-overlap","textAllowOverlap"]),y=xe(t,["text-minzoom","textMinZoom","textZoom","text-zoom"]),b=xe(t,["text-maxzoom","textMaxZoom","maxzoom"]),c=xe(t,["text-color","textColor"])||yu,f=xe(t,["text-halo-color","textHaloColor"])||hu,u=xe(t,["text-halo-width","textHaloWidth"]),p=xe(t,["text-halo-blur","textHaloBlur"]),m=xe(t,["text-offset","textOffset"]),h=xe(t,["text-anchor","textAnchor"]),d=xe(t,["text-justify","textJustify"]),x=xe(t,["text-letter-spacing","textLetterSpacing"]),S=xe(t,["text-transform","textTransform"]),T=xe(t,["symbol-placement","symbolPlacement"]),P=xe(t,["symbol-spacing","symbolSpacing"]),N=xe(t,["text-rotation-alignment","textRotationAlignment"]),V=xe(t,["text-pitch-alignment","textPitchAlignment"]),C=xe(t,["text-opacity","textOpacity"]),F={"text-field":r,"text-font":bu(i),"text-size":s,"text-allow-overlap":g??!1};m&&(F["text-offset"]=m),a!=="line"&&(F["text-anchor"]=h??"center"),d&&(F["text-justify"]=d),x!==void 0&&(F["text-letter-spacing"]=x),S&&(F["text-transform"]=S),P!==void 0&&(F["symbol-spacing"]=P),a==="line"?(F["symbol-placement"]=T||"line",F["text-rotation-alignment"]=N||"map",F["text-pitch-alignment"]=V||"map"):(N&&(F["text-rotation-alignment"]=N),V&&(F["text-pitch-alignment"]=V),T&&(F["symbol-placement"]=T)),h&&a==="line"&&(F["text-anchor"]=h);const I={"text-color":c,"text-opacity":C??1};I["text-halo-color"]=f,u!==void 0&&(I["text-halo-width"]=u),p!==void 0&&(I["text-halo-blur"]=p);const q={type:"symbol",layout:F,paint:I},U=on(y,xu);if(q.minzoom=U,b!==void 0){const $=on(b,void 0);$!==void 0&&(q.maxzoom=$)}const D=wu(n.filter,n.excludeClusters);return D&&(q.filter=D),[q]}const ln=new Map,rn={};function an(t){if(t.colorAttr&&t.colors){const n=Object.entries(t.colors).flat();return["match",["get",t.colorAttr],...n,ct]}return null}function Eu(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 pt(t,n){n&&(Array.isArray(n)?t.push(...n):t.push(n))}function Nu(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],y={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}},b={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[y,b,c]}function zo(t,n){const o=an(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||ct,"circle-stroke-width":t.width||1,"circle-radius":t.radius||5}},r=Nu(t,l);return r||l}function Vu(t){const n=an(t);return{type:"fill",minzoom:t.pointZoom||0,paint:{"fill-color":n||t.color||ct,"fill-opacity":t.opacity||.3,"fill-outline-color":t.stroke||ct}}}function Bu(t){return{type:"line",paint:{"line-color":an(t)||t.color||ct,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function Cu(t){const n=Eu(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 jo(t,n={}){if(!t)return[];if(!vu(t))return[];const o=[];t.icon&&pt(o,Cu(t)),t.pointZoom&&pt(o,zo(t,t.pointZoom)),t.type==="polygon"?pt(o,Vu(t)):t.type==="line"?pt(o,Bu(t)):pt(o,zo(t));const r=n.sourceType!=="raster"?_u(t,{geometry:t.type||"point",filter:t.filter,excludeClusters:!!t.clusterZoom}):[];return pt(o,r),o.filter(Boolean)}function vu(t){return t?!!(new Set(["point","line","polygon"]).has(t.type)||t.icon||t.attrType||t.color||t.stroke||t.radius||t.width):!1}function Oo(t,{sourceType:n,filter:o,allowFallback:l=!1}={}){let r=nn(t);if(r&&o&&(r.filter=o),r)return jo(r,{sourceType:n});if(l&&["vector","geojson"].includes(n||"")){const a={type:"point",color:ct};return o&&(a.filter=o),jo(a,{sourceType:n})}return[]}function $u(t){return{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:t}}]}}}async function Po(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 se(t,n,o){var U,D;if(!t)return rn;if(!n)return rn[t];const{map:l,ready:r=()=>Promise.resolve()}=Ce(o),a=t||((U=n.layer)==null?void 0:U.id),i=n.sourceId??t,s={...n};s.point&&(s.source=$u(s.point)),!s.layer&&((D=s.source)==null?void 0:D.type)==="raster"&&(s.layer={id:i,type:"raster",source:i}),s.layer&&!s.layer.source&&Object.assign(s.layer,{source:i});let g=!1,y=!1;const b=()=>{var $,k,v,M,B,E,w,L,O,R;if(!(y||!l.value)){if(s.source&&!l.value.getSource(i)&&l.value.addSource(i,s.source),!l.value.getLayer(a)){const G=s.beforeId===0?(k=($=l.value.getStyle().layers)==null?void 0:$[0])==null?void 0:k.id:s.beforeId;(M=(v=s.layer)==null?void 0:v.style)!=null&&M.icon&&Po(l.value,s.layer.style.icon,s.layer.style.colors);const W=((B=s.source)==null?void 0:B.type)||((E=s.layer)==null?void 0:E.type),Y=s.layer&&(s.layer.type||s.layer.ref)?s.layer:null,le=(w=s.layer)==null?void 0:w.style,ae=((L=s.layer)==null?void 0:L["source-layer"])||((O=s.source)==null?void 0:O["source-layer"])||s.sourceLayer||i,ne=s.style||le,ie=Oo(ne,{sourceType:W,filter:(R=s.layer)==null?void 0:R.filter,allowFallback:!Y});if(!ie.length){if(Y){const ce={...Y,id:Y.id||a,source:Y.source||i};W==="vector"&&ae&&(ce["source-layer"]=ce["source-layer"]||ae),l.value.addLayer(ce,G)}return}ie.forEach((ce,$e)=>{const Se={...ce,id:`${a}${$e||""}`,source:i};W==="vector"&&ae&&(Se["source-layer"]=ae),l.value.addLayer(Se,G)})}g=!0}};r().then(b);const c=($,k)=>l.value?(l.value.on($,a,k),()=>{var v;return(v=l.value)==null?void 0:v.off($,a,k)}):()=>{},f=$=>{l.value&&l.value.getStyle().layers.filter(k=>k.source===a).forEach(k=>{l.value.setLayoutProperty(k.id,"visibility",$?"visible":"none")})},u=($=!0)=>{l.value&&(l.value.getStyle().layers.filter(k=>k.source===a).forEach(k=>{l.value.removeLayer(k.id)}),y=!0,s.source&&$&&l.value.getSource(i)&&l.value.removeSource(i))},p=async $=>{var B,E,w,L,O;if(!l.value)return;$!=null&&$.icon&&Po(l.value,$.icon,$.colors);const k=((B=s.source)==null?void 0:B.type)||((E=s.layer)==null?void 0:E.type),v=((w=s.layer)==null?void 0:w["source-layer"])||((L=s.source)==null?void 0:L["source-layer"])||s.sourceLayer||i,M=Oo($,{sourceType:k,filter:(O=s.layer)==null?void 0:O.filter,allowFallback:!0});u(!1),M.forEach((R,G)=>{var Y;const W={...R,id:`${a}${G}`,source:((Y=s.layer)==null?void 0:Y.source)||i};k==="vector"&&v&&(W["source-layer"]=W["source-layer"]||v),l.value.addLayer(W)})},m=$=>{l.value&&Object.entries($).forEach(([k,v])=>{l.value.setPaintProperty(a,k,v)})},h=($,k,v)=>{const M=l.value;if(M)switch(k){case"raster":M.setPaintProperty($,"raster-opacity",v);break;case"fill":M.setPaintProperty($,"fill-opacity",v);break;case"line":M.setPaintProperty($,"line-opacity",v);break;case"circle":M.setPaintProperty($,"circle-opacity",v);break;case"symbol":M.setPaintProperty($,"icon-opacity",v),M.setPaintProperty($,"text-opacity",v);break}},F={ids:{layerId:a,sourceId:i},isMounted:()=>{var $;return g&&!!(($=l.value)!=null&&$.getLayer(a))},setVisible:f,updatePaint:m,updateLayout:$=>{l.value&&Object.entries($).forEach(([k,v])=>{l.value.setLayoutProperty(a,k,v)})},updateFilter:$=>{l.value&&l.value.setFilter(a,$)},setOpacity:$=>{var M;if(!l.value)return;const v=(((M=l.value.getStyle())==null?void 0:M.layers)||[]).filter(B=>B.source===i);if(!v.length){const B=l.value.getLayer(a);B&&h(a,B.type,$);return}v.forEach(B=>h(B.id,B.type,$))},setData:$=>{if(!l.value)return;const k=l.value.getSource(i);k&&"setData"in k&&k.setData($)},setTiles:$=>{if(!l.value)return;const k=l.value.getSource(i);k&&"setTiles"in k&&k.setTiles($)},setStyle:p,setFilter:$=>{var v,M;if(!l.value)return;const k=l.value.getSource(i);if(k&&"setTiles"in k&&((M=(v=s.source)==null?void 0:v.tiles)!=null&&M[0])){const B=s.source.tiles[0];k.setTiles([`${B}${B.includes("?")?"&":"?"}filter=${$}`])}},setFeatureState:($,k)=>{l.value&&l.value.setFeatureState({source:i,...$},k)},removeFeatureState:($,k)=>{l.value&&l.value.removeFeatureState({source:i,...$},k?{key:k}:void 0)},remove:u,card:s.card,popup:s.popup,opts:s,getSource:()=>{var $;return($=l.value)==null?void 0:$.getSource(i)},getLayer:()=>{var $;return($=l.value)==null?void 0:$.getLayer(a)},on:c};ln.set(a,F);const I=()=>{ln.get(a)===F&&ln.delete(a)},q=F.remove;return F.remove=()=>{I(),q()},e.onBeforeUnmount(F.remove),rn[t]=F,F}const Su={class:"flex flex-col flex-1 min-h-0"},Au={class:"flex flex-col flex-1 min-h-0"},Lu=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,p=>r.value=p||[],{immediate:!0}),e.watch(r,p=>{const m=se(o.token);m&&(m.popup=p),l("update:columns",p)});const a=e.ref("list"),i=e.ref(!1),s=e.ref([]),g=[{key:"name",label:"Name",type:"main"}],y={name:{type:"text",label:"Name",disabled:!0,validators:["required"]},label:{type:"text",label:"Label",validators:["required"]},meta:{type:"radio",label:"Meta",mode:"combo",options:[{text:"Title",id:"title"},{text:"Feature",id:"feature"},{text:"Badge",id:"badge"}]},data:{type:"text",label:"Data"}};function b(){s.value=r.value.map(p=>p.name||p.id),i.value=!0}function c(){var d;const p=[...r.value],m=((d=o.fields)==null?void 0:d.filter(x=>s.value.includes(x.name)))||[],h=ot(p,m,{selectedKeys:s.value,resolveKey:x=>He(x)});r.value=h,i.value=!1,s.value=[]}function f(){i.value=!1,s.value=[]}function u(){let p=[];a.value==="all"?p=o.fields||[]:a.value==="none"?p=[]:p=r.value,p.filter(m=>!m.label).forEach(m=>m.label=m.ua),l("save",p)}return(p,m)=>(e.openBlock(),e.createElementBlock("div",Su,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:b,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:u,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",Au,[a.value==="list"?(e.openBlock(),e.createBlock(qe,{key:0,modelValue:r.value,"onUpdate:modelValue":m[0]||(m[0]=h=>r.value=h),"columns-scheme":g,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(tt,{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:f},null,8,["visible","selection","fields"])]))}}),Fu={class:"flex flex-col flex-1 min-h-0"},Mu={class:"flex justify-between mb-3 gap-2"},Tu={class:"p-4 space-y-4 text-sm"},Du={class:"space-y-1"},Iu={class:"space-y-1"},zu={class:"flex items-center gap-3"},ju={class:"flex justify-end gap-2 p-4 border-t"},Ou=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,p=>{r.value=p||[]}),e.watch(r,p=>{l("update:columns",p)});const a=e.ref(!1),i=e.ref({name:"",color:"#2E86DE"}),s=e.defineAsyncComponent(()=>import("@opengis/core").then(p=>p.VsModal)),g=[{key:"name",label:"Назва"},{key:"color",label:"Колір",type:"color"}],y={name:{type:"text",label:"Назва",validators:["required"]},color:{type:"color",label:"Колір",validators:["required"]}};function b(p){p&&c(),a.value=p}function c(){i.value={name:"",color:"#2E86DE"}}function f(){var d,x;const p=(d=i.value.name)==null?void 0:d.trim();if(!p){re.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const m=((x=i.value.color)==null?void 0:x.trim())||"#2E86DE";if(r.value.some(S=>He(S)===He({name:p}))){re.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}r.value=[...r.value,{name:p,color:m}],c(),a.value=!1}function u(){l("save",r.value)}return(p,m)=>(e.openBlock(),e.createElementBlock("div",Fu,[e.createElementVNode("div",Mu,[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:u,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(qe,{modelValue:r.value,"onUpdate:modelValue":m[1]||(m[1]=h=>r.value=h),"columns-scheme":g,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"]),e.createVNode(e.unref(s),{teleport:"#modal",visible:a.value,title:"Новий елемент легенди","onUpdate:visible":b},{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=>b(!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:f}," Додати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",Tu,[e.createElementVNode("div",Du,[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",Iu,[m[7]||(m[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Колір ",-1)),e.createElementVNode("div",zu,[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"])]))}}),Pu={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},Ru=["onClick"],Uu=["aria-checked","value"],qu={key:0},Hu=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",Pu,[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),g=>(e.openBlock(),e.createElementBlock("div",{key:g.value,onClick:y=>r(g.value),class:e.normalizeClass(["flex items-center justify-center space-x-2 rounded-lg p-2 border transition-all duration-300 cursor-pointer",[t.modelValue===g.value?"bg-gradient-to-r from-sky-200 to-blue-200 border-transparent shadow-sm":"bg-white border-gray-100 hover:border-sky-200 hover:shadow-sm"]])},[e.createElementVNode("button",{type:"button",role:"radio","aria-checked":t.modelValue===g.value,value:g.value,class:"aspect-square rounded-full border border-primary h-4 w-4 flex items-center justify-center text-sky-500"},[t.modelValue===g.value?(e.openBlock(),e.createElementBlock("span",qu,[...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,Uu),e.createElementVNode("label",{class:e.normalizeClass(["text-xs font-medium cursor-pointer",t.modelValue===g.value?"text-gray-700":"text-gray-600"])},e.toDisplayString(g.label),3)],10,Ru))),128))],2)]))}}),Wu={class:"flex flex-col flex-1 min-h-0"},Yu={class:"flex flex-col flex-1 min-h-0"},Zu=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),g=e.ref([]),y=[{key:"name",label:"Name",type:"main"}],b={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"}]},is_admin:{type:"Switcher",label:"Тільки для адміністративної частини"},data:{type:"text",label:"Data"}};function c(){g.value=a.value==="html"?[]:r.value.map(h=>h.name||h.id),s.value=!0}function f(){var S;const h=[...r.value],d=((S=o.fields)==null?void 0:S.filter(T=>g.value.includes(T.name)).map(T=>{const{type:P,format:N,...V}=T;return{...V,format:N??P??"text"}}))||[],x=ot(h,d,{selectedKeys:g.value,resolveKey:T=>He(T)});if(r.value=x,a.value==="html"&&d.length){const T=d.map(V=>{const C=V.label??"",F=V.name??V.id??"";return`<dd>${C}</dd>
|
|
130
|
+
<dt>{{ ${F} }}</dt>`}).join(`
|
|
131
|
+
`),N=(i.value??"").trimEnd();i.value=N?`${N}
|
|
132
|
+
${T}`:T}s.value=!1,g.value=[]}function u(){s.value=!1,g.value=[]}function p(){const h=a.value==="html"?"html":"list",d={card_mode:h};h==="html"?d.html=i.value:h==="list"&&(d.list=r.value),l("save","card",d)}const m=[{value:"all",label:"Всі"},{value:"list",label:"Список"},{value:"none",label:"Жодне"},{value:"html",label:"HTML"}];return(h,d)=>(e.openBlock(),e.createElementBlock("div",Wu,[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:p,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(Hu,{modelValue:a.value,"onUpdate:modelValue":d[0]||(d[0]=x=>a.value=x),options:m},null,8,["modelValue"]),e.createElementVNode("div",Yu,[a.value==="list"?(e.openBlock(),e.createBlock(qe,{key:0,modelValue:r.value,"onUpdate:modelValue":d[1]||(d[1]=x=>r.value=x),"columns-scheme":y,"form-scheme":b,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):a.value==="html"?(e.openBlock(),e.createBlock(Lt,{key:1,modelValue:i.value,"onUpdate:modelValue":d[2]||(d[2]=x=>i.value=x),language:"html",theme:"vs-light",class:"flex-1 min-h-0"},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(tt,{visible:s.value,"onUpdate:visible":d[3]||(d[3]=x=>s.value=x),selection:g.value,"onUpdate:selection":d[4]||(d[4]=x=>g.value=x),fields:t.fields,title:"Імпорт полів для картки","id-prefix":"import-card",onConfirm:f,onCancel:u},null,8,["visible","selection","fields"])]))}}),Ku={class:"flex flex-col flex-1 min-h-0"},Gu=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,p=>r.value=p||[],{immediate:!0}),e.watch(r,p=>l("update:columns",p),{deep:!0,immediate:!0});const a=e.ref("list"),i=e.ref(!1),s=e.ref([]),g=[{key:"id",label:"Name"},{key:"label",label:"UA"}],y={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 b(){s.value=r.value.map(p=>p.name||p.id),i.value=!0}function c(){var d;const p=[...r.value],m=((d=o.fields)==null?void 0:d.filter(x=>s.value.includes(x.name)))||[],h=ot(p,m,{selectedKeys:s.value,resolveKey:x=>He(x)});r.value=h,i.value=!1,s.value=[]}function f(){i.value=!1,s.value=[]}function u(){let p=[];a.value==="all"?p=o.fields||[]:a.value==="none"?p=[]:p=r.value,l("save",p)}return(p,m)=>(e.openBlock(),e.createElementBlock("div",Ku,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:b,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:u,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(qe,{key:0,modelValue:r.value,"onUpdate:modelValue":m[0]||(m[0]=h=>r.value=h),"columns-scheme":g,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0),e.createVNode(tt,{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:f},null,8,["visible","selection","fields"])]))}}),Ft=e.defineComponent({__name:"MapView",setup(t,{expose:n}){var y,b;const o=e.ref(null),l=e.ref(null),r=((b=(y=e.getCurrentInstance())==null?void 0:y.appContext.config.globalProperties)==null?void 0:b.$settings)||null,a=mu({container:o,mapOptions:{style:{version:8,sources:{},layers:[]},doubleClickZoom:!1},controls:{navigation:!0,scale:!0},settings:r});async function i(){var f;await e.nextTick();const c=(f=a.map)==null?void 0:f.value;c!=null&&c.resize&&c.resize()}function s(){typeof ResizeObserver>"u"||l.value||!o.value||(l.value=new ResizeObserver(()=>{i()}),l.value.observe(o.value))}function g(){var c;(c=l.value)==null||c.disconnect(),l.value=null}return e.onMounted(()=>{i(),s(),window.addEventListener("resize",i)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",i),g()}),n({ctx:a}),(c,f)=>(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))}}),Xu=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleSpec:{}},setup(t,{expose:n}){var p,m,h,d;const{map:o,flyTo:l,setZoom:r}=Ce(),a=((m=(p=e.getCurrentInstance())==null?void 0:p.appContext.config.globalProperties)==null?void 0:m.$settings)||null,i=t,s=i.id;String(i.id);const g=`${location.origin}/api/vtile/${i.id}/ua/{z}/{x}/{y}.vmt?all=1`,y=se(s,{source:{type:"vector",tiles:[g],minzoom:0,maxzoom:14},popup:i.layer.popup,layer:{style:(h=i.layer)==null?void 0:h.style}});n({layerHandle:y}),l({center:i.layer.center||((d=a==null?void 0:a.map)==null?void 0:d.center)||[30,50],animate:!1});let b=null;function c(){if(!(y!=null&&y.setTiles))return;const x=g.includes("?")?"&":"?",S=`${g}${x}_=${Date.now()}`;y.setTiles([S])}function f(){b&&clearTimeout(b),b=setTimeout(()=>{b=null,u().catch(x=>console.error("Failed to update map layer",x))},300)}async function u(){o.value&&(c(),y.setStyle(i.styleSpec??null))}return e.watch(()=>i.styleSpec,f,{deep:!0}),e.onBeforeUnmount(()=>{y.remove()}),(x,S)=>null}}),kt=e.ref(null);function Ju(){kt.value=null}function Qu(t){const n=e.ref(!1),o=()=>typeof t=="string"?t:t.value;e.watch(kt,i=>{i!==o()&&n.value&&(n.value=!1)});function l(){kt.value=o(),n.value=!0}function r(){kt.value===o()&&(kt.value=null),n.value=!1}function a(){n.value?r():l()}return{isOpen:n,open:l,close:r,toggle:a}}const ep={class:"map-filter"},tp={class:"map-filter__header"},np={class:"map-filter__title"},op={"aria-hidden":"true"},sn="#map-filter-popover-host",Mt=Q(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 w;return((w=o.layer)==null?void 0:w.id)??""}),r=e.computed(()=>`filter-popover-${l.value}`),{isOpen:a,close:i,toggle:s}=Qu(r),g=e.reactive({top:0,left:0,transform:"translateX(-50%)"}),y=e.ref(null),b=e.ref(null);let c=null;const f=e.ref({}),u=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0}),p=e.computed(()=>a.value),m=e.computed(()=>{var w;return Array.isArray((w=o.layer)==null?void 0:w.filters)?o.layer.filters:[]}),h=e.computed(()=>m.value.length>0),d=e.computed(()=>{var w;return((w=o.layer)==null?void 0:w.name)??""}),x=e.computed(()=>m.value),S=e.ref(null),T=e.computed(()=>m.value.length),P=e.computed(()=>T.value<=2),N=e.computed(()=>P.value?"body":typeof window>"u"||S.value?sn:"body"),V=e.computed(()=>{if(!p.value||!P.value)return{};const w=typeof window<"u"?window.innerWidth:280,O=Math.max(280,w-16*2);return{position:"absolute",top:`${g.top}px`,left:`${g.left}px`,transform:g.transform,zIndex:1e3,width:"280px",maxWidth:`${O}px`}});function C(){i()}function F(w,L,O=8){const R=window.scrollY+O,G=window.scrollY+window.innerHeight-O;let W=w;return W+L>G&&(W=G-L),W<R&&(W=R),W}function I(){var le,ae,ne;if(!y.value||!P.value)return;const w=y.value.getBoundingClientRect(),L=window.scrollX+8,O=window.scrollX+window.innerWidth-8,R=((le=b.value)==null?void 0:le.offsetWidth)||280,G=((ae=b.value)==null?void 0:ae.offsetHeight)||0;let W=0,Y=0;if((ne=o.catalogAnchor)!=null&&ne.value){const ie=o.catalogAnchor.value.getBoundingClientRect(),ce=ie.top+window.scrollY;W=F(ce,G,8);const $e=ie.right+window.scrollX+12,Se=O-R,De=L;Y=Math.min(Math.max($e,De),Math.max(De,Se))}else{const ie=w.bottom+window.scrollY+8;W=F(ie,G,8);let ce=w.left+window.scrollX;ce<L&&(ce=L),ce+R>O&&(ce=Math.max(L,O-R)),Y=ce}g.left=Y,g.top=W,g.transform="none"}function q(){P.value||E(),s(),a.value&&P.value&&e.nextTick(()=>{I(),M(),requestAnimationFrame(()=>I())})}function U(){o.disabled||q()}e.watch(p,w=>{w&&P.value?e.nextTick(()=>{I(),M(),requestAnimationFrame(()=>I())}):(B(),P.value||E())}),e.watch(x,()=>{!p.value||!P.value||e.nextTick(()=>I())},{deep:!0}),e.watch(P,w=>{p.value&&(w?e.nextTick(()=>{I(),M()}):(B(),E()))}),e.watch(()=>o.disabled,w=>{w&&(i(),f.value={})});function D(){!p.value||!P.value||I()}function $(w){const L=l.value;if(!L)return;const O=se(L);if(!(O!=null&&O.setFilter))return;f.value=w;const R=Object.entries(w).map(([G,W])=>`${G}=${W}`).join("|");O.setFilter(R)}function k(w){if(!o.disabled)return;const L=w.currentTarget;if(!L)return;const O=L.getBoundingClientRect();u.left=O.left+O.width/2+window.scrollX,u.top=O.bottom+8+window.scrollY,u.visible=!0}function v(){u.visible=!1}e.onMounted(()=>{E(),window.addEventListener("resize",D),window.addEventListener("scroll",D,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",D),window.removeEventListener("scroll",D,!0),B()});function M(){B(),!(!b.value||!P.value)&&(c=new ResizeObserver(()=>{!p.value||!P.value||I()}),c.observe(b.value))}function B(){c&&(c.disconnect(),c=null)}function E(){typeof window>"u"||typeof document>"u"||(S.value=document.querySelector(sn))}return(w,L)=>h.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mapLayer-filter",ref_key:"anchor",ref:y},[e.createElementVNode("a",{class:e.normalizeClass(["mapLayer-filter__trigger",{"mapLayer-filter__trigger--disabled":o.disabled}]),href:"#",onClick:e.withModifiers(U,["prevent","stop"]),onMouseenter:k,onMouseleave:v,onFocus:k,onBlur:v},[...L[2]||(L[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),p.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:N.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":!P.value}]),style:e.normalizeStyle(V.value),ref_key:"panel",ref:b,onClick:L[1]||(L[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ep,[e.createElementVNode("div",tp,[e.createElementVNode("h3",np,e.toDisplayString(d.value||"Фільтр"),1),e.createElementVNode("button",{type:"button",class:"map-filter__close",onClick:C},[e.createElementVNode("span",op,[e.createVNode(e.unref(Pt),{class:"h-4 w-4"})]),L[3]||(L[3]=e.createElementVNode("span",{class:"sr-only"},"Закрити",-1))])]),e.createVNode(e.unref(n),{view:"inline",schema:x.value,value:f.value,limit:10,onChange:L[0]||(L[0]=O=>$(O.data)),width:250},null,8,["schema","value"])])],6)],8,["to"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[u.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${u.top}px`,left:`${u.left}px`})},e.toDisplayString(u.text),5)):e.createCommentVNode("",!0)]))],512)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-3e84c1ab"]]),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"},cn=Q(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(Mt,{layer:{filters:t.filters,id:t.layerId},count:t.filters.length},null,8,["layer","count"])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-d244723f"]]),rp={class:"flex flex-row gap-x-3 z-10 relative widget"},ap=["onClick"],ip=["src","alt"],wt=e.defineComponent({__name:"BaseMaps",setup(t){var u,p,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 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,d){let x=h||`layers-${Object.keys(d).length}`,S=1;for(;d[x];)x=`${h}-${S}`,S+=1;return x}const a=e.getCurrentInstance(),i=(u=a==null?void 0:a.appContext.config.globalProperties)==null?void 0:u.$settings,s=i==null?void 0:i.map,g=e.computed(()=>{const h=Array.isArray(s==null?void 0:s.basemaps)?s==null?void 0:s.basemaps:[];if(!h.length)return{};const d={};return h.forEach((x,S)=>{const T=x.name??x.title??`basemap-${S}`,P=(x.id??T??`basemap-${S}`).toString().toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,""),N=r(P||`basemap-${S}`,d),V=x.preview||(x.url?l(x.url):void 0);d[N]={url:x.url,preview:V,title:T}}),d}),y=e.computed(()=>{const h=g.value;return Object.keys(h).length?h:n}),b=e.ref(Object.keys(y.value)[0]??"gki"),c=se("base",{source:{type:"raster",tiles:(p=y.value[b.value])!=null&&p.url?[(m=y.value[b.value])==null?void 0:m.url]:[]},beforeId:0});function f(h){if(!y.value[h])return;b.value=h;const d=y.value[h];if(!(d!=null&&d.url)){c.setVisible(!1);return}c.setVisible(!0),c.setTiles([d.url])}return e.watch(()=>y.value,h=>{h[b.value]||(b.value=Object.keys(h)[0]??b.value);const d=h[b.value];d!=null&&d.url?(c.setVisible(!0),c.setTiles([d.url])):c.setVisible(!1)},{immediate:!0}),(h,d)=>(e.openBlock(),e.createElementBlock("div",rp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,(x,S)=>(e.openBlock(),e.createElementBlock("div",{key:S,onClick:T=>f(S)},[S!=="none"&&x.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",b.value===S?"border-blue-500":"border-gray-200"])},[x.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:x.preview,alt:x.title,class:"object-cover rounded-lg lg:w-12 lg:h-12 w-8 h-8"},null,8,ip)):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",b.value===S?"border-blue-500":"border-gray-200"])},[e.createVNode(e.unref(bl),{class:"w-4 h-4 text-gray-500"})],2))],8,ap))),128))]))}}),sp={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%"}},cp={class:"flex flex-col gap-1 p-5"},dp={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},_t=e.defineComponent({__name:"MapLegendWidget",props:{items:{}},setup(t){const n=t,{map:o,ready:l}=Ce(),r=e.ref([]);let a=null;function i(b){return b?b.map((c,f)=>{var m;const u=(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 ${f+1}`,p=(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:`${u}-${f}`,label:u,color:p}}):[]}function s(b){return b!=null&&b.layers?b.layers.filter(c=>{const f=c.paint||{};return f["fill-color"]||f["line-color"]||f["circle-color"]}).map((c,f)=>{var m;const u=c.paint||{},p=u["fill-color"]||u["line-color"]||u["circle-color"]||"#3388ff";return{id:c.id||`layer-${f}`,label:((m=c.metadata)==null?void 0:m.title)||c.id||`Layer ${f+1}`,color:p}}):[]}async function g(){var f;await l();const b=o.value;if(!b)return;const c=(f=b.getStyle)==null?void 0:f.call(b);r.value=s(c)}function y(){o.value&&(a==null||a())}return e.watch(()=>n.items,async b=>{b!=null?(r.value=i(b),a==null||a()):(await l(),y(),g())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(n.items===void 0||n.items===null)&&(await l(),y(),g())}),e.onBeforeUnmount(()=>{a==null||a(),a=null}),(b,c)=>r.value.length?(e.openBlock(),e.createElementBlock("div",sp,[e.createElementVNode("div",cp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,f=>(e.openBlock(),e.createElementBlock("div",{key:f.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:f.color})},null,4),e.createElementVNode("span",dp,[e.createElementVNode("span",null,e.toDisplayString(f.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function up(){const{map:t,ready:n}=Ce(),o=e.ref(null),l=e.ref(null),r=e.ref(null),a=e.ref(null);let i=[];function s(){i.forEach(u=>u()),i=[]}const g=u=>{const p=(u==null?void 0:u.properties)||{};return!!(p.cluster||p.point_count||p.point_count_abbreviated)},y=u=>{var d,x;o.value=[u.point.x,u.point.y];const p=t.value.queryRenderedFeatures(u.point);if(!(p!=null&&p.length)){b();return}const m=p.find(S=>!g(S));if(!m){b();return}const h=se(m.source)||se((d=m.layer)==null?void 0:d.id);h!=null&&h.popup&&(l.value=((x=h.popup)==null?void 0:x.fields)||h.popup,a.value=m.properties)},b=()=>{l.value=null,a.value=null,o.value=null};async function c(){await n(),t.value&&(s(),t.value.on("mousemove",y),t.value.on("mouseleave",b))}function f(){s(),l.value=null,a.value=null,o.value=null}return n().then(c),{popupCoords:o,popupFields:l,popupValues:a,disable:f,title:r}}const pp={class:"min-w-[200px] max-w-[280px] rounded-lg border border-slate-200 bg-white/90 p-3 text-xs shadow-lg backdrop-blur"},mp={class:"space-y-1.5"},fp={class:"font-bold text-slate-700"},gp={class:"text-slate-700"},Ro=e.defineComponent({__name:"MapPopup",setup(t){const{popupCoords:n,popupFields:o,popupValues:l,disable:r}=up(),{map:a}=Ce(),i=e.ref(null),s=e.ref({left:"-9999px",top:"-9999px"}),g=new Intl.NumberFormat("uk-UA",{maximumFractionDigits:2});function y(m,h){if(h==null||h==="")return h;if((m==null?void 0:m.type)==="number"){const d=typeof h=="number"?h:Number(h);if(Number.isFinite(d))return g.format(d)}return h}function b(m,h,d){const x=m.name||m.label||m.title||`field-${d}`,S=m.label||m.title||m.name||x,T=m.name?h[m.name]:void 0,N=(m.name?h[`${m.name}_text`]:void 0)??T??m.value??null;return{key:x,label:S,value:y(m,N)}}const c=e.computed(()=>{const m=o.value||[],h=l.value||{};return m.filter(d=>(d==null?void 0:d.meta)!=="title").map((d,x)=>b(d,h,x)).filter(d=>d.label)}),f=e.computed(()=>{const m=o.value||[],h=l.value||{},d=m.find(x=>(x==null?void 0:x.meta)==="title");return d?b(d,h,0):null}),u=e.computed(()=>{var h;const m=c.value;return(h=f.value)!=null&&h.value?[{...f.value,key:`${f.value.key}-title`,label:"Назва"},...m]:m});function p(){var B,E;if(!u.value.length||!n.value||!i.value){s.value={left:"-9999px",top:"-9999px"};return}const m=i.value,h=m.offsetParent||null,d=(h==null?void 0:h.getBoundingClientRect())??{left:0,top:0,width:window.innerWidth,height:window.innerHeight},x=((E=(B=a.value)==null?void 0:B.getContainer)==null?void 0:E.call(B))||void 0,S=(x==null?void 0:x.getBoundingClientRect())??d,T=S.left-d.left,P=S.top-d.top,N=m.offsetWidth||0,V=m.offsetHeight||0,C=12,F=8,[I,q]=n.value;let U=T+I+C,D=P+q+C;U+N+F>d.width&&(U=T+I-N-C),D+V+F>d.height&&(D=P+q-V-C);const $=F,k=F,v=Math.max(F,d.width-N-F),M=Math.max(F,d.height-V-F);U=Math.min(Math.max(U,$),v),D=Math.min(Math.max(D,k),M),s.value={left:`${U}px`,top:`${D}px`}}return e.watch([n,u],()=>{e.nextTick(()=>p())}),e.onMounted(()=>{window.addEventListener("resize",p)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",p),r()}),(m,h)=>u.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",pp,[e.createElementVNode("div",mp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.key,class:"flex flex-col"},[e.createElementVNode("span",fp,e.toDisplayString(d.label),1),e.createElementVNode("span",gp,e.toDisplayString(d.value??"—"),1)]))),128))])])],4)):e.createCommentVNode("",!0)}});function yp(){const{map:t,ready:n}=Ce(),o=we.useRoute(),l=we.useRouter(),r=e.ref(null),a=e.ref(null),i=e.ref(null),s=e.ref(!1),g=e.ref([]),y=e.ref(0),b=e.computed(()=>g.value.length),c=e.computed(()=>s.value||!!r.value||!!i.value);let f=null,u=!1;function p(){r.value=null,a.value=null,i.value=null,s.value=!1,g.value=[],y.value=0}function m(){if(f){try{f()}catch{}f=null}}async function h(){await n();const U=t.value;U&&(m(),p(),U.on("click",d),f=()=>U.off("click",d),q(C()))}function d(U){const D=t.value;if(!D)return;const $=(D.queryRenderedFeatures(U.point)||[]).filter(k=>{var v;return(v=k==null?void 0:k.properties)==null?void 0:v.id});if(!$.length){p(),I(null);return}g.value=$,y.value=0,x(y.value)}function x(U){const D=g.value[U];if(!D)return;y.value=U;const $=se(D.source);P(D,$==null?void 0:$.card)}function S(){y.value>=g.value.length-1||x(y.value+1)}function T(){y.value<=0||x(y.value-1)}async function P(U,D){var v,M,B,E;if(!((v=U==null?void 0:U.properties)!=null&&v.id))return;const $=new URLSearchParams;$.set("layer",U.source),$.set("id",String((M=U.properties)==null?void 0:M.id));const k=Array.isArray(D)&&D.length>0;s.value=k,i.value=null,r.value=null,a.value=U||null;try{const w=await fetch(`/api/map-format?${$.toString()}`);if(!w.ok)throw new Error(`Failed (${w.status})`);const L=await w.json(),O=Array.isArray(L.columns)?L.columns:[],R=Array.isArray(D)?D:[];if(!O.length&&!R.length){console.error("Configure layer in admin"),N();return}r.value={rows:L.rows||{},fields:R,columns:O,html:L.html||null},u||I(a.value);const G=(B=L.rows)==null?void 0:B.geom;if(G){const W=typeof G=="string"?JSON.parse(G):G;W&&(a.value={...a.value,geometry:W,properties:{...((E=a.value)==null?void 0:E.properties)||{},geom:W,geom_4326:W}})}}catch(w){console.error("Failed to load feature card:",w),N()}finally{s.value=!1}}function N(){p(),I(null)}function V(){m(),p()}n().then(h),e.onBeforeUnmount(()=>V());function C(){const U=Array.isArray(o.query.info)?o.query.info[0]:o.query.info;return typeof U!="string"?null:U.trim()||null}function F(U){var v,M;const D=(U==null?void 0:U.source)??((v=U==null?void 0:U.layer)==null?void 0:v.id),$=(M=U==null?void 0:U.properties)==null?void 0:M.id;return!D||$===void 0||$===null?null:`${D},${$}`.trim()||null}function I(U){const D=F(U),$=C();if(D===$)return;const k={...o.query};D?k.info=D:delete k.info,l.push({query:k}).catch(()=>{})}async function q(U){if(!U){p();return}if(U===F(a.value))return;const[D,$]=U.split(","),k=D==null?void 0:D.trim(),v=$==null?void 0:$.trim();if(!k||!v){p(),I(null);return}u=!0;try{const M={source:k,properties:{id:v}};g.value=[M],y.value=0;const B=se(k);await P(M,B==null?void 0:B.card)}finally{u=!1}}return e.watch(()=>C(),U=>{U!==F(a.value)&&(u=!0,q(U).finally(()=>{u=!1}))}),{card:r,cardFeature:a,cardError:i,cardLoading:s,isOpen:c,close:N,next:S,prev:T,count:b,index:y}}function hp(){const{map:t,ready:n}=Ce(),o=e.ref([]),l=e.ref(0),r=e.ref(0),a=e.ref(!1),i=e.ref(null),s=e.ref({}),g=e.ref(null),y=e.ref([]),b=e.computed(()=>o.value[r.value]||null),c=e.computed(()=>o.value.length>0);let f=null;const u=()=>{f==null||f.remove(),f=null},p=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?p(C.geometry):null:null,m=()=>({type:"line",color:"#0a57ff",width:4,opacity:.95}),h=C=>Number(C.toFixed(5)),d=async C=>{if(await n(),!t.value)return;const F=p(C);F&&(u(),f=se("feature-highlight",{source:{type:"geojson",data:F},style:m()},t))},x=async(C,F,I)=>{var D,$;const[q,U]=[h(C),h(F)];g.value={x:q,y:U},y.value=I,a.value=!0,i.value=null,o.value=[],s.value={},r.value=0;try{const k=I.map(async w=>{const L=`/api/map-info-point?x=${q}&y=${U}&layers=${w}`,O=await fetch(L);if(!O.ok)return null;const R=await O.json();if(!R.count)return null;const W=await(await fetch(`${L}&index=0`)).json();return{layerId:w,data:W,count:R.count}}),M=(await Promise.all(k)).filter(Boolean);if(M.length===0){l.value=0;return}o.value=M.map(w=>w.data);const[B]=o.value;l.value=M.reduce((w,L)=>w+(L.count||0),0),s.value[0]=B;const E=((D=B==null?void 0:B.data)==null?void 0:D.geom_4326)??(($=B==null?void 0:B.data)==null?void 0:$.geom);await d(E)}catch(k){i.value=k.message}finally{a.value=!1}},S=async C=>{if(!g.value||!y.value.length)return;if(s.value[C]){o.value[C]=s.value[C];return}const{x:F,y:I}=g.value,q=y.value.join(","),U=`/api/map-info-point?x=${F}&y=${I}&index=${C}&layers=${q}`;try{a.value=!0;const D=await fetch(U);if(!D.ok)throw new Error("Failed to fetch feature by index");const $=await D.json();o.value[C]=$,s.value[C]=$}catch(D){i.value=D.message}finally{a.value=!1}},T=async()=>{r.value<l.value-1&&(r.value+=1,s.value[r.value]||await S(r.value))},P=async()=>{r.value>0&&(r.value-=1,s.value[r.value]||await S(r.value))},N=()=>{o.value=[],l.value=0,r.value=0,s.value={},g.value=null,y.value=[],u()};e.watch(r,async()=>{var F,I;const C=b.value;if(C){const q=((F=C==null?void 0:C.data)==null?void 0:F.geom_4326)??((I=C==null?void 0:C.data)==null?void 0:I.geom);await d(q)}});let V=null;return e.onMounted(async()=>{await n(),t.value&&(V=async C=>{const{lng:F,lat:I}=C.lngLat,q=se(),D=Object.entries(q).map(([$,k])=>{var v,M,B,E;return{id:$,service:((v=k==null?void 0:k.opts)==null?void 0:v.service)??((B=(M=k==null?void 0:k.opts)==null?void 0:M.source)==null?void 0:B.service)??null,count:((E=k==null?void 0:k.opts)==null?void 0:E.count)??null,visible:(()=>{var w;try{return((w=t.value)==null?void 0:w.getLayer($))?t.value.getLayoutProperty($,"visibility")!=="none":!0}catch{return!0}})()}}).filter($=>$.service==="ogc"&&$.visible).map($=>$.id);D.length>0&&await x(F,I,D)},t.value.on("dblclick",V))}),e.onBeforeUnmount(()=>{t.value&&V&&t.value.off("dblclick",V),u()}),{features:o,count:l,index:r,current:b,loading:a,error:i,active:c,next:T,prev:P,close:N}}const Uo=e.defineComponent({__name:"LayerSwitcher",props:{title:{},url:{},id:{},buttonText:{}},emits:["activate"],setup(t,{emit:n}){const o=t,l=n;function r(y){const b=y.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(b)return b;const c=Array.from(y).map(f=>f.charCodeAt(0).toString(16)).join("").slice(0,8);return c?`layer-${c}`:"layer-temp"}const a=e.computed(()=>{var y;return((y=o.id)==null?void 0:y.trim())||r(o.title)}),i=e.computed(()=>o.buttonText||"Показати шар");function s(){return{id:a.value,title:o.title,url:o.url}}function g(){l("activate",s())}return(y,b)=>(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:g},[e.renderSlot(y.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(i.value),1)])]))}}),Le=e.ref([]);function xp(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 dn(t){return t==null?"":String(t).trim()}function un(t){var n,o;(o=(n=t==null?void 0:t.handle)==null?void 0:n.remove)==null||o.call(n)}function bp(t){return t?typeof(t==null?void 0:t.value)<"u"?t.value:t:null}function kp(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 qo(t){function n(a,i={},s,g){var x,S;const y=dn(a==null?void 0:a.id),b=((x=a==null?void 0:a.title)==null?void 0:x.trim())||y,c=((S=a==null?void 0:a.url)==null?void 0:S.trim())||"";if(!y||!c)return;const f=xp(c,i);if(!f)return;const u=g??t;if(!u)return;const p=bp(u);if(!p)return;const m=Le.value.findIndex(T=>T.id===y);m!==-1&&(un(Le.value[m]),Le.value.splice(m,1));let h=null;const d=a.beforeId??kp(p);try{h=se(y,{source:{type:"raster",tiles:[f],tileSize:a.tileSize??256,minzoom:a.minzoom??0,maxzoom:a.maxzoom??19},layer:{id:y,type:"raster",source:y,paint:{"raster-opacity":a.opacity??.85}},beforeId:d},u)}catch(T){const P=(T==null?void 0:T.message)??"";if(!(typeof P=="string"&&P.includes("Map provider")))throw T;return}Le.value=[...Le.value,{id:y,title:b,originalUrl:c,resolvedUrl:f,owner:s??null,handle:h??null}]}function o(a,i){const s=dn(a);if(!s)return;const g=Le.value.findIndex(b=>b.id===s&&(!i||b.owner===i));if(g===-1)return;const[y]=Le.value.splice(g,1);un(y)}function l(a){if(!Le.value.length)return;const i=[];Le.value.forEach(s=>{(a?s.owner===a:!0)?un(s):i.push(s)}),Le.value=i}function r(a,i){const s=dn(a);return s?Le.value.some(g=>g.id===s&&(!i||g.owner===i)):!1}return{temporaryLayers:Le,activateTemporaryLayer:n,deactivateTemporaryLayer:o,clearTemporaryLayers:l,isTemporaryLayerActive:r}}const wp={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"},_p={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},Ep={class:"min-w-0 flex-1"},Np={class:"text-base font-semibold text-slate-900 truncate"},Vp={key:0,class:"flex gap-1 mt-1"},Bp=["disabled"],Cp=["disabled"],vp={key:1,class:"flex gap-1 mt-1"},$p=["disabled"],Sp=["disabled"],Ap={class:"flex-1 overflow-y-auto px-4 py-3 space-y-4 text-sm text-slate-700"},Lp={key:0,class:"text-center text-xs text-slate-500"},Fp={key:1,class:"text-center text-xs text-red-500"},Mp={key:0,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},Tp={class:"divide-y divide-gray-100 py-[5px]"},Dp={class:"text-gray-900 font-normal"},Ip={key:1,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},zp=["innerHTML"],jp=["innerHTML"],Op={key:2,class:"space-y-3 border-t border-slate-200 pt-3"},Pp={key:3,class:"border-t border-slate-100 px-4 py-2 text-right text-xs text-slate-500"},Rp={class:"text-xs tracking-[0.02em] leading-none"},Up={key:4,class:"space-y-3 border-t border-slate-200 pt-3"},qp={class:"space-y-1"},Hp={class:"flex items-center cursor-pointer gap-2 flex-1"},Wp=["checked","onChange"],Yp={class:"text-[13px] text-gray-600"},Zp={key:0,class:"text-right text-xs text-gray-400 truncate max-w-[40%]"},Kp={key:5,class:"text-center text-xs text-slate-400"},Gp="map:temporary-layer-request",Xp=14,Ho=Q(e.defineComponent({__name:"MapCardWidget",props:{mapId:{}},setup(t){var Ot,il;const n=t,o=yp(),l=hp(),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),g=e.computed(()=>{var _,A;return r.value?((_=l.current.value)==null?void 0:_.html)||null:((A=o.card.value)==null?void 0:A.html)||null}),y=Ce(),b=we.useRoute(),{activateTemporaryLayer:c,deactivateTemporaryLayer:f,clearTemporaryLayers:u,isTemporaryLayerActive:p}=qo(y.map);function m(_){window.dispatchEvent(new CustomEvent(Gp,{detail:_}))}const h=e.computed(()=>{var _;return((_=o.cardFeature.value)==null?void 0:_.source)??null}),d=e.computed(()=>h.value?`map-card:${h.value}`:"map-card"),x=e.computed(()=>{var K,ee;const _=o.cardFeature.value,A=(_==null?void 0:_.source)||((K=_==null?void 0:_.layer)==null?void 0:K.id),j=((ee=_==null?void 0:_.properties)==null?void 0:ee.id)??(_==null?void 0:_.id);return A&&j!=null?`${A}:${j}`:null}),S=e.ref(null),T=e.ref(null),P=e.ref(0),N=new Map;function V(){if(typeof window>"u")return null;const A=(window.location.pathname||"").match(/\/maps?\/([^/]+)/i);return A&&A[1]?A[1]:null}const C=e.computed(()=>{const _=typeof n.mapId=="string"?n.mapId.trim():"";if(_.length)return _;const A=typeof b.params.slug=="string"?b.params.slug.trim():"";if(A.length)return A;const j=typeof b.query.slug=="string"?b.query.slug.trim():"";return j.length?j:V()}),F=e.ref(null),I=e.ref(null),q=new Map;function U(_){const A=_.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(A)return A;const j=Array.from(_).map(K=>K.charCodeAt(0).toString(16)).join("").slice(0,8);return j?`layer-${j}`:`layer-${Math.random().toString(36).slice(2,8)}`}function D(_){if(typeof _!="string")return"";const A=_.trim();if(!A)return"";if(/^https?:\/\//i.test(A))return A;if(A.startsWith("//"))return typeof window>"u"?`https:${A}`:`${window.location.protocol}${A}`;const j=typeof window<"u"?window.location.origin:"";return A.startsWith("/")?j?`${j}${A}`:A:j?`${j}/${A}`:A}function $(_){const A={},j=/([:@\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;let K;for(;(K=j.exec(_))!==null;){const ee=K[1],oe=K[2]??K[3]??K[4]??"";ee&&(A[ee]=oe)}return A}function k(_,A){for(const j of A)if(_[j]!=null&&String(_[j]).trim().length)return String(_[j]).trim();return""}function v(_){if(!(_!=null&&_.length))return;const A=Number(_);return Number.isFinite(A)?A:void 0}function M(_){if(typeof _!="string"||!_.length)return[];const A=[],j=/<LayerSwitcher\b([^>]*)>([\s\S]*?)<\/LayerSwitcher>/gi;let K=0,ee;const oe=new Set,pe=me=>{let be=me,Ne=2;for(;oe.has(be);)be=`${me}-${Ne}`,Ne+=1;return oe.add(be),be};for(;(ee=j.exec(_))!==null;){const[me,be="",Ne=""]=ee,ye=ee.index;if(ye>K){const dl=_.slice(K,ye);dl.trim().length&&A.push({type:"html",content:dl})}const Me=$(be),Ae=k(Me,["title"])||"Тимчасовий шар",Ge=D(k(Me,["url"]));if(!Ge){A.push({type:"html",content:me}),K=ye+me.length;continue}const Nt=k(Me,["id"]),gn=k(Me,["button-text","buttonText","show","show-label","showLabel"]),Fh=v(k(Me,["tile-size","tileSize"])),Mh=v(k(Me,["minzoom","minZoom"])),Th=v(k(Me,["maxzoom","maxZoom"])),Dh=v(k(Me,["opacity"])),Ih=Nt||U(`${Ae}-${Ge}`)||U(Ae),sl=pe(Ih||`layer-${A.length+1}`),yn=Ne.trim(),cl=/<[^>]+>/.test(yn),zh=cl?yn:null,hn=cl?null:yn,jh=gn&&gn.trim().length?gn.trim():hn&&hn.trim().length?hn.trim():void 0;A.push({type:"layer",spec:{id:sl,title:Ae,url:Ge,tileSize:Fh,minzoom:Mh,maxzoom:Th,opacity:Dh},componentProps:{title:Ae,url:Ge,id:sl,buttonText:jh},slotText:zh}),K=ye+me.length}if(K<_.length){const me=_.slice(K);me.trim().length&&A.push({type:"html",content:me})}return!A.length&&_.trim().length&&A.push({type:"html",content:_}),A}function B(_){if(!_)return null;const A=typeof _.id=="string"?_.id.trim():"",j=typeof _.title=="string"?_.title.trim():"",K=D(typeof _.url=="string"?_.url:"");return!A||!K?null:{id:A,title:j||A,url:K,tileSize:_.tileSize,minzoom:_.minzoom,maxzoom:_.maxzoom,opacity:_.opacity}}const E=e.computed(()=>{if(r.value&&l.current.value)return l.current.value.data??{};const _=o.card.value;return(_==null?void 0:_.rows)??{}}),w=e.computed(()=>{if(r.value&&l.current.value)return l.current.value.fields??[];const _=o.card.value;if(!_)return[];const A=Array.isArray(_.columns)?_.columns:[];return A.length?A:Array.isArray(_.fields)?_.fields:[]}),L=e.computed(()=>{const _=w.value;if(!_.length)return[];const A=E.value;return _.map(j=>({key:j.name,label:j.ua||j.label||j.title||j.name,value:A[j.name]??"—",format:j.format||"text"}))}),O=new Set(["—","-","–","−"]);function R(_){if(_==null)return!0;if(typeof _=="string"){const A=_.trim();return A.length?O.has(A):!0}return!1}const G=e.ref(!1),W=e.ref(!0);if(typeof window<"u"){const _=(il=(Ot=window.localStorage)==null?void 0:Ot.getItem)==null?void 0:il.call(Ot,"cardHideEmpty"),A=typeof _=="string"&&_.toLowerCase()==="true";G.value=A,W.value=!A}const Y=e.computed(()=>L.value.filter(_=>R(_.value)).length),le=e.computed(()=>G.value&&!W.value?L.value.filter(_=>!R(_.value)):L.value);function ae(_){const A=typeof _=="string"?_:"";if(!A.length)return{sanitized:"",hiddenCount:0};if(typeof DOMParser>"u")return{sanitized:A,hiddenCount:0};const K=new DOMParser().parseFromString(A,"text/html");let ee=0;return K.querySelectorAll("dd").forEach(oe=>{var be;const pe=((be=oe.textContent)==null?void 0:be.trim())??"",me=oe.closest("div");if(R(pe)){ee+=1,me?me.remove():oe.remove();return}}),{sanitized:K.body.innerHTML,hiddenCount:ee}}const ne=e.computed(()=>ae(g.value)),ie=e.computed(()=>g.value?ne.value.hiddenCount:0),ce=e.computed(()=>Y.value+ie.value),$e=e.computed(()=>{var _;return G.value&&!W.value&&!!((_=g.value)!=null&&_.trim())}),Se=e.computed(()=>G.value&&ce.value>0),De=e.computed(()=>W.value?"Приховати пусті значення":"Показати пусті значення"),It=e.computed(()=>W.value?hl:yl);function zt(){W.value=!W.value}const Je=e.computed(()=>{const _=$e.value?ne.value.sanitized:g.value??"";return M(_)}),mt=e.computed(()=>Je.value.filter(_=>_.type==="layer"));function z(_){return Array.isArray(_)?_.map((A,j)=>{const K=D(typeof(A==null?void 0:A.url)=="string"?A.url:""),ee=typeof(A==null?void 0:A.geohub)=="string"&&A.geohub.trim().length?`/api-hub/tms/${A.geohub.trim()}/ua/{z}/{x}/{y}.png`:"",oe=((A==null?void 0:A.name)||(A==null?void 0:A.title)||(A==null?void 0:A.label)||`Шар ${j+1}`).toString(),pe=(A==null?void 0:A.id)!=null?String(A.id):U(`${oe}-${j+1}`),me=(A==null?void 0:A.buttonText)||(A==null?void 0:A.button_text)||null,be=(A==null?void 0:A.description)||(A==null?void 0:A.subtitle)||null,Ne=K||D(ee)||"";if(!Ne)return null;const ye={id:pe,title:oe,url:Ne,subtitle:be,buttonText:me||void 0};return typeof(A==null?void 0:A.tileSize)=="number"&&(ye.tileSize=A.tileSize),typeof(A==null?void 0:A.tile_size)=="number"&&(ye.tileSize=A.tile_size),typeof(A==null?void 0:A.minzoom)=="number"&&(ye.minzoom=A.minzoom),typeof(A==null?void 0:A.maxzoom)=="number"&&(ye.maxzoom=A.maxzoom),typeof(A==null?void 0:A.opacity)=="number"&&(ye.opacity=A.opacity),ye}).filter(Boolean):[]}const H=e.computed(()=>{var K,ee;const _=o.card.value,A=l.current.value,j=[(K=_==null?void 0:_.rows)==null?void 0:K.layers,_==null?void 0:_.layers,(ee=A==null?void 0:A.data)==null?void 0:ee.layers,A==null?void 0:A.layers];for(const oe of j){const pe=z(oe);if(pe.length)return pe}return[]}),J=e.computed(()=>Je.value.length>0||L.value.length>0||H.value.length>0),ge=e.computed(()=>!o.cardLoading.value&&!!o.card.value);function te(){const _={},A=F.value;if(A&&typeof A=="object"&&Object.entries(A).forEach(([j,K])=>{typeof K=="string"&&(_[j]=K)}),h.value&&(_.layer=h.value),!_.geohub){const j=typeof(A==null?void 0:A.geohub)=="string"?A.geohub:null,K=typeof(A==null?void 0:A.geohub_key)=="string"?A.geohub_key:null,ee=typeof(A==null?void 0:A.geohubId)=="string"?A.geohubId:null;_.geohub=j||K||ee||_.layer||""}return _}async function de(){const _=h.value;if(!_)return F.value=null,I.value=null,null;if(I.value===_&&F.value)return F.value;if(q.has(_)){const A=q.get(_);return F.value=A,I.value=_,A}try{const A=await fetch(`/api/gis-service/${encodeURIComponent(_)}`);if(!A.ok)return null;const j=await A.json();return q.set(_,j),F.value=j,I.value=_,j}catch{return null}}async function ue(_){if(!(_!=null&&_.id))return;await de();const A=te(),j=mt.value.find(pe=>pe.spec.id===_.id),K=H.value.find(pe=>pe.id===_.id),ee=(j==null?void 0:j.spec)||B(K)||B(_);if(!ee||p(ee.id,d.value))return;const oe=d.value||void 0;S.value=oe??null,c(ee,A,oe),m({action:"activate",owner:oe,spec:ee,context:A})}function Z(_){if(!_)return;const A=Fe()||void 0;f(_,A),m({action:"deactivate",owner:A,spec:{id:_}})}function Ie(_){return p(_,Fe())}function ze(_,A){const j=A.target;!!(j!=null&&j.checked)?ue(_):Z(_.id)}function Fe(){return S.value||d.value||null}e.watch(h,(_,A)=>{_!==A&&(F.value=null,I.value=null)});const{next:Ze,prev:Ke,count:Pe,index:je}=l,Re=e.computed(()=>o.count.value),Qe=e.computed(()=>o.index.value),el=e.computed(()=>Re.value>1),tl=e.computed(()=>r.value?Pe.value:Re.value),nl=e.computed(()=>r.value?je.value:Qe.value),ol=o.next,ll=o.prev;function et(){const _=Fe();_&&(u(_),m({action:"clear",owner:_}),S.value=null)}function Nh(){o.close(),l.close(),et()}e.watch(a,(_,A)=>{!_&&A&&(et(),Ue())});function rl(){!o.isOpen.value&&!l.active.value&&et()}e.watch(()=>o.isOpen.value,()=>{rl()}),e.watch(()=>l.active.value,()=>{rl()}),e.watch(h,(_,A)=>{_&&A&&_!==A&&et()}),e.watch(je,(_,A)=>{_!==A&&et()}),e.watch(x,(_,A)=>{_&&A&&_!==A&&et()});function Vh(_){if(!_)return null;if(_.geometry)return _.geometry;const A=(_==null?void 0:_.data)??(_==null?void 0:_.properties);return A!=null&&A.geom_4326?A.geom_4326:A!=null&&A.geom?A.geom:null}function Ue(){var _,A;(A=(_=T.value)==null?void 0:_.remove)==null||A.call(_),T.value=null}function Bh(_){var j,K,ee;const A=(_==null?void 0:_.type)||((ee=(K=(j=_==null?void 0:_.features)==null?void 0:j[0])==null?void 0:K.geometry)==null?void 0:ee.type)||"";return A.includes("Polygon")?{type:"fill",paint:{"fill-color":"#0a57ff","fill-opacity":.2,"fill-outline-color":"#0a57ff"}}:A.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 fn=null;function al(){const _=Array.isArray(b.query.info)?b.query.info[0]:b.query.info;return typeof _!="string"?null:_.trim()||null}function Ch(_){var ee,oe;if(!_)return null;const A=(_==null?void 0:_.source)??((ee=_==null?void 0:_.layer)==null?void 0:ee.id),j=((oe=_==null?void 0:_.properties)==null?void 0:oe.id)??(_==null?void 0:_.id);return!A||j===void 0||j===null?null:`${A},${j}`.trim()||null}function jt(_,A){if(_){if(Array.isArray(_)){if(_.length>=2&&typeof _[0]=="number"&&typeof _[1]=="number"){A.push([_[0],_[1]]);return}_.forEach(j=>jt(j,A));return}typeof _=="object"&&(Array.isArray(_.coordinates)&&jt(_.coordinates,A),Array.isArray(_.features)&&_.features.forEach(j=>jt(j==null?void 0:j.geometry,A)))}}function vh(_){var me,be;if(!_)return null;const A=_.type==="FeatureCollection"?(be=(me=_.features)==null?void 0:me[0])==null?void 0:be.geometry:_.type==="Feature"?_.geometry:_,j=[];if(jt(A,j),!j.length)return null;let K=j[0][0],ee=j[0][0],oe=j[0][1],pe=j[0][1];return j.forEach(([Ne,ye])=>{Ne<K&&(K=Ne),Ne>ee&&(ee=Ne),ye<oe&&(oe=ye),ye>pe&&(pe=ye)}),[(K+ee)/2,(oe+pe)/2]}async function $h(_,A){var oe;const j=al();if(!j)return;const K=Ch(_);if(!K||K!==j||fn===j)return;const ee=vh(A);ee&&(await((oe=y.ready)==null?void 0:oe.call(y)),y.flyTo({center:ee,zoom:Xp}),fn=j)}function Sh(_){var ee;if(!_){Ue();return}const A=(ee=y.map)==null?void 0:ee.value,j={type:"FeatureCollection",features:[{type:"Feature",geometry:_,properties:{}}]};Ue();const K=Bh(_);if(T.value=se("feature-card-highlight",{source:{type:"geojson",data:j},layer:{id:"feature-card-highlight",type:K.type,source:"feature-card-highlight",paint:K.paint}},y.map),A!=null&&A.moveLayer){const oe=()=>{try{A.moveLayer("feature-card-highlight")}catch{}},pe=()=>{typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(()=>{window.requestAnimationFrame(oe)}):setTimeout(oe,0)};pe();const me=()=>pe();A.once("styledata",me);const be=()=>{pe(),A.off("styledata",me),A.off("idle",be)};A.on("idle",be)}}function Ah(_){var K,ee;const A=(_==null?void 0:_.source)||((K=_==null?void 0:_.layer)==null?void 0:K.id)||"unknown",j=((ee=_==null?void 0:_.properties)==null?void 0:ee.id)??(_==null?void 0:_.id)??"unknown";return`${A}:${j}`}async function Lh(_){var oe,pe,me,be,Ne;if(!_)return null;const A=Vh(_);if(A)return A;const j=((oe=_==null?void 0:_.properties)==null?void 0:oe.id)??(_==null?void 0:_.id);if(!j)return null;const K=Ah(_);if(N.has(K))return N.get(K);const ee=[C.value,_==null?void 0:_.source,(pe=_==null?void 0:_.layer)==null?void 0:pe.id].map(ye=>typeof ye=="string"?ye.trim():"").filter(Boolean);for(const ye of ee)try{const Me=await fetch(`/api/map-features/${encodeURIComponent(ye)}/${encodeURIComponent(String(j))}`);if(!Me.ok)continue;const Ae=await Me.json(),Ge=((me=Ae==null?void 0:Ae.data)==null?void 0:me.geom)||((be=Ae==null?void 0:Ae.data)==null?void 0:be.geometry)||((Ne=Ae==null?void 0:Ae.data)==null?void 0:Ne.geom_4326)||null,Nt=typeof Ge=="string"?JSON.parse(Ge):Ge;if(Nt)return N.set(K,Nt),Nt}catch{continue}return null}async function Et(_){P.value+=1;const A=P.value;if(!_||r.value){Ue();return}if(!ge.value){Ue();return}const j=await Lh(_);if(A===P.value){if(!j){Ue();return}Sh(j),$h(_,j)}}return e.watch(()=>o.cardFeature.value,_=>{Et(_)},{immediate:!0}),e.watch(()=>o.index.value,()=>{r.value||Et(o.cardFeature.value)}),e.watch(r,_=>{_?Ue():Et(o.cardFeature.value)}),e.watch(C,()=>{!r.value&&o.cardFeature.value&&Et(o.cardFeature.value)}),e.watch(ge,_=>{_?Et(o.cardFeature.value):Ue()}),e.watch(()=>al(),()=>{fn=null}),e.onBeforeUnmount(()=>{et(),Ue()}),(_,A)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("div",wp,[e.createElementVNode("div",_p,[e.createElementVNode("div",Ep,[e.createElementVNode("p",Np,[r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Об’єкт "+e.toDisplayString(nl.value+1)+" / "+e.toDisplayString(tl.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[el.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Об’єкт "+e.toDisplayString(nl.value+1)+" / "+e.toDisplayString(tl.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Інформація про об’єкт ")],64))],64))])]),r.value&&e.unref(Pe)>1?(e.openBlock(),e.createElementBlock("div",Vp,[e.createElementVNode("button",{onClick:A[0]||(A[0]=(...j)=>e.unref(Ke)&&e.unref(Ke)(...j)),disabled:e.unref(je)===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(kn),{class:"h-4 w-4"})],8,Bp),e.createElementVNode("button",{onClick:A[1]||(A[1]=(...j)=>e.unref(Ze)&&e.unref(Ze)(...j)),disabled:e.unref(je)===e.unref(Pe)-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(wn),{class:"h-4 w-4"})],8,Cp)])):!r.value&&el.value?(e.openBlock(),e.createElementBlock("div",vp,[e.createElementVNode("button",{onClick:A[2]||(A[2]=(...j)=>e.unref(ll)&&e.unref(ll)(...j)),disabled:Qe.value===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(kn),{class:"h-4 w-4"})],8,$p),e.createElementVNode("button",{onClick:A[3]||(A[3]=(...j)=>e.unref(ol)&&e.unref(ol)(...j)),disabled:Qe.value===Re.value-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(wn),{class:"h-4 w-4"})],8,Sp)])):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:Nh}," ✕ ")]),e.createElementVNode("div",Ap,[i.value?(e.openBlock(),e.createElementBlock("div",Lp," Завантаження даних… ")):s.value?(e.openBlock(),e.createElementBlock("div",Fp,e.toDisplayString(s.value),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[L.value.length?(e.openBlock(),e.createElementBlock("div",Mp,[e.createElementVNode("dl",Tp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(le.value,j=>(e.openBlock(),e.createElementBlock("div",{key:j.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",Dp,e.toDisplayString(j.label),1),e.createElementVNode("dd",{class:e.normalizeClass(["text-gray-700 sm:col-span-2 font-normal whitespace-pre-wrap",j.format==="badge"?"font-semibold text-yellow-800":""])},e.toDisplayString(j.value),3)]))),128))])])):Je.value.length?(e.openBlock(),e.createElementBlock("div",Ip,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Je.value,(j,K)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:K},[j.type==="html"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:j.content},null,8,zp)):(e.openBlock(),e.createBlock(Uo,{key:1,title:j.componentProps.title,url:j.componentProps.url,id:j.componentProps.id,"button-text":j.componentProps.buttonText,onActivate:ue},e.createSlots({_:2},[j.slotText?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:j.slotText},null,8,jp)]),key:"0"}:void 0]),1032,["title","url","id","button-text"]))],64))),128))])):e.createCommentVNode("",!0),mt.value.length?(e.openBlock(),e.createElementBlock("div",Op,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(mt.value,j=>(e.openBlock(),e.createBlock(Uo,{key:j.spec.id,title:j.componentProps.title,url:j.componentProps.url,id:j.spec.id,"button-text":j.componentProps.buttonText,onActivate:ue},null,8,["title","url","id","button-text"]))),128))])):e.createCommentVNode("",!0),Se.value?(e.openBlock(),e.createElementBlock("div",Pp,[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:zt},[e.createElementVNode("span",Rp,e.toDisplayString(De.value),1),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(It.value),{class:"h-3 w-3 stroke-[1.5px]"}))])])):e.createCommentVNode("",!0),H.value.length?(e.openBlock(),e.createElementBlock("div",Up,[A[5]||(A[5]=e.createElementVNode("p",{class:"text-xs font-semibold uppercase tracking-wide text-slate-500"},"Шари",-1)),e.createElementVNode("div",qp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(H.value,j=>(e.openBlock(),e.createElementBlock("div",{key:j.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Hp,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:Ie(j.id),onChange:K=>ze(j,K)},null,40,Wp),A[4]||(A[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",Yp,e.toDisplayString(j.title),1)]),j.subtitle?(e.openBlock(),e.createElementBlock("div",Zp,e.toDisplayString(j.subtitle),1)):e.createCommentVNode("",!0)]))),128))])])):e.createCommentVNode("",!0),J.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Kp," Даних не знайдено. "))],64))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-370b3cd8"]]),Wo=e.defineComponent({__name:"MapBoundaryLayer",props:{layerId:{},boundary:{},katottg:{},settingsMap:{}},setup(t){var f,u;const n=t,o=((u=(f=e.getCurrentInstance())==null?void 0:f.appContext.config.globalProperties)==null?void 0:u.$settings)||null,{map:l,ready:r}=Ce();let a=null;function i(){a==null||a.remove(),a=null}function s(p){if(!p)return null;if(typeof p=="string")try{p=JSON.parse(p)}catch{return null}return p.type==="FeatureCollection"?p:p.type==="Feature"?{type:"FeatureCollection",features:[p]}:p.type&&Array.isArray(p.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:p,properties:{}}]}:Array.isArray(p.features)?{type:"FeatureCollection",features:p.features}:p.geometry?s(p.geometry):null}function g(p){var d,x,S;return{type:"line",color:"#8e4484",width:2,opacity:((((S=(x=(d=p==null?void 0:p.features)==null?void 0:d[0])==null?void 0:x.geometry)==null?void 0:S.type)||"").includes("Polygon"),.95)}}async function y(p){const m=await fetch(p);if(!m.ok)throw new Error(String(m.status));return m.json()}async function b(p,m){if(p){const h=/^https?:\/\//.test(p)?p:new URL(p,location.origin).toString(),d=await y(h).catch(()=>null),x=s(d);if(x)return x}if(m){const h=await y(`https://data.gki.com.ua/api-user/atu/${encodeURIComponent(m)}`).catch(()=>null),d=s(h);if(d)return d}return null}async function c(){var d,x,S,T;if(!n.layerId||!l.value){i();return}typeof r=="function"&&await r().catch(()=>{});const p=n.boundary??((d=n.settingsMap)==null?void 0:d.boundary)??((x=o==null?void 0:o.map)==null?void 0:x.boundary)??null,m=n.katottg??((S=n.settingsMap)==null?void 0:S.katottg)??((T=o==null?void 0:o.map)==null?void 0:T.katottg)??null;if(!p&&!m){i();return}const h=await b(p,m);if(!h){i();return}i(),a=se(`${n.layerId}-boundary`,{source:{type:"geojson",data:h},style:g(h)},l)}return e.watch(()=>{var p,m;return[n.layerId,n.boundary,n.katottg,(p=n.settingsMap)==null?void 0:p.boundary,(m=n.settingsMap)==null?void 0:m.katottg,l.value]},()=>{c()},{immediate:!0}),e.onBeforeUnmount(i),(p,m)=>null}}),Jp={class:"map-center-control"},Qp=["aria-label"],em={class:"absolute left-full ml-3 px-3 py-1.5 bg-gray-900 text-white text-sm 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"},pn=Q(e.defineComponent({__name:"MapCenterControl",props:{center:{},zoom:{},targetCenter:{},targetZoom:{},targetLabel:{},targetAriaLabel:{}},setup(t){const n=t,{map:o,ready:l}=Ce(),r=e.ref(null),a=e.ref(null),i=e.ref(null),s=e.ref(null);function g(p){if(Array.isArray(p)&&p.length>=2){const[m,h]=p.slice(0,2).map(d=>Number(d));return Number.isNaN(m)||Number.isNaN(h)?null:[m,h]}if(p&&typeof p=="object"){const m=p,h=m.lng??m.lon??m.long??m.x,d=m.lat??m.y;if(h!=null&&d!=null){const x=Number(h),S=Number(d);if(!Number.isNaN(x)&&!Number.isNaN(S))return[x,S]}}if(typeof p=="string"){const m=p.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,p=>{const m=g(p);m&&(r.value=m)},{immediate:!0}),e.watch(()=>n.zoom,p=>{const m=Number(p);Number.isNaN(m)||(a.value=m)},{immediate:!0}),e.watch(()=>n.targetCenter,p=>{i.value=g(p)},{immediate:!0}),e.watch(()=>n.targetZoom,p=>{const m=Number(p);s.value=Number.isNaN(m)?null:m},{immediate:!0});const y=e.computed(()=>{var p;return((p=n.targetLabel)==null?void 0:p.trim())||"Точка"}),b=e.computed(()=>n.targetAriaLabel||"Перейти до точки"),c=e.computed(()=>!!i.value);e.onMounted(async()=>{await(l==null?void 0:l());const p=o.value;if(p){if(!r.value){const m=p.getCenter();r.value=[m.lng,m.lat]}a.value==null&&(a.value=p.getZoom())}});function f(){const p=o.value;if(!p)return;const m=r.value||(()=>{const d=p.getCenter();return[d.lng,d.lat]})(),h=a.value??p.getZoom();p.flyTo({center:m,zoom:h})}function u(){const p=o.value;if(!p||!i.value)return;const m=s.value??a.value??p.getZoom();p.flyTo({center:i.value,zoom:m})}return(p,m)=>(e.openBlock(),e.createElementBlock("div",Jp,[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(f,["stop"])},[e.createVNode(e.unref(kl),{class:"w-4 h-4"}),m[0]||(m[0]=e.createElementVNode("span",{class:"absolute left-full ml-3 px-3 py-1.5 bg-gray-900 text-white text-sm 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))])),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":b.value,onClick:e.withModifiers(u,["stop"])},[e.createVNode(e.unref(wl),{class:"w-4 h-4"}),e.createElementVNode("span",em,e.toDisplayString(y.value),1)],8,Qp)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-40f00452"]]),tm={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},nm={class:"flex-1 relative overflow-hidden"},om={class:"absolute top-0 left-0 w-full z-20"},lm={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},rm={class:"flex items-center gap-3"},am={class:"font-semibold text-lg text-gray-800 line-clamp-1"},im={class:"text-xs text-gray-500 truncate"},sm=["title"],cm={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]"},dm={class:"relative w-full h-full"},um={style:{top:"17px",left:"230px",position:"absolute","z-index":"1"}},pm={class:"absolute top-4 left-4 z-20"},mm={class:"absolute top-[6.5rem] right-2 space-y-1 z-20"},fm={class:"absolute bottom-4 left-4 z-20"},gm={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},ym={class:"flex-1 flex flex-col h-full"},hm={class:"px-3 pt-3 pb-2 border-b border-gray-100"},xm={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"},bm=["aria-selected","onClick"],km={class:"leading-none"},wm={class:"flex flex-col flex-1 overflow-y-hidden p-3"},_m=Q(e.defineComponent({__name:"service",setup(t){var U,D;const n=we.useRoute(),o=we.useRouter(),{id:l}=n.params,r=e.ref(null),a=e.ref({}),i=e.ref(null),s=((D=(U=e.getCurrentInstance())==null?void 0:U.appContext.config.globalProperties)==null?void 0:D.$settings)||null,g=e.ref(null),y=e.ref(""),b=e.ref([]),c=e.ref([]),f=e.ref([]),u=e.ref("list"),p=e.ref(""),m=e.ref([]),h=e.computed(()=>{var $,k;return(($=i.value)==null?void 0:$.id)??((k=i.value)==null?void 0:k.service_id)??null}),d=e.computed(()=>{const $=(s==null?void 0:s.map)||null,k=($==null?void 0:$.boundary)??null,v=($==null?void 0:$.katottg)??null;return!k&&!v?null:{boundary:k,katottg:v}}),x=[{key:"style",label:"Стиль",icon:Do},{key:"popup",label:"Попап",icon:tu},{key:"filter",label:"Фільтр",icon:ru},{key:"legend",label:"Легенда",icon:Yd},{key:"card",label:"Картка",icon:Xd}],S=x.map($=>$.key),T=e.ref("style");e.onMounted(async()=>{const $=n.query.tab;$&&S.includes($)&&(T.value=$),await V()}),e.watch(T,$=>{n.query.tab!==$&&o.replace({query:{...n.query,tab:$}})}),e.watch(()=>n.query.tab,$=>{$&&S.includes($)&&T.value!==$&&(T.value=$)});function P($){if(!$)return null;try{return JSON.parse(JSON.stringify($))}catch(k){return console.warn("Failed to clone style",k),null}}function N($){if(!$)return null;if(typeof $=="string")try{return nn(Od.load($)||null)}catch(k){return console.warn("Failed to parse style yaml",k),null}return nn(P($))}const V=async()=>{try{const $=await fetch(`/api/gis-service/${l}`);if(!$.ok)throw new Error(`${$.status}`);const k=await $.json();a.value=k||{},r.value=l;const v=N(k.style);i.value=k?{...k,style:P(v)}:null,g.value=v,y.value=typeof(k==null?void 0:k.style)=="string"?k.style:k!=null&&k.style?JSON.stringify(k.style):"",c.value=(k==null?void 0:k.popup)||[],u.value=k.card_mode==="html"?"html":"list",f.value=k.card,p.value=k.html,b.value=(k==null?void 0:k.legend)||[],m.value=(k==null?void 0:k.filters)||[]}catch($){console.error("Failed to fetch map info",$)}};e.watch(()=>{var $;return($=i.value)==null?void 0:$.style},$=>{g.value=N($)},{deep:!0});async function C($,k){await I({[$]:k},$)}function F(){const $=P(g.value);i.value=i.value?{...i.value,style:$}:i.value}async function I($,k){if(i.value={...i.value||{},...$},typeof $.html<"u"&&(a.value={...a.value||{},html:$.html}),!!h.value)try{if(!(await fetch(`/api/gis-service/${h.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify($)})).ok)throw new Error("Save failed");re.notify({type:"success",title:"Успіх",message:`${k} saved`}),await V()}catch(v){re.notify({type:"error",title:"Помилка",message:`Failed to save ${k}`}),console.error(v)}}async function q($,k){if($!=="card"){await C($,k);return}const v=(k==null?void 0:k.card_mode)==="html"?"html":"list",M=v==="html"&&typeof(k==null?void 0:k.html)=="string"?k.html:"",B=(v==="html"?[]:null)||(Array.isArray(k==null?void 0:k.list)?k.list:[]);f.value=B,u.value=v,p.value=M;const E={card_mode:v};v==="html"&&(E.html=M),v==="list"&&(E.card=B),await I(E,"card")}return($,k)=>{var v,M,B,E;return e.openBlock(),e.createElementBlock("div",tm,[e.createElementVNode("div",nm,[e.createElementVNode("div",om,[e.createElementVNode("div",lm,[e.createElementVNode("div",rm,[e.createElementVNode("button",{onClick:k[0]||(k[0]=w=>$.$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"},[...k[10]||(k[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",am,e.toDisplayString((v=i.value)==null?void 0:v.name),1),e.createElementVNode("div",im," Сервіс: "+e.toDisplayString((M=i.value)==null?void 0:M.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((E=i.value)==null?void 0:E.description),9,sm)])]),e.createElementVNode("div",cm,[e.createElementVNode("div",dm,[e.createVNode(Ft,null,{default:e.withCtx(()=>{var w,L,O,R,G,W,Y;return[(w=i.value)!=null&&w.service_id?(e.openBlock(),e.createBlock(Xu,{key:0,id:(L=i.value)==null?void 0:L.service_id,layer:i.value,"style-spec":((O=i.value)==null?void 0:O.style)||null},null,8,["id","layer","style-spec"])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createBlock(Wo,{key:1,"layer-id":h.value,boundary:((R=i.value)==null?void 0:R.boundary)||((G=d.value)==null?void 0:G.boundary)||null,katottg:((W=i.value)==null?void 0:W.katottg)||((Y=d.value)==null?void 0:Y.katottg)||null},null,8,["layer-id","boundary","katottg"])):e.createCommentVNode("",!0),e.createElementVNode("div",um,[h.value?(e.openBlock(),e.createBlock(cn,{key:0,"layer-id":h.value,filters:m.value},null,8,["layer-id","filters"])):e.createCommentVNode("",!0)]),k[11]||(k[11]=e.createElementVNode("div",{id:"map-filter-popover-host",class:"map-widget__filter-host"},null,-1)),e.createElementVNode("div",pm,[e.createVNode(wt)]),e.createElementVNode("div",mm,[e.createVNode(pn),a.value.center?(e.openBlock(),e.createBlock(pn,{key:0,targetCenter:a.value.center,targetLabel:"Ценр даних"},null,8,["targetCenter"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",fm,[e.createVNode(_t,{items:b.value||null},null,8,["items"])]),e.createVNode(Ro),e.createVNode(Ho,{html:a.value.html},null,8,["html"])]}),_:1})])])]),e.createElementVNode("div",gm,[e.createElementVNode("div",ym,[e.createElementVNode("div",hm,[e.createElementVNode("div",xm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(x,w=>e.createElementVNode("button",{key:w.key,type:"button",role:"tab","aria-selected":T.value===w.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",T.value===w.key?"bg-white shadow-sm text-gray-700":""]),onClick:L=>T.value=w.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",km,e.toDisplayString(w.label),1)],10,bm)),64))])]),e.createElementVNode("div",wm,[T.value==="style"?(e.openBlock(),e.createBlock(pu,{key:0,token:h.value,"style-text":y.value,"style-yaml":g.value,"onUpdate:styleYaml":k[1]||(k[1]=w=>g.value=w),"onUpdate:styleText":k[2]||(k[2]=w=>y.value=w),onUpdate:F},null,8,["token","style-text","style-yaml"])):T.value==="legend"?(e.openBlock(),e.createBlock(Ou,{key:1,token:h.value,columns:b.value,"onUpdate:columns":k[3]||(k[3]=w=>b.value=w),onSave:k[4]||(k[4]=w=>C("legend",w))},null,8,["token","columns"])):T.value==="popup"?(e.openBlock(),e.createBlock(Lu,{key:2,token:h.value,columns:c.value,fields:a.value.fields,"onUpdate:columns":k[5]||(k[5]=w=>c.value=w),onSave:k[6]||(k[6]=w=>C("popup",w))},null,8,["token","columns","fields"])):T.value==="card"?(e.openBlock(),e.createBlock(Zu,{key:3,token:h.value,columns:f.value,fields:a.value.fields,"view-mode":u.value,html:p.value,"onUpdate:columns":k[7]||(k[7]=w=>f.value=w),onSave:q},null,8,["token","columns","fields","view-mode","html"])):T.value==="filter"?(e.openBlock(),e.createBlock(Gu,{key:4,token:h.value,fields:a.value.fields,columns:m.value,"onUpdate:columns":k[8]||(k[8]=w=>m.value=w),onSave:k[9]||(k[9]=w=>C("filters",w))},null,8,["token","fields","columns"])):e.createCommentVNode("",!0)])])])])}}}),[["__scopeId","data-v-e85cdaa7"]]),Em={class:"flex-1 overflow-y-auto p-4 sm:p-6"},Nm={class:"space-y-6"},Vm={class:"bg-white p-6 rounded-xl border border-gray-200 shadow-sm"},Bm={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"},Cm={class:"text-xs text-gray-500 mb-1"},vm={class:"text-base font-semibold text-gray-900"},$m={class:"bg-white p-6 rounded-xl border border-gray-200 shadow-sm"},Sm={class:"space-y-4"},Am={class:"bg-gradient-to-br from-blue-50 to-blue-100/30 p-4 rounded-lg border border-blue-200"},Lm={class:"text-sm font-semibold text-gray-900"},Fm={class:"text-xs text-gray-600 mt-1"},Mm={class:"grid grid-cols-2 gap-3"},Tm={class:"text-xs text-gray-500 mb-1"},Dm={class:"text-sm font-semibold text-gray-900"},Im={class:"bg-gray-50 p-4 rounded-lg"},zm={class:"grid grid-cols-2 gap-4"},jm={class:"text-xs text-gray-500 mb-1"},Om={class:"text-sm font-semibold text-gray-900"},Pm={class:"bg-white p-6 rounded-xl border border-gray-200 shadow-sm"},Rm={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Um={class:"space-y-2"},qm={class:"text-gray-600"},Hm={class:"font-semibold text-gray-900"},Wm={class:"bg-white p-6 rounded-xl border border-gray-200 shadow-sm"},Ym={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Zm={class:"text-xs text-gray-500 mb-1"},Km={class:"text-sm font-medium text-gray-900"},Gm=e.defineComponent({__name:"raster-info-tab",props:{details:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",Em,[e.createElementVNode("div",Nm,[o[6]||(o[6]=e.createElementVNode("div",null,[e.createElementVNode("h3",{class:"text-lg font-semibold text-gray-900 mb-4"},"Інформація про растр")],-1)),e.createElementVNode("div",Vm,[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",Bm,[(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-4 rounded-lg"},[e.createElementVNode("p",Cm,e.toDisplayString(l.label),1),e.createElementVNode("p",vm,e.toDisplayString(l.value),1)]))),128))])]),e.createElementVNode("div",$m,[o[3]||(o[3]=e.createElementVNode("div",{class:"mb-4"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Просторова інформація")],-1)),e.createElementVNode("div",Sm,[e.createElementVNode("div",null,[o[1]||(o[1]=e.createElementVNode("p",{class:"text-xs text-gray-500 mb-2"},"Система координат",-1)),e.createElementVNode("div",Am,[e.createElementVNode("p",Lm,e.toDisplayString(t.details.spatial.crs.code),1),e.createElementVNode("p",Fm,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",Mm,[(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-3 rounded-lg border border-gray-200"},[e.createElementVNode("p",Tm,e.toDisplayString(l.label),1),e.createElementVNode("p",Dm,e.toDisplayString(l.value),1)]))),128))])]),e.createElementVNode("div",Im,[e.createElementVNode("div",zm,[(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",jm,e.toDisplayString(l.label),1),e.createElementVNode("p",Om,e.toDisplayString(l.value),1)]))),128))])])])]),e.createElementVNode("div",Pm,[o[4]||(o[4]=e.createElementVNode("div",{class:"mb-4"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Статистика даних")],-1)),e.createElementVNode("div",Rm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.statistics,l=>(e.openBlock(),e.createElementBlock("div",{key:l.label,class:e.normalizeClass(["p-4 rounded-lg border",l.cardClass])},[e.createElementVNode("p",{class:e.normalizeClass(["text-xs font-medium mb-2",l.titleClass])},e.toDisplayString(l.label),3),e.createElementVNode("div",Um,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.metrics,r=>(e.openBlock(),e.createElementBlock("div",{class:"flex justify-between text-xs",key:r.label},[e.createElementVNode("span",qm,e.toDisplayString(r.label)+":",1),e.createElementVNode("span",Hm,e.toDisplayString(r.value),1)]))),128))])],2))),128))])]),e.createElementVNode("div",Wm,[o[5]||(o[5]=e.createElementVNode("div",{class:"mb-4"},[e.createElementVNode("h4",{class:"text-sm font-semibold text-gray-900 uppercase tracking-wide"},"Технічні деталі")],-1)),e.createElementVNode("div",Ym,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.details.technical,l=>(e.openBlock(),e.createElementBlock("div",{key:l.label},[e.createElementVNode("p",Zm,e.toDisplayString(l.label),1),e.createElementVNode("p",Km,e.toDisplayString(l.value),1)]))),128))])])])]))}}),Xm={class:"flex-1 overflow-y-auto space-y-3 pr-1"},Jm={class:"font-medium text-sm text-gray-800"},Qm={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",Xm,[(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",Jm,e.toDisplayString(l.name),1),e.createElementVNode("p",Qm,e.toDisplayString(l.resolution)+" • "+e.toDisplayString(l.size),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))]))}}),tf={},nf={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 of(t,n){return e.openBlock(),e.createElementBlock("svg",nf,[...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 lf=Q(tf,[["render",of]]),rf={},af={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",af,[...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 cf=Q(rf,[["render",sf]]),df={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},uf={class:"flex-1 relative overflow-hidden"},pf={class:"absolute top-0 left-0 w-full z-20"},mf={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},ff={class:"flex items-center gap-3"},gf={class:"font-semibold text-lg text-gray-800 line-clamp-1"},yf={class:"text-xs text-gray-500 truncate"},hf=["title"],xf={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]"},bf={class:"relative w-full h-full"},kf={class:"absolute top-4 left-4 z-20"},wf={class:"absolute bottom-4 left-4 z-20"},_f={class:"w-[520px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},Ef={class:"flex-1 flex flex-col h-full"},Nf={class:"px-3 pt-3 pb-2 border-b border-gray-100"},Vf={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"},Bf=["aria-selected","onClick"],Cf={class:"leading-none"},vf={class:"flex flex-col flex-1 overflow-y-hidden p-4"},$f="3600301717964457703",Sf=e.defineComponent({__name:"raster",setup(t){const n=we.useRouter(),o=we.useRoute(),l=e.computed(()=>{var c;return((c=o.params)==null?void 0:c.id)||$f}),r=e.computed(()=>({id:l.value,name:"Фрагмент растра 30 см",description:"Попередній перегляд растрового шару. Реальні метадані підтягнемо після підключення API.",coverage:"Київська область, 2024 рік",crs:"EPSG:4326",source:"ДП «Центр ДЗК»",updatedAt:"14 травня 2024"})),a=[{key:"files",label:"Файли",icon:lf},{key:"info",label:"Інформація",icon:cf}],i=a.map(c=>c.key),s=e.ref(i.includes(o.query.tab)?o.query.tab:"files");e.watch(()=>o.query.tab,c=>{c&&i.includes(c)&&s.value!==c&&(s.value=c)}),e.watch(s,c=>{o.query.tab!==c&&n.replace({query:{...o.query,tab:c}})});const g=[{label:"Покриття 2024",color:"#0ea5e9"},{label:"Попередні дані 2023",color:"#94a3b8"}],y=e.ref([{name:"mosaic_01.tif",resolution:"0.3 м/піксель",size:"245 MB",status:"Готово",statusClass:"bg-emerald-50 text-emerald-600 border border-emerald-100"},{name:"mosaic_01.tfw",resolution:"georeferencing",size:"4 KB",status:"Готово",statusClass:"bg-emerald-50 text-emerald-600 border border-emerald-100"},{name:"metadata.xml",resolution:"опис",size:"8 KB",status:"Чернетка",statusClass:"bg-amber-50 text-amber-600 border border-amber-100"}]),b=e.computed(()=>({baseParams:[{label:"Розмір растру",value:"2048 × 1536 px"},{label:"Формат файлу",value:"GeoTIFF"},{label:"Розмір файлу",value:"45.2 MB"},{label:"Кількість каналів",value:"4 (RGBA)"},{label:"Глибина кольору",value:"8 біт/канал"},{label:"Стиснення",value:"LZW"}],spatial:{crs:{code:"EPSG:4326",description:"WGS 84 — World Geodetic System 1984"},bounds:[{label:"Північ",value:"52.3791° N"},{label:"Схід",value:"31.1656° E"},{label:"Південь",value:"44.3864° N"},{label:"Захід",value:"22.1371° E"}],resolution:[{label:"Роздільна здатність X",value:"0.00417° (~460 м)"},{label:"Роздільна здатність Y",value:"0.00417° (~460 м)"}]},statistics:[{label:"Канал 1 (Червоний)",cardClass:"bg-gradient-to-br from-green-50 to-green-100/30 border-green-200",titleClass:"text-green-900",metrics:[{label:"Min",value:"0"},{label:"Max",value:"255"},{label:"Середнє",value:"127.3"}]},{label:"Канал 2 (Зелений)",cardClass:"bg-gradient-to-br from-blue-50 to-blue-100/30 border-blue-200",titleClass:"text-blue-900",metrics:[{label:"Min",value:"0"},{label:"Max",value:"255"},{label:"Середнє",value:"134.8"}]},{label:"Канал 3 (Синій)",cardClass:"bg-gradient-to-br from-purple-50 to-purple-100/30 border-purple-200",titleClass:"text-purple-900",metrics:[{label:"Min",value:"0"},{label:"Max",value:"255"},{label:"Середнє",value:"118.5"}]},{label:"Канал 4 (Альфа)",cardClass:"bg-gradient-to-br from-gray-50 to-gray-100/30 border-gray-200",titleClass:"text-gray-900",metrics:[{label:"Min",value:"0"},{label:"Max",value:"255"},{label:"Середнє",value:"255.0"}]}],technical:[{label:"Тип даних",value:"Unsigned Integer 8-bit"},{label:"Інтерливінг",value:"Pixel"},{label:"Значення NoData",value:"0"},{label:"Кольорова інтерпретація",value:"RGB + Alpha"},{label:"Тайлування",value:"256 × 256"},{label:"Оверв'ю",value:"4 рівні"}]}));return(c,f)=>(e.openBlock(),e.createElementBlock("div",df,[e.createElementVNode("div",uf,[e.createElementVNode("div",pf,[e.createElementVNode("div",mf,[e.createElementVNode("div",ff,[e.createElementVNode("button",{type:"button",onClick:f[0]||(f[0]=u=>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"},[...f[1]||(f[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",gf,e.toDisplayString(r.value.name),1),e.createElementVNode("div",yf," Растер ID: "+e.toDisplayString(r.value.id),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:r.value.description},e.toDisplayString(r.value.description),9,hf)])]),e.createElementVNode("div",xf,[e.createElementVNode("div",bf,[e.createVNode(Ft,null,{default:e.withCtx(()=>[e.createElementVNode("div",kf,[e.createVNode(wt)]),e.createElementVNode("div",wf,[e.createVNode(_t,{items:g})])]),_:1})])])]),e.createElementVNode("div",_f,[e.createElementVNode("div",Ef,[e.createElementVNode("div",Nf,[e.createElementVNode("div",Vf,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,u=>e.createElementVNode("button",{key:u.key,type:"button",role:"tab","aria-selected":s.value===u.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===u.key?"bg-white shadow-sm text-gray-700":""]),onClick:p=>s.value=u.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(u.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Cf,e.toDisplayString(u.label),1)],10,Bf)),64))])]),e.createElementVNode("div",vf,[s.value==="files"?(e.openBlock(),e.createBlock(ef,{key:0,files:y.value},null,8,["files"])):(e.openBlock(),e.createBlock(Gm,{key:1,details:b.value},null,8,["details"]))])])])]))}}),Af={},Lf={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 Ff(t,n){return e.openBlock(),e.createElementBlock("svg",Lf,[...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 Mf=Q(Af,[["render",Ff]]),Tf={class:"flex flex-col h-full"},Df={class:"flex justify-end mb-3 gap-2"},If=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",Tf,[e.createElementVNode("div",Df,[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(Lt,{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"])]))}}),zf={class:"flex flex-col flex-1 min-h-0"},jf={class:"flex justify-between mb-3 gap-2"},Of={class:"text-left"},Pf={class:"font-medium text-gray-900"},Rf={class:"text-xs text-gray-500"},Uf={class:"flex justify-center gap-2"},qf=["checked","onChange"],Hf={class:"text-sm font-medium text-gray-900"},Wf=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:"Зум",slot:"zoomCell",width:"140px"}],l={table:{type:"text",label:"Таблиця",validators:["required"]},caption:{type:"text",label:"Підпис",validators:["required"]},active:{type:"switcher",label:"Активний"},zoom:{type:"number",label:"Зум"}},r=e.defineAsyncComponent(()=>import("@opengis/core").then(m=>m.VsModal)),a=e.defineAsyncComponent(()=>import("@opengis/form")),i=e.useModel(t,"modelValue"),s=n,g=e.ref(!1),y=e.ref({table:"",caption:"",zoom:"0-12",active:!0}),b={table:{type:"text",label:"Таблиця",validators:["required"]},caption:{type:"text",label:"Підпис",validators:["required"]},active:{type:"switcher",label:"Активна"},zoom:{type:"text",label:"Зум",placeholder:"0-12"}};function c(){y.value={table:"",caption:"",zoom:"",active:!0},g.value=!0}function f(){g.value=!1}function u(){var d,x;const m=(d=y.value.table)==null?void 0:d.trim(),h=(x=y.value.caption)==null?void 0:x.trim();if(!m||!h){re.notify({type:"warning",title:"Перевірка",message:"Вкажіть таблицю та підпис"});return}i.value=[...Array.isArray(i.value)?i.value:[],{...y.value,table:m,caption:h}],g.value=!1}function p(m,h){var x;const d=((x=h==null?void 0:h.target)==null?void 0:x.checked)??!1;m.active=d,i.value=Array.isArray(i.value)?[...i.value]:[]}return(m,h)=>(e.openBlock(),e.createElementBlock("div",zf,[e.createElementVNode("div",jf,[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]=d=>s("save"))}," Зберегти ")]),e.createVNode(qe,{modelValue:i.value,"onUpdate:modelValue":h[1]||(h[1]=d=>i.value=d),"columns-scheme":o,"form-scheme":l,"add-button":!1,"main-col-width":"260px"},{datasetCell:e.withCtx(({row:d})=>[e.createElementVNode("div",Of,[e.createElementVNode("div",Pf,e.toDisplayString(d.table),1),e.createElementVNode("div",Rf,e.toDisplayString(d.caption),1)])]),activeCell:e.withCtx(({row:d})=>[e.createElementVNode("label",Uf,[e.createElementVNode("input",{type:"checkbox",class:"h-4 w-4 text-sky-500 border-gray-300 rounded focus:ring-sky-300",checked:d.active,onChange:x=>p(d,x)},null,40,qf)])]),zoomCell:e.withCtx(({row:d})=>[e.createElementVNode("div",Hf,e.toDisplayString(d.zoom),1)]),_:1},8,["modelValue"]),e.createVNode(e.unref(r),{teleport:"#modal",visible:g.value,"onUpdate:visible":h[3]||(h[3]=d=>g.value=d),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:f},"Скасувати"),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:u},"Додати")])]),default:e.withCtx(()=>[e.createVNode(e.unref(a),{values:y.value,"onUpdate:values":h[2]||(h[2]=d=>y.value=d),schema:b},null,8,["values"])]),_:1},8,["visible"])]))}}),Yf={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Zf={class:"flex-1 relative overflow-hidden"},Kf={class:"absolute top-0 left-0 w-full z-20"},Gf={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},Xf={class:"flex items-center gap-3"},Jf={class:"font-semibold text-lg text-gray-800 line-clamp-1"},Qf={class:"text-xs text-gray-500 truncate"},e0=["title"],t0={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]"},n0={class:"relative w-full h-full"},o0={class:"absolute top-4 left-4 z-20"},l0={class:"absolute bottom-4 left-4 z-20"},r0={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},a0={class:"flex-1 flex flex-col h-full"},i0={class:"px-3 pt-3 pb-2 border-b border-gray-100"},s0={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"},c0=["aria-selected","onClick"],d0={class:"leading-none"},u0={class:"flex flex-col flex-1 overflow-y-hidden p-4"},p0={key:0,class:"flex-1 flex items-center justify-center text-sm text-gray-500"},m0="cartocss-demo-001",f0=e.defineComponent({__name:"cartocss",setup(t){const n=we.useRouter(),o=we.useRoute(),l=[{label:"Основні дороги",color:"#e11d48"},{label:"Населені пункти",color:"#f97316"},{label:"Фон",color:"#0ea5e9"}],r=[{key:"css",label:"CSS",icon:Do},{key:"data",label:"Дані",icon:Mf}],a=r.map(d=>d.key),i=e.ref(a.includes(o.query.tab)?o.query.tab:"css"),s=e.computed(()=>o.params.id||m0),g=e.ref({id:s.value,name:"",description:""}),y=e.ref(""),b=e.ref([]),c=e.ref(!1),f=e.ref(!1);e.watch(s,d=>{d&&m(d)},{immediate:!0}),e.watch(()=>o.query.tab,d=>{d&&a.includes(d)&&i.value!==d&&(i.value=d)}),e.watch(i,d=>{o.query.tab!==d&&n.replace({query:{...o.query,tab:d}})});function u(d){if(!d)return null;if(typeof d=="string")try{return JSON.parse(d)}catch(x){return console.warn("Failed to parse CartoCSS config",x),null}return typeof d=="object"?d:null}function p(d){const x=Array.isArray(d)?d:d==null?void 0:d.datasets;return Array.isArray(x)?x.map((S,T)=>({table:(S==null?void 0:S.table)||(S==null?void 0:S.id)||`dataset_${T+1}`,caption:(S==null?void 0:S.caption)||(S==null?void 0:S.label)||"Без підпису",active:typeof(S==null?void 0:S.active)=="boolean"?S.active:!0,zoom:typeof(S==null?void 0:S.zoom)>"u"?"0-12":String(S.zoom)})):[]}async function m(d){c.value=!0;try{const x=await fetch(`/api/cartocss/${d}`);if(!x.ok)throw new Error(`Failed to load cartocss: ${x.status}`);const S=await x.json(),T=(S==null?void 0:S.message)||S||{};g.value={id:T.cartocss_key||d,name:T.name||g.value.name,description:T.description||g.value.description},y.value=typeof T.style=="string"?T.style:"";const P=u(T.config);b.value=p(P)}catch(x){console.error("Failed to fetch CartoCSS",x)}finally{c.value=!1}}async function h(){if(s.value){f.value=!0;try{const d={style:y.value||"",config:JSON.stringify(b.value)},x=await fetch(`/api/cartocss/${s.value}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)});if(!x.ok)throw new Error(`Failed to save cartocss: ${x.status}`);re.notify({type:"success",title:"Збережено",message:"CartoCSS оновлено"}),await m(s.value)}catch(d){console.error("Failed to save CartoCSS",d),re.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти CartoCSS"})}finally{f.value=!1}}}return(d,x)=>(e.openBlock(),e.createElementBlock("div",Yf,[e.createElementVNode("div",Zf,[e.createElementVNode("div",Kf,[e.createElementVNode("div",Gf,[e.createElementVNode("div",Xf,[e.createElementVNode("button",{type:"button",onClick:x[0]||(x[0]=S=>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"},[...x[3]||(x[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",Jf,e.toDisplayString(g.value.name),1),e.createElementVNode("div",Qf," CartoCSS ID: "+e.toDisplayString(g.value.id),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:g.value.description},e.toDisplayString(g.value.description),9,e0)])]),e.createElementVNode("div",t0,[e.createElementVNode("div",n0,[e.createVNode(Ft,null,{default:e.withCtx(()=>[e.createElementVNode("div",o0,[e.createVNode(wt)]),e.createElementVNode("div",l0,[e.createVNode(_t,{items:l})])]),_:1})])])]),e.createElementVNode("div",r0,[e.createElementVNode("div",a0,[e.createElementVNode("div",i0,[e.createElementVNode("div",s0,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,S=>e.createElementVNode("button",{key:S.key,type:"button",role:"tab","aria-selected":i.value===S.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",i.value===S.key?"bg-white shadow-sm text-gray-700":""]),onClick:T=>i.value=S.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(S.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",d0,e.toDisplayString(S.label),1)],10,c0)),64))])]),e.createElementVNode("div",u0,[c.value?(e.openBlock(),e.createElementBlock("div",p0," Завантаження стилю… ")):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[i.value==="css"?(e.openBlock(),e.createBlock(If,{key:0,modelValue:y.value,"onUpdate:modelValue":x[1]||(x[1]=S=>y.value=S),class:"flex-1 min-h-0",onSave:h},null,8,["modelValue"])):(e.openBlock(),e.createBlock(Wf,{key:1,modelValue:b.value,"onUpdate:modelValue":x[2]||(x[2]=S=>b.value=S),class:"flex-1 min-h-0 flex flex-col",onSave:h},null,8,["modelValue"]))],64))])])])]))}}),g0={class:"w-full mb-6"},y0={class:"flex items-center w-full h-10 max-w-md p-1 bg-white border border-gray-200 rounded-md"},h0=["onClick"],x0=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",g0,[e.createElementVNode("div",y0,[(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,h0))),128))])]))}}),b0={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},k0=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,g)=>(e.openBlock(),e.createElementBlock("section",b0,[g[2]||(g[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":g[0]||(g[0]=y=>a.value=y),form:i.value,"onUpdate:form":g[1]||(g[1]=y=>i.value=y)},null,8,["schema","values","form"]))]))}}),w0={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},_0=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",w0,[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(xn.VsInputArraySelect),{options:t.options,modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=s=>r.value=s),placeholder:"Шари"},null,8,["options","modelValue"])]))}}),E0={class:"mapLayer-info__inner"},N0={class:"mapLayer-info__item-label"},mn=Q(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 g(m){if(l.open){f();return}const h=m.currentTarget,d=h==null?void 0:h.closest(".mapLayer-info");if(!d){f();return}r.value=d,l.open=!0,e.nextTick(()=>{y(),u(),requestAnimationFrame(()=>{y()})})}function y(){if(!l.open||!r.value||!a.value)return;const m=r.value.getBoundingClientRect(),h=12,d=window.scrollX+h,x=window.scrollX+window.innerWidth-h,S=window.scrollY+h,T=window.scrollY+window.innerHeight-h,P=a.value.offsetWidth||Math.min(300,window.innerWidth-24),N=a.value.offsetHeight||0;let V=m.left+window.scrollX+(m.width-P)/2;V<d&&(V=d),V+P>x&&(V=Math.max(d,x-P)),l.left=V;let C=m.bottom+window.scrollY+h;C+N>T&&(C=m.top+window.scrollY-N-h,C<S&&(C=Math.max(S,T-N))),C<S&&(C=S),C+N>T&&(C=Math.max(S,T-N)),l.top=C,l.transform="none"}function b(m){var d,x;if(!l.open)return;const h=m.target;(d=r.value)!=null&&d.contains(h)||(x=a.value)!=null&&x.contains(h)||f()}function c(m){m.key==="Escape"&&f()}function f(){p(),l.open=!1,r.value=null,a.value=null}function u(){p(),a.value&&(i=new ResizeObserver(()=>{y()}),i.observe(a.value))}function p(){i&&(i.disconnect(),i=null)}return e.onMounted(()=>{document.addEventListener("click",b,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",y,!0),window.addEventListener("resize",y)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",y,!0),window.removeEventListener("resize",y),p()}),e.watch(()=>o.items,()=>{l.open&&e.nextTick(()=>y())},{deep:!0}),n({close:f}),(m,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(g,["prevent","stop"])},[...h[1]||(h[1]=[e.createStaticVNode('<div class="mapLayer-info__icon" data-v-5688d192><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-5688d192><circle cx="12" cy="12" r="10" data-v-5688d192></circle><line x1="12" y1="16" x2="12" y2="12" data-v-5688d192></line><line x1="12" y1="8" x2="12.01" y2="8" data-v-5688d192></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",E0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,d=>(e.openBlock(),e.createElementBlock("div",{key:d.label,class:"mapLayer-info__item"},[e.createElementVNode("div",N0,e.toDisplayString(d.label),1),e.createElementVNode("div",{class:e.normalizeClass(["mapLayer-info__item-value",{"mapLayer-info__item-value--break-all":d.breakLine}])},e.toDisplayString(d.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-5688d192"]]),V0={key:0,class:"map-info__title"},B0={class:"map-info__actions"},C0={key:0,class:"map-info__menu"},v0=["onClick"],$0=["innerHTML"],Yo=Q(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}),s=we.useRouter(),g=e.ref(!1),y=e.ref(!1),b=e.computed(()=>Array.isArray(n.links)?n.links.filter(S=>(S==null?void 0:S.name)&&(S==null?void 0:S.slug)):[]),c=e.computed(()=>({top:`${i.value.top}px`,left:`${i.value.left}px`})),f=e.computed(()=>{const S=[];return n.mapName&&S.push({label:"Назва карти",value:n.mapName}),n.mapDescription&&S.push({label:"Опис",value:n.mapDescription,breakLine:!0}),S});function u(S){S.stopPropagation(),l.value=!l.value}function p(){const S=r.value;if(!S||!a.value)return;const T=S.getBoundingClientRect(),P=12,N=8,V=window.scrollX+P,C=window.scrollX+window.innerWidth-P,F=window.scrollY+P,I=window.scrollY+window.innerHeight-P,q=a.value.offsetWidth||160,U=a.value.offsetHeight||0;let D=T.bottom+window.scrollY+N,$=T.left+window.scrollX;$+q>C&&($=T.right+window.scrollX-q,$<V&&($=V)),$<V&&($=V),D+U>I&&(D=T.top+window.scrollY-U-N,D<F&&(D=Math.max(F,I-U))),D<F&&(D=F),D+U>I&&(D=Math.max(F,I-U)),i.value={top:D,left:$}}function m(S){if(!l.value)return;const T=o.value;if(!T){l.value=!1;return}T.contains(S.target)||(l.value=!1)}e.watch(l,S=>{S?e.nextTick(()=>{p(),requestAnimationFrame(()=>{p()}),window.addEventListener("scroll",p,!0),window.addEventListener("resize",p)}):(window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p))});function h(S){l.value=!1,s.push(`/maps/${S}`)}function d(){g.value=!g.value}function x(){y.value=window.innerWidth<=768}return e.onMounted(()=>{document.addEventListener("click",m,!0),x(),window.addEventListener("resize",x)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",m,!0),window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p),window.removeEventListener("resize",x)}),(S,T)=>(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||b.value.length||f.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"map-info__header",style:e.normalizeStyle([t.content?"":"padding-bottom: 20px"])},[t.title?(e.openBlock(),e.createElementBlock("h2",V0,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",B0,[b.value.length?(e.openBlock(),e.createElementBlock("div",C0,[e.createElementVNode("button",{ref_key:"menuButton",ref:r,type:"button",class:"map-info__menu-button",onClick:u,"aria-label":"Показати посилання"},[...T[1]||(T[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(c.value),onClick:T[0]||(T[0]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,P=>(e.openBlock(),e.createElementBlock("button",{key:P.slug||P.name,type:"button",class:"map-info__popover-link",onClick:N=>h(P.slug)},e.toDisplayString(P.name),9,v0))),128))],4)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0),f.value.length?(e.openBlock(),e.createBlock(mn,{key:1,items:f.value},null,8,["items"])):e.createCommentVNode("",!0),y.value&&(t.content||f.value.length)?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"map-info__toggle-button",onClick:d,"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":g.value})},[...T[2]||(T[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),t.content?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["map-info__content",{"map-info__content--collapsed":y.value&&!g.value}]),innerHTML:t.content},null,10,$0)):e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-d8c9a613"]]),S0={class:"opacity-popover__content"},A0={class:"opacity-popover__value"},Zo=Q(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 P;const c=(P=a.value)==null?void 0:P.querySelector("button");if(!c||!r.value)return;const f=c.getBoundingClientRect(),u=260,p=r.value.offsetHeight||60,m=8,h=12,d=window.innerWidth,x=window.innerHeight;let S=f.bottom+m+window.scrollY,T=f.left+window.scrollX;T+u>d-h&&(T=d-u-h+window.scrollX),T<h+window.scrollX&&(T=h+window.scrollX),S+p>x+window.scrollY-h&&(S=f.top-p-m+window.scrollY,S<h+window.scrollY&&(S=x-p-h+window.scrollY)),i.top=S,i.left=T}function g(){o.value=!o.value,o.value&&e.nextTick(s)}function y(){var p;const c=se(n.layerId),f=(l.value??100)/100;if(c!=null&&c.setOpacity){c.setOpacity(f);return}const u=(p=c==null?void 0:c.getLayer)==null?void 0:p.call(c);if(u)switch(u.type){case"raster":c.updatePaint({"raster-opacity":f});break;case"fill":c.updatePaint({"fill-opacity":f});break;case"line":c.updatePaint({"line-opacity":f});break;case"circle":c.updatePaint({"circle-opacity":f});break;case"symbol":c.updatePaint({"icon-opacity":f});break}}function b(c){var u,p;if(!o.value)return;const f=c.target;(u=r.value)!=null&&u.contains(f)||(p=a.value)!=null&&p.contains(f)||(o.value=!1)}return e.onMounted(()=>{document.addEventListener("click",b),window.addEventListener("scroll",s,!0),window.addEventListener("resize",s)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b),window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s)}),(c,f)=>(e.openBlock(),e.createElementBlock("div",{class:"opacity-wrapper",ref_key:"wrapper",ref:a},[e.renderSlot(c.$slots,"trigger",{toggle:g,opacity:l.value},()=>[e.createElementVNode("button",{type:"button",class:"opacity-btn",onClick:e.withModifiers(g,["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",S0,[f[1]||(f[1]=e.createElementVNode("label",{class:"opacity-popover__label"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":f[0]||(f[0]=u=>l.value=u),class:"opacity-popover__range",onInput:y},null,544),[[e.vModelText,l.value]]),e.createElementVNode("span",A0,e.toDisplayString(l.value)+"%",1)])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-0f5e9595"]]),L0={class:"layers-panel"},F0={class:"layers-panel__header"},M0={class:"layers-panel__heading"},T0={class:"layers-panel__title"},D0={key:0,class:"layers-panel__description"},I0={class:"layers-panel__header-actions"},z0={class:"layers-panel__label"},j0={class:"layers-panel__label-row"},O0=["checked","onChange"],P0={class:"layers-panel__title-block"},R0=["aria-label"],U0={class:"layers-panel__name"},q0={class:"layers-panel__meta text-slate-500"},H0=["onClick"],W0={class:"inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700"},Y0={key:0,class:"layers-panel__actions"},Z0=["innerHTML","onClick"],Ko="map:temporary-layer-request",K0=e.defineComponent({directives:{tooltip:re.TooltipDirective},__name:"MapDataLayersWidget",props:{layers:{},config:{}},emits:["action"],setup(t,{emit:n}){const o=t,l=e.ref({}),r=e.ref(!1),a=e.ref(!1),i=Ce(),{temporaryLayers:s,activateTemporaryLayer:g,deactivateTemporaryLayer:y,clearTemporaryLayers:b}=qo(i.map),c=e.computed(()=>{const D=o.layers.map(k=>({...k,isTemporary:!1,owner:null,visible:k.visible!==!1})),$=s.value.map(k=>({id:k.id,name:k.title,visible:l.value[k.id]??!0,actions:[],filters:null,isTemporary:!0,owner:k.owner??null,handle:k.handle??null,card:k.card??null,popup:k.popup??null,style:k.style??null,group_name:null,count:null,holder:null}));return[...D,...$]}),f=e.computed(()=>s.value.length>0),u=n;function p(){var D;for(let $=0;$<o.layers.length;$++){const k=o.layers[$],v=m(k);if(!v)continue;const M=se(k.id,v),B=k.visible!==!1;l.value[k.id]=B,B||(D=M==null?void 0:M.setVisible)==null||D.call(M,!1)}}function m(D){const $=D.id;if(!$)return null;const k=(D.service||D.service_type||D.type||"").toString().toLowerCase(),v=D.service_url||D.url||null;if(!!v&&(k==="tms"||k==="wmts"||k==="wms"||k==="ogc")){const E=h(v);return E?{sourceId:$,source:{type:"raster",tiles:[E],tileSize:D.tileSize||256,minzoom:D.minzoom??0,maxzoom:D.maxzoom??22,scheme:D.scheme||"xyz"},layer:{id:$,type:"raster",source:$},card:D.card,popup:D.popup}:null}const B=`${location.origin}/api/vtile/${$}/ua/{z}/{x}/{y}.vmt`;return{sourceId:$,source:{type:"vector",tiles:[B],minZoom:4,maxZoom:14},layer:{id:$,source:$,"source-layer":$,style:D.style},card:D.card,popup:D.popup}}function h(D){return D?/^https?:\/\//i.test(D)?D:D.startsWith("//")?`${window.location.protocol}${D}`:D.startsWith("/")?`${location.origin}${D}`:`${location.origin}/${D}`:null}function d(D){const $=l.value[D];return $??!0}function x(D){var v,M;if(!(D!=null&&D.id))return null;const $=(v=D.title)==null?void 0:v.trim(),k=(M=D.url)==null?void 0:M.trim();return!$||!k?null:{id:D.id,title:$,url:k,tileSize:D.tileSize,minzoom:D.minzoom,maxzoom:D.maxzoom,opacity:D.opacity}}function S(D){if(!D)return;const $=D.owner;if(D.action==="clear"){const v=s.value.filter(M=>!$||M.owner===$).map(M=>M.id);b($),v.forEach(M=>{M in l.value&&delete l.value[M]});return}const k=x(D.spec);if(k){if(D.action==="activate"){g(k,D.context||{},$),l.value[k.id]=!0;return}D.action==="deactivate"&&(y(k.id,$),delete l.value[k.id])}}function T(D){D instanceof CustomEvent&&S(D.detail)}e.watch(()=>s.value.map(D=>D.id),(D,$)=>{const k=new Set($||[]),v=new Set(D);D.forEach(M=>{M in l.value||(l.value[M]=!0)}),k.forEach(M=>{v.has(M)||delete l.value[M]})},{immediate:!0});function P(D,$){var B,E,w;const v=$.target.checked;if(l.value[D.id]=v,D.isTemporary){if(!v){y(D.id,D.owner||void 0),delete l.value[D.id];return}const L=D.handle||((B=s.value.find(O=>O.id===D.id))==null?void 0:B.handle);(E=L==null?void 0:L.setVisible)==null||E.call(L,!0);return}const M=se(D.id);(w=M==null?void 0:M.setVisible)==null||w.call(M,v)}function N(D){return D.isTemporary?[{label:"Назва",value:D.name??null},{label:"Тип",value:"Тимчасовий шар"},D.owner?{label:"Джерело",value:D.owner}:null].filter(Boolean):[{label:"Назва",value:D.name??null},{label:"Назва групи",value:D.group_name||null},{label:"Кількість",value:D.count??null},{label:"Балансоутримувач",value:D.holder??null}]}function V(D){var $,k,v;return(($=D==null?void 0:D.style)==null?void 0:$.color)||((k=D==null?void 0:D.style)==null?void 0:k.stroke)||((v=D==null?void 0:D.style)==null?void 0:v.fill)||null}function C(D){var $,k;return((k=($=D==null?void 0:D.legend)==null?void 0:$[0])==null?void 0:k.name)||null}function F(D){return C(D)||null}function I(){if(!s.value.length)return;const D=s.value.map($=>$.id);b(),D.forEach($=>delete l.value[$])}function q(){r.value=!r.value}function U(){a.value=window.innerWidth<=768}return e.onMounted(()=>{p(),window.addEventListener(Ko,T),U(),window.addEventListener("resize",U)}),e.onBeforeUnmount(()=>{window.removeEventListener(Ko,T),window.removeEventListener("resize",U)}),(D,$)=>{var v,M;const k=e.resolveDirective("tooltip");return e.openBlock(),e.createElementBlock("div",L0,[e.createElementVNode("div",F0,[e.createElementVNode("div",M0,[e.createElementVNode("h2",T0,e.toDisplayString(((v=t.config)==null?void 0:v.title)||"Шари"),1),(M=t.config)!=null&&M.description?(e.openBlock(),e.createElementBlock("div",D0,[e.createElementVNode("p",null,e.toDisplayString(t.config.description),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",I0,[a.value&&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":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),f.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":a.value&&!r.value}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,B=>{var E;return e.openBlock(),e.createElementBlock("div",{key:B.id,class:"layers-panel__item"},[e.createElementVNode("label",z0,[e.createElementVNode("div",j0,[e.createElementVNode("input",{type:"checkbox",class:"layers-panel__checkbox",checked:d(B.id),onChange:w=>P(B,w)},null,40,O0),e.createElementVNode("div",P0,[d(B.id)&&V(B)&&F(B)?e.withDirectives((e.openBlock(),e.createElementBlock("span",{key:0,class:"layers-panel__legend-dot layers-panel__legend-dot--inline",style:e.normalizeStyle({background:V(B)}),"aria-label":F(B),role:"img"},null,12,R0)),[[k,F(B)]]):d(B.id)&&V(B)?(e.openBlock(),e.createElementBlock("span",{key:1,class:"layers-panel__legend-dot layers-panel__legend-dot--inline",style:e.normalizeStyle({background:V(B)}),role:"img"},null,4)):e.createCommentVNode("",!0),e.createElementVNode("span",U0,e.toDisplayString(B.name),1)]),e.createElementVNode("div",q0,[d(B.id)&&!B.isTemporary?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(Zo,{"layer-id":B.id,class:"flex"},{trigger:e.withCtx(({toggle:w})=>[e.createElementVNode("button",{class:"inline-flex items-center justify-center p-0 text-inherit no-underline cursor-pointer",onClick:e.withModifiers(w,["prevent","stop"])},[e.createElementVNode("div",W0,[e.createVNode(e.unref(xl))])],8,H0)]),_:1},8,["layer-id"]),e.createVNode(Mt,{count:Array.isArray(B.filters)?B.filters.length:0,layer:B},null,8,["count","layer"])],64)):e.createCommentVNode("",!0),e.createVNode(mn,{items:N(B)},null,8,["items"])])])]),(E=B.actions)!=null&&E.length?(e.openBlock(),e.createElementBlock("div",Y0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.actions,w=>(e.openBlock(),e.createElementBlock("button",{key:w.widget||w.id||w.icon,type:"button",class:"layers-panel__action",innerHTML:w.icon,onClick:L=>u("action",{layerId:w.widget})},null,8,Z0))),128))])):e.createCommentVNode("",!0)])}),128))],2)])}}}),Go=Q(K0,[["__scopeId","data-v-b69f6110"]]),G0={class:"catalog-tab__search relative mt-[10px]"},X0={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%)"}},J0={class:"catalog-tab__list flex-1 overflow-y-auto mt-2"},Q0={key:0,class:"text-sm text-gray-400 text-center mt-6"},eg=["onClick"],tg={class:"flex items-center gap-x-3"},ng={class:"max-w-[260px] text-[14px] text-[#4b5563]"},og={class:"text-xs opacity-60 text-[#4b5563]"},lg={class:"flex items-center cursor-pointer gap-2 flex-1"},rg=["checked","onChange"],ag={class:"text-[13px] text-gray-600 max-w-[260px]"},ig={class:"flex items-center gap-2"},sg=Q(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 m=o.search.trim().toLowerCase();return o.catalog.groups.map(h=>{const d=m?h.layers.filter(x=>(typeof x.name=="string"?x.name:"").toLowerCase().includes(m)):h.layers;return{...h,layers:d}}).filter(h=>h.layers.length>0)}),g=e.computed({get:()=>o.search,set:m=>l("update:search",m)});function y(m){r[m]=!r[m],Ju()}function b(m){return!!r[m]}function c(m,h){if(o.selected.includes(h)){i.visible=!1,i.layerId=null;return}const d=m.currentTarget;if(!d)return;const x=d.getBoundingClientRect(),S=typeof window<"u"?window.scrollX:0,T=typeof window<"u"?window.scrollY:0;i.left=x.left+x.width/2+S,i.top=x.bottom+8+T,i.layerId=h,i.visible=!0}function f(){i.visible=!1,i.layerId=null}function u(m){return[{label:"Назва",value:p(m.name)},{label:"Сервіс",value:p(m.service)},{label:"Посилання",value:p(m.url),breakLine:!0}]}function p(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",G0,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[0]||(h[0]=d=>g.value=d),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,g.value]]),(e.openBlock(),e.createElementBlock("svg",X0,[...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",J0,[s.value.length===0?(e.openBlock(),e.createElementBlock("div",Q0," Нічого не знайдено ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.id,class:"mt-2"},[e.createElementVNode("div",{class:"hover:bg-gray-100 cursor-pointer p-[8px] rounded-lg flex justify-between items-center",onClick:x=>y(d.id)},[e.createElementVNode("div",tg,[(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",b(d.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",ng,e.toDisplayString(d.name),1)]),e.createElementVNode("div",og,e.toDisplayString(d.layers.length),1)],8,eg),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(d.layers,x=>(e.openBlock(),e.createElementBlock("div",{key:x.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between ml-[20px] py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",lg,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:t.selected.includes(x.id),onChange:S=>m.$emit("toggle-layer",x.id,S.target.checked,x)},null,40,rg),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",ag,e.toDisplayString(x.name),1)]),e.createElementVNode("div",ig,[Array.isArray(x.filters)&&x.filters.length?(e.openBlock(),e.createBlock(Mt,{key:0,count:x.filters.length,layer:x,disabled:!t.selected.includes(x.id),onMouseenter:S=>c(S,x.id),onMouseleave:f,onFocus:S=>c(S,x.id),onBlur:f},null,8,["count","layer","disabled","onMouseenter","onFocus"])):e.createCommentVNode("",!0),e.createVNode(mn,{items:u(x)},null,8,["items"])])]))),128))],512),[[e.vShow,b(d.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-7d3953c5"]]),cg={class:"flex flex-col gap-0"},dg={class:"text-xs text-slate-600 font-semibold"},ug=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 m=Math.min(460,window.innerWidth-24);return{position:"absolute",width:`${m}px`,maxWidth:`${m}px`,top:`${l.top}px`,left:`${l.left}px`,transform:l.transform,display:"block"}});function g(){if(l.open){f();return}if(!r.value){f();return}l.open=!0,e.nextTick(()=>{y(),u(),requestAnimationFrame(()=>{y()})})}function y(){if(!l.open||!r.value||!a.value)return;const m=r.value.getBoundingClientRect(),h=12,d=window.scrollX+h,x=window.scrollX+window.innerWidth-h,S=window.scrollY+h,T=window.scrollY+window.innerHeight-h,P=a.value.offsetWidth||Math.min(460,window.innerWidth-24),N=a.value.offsetHeight||0;let V=m.left+window.scrollX+(m.width-P)/2;V<d&&(V=d),V+P>x&&(V=Math.max(d,x-P)),l.left=V;let C=m.bottom+window.scrollY+h;C+N>T&&(C=m.top+window.scrollY-N-h,C<S&&(C=Math.max(S,T-N))),C<S&&(C=S),C+N>T&&(C=Math.max(S,T-N)),l.top=C,l.transform="none"}function b(m){var d,x;if(!l.open)return;const h=m.target;(d=r.value)!=null&&d.contains(h)||(x=a.value)!=null&&x.contains(h)||f()}function c(m){m.key==="Escape"&&f()}function f(){p(),l.open=!1,r.value=null,a.value=null}function u(){p(),a.value&&(i=new ResizeObserver(()=>{y()}),i.observe(a.value))}function p(){i&&(i.disconnect(),i=null)}return e.onMounted(()=>{document.addEventListener("click",b,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",y,!0),window.addEventListener("resize",y)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",y,!0),window.removeEventListener("resize",y),p()}),e.watch(()=>o.items,()=>{l.open&&e.nextTick(()=>y())},{deep:!0}),n({close:f}),(m,h)=>(e.openBlock(),e.createElementBlock("div",{class:"inline-flex relative",ref_key:"anchorEl",ref:r},[e.createElementVNode("div",{onClick:e.withModifiers(g,["prevent","stop"])},[e.renderSlot(m.$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",cg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,d=>(e.openBlock(),e.createElementBlock("div",{key:d.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",dg,e.toDisplayString(d.label),1),e.createElementVNode("div",{class:e.normalizeClass(["text-sm text-gray-800",{"break-all":d.breakLine}])},e.toDisplayString(d.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),pg={class:"selected-tab"},mg={class:"selected-tab__actions"},fg={key:0,class:"selected-tab__scroll"},gg=["onDragstart","onDragover","onDrop"],yg={class:"selected-tab__item-header"},hg={class:"selected-tab__item-info"},xg=["checked","onChange"],bg={class:"selected-tab__item-name"},kg={class:"selected-tab__item-controls"},wg=["onClick"],_g={class:"selected-tab__menu-inner"},Eg=Q(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,g=e.reactive({top:0,left:0}),y=e.ref(null),b=e.reactive({top:0,left:0}),c=e.ref(null),f=new Map,u=e.reactive({});function p(B){var E;for(const w of((E=o.catalog)==null?void 0:E.groups)??[]){const L=w.layers.find(O=>O.id===B);if(L)return L}return null}e.watch(()=>o.selected,B=>{B.forEach(E=>{r[E]==null&&(r[E]=100)})},{immediate:!0});function m(){if(!a.value)return;const B=s.get(a.value);if(!B)return;const E=B.getBoundingClientRect();g.top=E.bottom+8+window.scrollY,g.left=E.left+window.scrollX}e.watch(()=>o.selected,B=>{B.forEach(E=>{u[E]==null&&(u[E]=!0)})},{immediate:!0});function h(B,E){u[B]=E;const w=se(B);w&&w.setVisible(E)}function d(B,E){E?f.set(B,E):f.delete(B)}function x(B){y.value=y.value===B?null:B,y.value&&e.nextTick(()=>{S(B),requestAnimationFrame(()=>{S(B)})})}function S(B){const E=f.get(B);if(!E||!c.value)return;const w=E.getBoundingClientRect(),L=12,O=6,R=window.scrollX+L,G=window.scrollX+window.innerWidth-L,W=window.scrollY+L,Y=window.scrollY+window.innerHeight-L,le=c.value.offsetWidth||190,ae=c.value.offsetHeight||0;let ne=w.bottom+window.scrollY+O,ie=w.left+window.scrollX;ie+le>G&&(ie=w.right+window.scrollX-le,ie<R&&(ie=R)),ie<R&&(ie=R),ne+ae>Y&&(ne=w.top+window.scrollY-ae-O,ne<W&&(ne=Math.max(W,Y-ae))),ne<W&&(ne=W),ne+ae>Y&&(ne=Math.max(W,Y-ae)),b.top=ne,b.left=ie}function T(B){const E=se(B);E&&E.remove(),l("remove",B),y.value=null}function P(B){const E=B.target,w=a.value,L=y.value;if(w){const O=i.value,R=s.get(w);if(O&&O.contains(E)||R&&R.contains(E))return;a.value=null}if(L){const O=c.value,R=f.get(L);if(O&&O.contains(E)||R&&R.contains(E))return;y.value=null}}function N(){a.value&&m(),y.value&&S(y.value)}e.onMounted(()=>{document.addEventListener("click",P),window.addEventListener("resize",N),window.addEventListener("scroll",N,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",P),window.removeEventListener("resize",N),window.removeEventListener("scroll",N,!0)});const{map:V}=Ce();function C(B){var O,R,G;if(!B)return;const E=se(B),w=p(B);if(!E&&!w)return;if(((O=w==null?void 0:w.extent)==null?void 0:O.length)===4&&((R=V.value)!=null&&R.fitBounds)){const W=w.extent.map(Y=>Number(Y));if(W.every(Y=>Number.isFinite(Y))){const[Y,le,ae,ne]=W;V.value.fitBounds([[Y,le],[ae,ne]],{padding:40}),y.value=null;return}}(G=E==null?void 0:E.getSource)!=null&&G.call(E)&&(y.value=null)}const F=e.ref(null),I=e.ref(null);function q(B,E){F.value=E,I.value=E,B.dataTransfer&&(B.dataTransfer.effectAllowed="move",B.dataTransfer.setData("text/plain",String(E)))}function U(B){I.value=B}function D(B,E){if(B.preventDefault(),F.value===null||F.value===E){F.value=null,I.value=null;return}const w=[...o.selected],[L]=w.splice(F.value,1);w.splice(E,0,L),l("reorder",w),F.value=null,I.value=null}function $(){F.value=null,I.value=null}function k(B){return B==null||B===""?null:String(B)}function v(B,E){return!Array.isArray(B)||B.length===0?null:`${B.length} ${E}`}function M(B){var ne,ie,ce,$e,Se,De;const E=se(B),w=p(B);if(!E&&!w)return[];const L=(w==null?void 0:w.name)||((ie=(ne=E==null?void 0:E.opts)==null?void 0:ne.layer)==null?void 0:ie.name)||null,O=(w==null?void 0:w.service)||((ce=E==null?void 0:E.opts)==null?void 0:ce.service)||null,R=($e=E==null?void 0:E.getSource)==null?void 0:$e.call(E),G=R&&"tiles"in R?(Se=R.tiles)==null?void 0:Se[0]:(w==null?void 0:w.url)||null,W=(w==null?void 0:w.source_path)||null,Y=(E==null?void 0:E.popup)||(w==null?void 0:w.popup),le=(E==null?void 0:E.card)||(w==null?void 0:w.card),ae=(w==null?void 0:w.filters)||((De=E==null?void 0:E.opts)==null?void 0:De.filters);return[{label:"Назва",value:k(L)},{label:"Сервіс",value:k(O)},{label:"Посилання",value:k(G),breakLine:!0},{label:"Джерело",value:k(W),breakLine:!0},{label:"Popup",value:v(Y,"полів")},{label:"Картка",value:v(le,"полів")},{label:"Фільтри",value:v(ae,"фільтрів")}]}return(B,E)=>(e.openBlock(),e.createElementBlock("div",pg,[e.createElementVNode("div",mg,[e.createElementVNode("button",{class:"selected-tab__add",onClick:E[0]||(E[0]=w=>l("select-layer"))},[...E[3]||(E[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",fg,[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,(w,L)=>{var O;return e.openBlock(),e.createElementBlock("div",{key:w,class:e.normalizeClass(["selected-tab__item",{"selected-tab__item--dragging":F.value===L,"selected-tab__item--over":I.value===L}]),draggable:"true",onDragstart:R=>q(R,L),onDragover:e.withModifiers(R=>U(L),["prevent"]),onDrop:R=>D(R,L),onDragend:$},[e.createElementVNode("div",yg,[e.createElementVNode("div",hg,[E[4]||(E[4]=e.createElementVNode("span",{class:"selected-tab__item-handle"},"☰",-1)),e.createElementVNode("input",{type:"checkbox",class:"selected-tab__item-checkbox",checked:u[w]??!0,onChange:R=>h(w,R.target.checked)},null,40,xg),e.createElementVNode("span",bg,e.toDisplayString(((O=p(w))==null?void 0:O.name)||"Шар"),1)]),e.createElementVNode("div",kg,[e.createVNode(Zo,{"layer-id":w},null,8,["layer-id"]),e.createElementVNode("button",{type:"button",class:"selected-tab__item-menu",ref_for:!0,ref:R=>d(w,R),onClick:e.withModifiers(R=>x(w),["stop"])},[...E[5]||(E[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,wg)])])],42,gg)}),128))])])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[y.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuEl",ref:c,class:"selected-tab__menu",style:e.normalizeStyle({top:b.top+"px",left:b.left+"px"})},[e.createElementVNode("div",_g,[e.createElementVNode("button",{class:"selected-tab__menu-item",onClick:E[1]||(E[1]=w=>C(y.value))},[...E[6]||(E[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(ug,{items:M(y.value)},{default:e.withCtx(()=>[...E[7]||(E[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"]),E[9]||(E[9]=e.createElementVNode("hr",null,null,-1)),e.createElementVNode("button",{class:"selected-tab__menu-item selected-tab__menu-item--danger",onClick:E[2]||(E[2]=w=>T(y.value))},[...E[8]||(E[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-e8c4b151"]]),Ng={class:"filter-tab"},Vg={key:0,class:"filter-tab__header"},Bg={class:"filter-tab__title"},Cg={key:1,class:"filter-tab__content rounded-md"},vg={class:"filter-tab__scroll"},$g={key:2,class:"filter-tab__empty"},Sg=Q(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 g;return((g=l.layer)==null?void 0:g.filters)??[]}),i=e.computed(()=>a.value.length>0);function s(g){r("change",g.data)}return(g,y)=>(e.openBlock(),e.createElementBlock("div",Ng,[t.layer&&i.value?(e.openBlock(),e.createElementBlock("div",Vg,[e.createElementVNode("div",null,[e.createElementVNode("p",Bg,e.toDisplayString(t.layer.name),1)])])):e.createCommentVNode("",!0),t.layer&&i.value?(e.openBlock(),e.createElementBlock("div",Cg,[e.createElementVNode("div",vg,[e.createVNode(e.unref(o),{view:"vertical",schema:a.value,value:t.value,limit:5,class:"rounded-md pb-0",onChange:y[0]||(y[0]=b=>s(b))},null,8,["schema","value"])])])):(e.openBlock(),e.createElementBlock("div",$g,[...y[1]||(y[1]=[e.createElementVNode("p",{class:"filter-tab__empty-title"},"Немає доступних фільтрів",-1),e.createElementVNode("p",{class:"filter-tab__empty-text"}," Оберіть шар із фільтрами у каталозі, щоб налаштувати відбір даних. ",-1)])]))]))}}),[["__scopeId","data-v-b9cd2910"]]),Ag={class:"flex items-center justify-between mb-4"},Lg={class:"flex items-center gap-2"},Fg={class:"text-lg font-semibold text-gray-800"},Mg={key:0},Tg={key:1,class:"block text-sm font-normal text-gray-500"},Dg={class:"flex items-center gap-2"},Ig={class:"flex mb-4 border-b border-gray-200"},zg={class:"map-catalog-widget__body"},Xo=Q(e.defineComponent({__name:"MapCatalogWidget",setup(t){const n=e.ref("catalog"),o=e.ref({groups:[]}),l=e.ref([]),r=e.ref(""),{map:a}=Ce(),i=we.useRoute(),s=we.useRouter(),g=e.reactive({}),y=e.ref(null),b=e.ref(!1),c=e.ref(!1);function f(k){return o.value.groups.map(v=>v.layers.find(M=>M.id===k)).find(Boolean)||null}function u(){const k=y.value;if(!k)return;delete g[k];const v=se(k);v!=null&&v.setFilter&&v.setFilter("")}function p(k,v){const M=se(k);if(g[k]={...v},!(M!=null&&M.setFilter))return;const B=Object.entries(v).filter(([,E])=>E!=null&&E!=="").map(([E,w])=>`${E}=${w}`);M.setFilter(B.join("|"))}function m(k){const v=y.value;v&&p(v,k)}function h(k){const v=k.url;let M=null;if(v&&(M=v.startsWith("http")?v:`${window.location.origin}${v}`),!M)return null;const B=(k.service||"").toString().toLowerCase(),E=k.count??null;return B&&B!=="vtile"?{service:B,count:E,source:{type:"raster",tiles:[M],tileSize:256,minzoom:0,maxzoom:20}}:{service:B,count:E,source:{type:"vector",tiles:[M],minzoom:0,maxzoom:14},layer:{style:k.style},card:k.card,popup:k.popup}}function d(k,v,M){var L;const B=M??f(k);if(!B)return;const E=h(B);if(!E)return;const w=se(B.id,E,a);if(w)if(w.setVisible(v),v){if(!l.value.includes(k)&&(l.value.push(k),(L=a.value)!=null&&L.getLayer(k)))try{a.value.moveLayer(k)}catch(O){console.warn("Cannot move new layer",k,O)}}else l.value=l.value.filter(O=>O!==k),y.value===k&&(u(),y.value=null)}function x(){l.value.forEach(k=>{const v=se(k);v&&v.setVisible(!1)}),l.value=[]}function S(k){l.value=[...k],e.nextTick(()=>{var E;if(!a.value)return;const v=((E=a.value.getStyle())==null?void 0:E.layers)??[];let M;const B=w=>v.filter(L=>{var O,R;return(L==null?void 0:L.source)===w||(L==null?void 0:L.id)===w||((R=(O=L==null?void 0:L.id)==null?void 0:O.startsWith)==null?void 0:R.call(O,`${w}`))}).map(L=>L.id);for(let w=k.length-1;w>=0;w-=1){const L=k[w],O=B(L);O.length&&(O.forEach(R=>{var G;if((G=a.value)!=null&&G.getLayer(R))try{a.value.moveLayer(R,M)}catch(W){console.warn("Cannot move layer",R,W)}}),M=O[0])}})}function T(k){!k||!Array.isArray(k.filters)||k.filters.length===0||l.value.includes(k.id)&&(y.value=k.id,g[k.id]||(g[k.id]={}),n.value="filter")}function P(){n.value="catalog"}const N=e.computed(()=>y.value?f(y.value):null),V=e.computed(()=>{const k=y.value;return k?g[k]??{}:{}}),C=e.computed(()=>o.value.groups.reduce((k,v)=>k+v.layers.length,0)),F=e.computed(()=>n.value==="selected"?"Вибрані шари":n.value==="filter"?"Фільтр шарів":"Каталог"),I=e.computed(()=>n.value==="selected"?l.value.length:n.value==="catalog"?C.value:null),q=e.computed(()=>{var k;return n.value==="filter"?((k=N.value)==null?void 0:k.name)??"":""});async function U(){const v=await(await fetch("/api/gis-layer-list")).json(),M=new Map;v.forEach(w=>{const L=w.group_id??"other";M.has(L)||M.set(L,{id:L,name:w.group_name||"Інші шари",layers:[]}),M.get(L).layers.push(w)}),o.value={groups:Array.from(M.values())};const B=i.query.layers;if(!B)return;const E=Array.isArray(B)?B[0]:B;typeof E=="string"&&E.split(",").forEach(w=>{const L=w.trim();if(!L)return;const O=f(L);O&&d(L,!0,O)})}e.watch(y,k=>{!k&&n.value==="filter"&&(n.value="catalog")}),e.watch(N,k=>{!k&&y.value&&(y.value=null)}),e.watch(l,k=>{const v={...i.query};k.length?v.layers=k.join(","):delete v.layers,s.replace({query:v}).catch(()=>{})},{deep:!0});function D(){b.value=!b.value}function $(){c.value=window.innerWidth<=768}return e.onMounted(()=>{U(),$(),window.addEventListener("resize",$)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",$)}),(k,v)=>(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",I.value>1?"min-h-[250px]":"min-h-[0px]"])},[e.createElementVNode("div",Ag,[e.createElementVNode("div",Lg,[v[5]||(v[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",Fg,[e.createTextVNode(e.toDisplayString(F.value)+" ",1),I.value!==null?(e.openBlock(),e.createElementBlock("span",Mg,"("+e.toDisplayString(I.value)+")",1)):e.createCommentVNode("",!0),q.value?(e.openBlock(),e.createElementBlock("span",Tg,e.toDisplayString(q.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Dg,[e.createElementVNode("button",{onClick:x,class:"p-1 rounded-full hover:bg-gray-200 transition-colors","aria-label":"Reset layers"},[...v[6]||(v[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-22fbc74e><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-22fbc74e></path><path d="M21 3v5h-5" data-v-22fbc74e></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-22fbc74e></path><path d="M8 16H3v5" data-v-22fbc74e></path></svg>',1)])]),c.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"map-catalog-widget__toggle-button",onClick:D,"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":b.value})},[...v[7]||(v[7]=[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)])]),e.createElementVNode("div",{class:e.normalizeClass(["map-catalog-widget__content",{"map-catalog-widget__content--collapsed":c.value&&!b.value}])},[e.createElementVNode("div",Ig,[e.createElementVNode("button",{onClick:v[0]||(v[0]=M=>n.value="catalog"),class:e.normalizeClass(["px-4 py-2 text-sm font-medium",n.value==="catalog"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"])}," Каталог ",2),e.createElementVNode("button",{onClick:v[1]||(v[1]=M=>n.value="selected"),class:e.normalizeClass(["px-4 py-2 text-sm font-medium",n.value==="selected"?"text-blue-600 border-b-2 border-blue-600":"text-gray-600 hover:text-gray-800"])}," Вибрані шари ",2)]),e.createElementVNode("div",zg,[n.value==="catalog"?(e.openBlock(),e.createBlock(sg,{key:0,class:"map-catalog-widget__scroll",catalog:o.value,selected:l.value,search:r.value,"onUpdate:search":v[2]||(v[2]=M=>r.value=M),onToggleLayer:d,onOpenFilter:T},null,8,["catalog","selected","search"])):n.value==="selected"?(e.openBlock(),e.createBlock(Eg,{key:1,catalog:o.value,selected:l.value,onToggleLayer:d,onSelectLayer:v[3]||(v[3]=M=>n.value="catalog"),onReorder:S,onRemove:v[4]||(v[4]=M=>l.value=l.value.filter(B=>B!==M))},null,8,["catalog","selected"])):(e.openBlock(),e.createBlock(Sg,{key:2,layer:N.value,value:V.value,onChange:m,onClose:P},null,8,["layer","value"]))])],2)],2))}}),[["__scopeId","data-v-22fbc74e"]]),jg={key:1,class:"flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},Og={class:"flex items-start justify-between gap-3 p-5 pb-3"},Pg={class:"inline-block text-xl font-semibold text-gray-800"},Rg={key:0,class:"mt-1 text-sm text-gray-500"},Ug={class:"flex items-center gap-[6px]"},qg={class:"px-5 pb-5 space-y-6"},Hg={key:0,class:"space-y-2"},Wg={class:"flex flex-wrap gap-4"},Yg=["value"],Zg={key:1,class:"text-sm text-gray-500"},Kg={key:2,class:"text-sm text-gray-500"},Gg={class:"text-4xl font-medium text-gray-800"},Xg={class:"space-y-[14px]"},Jg={class:"flex items-center gap-[10px] text-gray-600"},Qg={class:"font-medium text-gray-700"},ey={class:"flex items-center justify-end text-end gap-3"},ty={class:"font-medium text-gray-800"},ny={class:"min-w-[40px] font-medium text-[#3C3C4399]"},Jo=Q(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),g=e.ref(null),y=e.ref(null),b=e.ref(null),c=e.ref({}),f=e.ref(null);function u(v){return v&&JSON.parse(JSON.stringify(v))}const p=e.computed(()=>{const v=o.config.layer;if(typeof v!="string")throw new Error("MapAttributeWidget: `layer` must be a string");const M=v.trim();if(!M)throw new Error("MapAttributeWidget: `layer` must be non-empty");return M}),m=e.computed(()=>{const{list:v,attribute:M}=o.config;if(Array.isArray(v)&&v.length)return v.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(M))return M.map(B=>B!=null?String(B).trim():"").filter(B=>B.length).map(B=>({id:B,text:null}));if(typeof M=="string"){const B=M.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(v=>({id:v.id,label:v.text||c.value[v.id]||v.id})));e.watch(m,v=>{if(!v.length){f.value=null,a.value=[];return}(!f.value||!v.some(M=>M.id===f.value))&&(f.value=v[0].id)},{immediate:!0});const d=e.computed(()=>{var v;return f.value||((v=m.value[0])==null?void 0:v.id)||null});e.watch(p,()=>{var v,M;(M=(v=s.value)==null?void 0:v.remove)==null||M.call(v),s.value=null,g.value=null,y.value=null,b.value=null,c.value={}});const x=e.computed(()=>{var v;return(v=y.value)!=null&&v.length?{id:p.value,name:g.value,filters:y.value}:null}),S=e.computed(()=>{var v,M;return((M=(v=x.value)==null?void 0:v.filters)==null?void 0:M.length)||0});async function T(v){var E;const M=await fetch(`/api/gis-service/${encodeURIComponent(v)}`);if(!M.ok){let w="Не вдалося завантажити налаштування шару";try{const L=await M.json();w=((E=L==null?void 0:L.message)==null?void 0:E.error)||(L==null?void 0:L.message)||w}catch{}throw new Error(w)}const B=await M.json();return g.value=(B==null?void 0:B.name)||null,y.value=Array.isArray(B==null?void 0:B.filters)?B.filters:null,b.value=u((B==null?void 0:B.style)||{}),c.value=((B==null?void 0:B.attributes)||[]).reduce((w,L)=>{const O=typeof(L==null?void 0:L.name)=="string"?L.name.trim():"",R=typeof(L==null?void 0:L.ua)=="string"?L.ua.trim():"";return O&&(w[O]=R||O),w},{}),B}function P(v,M){let B=se(v);if(!B){const E=`${location.origin}/api/vtile/${v}/ua/{z}/{x}/{y}.vmt`;B=se(v,{source:{type:"vector",tiles:[E],minzoom:0,maxzoom:14},layer:{id:v,source:v,"source-layer":v,style:(M==null?void 0:M.style)||{}},card:M==null?void 0:M.card,popup:M==null?void 0:M.popup})}return s.value=B,B}async function N(v,M){var w;const B=`/api/gis-service/${encodeURIComponent(v)}/${encodeURIComponent(M)}`,E=await fetch(B);if(!E.ok){let L="Не вдалося отримати статистику";try{const O=await E.json();L=((w=O==null?void 0:O.message)==null?void 0:w.error)||(O==null?void 0:O.message)||L}catch{}throw new Error(L)}return E.json()}function V(v){const M=new Map;return v&&(v.rules||[]).forEach(E=>{const w=(E==null?void 0:E.value)??(E==null?void 0:E.id);w!=null&&M.set(String(w),E)}),M}function C(v,M,B,E,w){if(typeof(M==null?void 0:M.color)=="string"&&M.color.trim())return M.color.trim();const L=o.config.colors||{};if(L[v])return L[v];const R=V(B==null?void 0:B.style).get(v);return typeof(R==null?void 0:R.color)=="string"&&R.color.trim()?R.color.trim():n[w%n.length]}function F(v,M,B,E){var w;return(M==null?void 0:M.text)||(M==null?void 0:M.label)||(M==null?void 0:M.name)||(M==null?void 0:M[`${E}_text`])||((w=V(B==null?void 0:B.style).get(v))==null?void 0:w.label)||v}function I(v,M,B,E){if(!v)return;const w=u((M==null?void 0:M.style)||b.value)||{},L=E.trim();if(!L)return;const O={...w.colors||{},...o.config.colors||{}};L===E&&B.forEach(R=>{R.color.trim()&&(O[R.id]=R.color)}),v.setStyle({...w,type:w.type||"polygon",colorAttr:L,opacity:.8,colors:O})}async function q(){var L,O;a.value=[],i.value=null;const v=p.value,M=d.value;if(!M)return;r.value=!0;const B=await T(v);P(v,B);const E=await N(v,M),w=Array.isArray(E==null?void 0:E.rows)?E.rows.map((R,G)=>{const W=(R==null?void 0:R.id)??(R==null?void 0:R.value),Y=W!=null?String(W):"";if(!Y)return null;const le=F(Y,R,B,M),ae=Number((R==null?void 0:R.count)??0)||0,ne=C(Y,R,B,M,G);return{id:Y,label:le,count:ae,color:ne}}).filter(Boolean):[];a.value=w,i.value=((L=E==null?void 0:E.field)==null?void 0:L.label)||((O=E==null?void 0:E.field)==null?void 0:O.name)||null,I(s.value,B,w,M),r.value=!1}e.watch(()=>[p.value,d.value],()=>{q()},{immediate:!0});const U=e.computed(()=>"Набори даних"),D=e.computed(()=>a.value.reduce((v,M)=>v+M.count,0)),$=e.computed(()=>{var B;const v=d.value;return((B=h.value.find(E=>E.id===v))==null?void 0:B.label)||null||i.value||v||null});function k(v){return D.value?`${(v/D.value*100).toFixed(2)}%`:"0.00%"}return e.onBeforeUnmount(()=>{var v,M;(M=(v=s.value)==null?void 0:v.remove)==null||M.call(v)}),(v,M)=>l.value?(e.openBlock(),e.createElementBlock("div",jg,[e.createElementVNode("div",Og,[e.createElementVNode("div",null,[e.createElementVNode("h2",Pg,e.toDisplayString(U.value),1),$.value&&h.value.length===1?(e.openBlock(),e.createElementBlock("p",Rg,e.toDisplayString($.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ug,[x.value?(e.openBlock(),e.createBlock(Mt,{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:S.value,layer:x.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:M[1]||(M[1]=B=>l.value=!1)},[...M[3]||(M[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",qg,[h.value.length>1?(e.openBlock(),e.createElementBlock("div",Hg,[e.createElementVNode("div",Wg,[(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":M[2]||(M[2]=E=>f.value=E)},null,8,Yg),[[e.vModelRadio,f.value]]),e.createElementVNode("span",null,e.toDisplayString(B.label),1)]))),128))])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Zg,"Завантаження…")):a.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h4",Gg,e.toDisplayString(D.value),1),e.createElementVNode("ul",Xg,[(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",Jg,[e.createElementVNode("span",{class:"block w-[16px] h-[16px] rounded",style:e.normalizeStyle({backgroundColor:B.color})},null,4),e.createElementVNode("span",Qg,e.toDisplayString(B.label),1)]),e.createElementVNode("div",ey,[e.createElementVNode("span",ty,e.toDisplayString(B.count),1),e.createElementVNode("span",ny,e.toDisplayString(k(B.count)),1)])]))),128))])],64)):(e.openBlock(),e.createElementBlock("div",Kg,"Дані відсутні"))])])):(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:M[0]||(M[0]=B=>l.value=!0)}," Набори даних "))}}),[["__scopeId","data-v-437c8d68"]]),oy={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]"},ly=["title"],ry={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"},ay=["onClick"],iy=["placeholder"],sy={class:"divide-y divide-gray-100"},cy=["onClick"],dy=600,uy=30,py=8,my="https://data.softpro.ua/api-user/gis-url-proxy",fy="https://geo.rv.ua/api-user/dzk.api",gy="https://nominatim.openstreetmap.org/search",Qo=Q(e.defineComponent({__name:"MapSearchWidget",props:{config:{}},setup(t){const n=t,o=Ce(),l=e.getCurrentInstance();function r(){return typeof globalThis<"u"&&globalThis.proxy?globalThis.proxy:typeof window<"u"&&window.proxy?window.proxy:null}function a(){var O,R,G;const E=(O=l==null?void 0:l.appContext.config.globalProperties)==null?void 0:O.$settings,w=(R=E==null?void 0:E.map)==null?void 0:R.searchViewbox;if(w)return w;const L=r();return(G=L==null?void 0:L.map)==null?void 0:G.searchViewbox}const s=!!a()?["xy","parcel","address"]:["xy","parcel"],g=e.computed(()=>{var w,L;const E=(L=(w=n.config)==null?void 0:w.tools)==null?void 0:L.filter(O=>s.includes(O));return E&&E.length?E:s}),y=e.computed(()=>{var E,w;return((w=(E=n.config)==null?void 0:E.placeholder)==null?void 0:w.trim())||"Пошук…"}),b=e.ref(g.value[0]);e.watch(g,E=>{E.includes(b.value)||(b.value=E[0])});const c=e.ref(""),f=e.ref(!1),u=e.ref(null),p=e.ref(null),m=e.ref([]),h=e.ref(null),d=e.computed(()=>b.value==="address"&&m.value.length>0);let x=null;const S=e.reactive({position:"absolute",left:"0px",top:"0px",width:"100%",display:"none"});function T(){if(!p.value)return;const E=p.value.getBoundingClientRect(),w=E.width+uy,L=E.left+window.scrollX,O=E.bottom+window.scrollY+py;S.left=`${L}px`,S.top=`${O}px`,S.width=`${w}px`,S.display="block"}const P=()=>{d.value&&T()};function N(){x&&(clearTimeout(x),x=null)}e.watch(b,()=>{c.value="",f.value=!1,m.value=[],N()}),e.watch(d,E=>{E?e.nextTick(()=>{T()}):S.display="none"}),e.watch(c,E=>{if(b.value!=="address"){m.value=[],N();return}if(!E.trim()){m.value=[],N();return}N(),x=window.setTimeout(()=>{$(E).catch(w=>{const L=(w==null?void 0:w.message)||"Помилка пошуку адреси";re.notify({type:"error",title:"Пошук адреси",message:L})})},dy)});function V(E){b.value=E}function C(E){const w=E.target;if(f.value){const L=u.value;L&&!L.contains(w)&&(f.value=!1)}if(d.value){const L=h.value;L&&!L.contains(w)&&(m.value=[])}}e.onMounted(()=>{window.addEventListener("click",C,!0),window.addEventListener("scroll",P,!0),window.addEventListener("resize",P)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",C,!0),window.removeEventListener("scroll",P,!0),window.removeEventListener("resize",P),N()});function F(E){return E==="xy"?"Координати":E==="parcel"?"Кадастр":"Адреси"}function I(E){const w=E.replace(/[,]+/g," ").trim();if(!w)return null;const L=w.split(/\s+/).filter(Boolean);if(L.length<2)return null;const O=L.slice(0,2).map(Number);if(!O.every(ne=>Number.isFinite(ne)))return null;let[R,G]=O,W=R,Y=G;const le=ne=>Math.abs(ne)<=90,ae=ne=>Math.abs(ne)<=180;if(!le(W)||!ae(Y))if(le(Y)&&ae(W))W=G,Y=R;else return null;return{lat:W,lng:Y}}function q(E){return((E==null?void 0:E.items)||[]).map((L,O)=>{var R,G,W;return{id:String((L==null?void 0:L.id)??O),title:(L==null?void 0:L.title)||((R=L==null?void 0:L.address)==null?void 0:R.label)||"Знайдений обʼєкт",lat:Number((G=L==null?void 0:L.position)==null?void 0:G.lat),lng:Number((W=L==null?void 0:L.position)==null?void 0:W.lng)}})}function U(E){const w=(E==null?void 0:E.result)||(E==null?void 0:E.data)||E;if(!w)return[];const L=w.geom_centroid;if(!L||!Array.isArray(L.coordinates))return[];const[O,R]=L.coordinates;return!Number.isFinite(R)||!Number.isFinite(O)?[]:[{id:"parcel",title:w.cadnum||w.cad_num||"Земельна ділянка",lat:R,lng:O}]}function D(E){return(Array.isArray(E==null?void 0:E.features)?E.features:[]).map((L,O)=>{var ne,ie,ce;const R=(ne=L==null?void 0:L.geometry)==null?void 0:ne.coordinates,G=Number(R==null?void 0:R[0]),W=Number(R==null?void 0:R[1]);if(!Number.isFinite(W)||!Number.isFinite(G))return null;const Y=(L==null?void 0:L.properties)||{},le=((ie=Y==null?void 0:Y.geocoding)==null?void 0:ie.label)||(Y==null?void 0:Y.display_name)||(Y==null?void 0:Y.label)||"Адреса";return{id:String(((ce=Y==null?void 0:Y.geocoding)==null?void 0:ce.place_id)||(Y==null?void 0:Y.place_id)||O),title:le,lat:W,lng:G}}).filter(L=>!!L)}async function $(E){m.value=[],N();const w=new URL(gy);w.searchParams.set("format","geojson"),w.searchParams.set("q",E),w.searchParams.set("addressdetails","1"),w.searchParams.set("bounded","1");const L=a();L&&w.searchParams.set("viewbox",L);const O=await fetch(w.toString());if(!O.ok)throw new Error(`HTTP ${O.status}`);const R=await O.json(),G=D(R);if(!G.length){re.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}m.value=G}function k(E){M(E),m.value=[],c.value=""}function v(E){const L=E.replace(/\s+/g,"").split(":");if(console.log(L),L.length!==4)return!1;const O=[10,2,3,4];return L.every((R,G)=>R.length===O[G]&&/^\d+$/.test(R))}function M(E){var L,O;const w=((L=n.config)==null?void 0:L.zoom)??17;(O=o.flyTo)==null||O.call(o,{center:[E.lng,E.lat],zoom:w})}async function B(){const E=c.value.trim();if(E){if(b.value==="xy"){const w=I(E);if(!w){re.notify({type:"warning",title:"Пошук координат",message:"Не знайдено або невірний формат координат"});return}M({...w}),c.value="";return}if(b.value==="address"){try{await $(E)}catch(w){const L=(w==null?void 0:w.message)||"Помилка пошуку адреси";re.notify({type:"error",title:"Пошук адреси",message:L})}return}try{const w=new URL(b.value==="here"?my:fy);if(b.value==="here")w.searchParams.set("searchtext",E);else{if(!v(E)){re.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}w.searchParams.set("cad_num",E)}const L=await fetch(w.toString());if(!L.ok)throw new Error(`HTTP ${L.status}`);const O=await L.json(),R=b.value==="here"?q(O):U(O);if(!R.length)re.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const G=R[0];M(G),c.value=""}}catch(w){const L=(w==null?void 0:w.message)||"Помилка пошуку";re.notify({type:"error",title:"Пошук",message:L})}}}return(E,w)=>(e.openBlock(),e.createElementBlock("div",oy,[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(B,["prevent"])},[g.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:u,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]=L=>f.value=!f.value)},[e.createElementVNode("span",{class:"block w-full truncate",title:F(b.value)},e.toDisplayString(F(b.value)),9,ly),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":f.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))]),f.value?(e.openBlock(),e.createElementBlock("div",ry,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,L=>(e.openBlock(),e.createElementBlock("li",{key:L,class:"px-3 py-2 cursor-pointer hover:bg-gray-100 text-gray-900",onClick:O=>V(L)},e.toDisplayString(F(L)),9,ay))),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"searchWrapperRef",ref:p,class:"relative flex-1 min-w-[140px]"},[b.value==="parcel"?(e.openBlock(),e.createBlock(e.unref(xn.VsInputMask),{key:0,modelValue:c.value,"onUpdate:modelValue":w[1]||(w[1]=L=>c.value=L),mask:"0000000000:00:000:0000",class:"vs-input !h-[34px] transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid !pr-8 py-1.5 pl-3 text-sm"},null,8,["modelValue"])):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":w[2]||(w[2]=L=>c.value=L),placeholder:y.value,type:"text",class:"vs-input transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid !pr-8 py-1.5 pl-3 text-sm"},null,8,iy)),[[e.vModelText,c.value,void 0,{trim:!0}]]),w[4]||(w[4]=e.createElementVNode("button",{type:"submit",class:"absolute inset-y-0 right-2 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)),d.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(S)},[e.createElementVNode("ul",sy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,L=>(e.openBlock(),e.createElementBlock("li",{key:L.id,class:"px-3 py-2 cursor-pointer hover:bg-gray-50",onClick:O=>k(L)},e.toDisplayString(L.title),9,cy))),128))])],4)])):e.createCommentVNode("",!0)],512)],32)]))}}),[["__scopeId","data-v-3403649e"]]),yy="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css",hy="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js",xy=Q(e.defineComponent({__name:"MapPrintControl",setup(t){const{map:n,ready:o,addControl:l,removeControl:r}=Ce(),a=e.ref(null),i=e.ref(null),s=e.ref(null),g=e.ref(null);let y=null;function b(){!window.mapboxgl&&window.maplibregl&&(window.mapboxgl=window.maplibregl)}function c(N){if(Array.from(document.styleSheets).some(F=>{var I;return(I=F==null?void 0:F.href)==null?void 0:I.includes(N)}))return;const C=document.createElement("link");C.rel="stylesheet",C.href=N,document.head.appendChild(C)}function f(N){return new Promise((V,C)=>{const F=Array.from(document.scripts).find(q=>q.src===N);if(F){if(F._loaded)return V();F.addEventListener("load",()=>V()),F.addEventListener("error",()=>C(new Error(`Failed ${N}`)));return}const I=document.createElement("script");I.src=N,I.async=!0,I.onload=()=>{I._loaded=!0,V()},I.onerror=()=>C(new Error(`Failed ${N}`)),document.head.appendChild(I)})}function u(){var V,C,F;const N=window;return N.MapboxExportControl||((V=N.mapboxgl)==null?void 0:V.MapboxExportControl)||((C=N.mapboxglExport)==null?void 0:C.MapboxExportControl)||((F=N.mapboxglExport)==null?void 0:F.default)||null}function p(){const N=document.createElementNS("http://www.w3.org/2000/svg","svg");return N.setAttribute("xmlns","http://www.w3.org/2000/svg"),N.setAttribute("viewBox","0 0 24 24"),N.setAttribute("width","18"),N.setAttribute("height","18"),N.setAttribute("fill","none"),N.setAttribute("stroke","currentColor"),N.setAttribute("stroke-width","2"),N.setAttribute("stroke-linecap","round"),N.setAttribute("stroke-linejoin","round"),N.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,F)=>{const I=document.createElementNS("http://www.w3.org/2000/svg","path");Object.entries(C).forEach(([q,U])=>{I.setAttribute(q,U)}),N.appendChild(I)}),N}function m(){const N=document.createElement("button");N.id="print-btn",N.type="button",N.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(" "),N.setAttribute("aria-label","Друк");const V=p(),C=document.createElement("span");return C.className=["absolute left-full ml-3 px-3 py-1.5","bg-gray-900 text-white text-sm 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"),N.appendChild(V),N.appendChild(C),N.addEventListener("click",F=>{F.stopPropagation(),h()}),g.value=N,N}function h(){if(!s.value)return;s.value.style.display==="block"?x():d()}function d(){var N,V,C;s.value&&(s.value.style.display="block",(N=g.value)==null||N.classList.add("scale-105","shadow-xl"),(V=i.value)==null||V.toggleCrosshair(!0),(C=i.value)==null||C.togglePrintableArea(!0),document.addEventListener("click",S))}function x(){var N,V,C;s.value&&(s.value.style.display="none",(N=g.value)==null||N.classList.remove("scale-105","shadow-xl"),(V=i.value)==null||V.toggleCrosshair(!1),(C=i.value)==null||C.togglePrintableArea(!1),document.removeEventListener("click",S))}function S(N){const V=a.value;V&&(N.target&&V.contains(N.target)||x())}function T(N){const V={Size:"Розмір",Orientation:"Орієнтація",Format:"Формат",DPI:"DPI",Landscape:"Горизонтальна",Portrait:"Вертикальна",PNG:"PNG",JPEG:"JPEG",SVG:"SVG",PDF:"PDF","Page Size":"Розмір","Page Orientation":"Орієнтація"};N.querySelectorAll("label, option").forEach(F=>{var q;const I=(q=F.textContent)==null?void 0:q.trim();I&&V[I]&&(F.textContent=V[I])});const C=N.querySelector("button");C&&(C.textContent="Друкувати")}function P(N){const V=N.querySelector(".mapboxgl-export-list");if(!V||!a.value)return;s.value=V;const C=N.querySelector("button");if(C&&(C.style.display="none"),N.style.display="none",!g.value){const I=m();a.value.appendChild(I)}V.style.display="none";const F="_printControlBound";if(!V[F]){const I=q=>q.stopPropagation();V.addEventListener("click",I),V.addEventListener("mousedown",I),V[F]=!0}a.value.appendChild(V),T(V)}return e.onMounted(async()=>{await(o==null?void 0:o());const N=n.value;if(!N)return;c(yy),b();try{await f(hy)}catch(F){console.warn("[MapPrintControl] load error",F);return}const V=u();if(!V)return;const C=new V({PageSize:"A4",PageOrientation:"landscape",Format:"pdf",DPI:300,Crosshair:!0,PrintableArea:!0});if(i.value=C,typeof C.onAdd=="function"){const F=C.onAdd.bind(C);C.onAdd=I=>{const q=F(I);return setTimeout(()=>q&&P(q),50),q}}l?l(C,"top-right"):N.addControl(C,"top-right"),y=F=>{F.key==="Escape"&&x()},document.addEventListener("keyup",y)}),e.onBeforeUnmount(()=>{x(),y&&(document.removeEventListener("keyup",y),y=null);const N=n.value;if(i.value)try{r?r(i.value):N==null||N.removeControl(i.value)}catch{}i.value=null}),(N,V)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:a,class:"map-print-control"},null,512))}}),[["__scopeId","data-v-d08551cb"]]),by={class:"cursor-coordinates"},ky={class:"cursor-coordinates__text"},wy=Q(e.defineComponent({__name:"MapCursorCoordinates",props:{coordinates:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",by,[e.createElementVNode("span",ky,e.toDisplayString(t.coordinates),1)]))}}),[["__scopeId","data-v-d83db59a"]]),_y={class:"minimap__wrapper"},Tt="minimap-viewport",Ey="minimap-viewport-layer",Ny=Q(e.defineComponent({__name:"MapMiniMap",props:{mapContext:{},width:{},height:{},options:{}},setup(t){var S,T,P,N;const n=t,o=((T=(S=e.getCurrentInstance())==null?void 0:S.appContext.config.globalProperties)==null?void 0:T.$settings)||null,l=ut((P=o==null?void 0:o.map)==null?void 0:P.center)||[30,50],r=e.ref(null),a=e.shallowRef(null),i=(N=n.options)==null?void 0:N.active,s=e.ref(i===void 0?!1:!!i);function g(V,C){return typeof V=="number"&&Number.isFinite(V)?V:C}const y=e.computed(()=>{var q,U;const V=(q=n.options)==null?void 0:q.width,C=(U=n.options)==null?void 0:U.height,F=g(n.width??V,210),I=g(n.height??C,150);return{width:`${F}px`,height:`${I}px`}});function b(){var C,F;const V=(F=(C=n.mapContext)==null?void 0:C.map)==null?void 0:F.value;if(!V||typeof V.getStyle!="function")return null;try{const I=V.getStyle();return I?JSON.parse(JSON.stringify(I)):null}catch{return null}}let c=null;function f(){var q;if(typeof window>"u"||a.value||!r.value)return;const V=b(),C=l,F={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:C,zoom:((q=n.options)==null?void 0:q.zoom)??3,interactive:!1,attributionControl:!1},I={...F,...n.options??{}};I.container=F.container,a.value=new maplibregl.Map(I),a.value.on("load",()=>{p(),h()})}function u(){if(!a.value)return;const V=b();V&&(a.value.once("styledata",()=>{p(),h()}),a.value.setStyle(V))}function p(){if(a.value){if(typeof a.value.isStyleLoaded=="function"&&!a.value.isStyleLoaded()){a.value.once("styledata",()=>{p(),h()});return}a.value.getSource(Tt)||(a.value.addSource(Tt,{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]},properties:{}}}),a.value.addLayer({id:Ey,type:"fill",source:Tt,paint:{"fill-color":"#3b82f6","fill-opacity":.2,"fill-outline-color":"#1d4ed8"}}))}}function m(){s.value=!s.value,s.value&&e.nextTick(()=>{var V;return(V=a.value)==null?void 0:V.resize()})}function h(){var D,$;const V=($=(D=n.mapContext)==null?void 0:D.map)==null?void 0:$.value;if(!a.value||!V||!V.getBounds)return;if(typeof a.value.isStyleLoaded=="function"&&!a.value.isStyleLoaded()){a.value.once("styledata",()=>{h()});return}const C=V.getBounds();if(!C)return;const F=C.getNorthEast(),I=C.getSouthWest();if(!F||!I)return;const q=[[I.lng,F.lat],[F.lng,F.lat],[F.lng,I.lat],[I.lng,I.lat],[I.lng,F.lat]],U=a.value.getSource(Tt);if(!U){p();return}U.setData({type:"Feature",geometry:{type:"Polygon",coordinates:[q]},properties:{}})}function d(){var F;const V=n.mapContext,C=(F=V==null?void 0:V.map)==null?void 0:F.value;!(V!=null&&V.on)||!C||(c==null||c(),c=V.on("move",h),h())}async function x(){const V=n.mapContext;if(V){if(typeof V.ready=="function")try{await V.ready()}catch{return}d()}}return e.onMounted(()=>{f(),x()}),e.watch(()=>n.mapContext,()=>{x(),h()}),e.watch(()=>{var V,C;return(C=(V=n.mapContext)==null?void 0:V.map)==null?void 0:C.value},()=>{a.value&&(u(),x())}),e.watch(y,()=>{a.value&&e.nextTick(()=>{var V;return(V=a.value)==null?void 0:V.resize()})}),e.watch(()=>n.options,()=>{var C;c==null||c(),c=null,a.value&&(a.value.remove(),a.value=null);const V=(C=n.options)==null?void 0:C.active;typeof V=="boolean"&&(s.value=V),e.nextTick(()=>{f(),x()})},{deep:!0}),e.onBeforeUnmount(()=>{c==null||c(),c=null,a.value&&(a.value.remove(),a.value=null)}),(V,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(gl))]),e.createVNode(e.Transition,{name:"minimap-slide"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",_y,[e.createElementVNode("div",{ref_key:"minimapRoot",ref:r,class:"mapboxgl-ctrl-minimap mapboxgl-ctrl mapboxgl-map",style:e.normalizeStyle(y.value),id:"mapboxgl-minimap"},null,4)],512),[[e.vShow,s.value]])]),_:1})],2))}}),[["__scopeId","data-v-ff9c5f7b"]]),Vy={key:1,class:"absolute bottom-4 right-4 z-[80] flex items-end gap-2"},By={class:"absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1"},Cy={class:"map-widget__overlay-grid"},vy={key:0,id:"map-filter-popover-host",class:"map-widget__filter-host"},$y={key:1,class:"map-widget__stack-wrapper map-widget__stack-wrapper--top"},Sy={class:"map-widget__stack"},Ay={key:2,class:"map-widget__stack-wrapper map-widget__stack-wrapper--bottom xl:mb-5 mb-2"},Ly={class:"map-widget__stack map-widget__stack--bottom"},Fy={key:0,class:"map-widget__state"},My={key:1,class:"map-widget__state map-widget__state--error"},Dt=Q(e.defineComponent({__name:"MapWidget",props:{id:{},height:{},minZoom:{},maxZoom:{},data:{}},setup(t){var It,zt,Je,mt;const n=t,o=we.useRoute(),l=we.useRouter(),r=e.ref(null),a=e.ref({}),i=e.ref(null),s=e.ref(!1),g=e.ref(null),y=e.ref(!1),b=e.ref([]),c=e.computed(()=>n.id||"main"),f=e.computed(()=>{var z,H;return{height:((z=n.height)==null?void 0:z.trim())||((H=a.value)==null?void 0:H.height)||"calc(100vh - 65px)"}}),u=e.computed(()=>{var z;return((z=a.value)==null?void 0:z.name)??null}),p=e.computed(()=>{var z;return((z=a.value)==null?void 0:z.description)??null}),m=e.computed(()=>{var z;return D((z=a.value)==null?void 0:z.maps)}),h=e.computed(()=>{var H,J;const z=((H=a.value)==null?void 0:H.minZoom)??((J=a.value)==null?void 0:J.minzoom)??null;return typeof z=="number"?z:null}),d=e.computed(()=>{var H,J;const z=((H=a.value)==null?void 0:H.maxZoom)??((J=a.value)==null?void 0:J.maxzoom)??null;return typeof z=="number"?z:typeof n.maxZoom=="number"?n.maxZoom:20}),x=e.ref(null),S=e.computed(()=>{if(!x.value)return null;const{lng:z,lat:H}=x.value;return`${H.toFixed(6)}, ${z.toFixed(6)}`}),T=e.computed(()=>{var z;return((z=r.value)==null?void 0:z.ctx)??null}),P=e.computed(()=>{var z;return((z=a.value)==null?void 0:z.minimap)??null});function N(z){if(!z||typeof z!="object")return z;const H=ut(z.center);return H?{...z,center:H}:z}const V=((zt=(It=e.getCurrentInstance())==null?void 0:It.appContext.config.globalProperties)==null?void 0:zt.$settings)||null;function C(z){if(z==null)return null;const H=Number(typeof z=="string"?z.trim():z);return Number.isFinite(H)?H:null}const F=ut((Je=V==null?void 0:V.map)==null?void 0:Je.center),I=C((mt=V==null?void 0:V.map)==null?void 0:mt.zoom),q=e.computed(()=>{const z=(V==null?void 0:V.map)||null,H=(z==null?void 0:z.boundary)??null,J=(z==null?void 0:z.katottg)??null;return!H&&!J?null:{boundary:H,katottg:J}});function U(z){return typeof z=="string"&&z.trim()?z.trim().toLowerCase():"top-left"}function D(z){return Array.isArray(z)?z:z&&typeof z=="object"?Object.values(z).filter(Boolean):[]}const $=e.computed(()=>{var z;return D((z=a.value)==null?void 0:z.widgets)}),k=["left","right"],v=e.computed(()=>{const z={left:{top:[],bottom:[]},right:{top:[],bottom:[]}},H={"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 $.value.forEach(J=>{const ge=U(J.position),te=H[ge]??{side:"left",align:"top"};z[te.side][te.align].push(J)}),z});function M(z){return Array.isArray(z)?z[0]??null:typeof z=="string"?z:null}async function B(){var H;await e.nextTick();const z=(H=r.value)==null?void 0:H.ctx;return z?(z.ready&&await z.ready(),z):null}function E(){var z,H,J;return((J=(H=(z=r.value)==null?void 0:z.ctx)==null?void 0:H.map)==null?void 0:J.value)??null}function w(){const z=E();if(!z)return null;const H=z.getCenter();return{z:z.getZoom().toFixed(2),x:H.lng.toFixed(5),y:H.lat.toFixed(5)}}async function L(){var J;const z=await B(),H=(J=z==null?void 0:z.map)==null?void 0:J.value;H&&(typeof h.value=="number"&&H.setMinZoom(h.value),typeof d.value=="number"&&H.setMaxZoom(d.value))}async function O(){var te;if(i.value)return;const z=await B(),H=(te=z==null?void 0:z.map)==null?void 0:te.value;if(!H)return;const J=H.getCenter(),ge=H.getZoom();i.value={center:[J.lng,J.lat],zoom:ge}}function R(){const z=w();if(!z)return;const H=M(o.query.x),J=M(o.query.y),ge=M(o.query.z);H===z.x&&J===z.y&&ge===z.z||l.replace({query:{...o.query,...z}}).catch(()=>{})}function G(z,H,J=1e-6){return Math.abs(z-H)<=J}async function W(){var ze;const z=await B(),H=(ze=z==null?void 0:z.map)==null?void 0:ze.value;if(!z||!H)return;const J=parseFloat(M(o.query.x)??""),ge=parseFloat(M(o.query.y)??""),te=parseFloat(M(o.query.z)??""),de=!Number.isNaN(J),ue=!Number.isNaN(ge),Z=!Number.isNaN(te);let Ie=!1;if(de&&ue){const Fe=H.getCenter();(!G(Fe.lng,J)||!G(Fe.lat,ge))&&(H.setCenter([J,ge]),Ie=!0)}Z&&H.setZoom(te),(!de||!ue||!Z||Ie)&&R()}let Y=null,le=null;function ae(z){const H=z==null?void 0:z.lngLat;H&&(x.value={lng:H.lng,lat:H.lat})}async function ne(){const z=await B();z!=null&&z.on&&(Y==null||Y(),Y=z.on("moveend",R),le==null||le(),le=z.on("mousemove",ae))}e.onUnmounted(()=>{Y==null||Y(),Y=null,le==null||le(),le=null});async function ie(){var z,H;y.value=!1,s.value=!0,g.value=null,x.value=null;try{const J=n.data?n.data:await(async()=>{const Z=await fetch(`/api/gis-map/${encodeURIComponent(c.value)}`);if(!Z.ok)throw new Error(`Помилка завантаження (${Z.status})`);return Z.json()})(),ge=ut(J.center)??F,te=D(J.layers).map(Z=>N(Z)),de=C(J.zoom)??I;a.value={...J,center:ge??null,zoom:de??J.zoom??null,layers:te,widgets:J.widgets},b.value=J.tools||["home","print"];const ue=await B();ue&&(ge&&((z=ue.setCenter)==null||z.call(ue,ge)),de!=null&&((H=ue.setZoom)==null||H.call(ue,de)),i.value||await O()),await L(),await W(),await ne(),y.value=!0}catch(J){g.value=(J==null?void 0:J.message)||"Не вдалося завантажити карту"}finally{s.value=!1}}const ce=e.computed(()=>{var ge;const z=new Map;return D((ge=a.value)==null?void 0:ge.layers).forEach(te=>{if(!(te!=null&&te.id))return;const de=N(te)||te;z.set(te.id,{...de})}),$.value.filter(te=>(te==null?void 0:te.type)==="layers").flatMap(te=>{var de;return D((de=te==null?void 0:te.config)==null?void 0:de.layers)}).forEach(te=>{if(!(te!=null&&te.id))return;const de=z.get(te.id)||{},ue=N(te)||te;z.set(te.id,{...de,...ue,actions:te.actions||de.actions||null,name:de.name||te.name||te.title||de.title||te.id,title:de.title||te.title||de.name||null,visible:de.visible??te.visible??!0})}),Array.from(z.values())}),$e=e.ref([]);function Se(z){$e.value.includes(z)?$e.value=$e.value.filter(H=>H!==z):$e.value.push(z)}const De=e.computed(()=>z=>$e.value.includes(z.id));return e.watch([h,d],()=>{L()},{immediate:!0}),e.watch(c,()=>{ie()}),e.watch(()=>n.data,z=>{z&&ie()}),e.onMounted(()=>{ie()}),e.watch(()=>[o.query.x,o.query.y,o.query.z],()=>{W()}),(z,H)=>(e.openBlock(),e.createElementBlock("div",{class:"map-widget",style:e.normalizeStyle(f.value)},[H[2]||(H[2]=e.createElementVNode("div",{id:"map-filter-popover-host",class:"map-widget__filter-host"},null,-1)),e.createVNode(Ft,{ref_key:"mapViewRef",ref:r,class:"map-widget__view"},{default:e.withCtx(()=>{var J,ge,te,de;return[q.value?(e.openBlock(),e.createBlock(Wo,{key:0,"layer-id":"app-boundary",boundary:q.value.boundary,katottg:q.value.katottg},null,8,["boundary","katottg"])):e.createCommentVNode("",!0),T.value?(e.openBlock(),e.createElementBlock("div",Vy,[S.value?(e.openBlock(),e.createBlock(wy,{key:0,coordinates:S.value},null,8,["coordinates"])):e.createCommentVNode("",!0),e.createVNode(Ny,{"map-context":T.value,options:P.value},null,8,["map-context","options"])])):e.createCommentVNode("",!0),e.createElementVNode("div",By,[b.value.includes("home")?(e.openBlock(),e.createBlock(pn,{key:0,center:((J=a.value)==null?void 0:J.center)||((ge=i.value)==null?void 0:ge.center)||null,zoom:((te=a.value)==null?void 0:te.zoom)??((de=i.value)==null?void 0:de.zoom)??null},null,8,["center","zoom"])):e.createCommentVNode("",!0),b.value.includes("print")?(e.openBlock(),e.createBlock(xy,{key:1})):e.createCommentVNode("",!0)]),y.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Cy,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(k,ue=>e.createElementVNode("div",{key:ue,class:e.normalizeClass(["map-widget__side",`map-widget__side--${ue}`])},[ue==="left"?(e.openBlock(),e.createElementBlock("div",vy)):e.createCommentVNode("",!0),v.value[ue].top.length?(e.openBlock(),e.createElementBlock("div",$y,[e.createElementVNode("div",Sy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value[ue].top,Z=>{var Ie,ze,Fe,Ze,Ke,Pe,je,Re;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:Z.id||Z.type,class:"map-overlay__item"},[Z.type==="info"?(e.openBlock(),e.createBlock(Yo,{key:0,title:((Ie=Z.config)==null?void 0:Ie.title)||Z.title||null,content:((ze=Z.config)==null?void 0:ze.content)||"",links:m.value,"map-name":u.value,"map-description":p.value},null,8,["title","content","links","map-name","map-description"])):Z.type==="catalog"?(e.openBlock(),e.createBlock(Xo,{key:1,api:((Fe=Z.config)==null?void 0:Fe.api)||null},null,8,["api"])):Z.type==="layers"?(e.openBlock(),e.createBlock(Go,{key:2,layers:ce.value,onAction:H[0]||(H[0]=Qe=>Se(Qe.layerId)),config:Z.config},null,8,["layers","config"])):Z.type==="basemaps"?(e.openBlock(),e.createBlock(wt,{key:3,layers:((Ze=Z.config)==null?void 0:Ze.layers)||null,"default-layer":((Ke=Z.config)==null?void 0:Ke.default)||null,title:Z.title||((Pe=Z.config)==null?void 0:Pe.title)||null},null,8,["layers","default-layer","title"])):Z.type==="legend"?(e.openBlock(),e.createBlock(_t,{key:4,items:((je=Z.config)==null?void 0:je.items)||[]},null,8,["items"])):Z.type==="filters"&&De.value(Z)?(e.openBlock(),e.createBlock(cn,{key:5,"layer-id":(Re=Z.config)==null?void 0:Re.layer,onClose:Se},null,8,["layer-id"])):Z.type==="dataset"||Z.type==="attribute"?(e.openBlock(),e.createBlock(Jo,{key:6,config:Z.config},null,8,["config"])):Z.type==="search"?(e.openBlock(),e.createBlock(Qo,{key:7,config:Z.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,Z.visible!==!1]])}),128))])])):e.createCommentVNode("",!0),v.value[ue].bottom.length?(e.openBlock(),e.createElementBlock("div",Ay,[e.createElementVNode("div",Ly,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value[ue].bottom,Z=>{var Ie,ze,Fe,Ze,Ke,Pe,je,Re;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:Z.id||Z.type,class:"map-overlay__item"},[Z.type==="info"?(e.openBlock(),e.createBlock(Yo,{key:0,title:((Ie=Z.config)==null?void 0:Ie.title)||Z.title||null,content:((ze=Z.config)==null?void 0:ze.content)||"",links:m.value,"map-name":u.value,"map-description":p.value},null,8,["title","content","links","map-name","map-description"])):Z.type==="catalog"?(e.openBlock(),e.createBlock(Xo,{key:1,api:((Fe=Z.config)==null?void 0:Fe.api)||null},null,8,["api"])):Z.type==="layers"?(e.openBlock(),e.createBlock(Go,{key:2,layers:ce.value,onAction:H[1]||(H[1]=Qe=>Se(Qe.layerId)),config:Z.config},null,8,["layers","config"])):Z.type==="basemaps"?(e.openBlock(),e.createBlock(wt,{key:3,layers:((Ze=Z.config)==null?void 0:Ze.layers)||null,"default-layer":((Ke=Z.config)==null?void 0:Ke.default)||null,title:Z.title||((Pe=Z.config)==null?void 0:Pe.title)||null},null,8,["layers","default-layer","title"])):Z.type==="legend"?(e.openBlock(),e.createBlock(_t,{key:4,items:((je=Z.config)==null?void 0:je.items)||[]},null,8,["items"])):Z.type==="filters"&&De.value(Z)?(e.openBlock(),e.createBlock(cn,{key:5,"layer-id":(Re=Z.config)==null?void 0:Re.layer,onClose:Se},null,8,["layer-id"])):Z.type==="dataset"||Z.type==="attribute"?(e.openBlock(),e.createBlock(Jo,{key:6,config:Z.config},null,8,["config"])):Z.type==="search"?(e.openBlock(),e.createBlock(Qo,{key:7,config:Z.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,Z.visible!==!1]])}),128))])])):e.createCommentVNode("",!0)],2)),64))]),e.createVNode(Ro),e.createVNode(Ho,{"map-id":c.value},null,8,["map-id"])],64)):e.createCommentVNode("",!0)]}),_:1},512),s.value?(e.openBlock(),e.createElementBlock("div",Fy,"Завантаження карти…")):g.value?(e.openBlock(),e.createElementBlock("div",My,e.toDisplayString(g.value),1)):e.createCommentVNode("",!0)],4))}}),[["__scopeId","data-v-bd42636a"]]),Ty={class:"rounded-lg border border-gray-200 bg-gray-50 p-6"},Dy={class:"rounded-xl border border-gray-200 overflow-hidden bg-white"},Iy=e.defineComponent({__name:"MapPreview",props:{id:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("section",Ty,[o[0]||(o[0]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800 mb-4"}," Попередній перегляд карти ",-1)),e.createElementVNode("div",Dy,[e.createVNode(Dt,{class:"w-full h-[360px]",id:t.id},null,8,["id"])])]))}}),zy={class:"bg-white rounded-lg shadow-xl w-full max-w-4xl flex flex-col h-[80vh] m-4"},jy={class:"flex items-center justify-between px-6 py-4 border-b border-gray-200"},Oy={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"},Py={class:"flex-1 overflow-hidden relative bg-[#fffffe]"},Ry={class:"px-6 py-4 border-t border-gray-200 flex justify-end gap-3"},Uy=["disabled"],qy=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,g=>{if(g){try{r.value=JSON.stringify(g,null,2)}catch{r.value="{}"}a.value=null}},{immediate:!0}),e.watch(r,g=>{if(!g.trim()){a.value=null;return}try{JSON.parse(g),a.value=null}catch(y){a.value=y.message}}),e.watch(()=>o.modelValue,()=>{setTimeout(()=>{const{monaco:g}=window;if(g&&g.editor){const y=g.editor.getEditors();y.length>0&&y[y.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 g=JSON.parse(r.value);l("save",g),i()}catch(g){console.error("Failed to parse JSON",g)}}return(g,y)=>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",zy,[e.createElementVNode("div",jy,[y[1]||(y[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(Pt),{size:20})])]),a.value?(e.openBlock(),e.createElementBlock("div",Oy," Помилка JSON: "+e.toDisplayString(a.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Py,[e.createVNode(Lt,{modelValue:r.value,"onUpdate:modelValue":y[0]||(y[0]=b=>r.value=b),language:"json",theme:"vs-light",class:"w-full h-full"},null,8,["modelValue"])]),e.createElementVNode("div",Ry,[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,Uy)])])])):e.createCommentVNode("",!0)}}),Hy={key:0,class:"text-center py-8 text-gray-500 border rounded-lg bg-gray-50"},Wy={key:1,class:"rounded-lg border border-gray-200 overflow-hidden"},Yy={class:"w-full text-sm"},Zy={class:"divide-y divide-gray-200"},Ky={class:"px-4 py-3"},Gy=["onUpdate:modelValue","onChange"],Xy=["value"],Jy={class:"px-4 py-3"},Qy=["onUpdate:modelValue","onChange"],eh=["value"],th={class:"px-4 py-3 text-center"},nh=["checked","onChange"],oh={class:"px-4 py-3"},lh={key:0,class:"flex items-center gap-2"},rh=["onClick"],ah=["onClick"],ih={key:1},sh=["onClick"],ch={class:"px-4 py-3 text-right"},dh=["onClick"],uh=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),g=e.computed(()=>o.modelValue||[]);function y(){const d=[...g.value,{type:"info",position:"top-left",visible:!0,config:{}}];l("update:modelValue",d)}function b(d){re.confirm({title:"Видалити віджет?",message:"Ви впевнені, що хочете видалити цей віджет?",type:"warning",onConfirm:()=>{const x=g.value.filter((S,T)=>T!==d);l("update:modelValue",x)}})}function c(d,x,S){const T=[...g.value];T[d]={...T[d],[x]:S},l("update:modelValue",T)}function f(d){return!!d&&Object.keys(d).length>0}function u(d,x){s.value=d,i.value=x||{}}function p(d){u(d,{})}function m(d){re.confirm({title:"Видалити конфігурацію?",message:"Ви впевнені, що хочете видалити конфігурацію цього віджета?",type:"warning",onConfirm:()=>{c(d,"config",void 0)}})}function h(d){s.value>-1&&c(s.value,"config",d),i.value=null,s.value=-1}return(d,x)=>{var S;return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:"flex items-center justify-between mb-4"},[x[1]||(x[1]=e.createElementVNode("h2",{class:"text-lg font-semibold text-gray-800"},"Віджети",-1)),e.createElementVNode("button",{onClick:y,class:"px-3 py-1.5 text-sm bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors"}," + Додати віджет ")]),(S=g.value)!=null&&S.length?(e.openBlock(),e.createElementBlock("div",Wy,[e.createElementVNode("table",Yy,[x[2]||(x[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",Zy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(T,P)=>(e.openBlock(),e.createElementBlock("tr",{key:P,class:"hover:bg-gray-50"},[e.createElementVNode("td",Ky,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":N=>T.type=N,onChange:N=>c(P,"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,N=>e.createElementVNode("option",{key:N,value:N},e.toDisplayString(N),9,Xy)),64))],40,Gy),[[e.vModelSelect,T.type]])]),e.createElementVNode("td",Jy,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":N=>T.position=N,onChange:N=>c(P,"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,N=>e.createElementVNode("option",{key:N,value:N},e.toDisplayString(N),9,eh)),64))],40,Qy),[[e.vModelSelect,T.position]])]),e.createElementVNode("td",th,[e.createElementVNode("input",{type:"checkbox",checked:T.visible!==!1,onChange:N=>c(P,"visible",N.target.checked),class:"w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500"},null,40,nh)]),e.createElementVNode("td",oh,[f(T.config)?(e.openBlock(),e.createElementBlock("div",lh,[e.createElementVNode("button",{onClick:N=>u(P,T.config),class:"p-1 text-blue-600 hover:text-blue-800 hover:bg-blue-50 rounded transition-colors",title:"Редагувати конфігурацію"},[e.createVNode(e.unref(_l),{size:16})],8,rh),e.createElementVNode("button",{onClick:N=>m(P),class:"p-1 text-red-500 hover:text-red-700 hover:bg-red-50 rounded transition-colors",title:"Видалити конфігурацію"},[e.createVNode(e.unref(Pt),{size:16})],8,ah)])):(e.openBlock(),e.createElementBlock("div",ih,[e.createElementVNode("button",{onClick:N=>p(P),class:"p-1 text-green-600 hover:text-green-800 hover:bg-green-50 rounded transition-colors",title:"Додати конфігурацію"},[e.createVNode(e.unref(El),{size:16})],8,sh)]))]),e.createElementVNode("td",ch,[e.createElementVNode("button",{onClick:N=>b(P),class:"p-1 text-gray-400 hover:text-red-500 transition-colors",title:"Видалити віджет"},[e.createVNode(e.unref(Vl),{size:16})],8,dh)])]))),128))])])])):(e.openBlock(),e.createElementBlock("div",Hy," Немає віджетів. Додайте перший віджет. ")),e.createVNode(qy,{teleport:"#modal",modelValue:i.value,"onUpdate:modelValue":x[0]||(x[0]=T=>i.value=T),onSave:h},null,8,["modelValue"])])}}}),ph={class:"relative min-h-svh flex-1 flex-col flex gap-4 bg-white p-8 overflow-y-auto"},mh={class:"max-w-6xl mx-auto w-full"},fh={class:"flex items-center justify-between mb-6"},gh={class:"mb-2 text-2xl font-semibold text-gray-900"},yh={class:"flex items-center gap-2"},hh=["disabled"],xh={key:0,class:"text-center py-12"},bh={class:"space-y-6"},kh={class:"space-y-6"},wh={class:"space-y-6"},_h=Q(e.defineComponent({__name:"MapSettings",setup(t){const n=we.useRouter(),o=we.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"}],g=s.map(N=>N.id),y=N=>N?Array.isArray(N)?N[0]:N:null,b=(()=>{const N=y(o.query.tab);return N&&g.includes(N)?N:"general"})(),c=e.ref(b);e.watch(()=>o.query.tab,N=>{const V=y(N);V&&g.includes(V)&&c.value!==V&&(c.value=V)}),e.watch(c,N=>{o.query.tab!==N&&n.replace({query:{...o.query,tab:N}})});const f=e.ref({name:"",map_key:"",description:"",holder:"",image:"",keywords:[],center:null,zoom:11,widgets:[],layers:[]}),u=e.computed({get:()=>(f.value.layers||[]).map(N=>N.id||N),set:N=>{f.value.layers=N}}),p=e.computed(()=>a.value.map(N=>({id:N.id,text:N.name||N.id}))),m=e.computed({get:()=>u.value.map(N=>{const V=p.value.find(C=>C.id===N);return V?V.text:N}),set:N=>{const V=N.map(C=>{const F=p.value.find(I=>I.text===C);return F?F.id:null}).filter(C=>C!==null);u.value=V}}),h=e.computed(()=>{const N=f.value.center;if(!Array.isArray(N)||N.length<2)return"Не задано";const[V,C]=N;return V===void 0||C===void 0||V===null||C===null||Number.isNaN(Number(V))||Number.isNaN(Number(C))?"Не задано":`Lng ${Number(V).toFixed(6)}, Lat ${Number(C).toFixed(6)}`}),d=e.computed(()=>{const N=f.value.zoom;if(N==null||N==="")return"Не задано";const V=Number(N);return Number.isNaN(V)?"Не задано":V.toFixed(2)}),x=[{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 S(){try{const N=await fetch("/api/gis-layer-list");N.ok&&(a.value=await N.json())}catch(N){console.error("Failed to load available layers:",N)}}async function T(){try{const V=await(await fetch(`/api/gis-map/${o.params.id}?original=1`)).json();f.value={...V,keywords:V.keywords||[],center:V.center??null,widgets:Array.isArray(V.widgets)?V.widgets:[],layers:(V.layers||[]).map(C=>C.id||C)}}catch(N){console.error("Failed to load map:",N),re.notify({type:"error",title:"Помилка",message:"Не вдалося завантажити карту"})}finally{l.value=!1}}async function P(){var V,C;const N=(C=(V=i.value)==null?void 0:V.validate)==null?void 0:C.call(V);if(N){re.notify({type:"warning",title:"Валідація",message:Object.entries(N).map(([F,I])=>`${F}: ${I}`).join(`
|
|
133
|
+
`)});return}r.value=!0;try{const F=JSON.parse(JSON.stringify(f.value));if(F.zoom=Number(F.zoom),Array.isArray(F.center)&&(F.center.every(U=>U==null||U===""||U===0)||F.center.length===0)&&(F.center=null),delete F.created_at,delete F.updated_at,delete F.created_by,delete F.updated_by,delete F.history,delete F.maps,!(await fetch(`/api/gis-map/${o.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(F)})).ok)throw new Error("Save failed");re.notify({type:"success",title:"Успіх",message:"Збережено!"})}catch(F){console.error("Save error:",F),re.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти"})}finally{r.value=!1}}return e.onMounted(async()=>{await S(),T()}),(N,V)=>(e.openBlock(),e.createElementBlock("main",ph,[e.createElementVNode("div",mh,[e.createElementVNode("div",fh,[e.createElementVNode("div",null,[e.createElementVNode("h1",gh,e.toDisplayString(f.value.name||"Налаштування карти"),1),V[7]||(V[7]=e.createElementVNode("p",{class:"text-gray-600"},"Редагування параметрів карти",-1))]),e.createElementVNode("div",yh,[e.createElementVNode("a",{onClick:V[0]||(V[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:P,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,hh)])]),l.value?(e.openBlock(),e.createElementBlock("div",xh,[...V[8]||(V[8]=[e.createElementVNode("p",{class:"text-gray-500"},"Завантаження...",-1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(x0,{tabs:s,activeTab:c.value,"onUpdate:activeTab":V[1]||(V[1]=C=>c.value=C)},null,8,["activeTab"]),e.withDirectives(e.createElementVNode("div",bh,[e.createVNode(k0,{schema:x,loading:l.value,modelValue:f.value,"onUpdate:modelValue":V[2]||(V[2]=C=>f.value=C),form:i.value,"onUpdate:form":V[3]||(V[3]=C=>i.value=C)},null,8,["loading","modelValue","form"])],512),[[e.vShow,c.value==="general"]]),e.withDirectives(e.createElementVNode("div",kh,[e.createVNode(_0,{options:p.value,layerIDs:u.value,"onUpdate:layerIDs":V[4]||(V[4]=C=>u.value=C),layerNames:m.value,"onUpdate:layerNames":V[5]||(V[5]=C=>m.value=C)},null,8,["options","layerIDs","layerNames"])],512),[[e.vShow,c.value==="layers"]]),e.withDirectives(e.createVNode(uh,{modelValue:f.value.widgets,"onUpdate:modelValue":V[6]||(V[6]=C=>f.value.widgets=C)},null,8,["modelValue"]),[[e.vShow,c.value==="widgets"]]),e.withDirectives(e.createElementVNode("div",wh,[e.createVNode(Iy,{"center-display":h.value,"zoom-display":d.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-d824d951"]]);function Eh(t){t.component("MapCustom",Dt)}fe.CartoCSS=f0,fe.MapSettings=_h,fe.MapWidget=Dt,fe.Raster=Sf,fe.Register=_s,fe.Service=_m,fe.default=Dt,fe.install=Eh,fe.template1=Vn,fe.template2=Bn,fe.template3=Cn,fe.template4=vn,fe.template5=$n,Object.defineProperties(fe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|